net: lan966x: Fix the rx drop counter

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: 12c2d0a5b8 ("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>
This commit is contained in:
Horatiu Vultur 2022-10-19 10:30:56 +02:00 committed by Jakub Kicinski
parent 9442358968
commit f8c1c66b99
1 changed files with 9 additions and 1 deletions

View File

@ -656,7 +656,15 @@ void lan966x_stats_get(struct net_device *dev,
stats->rx_dropped = dev->stats.rx_dropped + stats->rx_dropped = dev->stats.rx_dropped +
lan966x->stats[idx + SYS_COUNT_RX_LONG] + lan966x->stats[idx + SYS_COUNT_RX_LONG] +
lan966x->stats[idx + SYS_COUNT_DR_LOCAL] + 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++) { for (i = 0; i < LAN966X_NUM_TC; i++) {
stats->rx_dropped += stats->rx_dropped +=