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

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.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 664c84c2
Loading
Loading
Loading
Loading
+11 −15
Original line number Diff line number Diff line
@@ -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) {
		if (unlikely(err))
			goto xdp_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);
		}
		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 {
		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;
	}