From: Nogah Frankel <nog...@mellanox.com>

sch_prio as root qdisc should count all the drops its children have. Since
it is possible for it to have sch_red children, it needs to count RED early
drops.

Signed-off-by: Nogah Frankel <nog...@mellanox.com>
Reviewed-by: Yuval Mintz <yuv...@mellanox.com>
Signed-off-by: Jiri Pirko <j...@mellanox.com>
---
 drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c 
b/drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
index 5ddaafc8aa18..bed7495d35d6 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
@@ -584,6 +584,7 @@ mlxsw_sp_qdisc_get_prio_stats(struct mlxsw_sp_port 
*mlxsw_sp_port,
 
        for (i = 0; i < IEEE_8021QAZ_MAX_TCS; i++) {
                drops += xstats->tail_drop[i];
+               drops += xstats->wred_drop[i];
                backlog += xstats->backlog[i];
        }
        drops = drops - stats_base->drops;
@@ -619,8 +620,10 @@ mlxsw_sp_setup_tc_qdisc_prio_clean_stats(struct 
mlxsw_sp_port *mlxsw_sp_port,
        stats_base->tx_bytes = stats->tx_bytes;
 
        stats_base->drops = 0;
-       for (i = 0; i < IEEE_8021QAZ_MAX_TCS; i++)
+       for (i = 0; i < IEEE_8021QAZ_MAX_TCS; i++) {
                stats_base->drops += xstats->tail_drop[i];
+               stats_base->drops += xstats->wred_drop[i];
+       }
 
        mlxsw_sp_qdisc->stats_base.backlog = 0;
 }
-- 
2.14.3

Reply via email to