mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-18 19:27:13 +00:00
net/mlx5e: Get the latest values from counters in switchdev mode
In the switchdev mode, when running "cat /sys/class/net/NIC/statistics/tx_packets", the ppcnt register is accessed to get the latest values. But currently this command can not get the correct values from ppcnt. From firmware manual, before getting the 802_3 counters, the 802_3 data layout should be set to the ppcnt register. When the command "cat /sys/class/net/NIC/statistics/tx_packets" is run, before updating 802_3 data layout with ppcnt register, the monitor counters are tested. The test result will decide the 802_3 data layout is updated or not. Actually the monitor counters do not support to monitor rx/tx stats of 802_3 in switchdev mode. So the rx/tx counters change will not trigger monitor counters. So the 802_3 data layout will not be updated in ppcnt register. Finally this command can not get the latest values from ppcnt register with 802_3 data layout. Fixes: 5c7e8bbb0257 ("net/mlx5e: Use monitor counters for update stats") Signed-off-by: Zhu Yanjun <yanjunz@mellanox.com> Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
This commit is contained in:
parent
96c34151d1
commit
dcdf4ce0ff
@ -3583,7 +3583,12 @@ mlx5e_get_stats(struct net_device *dev, struct rtnl_link_stats64 *stats)
|
||||
struct mlx5e_vport_stats *vstats = &priv->stats.vport;
|
||||
struct mlx5e_pport_stats *pstats = &priv->stats.pport;
|
||||
|
||||
if (!mlx5e_monitor_counter_supported(priv)) {
|
||||
/* In switchdev mode, monitor counters doesn't monitor
|
||||
* rx/tx stats of 802_3. The update stats mechanism
|
||||
* should keep the 802_3 layout counters updated
|
||||
*/
|
||||
if (!mlx5e_monitor_counter_supported(priv) ||
|
||||
mlx5e_is_uplink_rep(priv)) {
|
||||
/* update HW stats in background for next time */
|
||||
mlx5e_queue_update_stats(priv);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user