Message ID | 20230602094659.965523-3-wei.fang@nxp.com (mailing list archive) |
---|---|
State | Accepted |
Commit | fdebd850cc065495abf1d64756496050bb22db67 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | net: enetc: correct the statistics of rx bytes | expand |
On Fri, Jun 02, 2023 at 05:46:59PM +0800, wei.fang@nxp.com wrote: > From: Wei Fang <wei.fang@nxp.com> > > The rx_bytes statistics of XDP are always zero, because rx_byte_cnt > is not updated after it is initialized to 0. So fix it. > > Fixes: d1b15102dd16 ("net: enetc: add support for XDP_DROP and XDP_PASS") > Signed-off-by: Wei Fang <wei.fang@nxp.com> > --- Reviewed-by: Vladimir Oltean <vladimir.oltean@nxp.com> Thanks!
diff --git a/drivers/net/ethernet/freescale/enetc/enetc.c b/drivers/net/ethernet/freescale/enetc/enetc.c index d6c0f3f46c2a..9e1b2536e9a9 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc.c +++ b/drivers/net/ethernet/freescale/enetc/enetc.c @@ -1571,6 +1571,14 @@ static int enetc_clean_rx_ring_xdp(struct enetc_bdr *rx_ring, enetc_build_xdp_buff(rx_ring, bd_status, &rxbd, &i, &cleaned_cnt, &xdp_buff); + /* When set, the outer VLAN header is extracted and reported + * in the receive buffer descriptor. So rx_byte_cnt should + * add the length of the extracted VLAN header. + */ + if (bd_status & ENETC_RXBD_FLAG_VLAN) + rx_byte_cnt += VLAN_HLEN; + rx_byte_cnt += xdp_get_buff_len(&xdp_buff); + xdp_act = bpf_prog_run_xdp(prog, &xdp_buff); switch (xdp_act) {