Message ID | 20230822065255.606739-1-wei.fang@nxp.com (mailing list archive) |
---|---|
State | Accepted |
Commit | e83fabb797b98a9ead4b5bb50c85fb499966ad7e |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net-next] net: fec: add exception tracing for XDP | expand |
On 8/21/2023 11:52 PM, Wei Fang wrote: > As we already added the exception tracing for XDP_TX, I think it is > necessary to add the exception tracing for other XDP actions, such > as XDP_REDIRECT, XDP_ABORTED and unknown error actions. > > Signed-off-by: Wei Fang <wei.fang@nxp.com> > Suggested-by: Jakub Kicinski <kuba@kernel.org> > --- Makes sense to me, and it ends up being a bit less code. Reviewed-by: Jacob Keller <jacob.e.keller@intel.com> > drivers/net/ethernet/freescale/fec_main.c | 26 ++++++++++------------- > 1 file changed, 11 insertions(+), 15 deletions(-) > > diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c > index e23a55977183..8909899e9a31 100644 > --- a/drivers/net/ethernet/freescale/fec_main.c > +++ b/drivers/net/ethernet/freescale/fec_main.c > @@ -1583,25 +1583,18 @@ fec_enet_run_xdp(struct fec_enet_private *fep, struct bpf_prog *prog, > case XDP_REDIRECT: > rxq->stats[RX_XDP_REDIRECT]++; > err = xdp_do_redirect(fep->netdev, xdp, prog); > - if (!err) { > - ret = FEC_ENET_XDP_REDIR; > - } else { > - ret = FEC_ENET_XDP_CONSUMED; > - page = virt_to_head_page(xdp->data); > - page_pool_put_page(rxq->page_pool, page, sync, true); > - } > + if (unlikely(err)) > + goto xdp_err; > + > + ret = FEC_ENET_XDP_REDIR; > break; > > case XDP_TX: > err = fec_enet_xdp_tx_xmit(fep, cpu, xdp, sync); > - if (unlikely(err)) { > - ret = FEC_ENET_XDP_CONSUMED; > - page = virt_to_head_page(xdp->data); > - page_pool_put_page(rxq->page_pool, page, sync, true); > - trace_xdp_exception(fep->netdev, prog, act); > - } else { > - ret = FEC_ENET_XDP_TX; > - } > + if (unlikely(err)) > + goto xdp_err; > + > + ret = FEC_ENET_XDP_TX; > break; > > default: > @@ -1613,9 +1606,12 @@ fec_enet_run_xdp(struct fec_enet_private *fep, struct bpf_prog *prog, > > case XDP_DROP: > rxq->stats[RX_XDP_DROP]++; > +xdp_err: > ret = FEC_ENET_XDP_CONSUMED; > page = virt_to_head_page(xdp->data); > page_pool_put_page(rxq->page_pool, page, sync, true); Ok, so we handle the cleaning up of the page and such here, which is shared for both paths now. Nice! > + if (act != XDP_DROP) > + trace_xdp_exception(fep->netdev, prog, act); > break; > } >
Hello: This patch was applied to netdev/net-next.git (main) by Jakub Kicinski <kuba@kernel.org>: On Tue, 22 Aug 2023 14:52:55 +0800 you wrote: > As we already added the exception tracing for XDP_TX, I think it is > necessary to add the exception tracing for other XDP actions, such > as XDP_REDIRECT, XDP_ABORTED and unknown error actions. > > Signed-off-by: Wei Fang <wei.fang@nxp.com> > Suggested-by: Jakub Kicinski <kuba@kernel.org> > > [...] Here is the summary with links: - [net-next] net: fec: add exception tracing for XDP https://git.kernel.org/netdev/net-next/c/e83fabb797b9 You are awesome, thank you!
diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c index e23a55977183..8909899e9a31 100644 --- a/drivers/net/ethernet/freescale/fec_main.c +++ b/drivers/net/ethernet/freescale/fec_main.c @@ -1583,25 +1583,18 @@ fec_enet_run_xdp(struct fec_enet_private *fep, struct bpf_prog *prog, case XDP_REDIRECT: rxq->stats[RX_XDP_REDIRECT]++; err = xdp_do_redirect(fep->netdev, xdp, prog); - if (!err) { - ret = FEC_ENET_XDP_REDIR; - } else { - ret = FEC_ENET_XDP_CONSUMED; - page = virt_to_head_page(xdp->data); - page_pool_put_page(rxq->page_pool, page, sync, true); - } + if (unlikely(err)) + goto xdp_err; + + ret = FEC_ENET_XDP_REDIR; break; case XDP_TX: err = fec_enet_xdp_tx_xmit(fep, cpu, xdp, sync); - if (unlikely(err)) { - ret = FEC_ENET_XDP_CONSUMED; - page = virt_to_head_page(xdp->data); - page_pool_put_page(rxq->page_pool, page, sync, true); - trace_xdp_exception(fep->netdev, prog, act); - } else { - ret = FEC_ENET_XDP_TX; - } + if (unlikely(err)) + goto xdp_err; + + ret = FEC_ENET_XDP_TX; break; default: @@ -1613,9 +1606,12 @@ fec_enet_run_xdp(struct fec_enet_private *fep, struct bpf_prog *prog, case XDP_DROP: rxq->stats[RX_XDP_DROP]++; +xdp_err: ret = FEC_ENET_XDP_CONSUMED; page = virt_to_head_page(xdp->data); page_pool_put_page(rxq->page_pool, page, sync, true); + if (act != XDP_DROP) + trace_xdp_exception(fep->netdev, prog, act); break; }
As we already added the exception tracing for XDP_TX, I think it is necessary to add the exception tracing for other XDP actions, such as XDP_REDIRECT, XDP_ABORTED and unknown error actions. Signed-off-by: Wei Fang <wei.fang@nxp.com> Suggested-by: Jakub Kicinski <kuba@kernel.org> --- drivers/net/ethernet/freescale/fec_main.c | 26 ++++++++++------------- 1 file changed, 11 insertions(+), 15 deletions(-)