From: Dmitry Bogdanov <dmitry.bogda...@aquantia.com> This improves ethtool -S usage, where stats are now actual on each request. Before that stats only were updated at service timer period.
Tested-by: Nikita Danilov <ndani...@aquantia.com> Signed-off-by: Igor Russkikh <igor.russk...@aquantia.com> Signed-off-by: Dmitry Bogdanov <dmitry.bogda...@aquantia.com> --- drivers/net/ethernet/aquantia/atlantic/aq_nic.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/aquantia/atlantic/aq_nic.c b/drivers/net/ethernet/aquantia/atlantic/aq_nic.c index 454a44bb148e..1893ba7fcd2b 100644 --- a/drivers/net/ethernet/aquantia/atlantic/aq_nic.c +++ b/drivers/net/ethernet/aquantia/atlantic/aq_nic.c @@ -700,7 +700,15 @@ void aq_nic_get_stats(struct aq_nic_s *self, u64 *data) unsigned int i = 0U; unsigned int count = 0U; struct aq_vec_s *aq_vec = NULL; - struct aq_stats_s *stats = self->aq_hw_ops->hw_get_hw_stats(self->aq_hw); + struct aq_stats_s *stats; + + if (self->aq_fw_ops->update_stats) { + mutex_lock(&self->fwreq_mutex); + self->aq_fw_ops->update_stats(self->aq_hw); + mutex_unlock(&self->fwreq_mutex); + } + stats = self->aq_hw_ops->hw_get_hw_stats(self->aq_hw); + if (!stats) goto err_exit; -- 2.17.1