Commit e83fabb7 authored by Wei Fang's avatar Wei Fang Committed by Jakub Kicinski

net: fec: add exception tracing for XDP

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: default avatarWei Fang <wei.fang@nxp.com>
Suggested-by: default avatarJakub Kicinski <kuba@kernel.org>
Reviewed-by: default avatarJacob Keller <jacob.e.keller@intel.com>
Link: https://lore.kernel.org/r/20230822065255.606739-1-wei.fang@nxp.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 664c84c2
...@@ -1583,25 +1583,18 @@ fec_enet_run_xdp(struct fec_enet_private *fep, struct bpf_prog *prog, ...@@ -1583,25 +1583,18 @@ fec_enet_run_xdp(struct fec_enet_private *fep, struct bpf_prog *prog,
case XDP_REDIRECT: case XDP_REDIRECT:
rxq->stats[RX_XDP_REDIRECT]++; rxq->stats[RX_XDP_REDIRECT]++;
err = xdp_do_redirect(fep->netdev, xdp, prog); err = xdp_do_redirect(fep->netdev, xdp, prog);
if (!err) { if (unlikely(err))
ret = FEC_ENET_XDP_REDIR; goto xdp_err;
} else {
ret = FEC_ENET_XDP_CONSUMED; ret = FEC_ENET_XDP_REDIR;
page = virt_to_head_page(xdp->data);
page_pool_put_page(rxq->page_pool, page, sync, true);
}
break; break;
case XDP_TX: case XDP_TX:
err = fec_enet_xdp_tx_xmit(fep, cpu, xdp, sync); err = fec_enet_xdp_tx_xmit(fep, cpu, xdp, sync);
if (unlikely(err)) { if (unlikely(err))
ret = FEC_ENET_XDP_CONSUMED; goto xdp_err;
page = virt_to_head_page(xdp->data);
page_pool_put_page(rxq->page_pool, page, sync, true); ret = FEC_ENET_XDP_TX;
trace_xdp_exception(fep->netdev, prog, act);
} else {
ret = FEC_ENET_XDP_TX;
}
break; break;
default: default:
...@@ -1613,9 +1606,12 @@ fec_enet_run_xdp(struct fec_enet_private *fep, struct bpf_prog *prog, ...@@ -1613,9 +1606,12 @@ fec_enet_run_xdp(struct fec_enet_private *fep, struct bpf_prog *prog,
case XDP_DROP: case XDP_DROP:
rxq->stats[RX_XDP_DROP]++; rxq->stats[RX_XDP_DROP]++;
xdp_err:
ret = FEC_ENET_XDP_CONSUMED; ret = FEC_ENET_XDP_CONSUMED;
page = virt_to_head_page(xdp->data); page = virt_to_head_page(xdp->data);
page_pool_put_page(rxq->page_pool, page, sync, true); page_pool_put_page(rxq->page_pool, page, sync, true);
if (act != XDP_DROP)
trace_xdp_exception(fep->netdev, prog, act);
break; break;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment