net: lan966x: Fix the rx drop counter
authorHoratiu Vultur <horatiu.vultur@microchip.com>
Wed, 19 Oct 2022 08:30:56 +0000 (10:30 +0200)
committerJakub Kicinski <kuba@kernel.org>
Fri, 21 Oct 2022 04:08:54 +0000 (21:08 -0700)
Currently the rx drop is calculated as the sum of multiple HW drop
counters. The issue is that not all the HW drop counters were added for
the rx drop counter. So if for example you have a police that drops
frames, they were not see in the rx drop counter.
Fix this by updating how the rx drop counter is calculated. It is
required to add also RX_RED_PRIO_* HW counters.

Fixes: 12c2d0a5b8e2 ("net: lan966x: add ethtool configuration and statistics")
Signed-off-by: Horatiu Vultur <horatiu.vultur@microchip.com>
Link: https://lore.kernel.org/r/20221019083056.2744282-1-horatiu.vultur@microchip.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/microchip/lan966x/lan966x_ethtool.c

index e58a27f..fea4254 100644 (file)
@@ -656,7 +656,15 @@ void lan966x_stats_get(struct net_device *dev,
        stats->rx_dropped = dev->stats.rx_dropped +
                lan966x->stats[idx + SYS_COUNT_RX_LONG] +
                lan966x->stats[idx + SYS_COUNT_DR_LOCAL] +
-               lan966x->stats[idx + SYS_COUNT_DR_TAIL];
+               lan966x->stats[idx + SYS_COUNT_DR_TAIL] +
+               lan966x->stats[idx + SYS_COUNT_RX_RED_PRIO_0] +
+               lan966x->stats[idx + SYS_COUNT_RX_RED_PRIO_1] +
+               lan966x->stats[idx + SYS_COUNT_RX_RED_PRIO_2] +
+               lan966x->stats[idx + SYS_COUNT_RX_RED_PRIO_3] +
+               lan966x->stats[idx + SYS_COUNT_RX_RED_PRIO_4] +
+               lan966x->stats[idx + SYS_COUNT_RX_RED_PRIO_5] +
+               lan966x->stats[idx + SYS_COUNT_RX_RED_PRIO_6] +
+               lan966x->stats[idx + SYS_COUNT_RX_RED_PRIO_7];
 
        for (i = 0; i < LAN966X_NUM_TC; i++) {
                stats->rx_dropped +=