bnxt_en: Adjust timer based on ethtool stats-block-usecs settings.
authorMichael Chan <michael.chan@broadcom.com>
Sun, 5 Aug 2018 20:51:47 +0000 (16:51 -0400)
committerDavid S. Miller <davem@davemloft.net>
Mon, 6 Aug 2018 00:08:25 +0000 (17:08 -0700)
The driver gathers statistics using 2 mechanisms.  Some stats are DMA'ed
directly from hardware and others are polled from the driver's timer.
Currently, we only adjust the DMA frequency based on the ethtool
stats-block-usecs setting.  This patch adjusts the driver's timer
frequency as well to make everything consistent.

Signed-off-by: Michael Chan <michael.chan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c

index 3d40e49..1f626af 100644 (file)
@@ -112,6 +112,11 @@ static int bnxt_set_coalesce(struct net_device *dev,
                                              BNXT_MAX_STATS_COAL_TICKS);
                stats_ticks = rounddown(stats_ticks, BNXT_MIN_STATS_COAL_TICKS);
                bp->stats_coal_ticks = stats_ticks;
+               if (bp->stats_coal_ticks)
+                       bp->current_interval =
+                               bp->stats_coal_ticks * HZ / 1000000;
+               else
+                       bp->current_interval = BNXT_TIMER_INTERVAL;
                update_stats = true;
        }