Message ID | 20240509205057.246191-2-jdamato@fastly.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | mlx4: Add support for netdev-genl API | expand |
On 09/05/2024 23:50, Joe Damato wrote: > mlx4_en_alloc_frags currently returns -ENOMEM when mlx4_alloc_page > fails but does not increment a stat field when this occurs. > > A new field called alloc_fail has been added to struct mlx4_en_rx_ring > which is now incremented in mlx4_en_rx_ring when -ENOMEM occurs. > > Signed-off-by: Joe Damato <jdamato@fastly.com> > Tested-by: Martin Karsten <mkarsten@uwaterloo.ca> > --- > drivers/net/ethernet/mellanox/mlx4/en_rx.c | 4 +++- > drivers/net/ethernet/mellanox/mlx4/mlx4_en.h | 1 + > 2 files changed, 4 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/ethernet/mellanox/mlx4/en_rx.c b/drivers/net/ethernet/mellanox/mlx4/en_rx.c > index 8328df8645d5..15c57e9517e9 100644 > --- a/drivers/net/ethernet/mellanox/mlx4/en_rx.c > +++ b/drivers/net/ethernet/mellanox/mlx4/en_rx.c > @@ -82,8 +82,10 @@ static int mlx4_en_alloc_frags(struct mlx4_en_priv *priv, > > for (i = 0; i < priv->num_frags; i++, frags++) { > if (!frags->page) { > - if (mlx4_alloc_page(priv, frags, gfp)) > + if (mlx4_alloc_page(priv, frags, gfp)) { > + ring->alloc_fail++; > return -ENOMEM; > + } > ring->rx_alloc_pages++; > } > rx_desc->data[i].addr = cpu_to_be64(frags->dma + > diff --git a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h b/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h > index efe3f97b874f..cd70df22724b 100644 > --- a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h > +++ b/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h > @@ -355,6 +355,7 @@ struct mlx4_en_rx_ring { > unsigned long xdp_tx; > unsigned long xdp_tx_full; > unsigned long dropped; > + unsigned long alloc_fail; > int hwtstamp_rx_filter; > cpumask_var_t affinity_mask; > struct xdp_rxq_info xdp_rxq; Counter should be reset in mlx4_en_clear_stats(). BTW, there are existing counters that are missing there already. We should add them as well, not related to your series though...
On Sun, May 12, 2024 at 11:17:09AM +0300, Tariq Toukan wrote: > > > On 09/05/2024 23:50, Joe Damato wrote: > > mlx4_en_alloc_frags currently returns -ENOMEM when mlx4_alloc_page > > fails but does not increment a stat field when this occurs. > > > > A new field called alloc_fail has been added to struct mlx4_en_rx_ring > > which is now incremented in mlx4_en_rx_ring when -ENOMEM occurs. > > > > Signed-off-by: Joe Damato <jdamato@fastly.com> > > Tested-by: Martin Karsten <mkarsten@uwaterloo.ca> > > --- > > drivers/net/ethernet/mellanox/mlx4/en_rx.c | 4 +++- > > drivers/net/ethernet/mellanox/mlx4/mlx4_en.h | 1 + > > 2 files changed, 4 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/net/ethernet/mellanox/mlx4/en_rx.c b/drivers/net/ethernet/mellanox/mlx4/en_rx.c > > index 8328df8645d5..15c57e9517e9 100644 > > --- a/drivers/net/ethernet/mellanox/mlx4/en_rx.c > > +++ b/drivers/net/ethernet/mellanox/mlx4/en_rx.c > > @@ -82,8 +82,10 @@ static int mlx4_en_alloc_frags(struct mlx4_en_priv *priv, > > for (i = 0; i < priv->num_frags; i++, frags++) { > > if (!frags->page) { > > - if (mlx4_alloc_page(priv, frags, gfp)) > > + if (mlx4_alloc_page(priv, frags, gfp)) { > > + ring->alloc_fail++; > > return -ENOMEM; > > + } > > ring->rx_alloc_pages++; > > } > > rx_desc->data[i].addr = cpu_to_be64(frags->dma + > > diff --git a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h b/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h > > index efe3f97b874f..cd70df22724b 100644 > > --- a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h > > +++ b/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h > > @@ -355,6 +355,7 @@ struct mlx4_en_rx_ring { > > unsigned long xdp_tx; > > unsigned long xdp_tx_full; > > unsigned long dropped; > > + unsigned long alloc_fail; > > int hwtstamp_rx_filter; > > cpumask_var_t affinity_mask; > > struct xdp_rxq_info xdp_rxq; > > Counter should be reset in mlx4_en_clear_stats(). OK, thanks. I'll add that to the v5, alongside any other feedback that comes in within the next ~24 hours or so. > BTW, there are existing counters that are missing there already. > We should add them as well, not related to your series though... Yea, I see what you mean about the other counters. I think those can potentially be sent as a 'Fixes' later?
diff --git a/drivers/net/ethernet/mellanox/mlx4/en_rx.c b/drivers/net/ethernet/mellanox/mlx4/en_rx.c index 8328df8645d5..15c57e9517e9 100644 --- a/drivers/net/ethernet/mellanox/mlx4/en_rx.c +++ b/drivers/net/ethernet/mellanox/mlx4/en_rx.c @@ -82,8 +82,10 @@ static int mlx4_en_alloc_frags(struct mlx4_en_priv *priv, for (i = 0; i < priv->num_frags; i++, frags++) { if (!frags->page) { - if (mlx4_alloc_page(priv, frags, gfp)) + if (mlx4_alloc_page(priv, frags, gfp)) { + ring->alloc_fail++; return -ENOMEM; + } ring->rx_alloc_pages++; } rx_desc->data[i].addr = cpu_to_be64(frags->dma + diff --git a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h b/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h index efe3f97b874f..cd70df22724b 100644 --- a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h +++ b/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h @@ -355,6 +355,7 @@ struct mlx4_en_rx_ring { unsigned long xdp_tx; unsigned long xdp_tx_full; unsigned long dropped; + unsigned long alloc_fail; int hwtstamp_rx_filter; cpumask_var_t affinity_mask; struct xdp_rxq_info xdp_rxq;