net/mlx5e: Fix VF representors reporting zero counters to "ip -s" command
Although vf_vport entry of struct mlx5e_stats is never updated, its values are mistakenly copied to the caller structure in the VF representor .ndo_get_stat_64 callback mlx5e_rep_get_stats(). Remove redundant entry and use the updated one, rep_stats, instead. Fixes: 64b68e369649 ("net/mlx5: Refactor and expand rep vport stat group") Reviewed-by: Patrisious Haddad <phaddad@nvidia.com> Signed-off-by: Amir Tzin <amirtz@nvidia.com> Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
This commit is contained in:
parent
06b4eac9c4
commit
80f1241484
@ -701,7 +701,7 @@ mlx5e_rep_get_stats(struct net_device *dev, struct rtnl_link_stats64 *stats)
|
||||
|
||||
/* update HW stats in background for next time */
|
||||
mlx5e_queue_update_stats(priv);
|
||||
memcpy(stats, &priv->stats.vf_vport, sizeof(*stats));
|
||||
mlx5e_stats_copy_rep_stats(stats, &priv->stats.rep_stats);
|
||||
}
|
||||
|
||||
static int mlx5e_rep_change_mtu(struct net_device *netdev, int new_mtu)
|
||||
|
@ -484,11 +484,20 @@ struct mlx5e_stats {
|
||||
struct mlx5e_vnic_env_stats vnic;
|
||||
struct mlx5e_vport_stats vport;
|
||||
struct mlx5e_pport_stats pport;
|
||||
struct rtnl_link_stats64 vf_vport;
|
||||
struct mlx5e_pcie_stats pcie;
|
||||
struct mlx5e_rep_stats rep_stats;
|
||||
};
|
||||
|
||||
static inline void mlx5e_stats_copy_rep_stats(struct rtnl_link_stats64 *vf_vport,
|
||||
struct mlx5e_rep_stats *rep_stats)
|
||||
{
|
||||
memset(vf_vport, 0, sizeof(*vf_vport));
|
||||
vf_vport->rx_packets = rep_stats->vport_rx_packets;
|
||||
vf_vport->tx_packets = rep_stats->vport_tx_packets;
|
||||
vf_vport->rx_bytes = rep_stats->vport_rx_bytes;
|
||||
vf_vport->tx_bytes = rep_stats->vport_tx_bytes;
|
||||
}
|
||||
|
||||
extern mlx5e_stats_grp_t mlx5e_nic_stats_grps[];
|
||||
unsigned int mlx5e_nic_stats_grps_num(struct mlx5e_priv *priv);
|
||||
|
||||
|
@ -4972,7 +4972,8 @@ static int scan_tc_matchall_fdb_actions(struct mlx5e_priv *priv,
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
rpriv->prev_vf_vport_stats = priv->stats.vf_vport;
|
||||
mlx5e_stats_copy_rep_stats(&rpriv->prev_vf_vport_stats,
|
||||
&priv->stats.rep_stats);
|
||||
break;
|
||||
default:
|
||||
NL_SET_ERR_MSG_MOD(extack, "mlx5 supports only police action for matchall");
|
||||
@ -5012,7 +5013,7 @@ void mlx5e_tc_stats_matchall(struct mlx5e_priv *priv,
|
||||
u64 dbytes;
|
||||
u64 dpkts;
|
||||
|
||||
cur_stats = priv->stats.vf_vport;
|
||||
mlx5e_stats_copy_rep_stats(&cur_stats, &priv->stats.rep_stats);
|
||||
dpkts = cur_stats.rx_packets - rpriv->prev_vf_vport_stats.rx_packets;
|
||||
dbytes = cur_stats.rx_bytes - rpriv->prev_vf_vport_stats.rx_bytes;
|
||||
rpriv->prev_vf_vport_stats = cur_stats;
|
||||
|
Loading…
x
Reference in New Issue
Block a user