net: enetc: reset taprio stats when taprio is deleted
Currently, the window_drop stats persist even if an incorrect Qdisc was
removed from the interface and a new one is installed. This is because
the enetc driver keeps the state, and that is persistent across multiple
Qdiscs.
To resolve the issue, clear all win_drop counters from all TX queues
when the currently active Qdisc is removed. These counters are zero
by default. The counters visible in ethtool -S are also affected,
but I don't care very much about preserving those enough to keep them
monotonically incrementing.
Fixes: 4802fca8d1
("net: enetc: report statistics counters for taprio")
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
2b84960fc5
commit
f1e668d29c
@ -127,6 +127,14 @@ static int enetc_setup_taprio(struct enetc_ndev_priv *priv,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void enetc_reset_taprio_stats(struct enetc_ndev_priv *priv)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < priv->num_tx_rings; i++)
|
||||
priv->tx_ring[i]->stats.win_drop = 0;
|
||||
}
|
||||
|
||||
static void enetc_reset_taprio(struct enetc_ndev_priv *priv)
|
||||
{
|
||||
struct enetc_hw *hw = &priv->si->hw;
|
||||
@ -145,6 +153,7 @@ static void enetc_taprio_destroy(struct net_device *ndev)
|
||||
|
||||
enetc_reset_taprio(priv);
|
||||
enetc_reset_tc_mqprio(ndev);
|
||||
enetc_reset_taprio_stats(priv);
|
||||
}
|
||||
|
||||
static void enetc_taprio_stats(struct net_device *ndev,
|
||||
|
Loading…
Reference in New Issue
Block a user