Skip to content

Commit 476681f

Browse files
gal-pressmankuba-moo
authored andcommitted
net/mlx5e: Account for netdev stats in ndo_get_stats64
The driver's ndo_get_stats64 callback is only reporting mlx5 counters, without accounting for the netdev stats, causing errors from the network stack to be invisible in statistics. Add netdev_stats_to_stats64() call to first populate the counters, then add mlx5 counters on top, ensuring both are accounted for (where appropriate). Fixes: f62b8bb ("net/mlx5: Extend mlx5_core to support ConnectX-4 Ethernet functionality") Signed-off-by: Gal Pressman <gal@nvidia.com> Signed-off-by: Tariq Toukan <tariqt@nvidia.com> Reviewed-by: Simon Horman <horms@kernel.org> Link: https://patch.msgid.link/1769411695-18820-4-git-send-email-tariqt@nvidia.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
1 parent f676669 commit 476681f

1 file changed

Lines changed: 11 additions & 9 deletions

File tree

  • drivers/net/ethernet/mellanox/mlx5/core

drivers/net/ethernet/mellanox/mlx5/core/en_main.c

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4052,6 +4052,8 @@ mlx5e_get_stats(struct net_device *dev, struct rtnl_link_stats64 *stats)
40524052
mlx5e_queue_update_stats(priv);
40534053
}
40544054

4055+
netdev_stats_to_stats64(stats, &dev->stats);
4056+
40554057
if (mlx5e_is_uplink_rep(priv)) {
40564058
struct mlx5e_vport_stats *vstats = &priv->stats.vport;
40574059

@@ -4068,21 +4070,21 @@ mlx5e_get_stats(struct net_device *dev, struct rtnl_link_stats64 *stats)
40684070
mlx5e_fold_sw_stats64(priv, stats);
40694071
}
40704072

4071-
stats->rx_missed_errors = priv->stats.qcnt.rx_out_of_buffer;
4072-
stats->rx_dropped = PPORT_2863_GET(pstats, if_in_discards);
4073+
stats->rx_missed_errors += priv->stats.qcnt.rx_out_of_buffer;
4074+
stats->rx_dropped += PPORT_2863_GET(pstats, if_in_discards);
40734075

4074-
stats->rx_length_errors =
4076+
stats->rx_length_errors +=
40754077
PPORT_802_3_GET(pstats, a_in_range_length_errors) +
40764078
PPORT_802_3_GET(pstats, a_out_of_range_length_field) +
40774079
PPORT_802_3_GET(pstats, a_frame_too_long_errors) +
40784080
VNIC_ENV_GET(&priv->stats.vnic, eth_wqe_too_small);
4079-
stats->rx_crc_errors =
4081+
stats->rx_crc_errors +=
40804082
PPORT_802_3_GET(pstats, a_frame_check_sequence_errors);
4081-
stats->rx_frame_errors = PPORT_802_3_GET(pstats, a_alignment_errors);
4082-
stats->tx_aborted_errors = PPORT_2863_GET(pstats, if_out_discards);
4083-
stats->rx_errors = stats->rx_length_errors + stats->rx_crc_errors +
4084-
stats->rx_frame_errors;
4085-
stats->tx_errors = stats->tx_aborted_errors + stats->tx_carrier_errors;
4083+
stats->rx_frame_errors += PPORT_802_3_GET(pstats, a_alignment_errors);
4084+
stats->tx_aborted_errors += PPORT_2863_GET(pstats, if_out_discards);
4085+
stats->rx_errors += stats->rx_length_errors + stats->rx_crc_errors +
4086+
stats->rx_frame_errors;
4087+
stats->tx_errors += stats->tx_aborted_errors + stats->tx_carrier_errors;
40864088
}
40874089

40884090
static void mlx5e_nic_set_rx_mode(struct mlx5e_priv *priv)

0 commit comments

Comments
 (0)