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

Reply via email to