mlxsw: spectrum: Update sch_prio stats to include sch_red related drops
authorNogah Frankel <nogahf@mellanox.com>
Wed, 28 Feb 2018 09:45:04 +0000 (10:45 +0100)
committerDavid S. Miller <davem@davemloft.net>
Wed, 28 Feb 2018 17:06:01 +0000 (12:06 -0500)
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 <nogahf@mellanox.com>
Reviewed-by: Yuval Mintz <yuvalm@mellanox.com>
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c

index 5ddaafc8aa1830a034d4a3b2448da555ba9178e5..bed7495d35d630c1789adcfb72ff928a249a1db9 100644 (file)
@@ -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;
 }