The xdp_drops statistic indicates the number of XDP frames dropped in
the Rx direction. However, enetc_xdp_drop() is also used in XDP_TX and
XDP_REDIRECT actions. If frame loss occurs in these two actions, the
frames loss count should not be included in xdp_drops, because there
are already xdp_tx_drops and xdp_redirect_failures to count the frame
loss of these two actions, so it's better to remove xdp_drops statistic
from enetc_xdp_drop() and increase xdp_drops in XDP_DROP action.
Fixes: 7ed2bc80074e ("net: enetc: add support for XDP_TX")
Signed-off-by: Wei Fang <wei.fang@nxp.com>
---
drivers/net/ethernet/freescale/enetc/enetc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/freescale/enetc/enetc.c b/drivers/net/ethernet/freescale/enetc/enetc.c
index 032d8eadd003..56e59721ec7d 100644
--- a/drivers/net/ethernet/freescale/enetc/enetc.c
+++ b/drivers/net/ethernet/freescale/enetc/enetc.c
@@ -1521,7 +1521,6 @@ static void enetc_xdp_drop(struct enetc_bdr *rx_ring, int rx_ring_first,
&rx_ring->rx_swbd[rx_ring_first]);
enetc_bdr_idx_inc(rx_ring, &rx_ring_first);
}
- rx_ring->stats.xdp_drops++;
}
static int enetc_clean_rx_ring_xdp(struct enetc_bdr *rx_ring,
@@ -1586,6 +1585,7 @@ static int enetc_clean_rx_ring_xdp(struct enetc_bdr *rx_ring,
fallthrough;
case XDP_DROP:
enetc_xdp_drop(rx_ring, orig_i, i);
+ rx_ring->stats.xdp_drops++;
break;
case XDP_PASS:
rxbd = orig_rxbd;
--
2.34.1
On 2024-09-19 at 14:11:02, Wei Fang (wei.fang@nxp.com) wrote: > The xdp_drops statistic indicates the number of XDP frames dropped in > the Rx direction. However, enetc_xdp_drop() is also used in XDP_TX and > XDP_REDIRECT actions. If frame loss occurs in these two actions, the > frames loss count should not be included in xdp_drops, because there > are already xdp_tx_drops and xdp_redirect_failures to count the frame > loss of these two actions, so it's better to remove xdp_drops statistic > from enetc_xdp_drop() and increase xdp_drops in XDP_DROP action. nit: s/xdp_drops/xdp_rx_drops would be appropriate as you have xdp_tx_drops and xdp_redirect_failures.
On Thu, Sep 19, 2024 at 04:41:02PM +0800, Wei Fang wrote: > The xdp_drops statistic indicates the number of XDP frames dropped in > the Rx direction. However, enetc_xdp_drop() is also used in XDP_TX and > XDP_REDIRECT actions. If frame loss occurs in these two actions, the > frames loss count should not be included in xdp_drops, because there > are already xdp_tx_drops and xdp_redirect_failures to count the frame > loss of these two actions, so it's better to remove xdp_drops statistic > from enetc_xdp_drop() and increase xdp_drops in XDP_DROP action. > > Fixes: 7ed2bc80074e ("net: enetc: add support for XDP_TX") > Signed-off-by: Wei Fang <wei.fang@nxp.com> Reviewed-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com> > --- > drivers/net/ethernet/freescale/enetc/enetc.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/net/ethernet/freescale/enetc/enetc.c b/drivers/net/ethernet/freescale/enetc/enetc.c > index 032d8eadd003..56e59721ec7d 100644 > --- a/drivers/net/ethernet/freescale/enetc/enetc.c > +++ b/drivers/net/ethernet/freescale/enetc/enetc.c > @@ -1521,7 +1521,6 @@ static void enetc_xdp_drop(struct enetc_bdr *rx_ring, int rx_ring_first, > &rx_ring->rx_swbd[rx_ring_first]); > enetc_bdr_idx_inc(rx_ring, &rx_ring_first); > } > - rx_ring->stats.xdp_drops++; > } > > static int enetc_clean_rx_ring_xdp(struct enetc_bdr *rx_ring, > @@ -1586,6 +1585,7 @@ static int enetc_clean_rx_ring_xdp(struct enetc_bdr *rx_ring, > fallthrough; > case XDP_DROP: > enetc_xdp_drop(rx_ring, orig_i, i); > + rx_ring->stats.xdp_drops++; > break; > case XDP_PASS: > rxbd = orig_rxbd; > -- > 2.34.1 > >
© 2016 - 2024 Red Hat, Inc.