Re: [PATCH net-next v6 3/3] net/mlx4: support per-queue statistics via netlink
From: Jacob Keller
Date: Thu May 30 2024 - 17:14:15 EST
On 5/28/2024 11:11 AM, Joe Damato wrote:
> Make mlx4 compatible with the newly added netlink queue stats API.
>
> Signed-off-by: Joe Damato <jdamato@xxxxxxxxxx>
> Tested-by: Martin Karsten <mkarsten@xxxxxxxxxxxx>
> Reviewed-by: Tariq Toukan <tariqt@xxxxxxxxxx>
> ---
> .../net/ethernet/mellanox/mlx4/en_netdev.c | 73 +++++++++++++++++++
> 1 file changed, 73 insertions(+)
>
> diff --git a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
> index 4d2f8c458346..281b34af0bb4 100644
> --- a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
> +++ b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
> @@ -43,6 +43,7 @@
> #include <net/vxlan.h>
> #include <net/devlink.h>
> #include <net/rps.h>
> +#include <net/netdev_queues.h>
>
> #include <linux/mlx4/driver.h>
> #include <linux/mlx4/device.h>
> @@ -3100,6 +3101,77 @@ void mlx4_en_set_stats_bitmap(struct mlx4_dev *dev,
> last_i += NUM_PHY_STATS;
> }
>
> +static void mlx4_get_queue_stats_rx(struct net_device *dev, int i,
> + struct netdev_queue_stats_rx *stats)
> +{
> + struct mlx4_en_priv *priv = netdev_priv(dev);
> + const struct mlx4_en_rx_ring *ring;
> +
> + spin_lock_bh(&priv->stats_lock);
> +
> + if (!priv->port_up || mlx4_is_master(priv->mdev->dev))
> + goto out_unlock;
> +
> + ring = priv->rx_ring[i];
> + stats->packets = READ_ONCE(ring->packets);
> + stats->bytes = READ_ONCE(ring->bytes);
> + stats->alloc_fail = READ_ONCE(ring->alloc_fail);
> +
Ahh, allocation failures is reported here. Ok. I probably would have
re-ordered patches so that the implementation of alloc_fail came after
and it was a bit more obvious how it would be used.
Either way, I don't think that deserves a resend.
Reviewed-by: Jacob Keller <jacob.e.keller@xxxxxxxxx>