Re: [PATCH RFC v4 bpf-next 08/11] tun: Support xdp in the Tx path for skb
From: David Ahern <hidden>
Date: 2020-03-03 15:36:07
On 3/3/20 3:46 AM, Jesper Dangaard Brouer wrote:
On Wed, 26 Feb 2020 20:20:10 -0700 David Ahern [off-list ref] wrote:quoted
+static u32 tun_do_xdp_tx_generic(struct tun_struct *tun, + struct net_device *dev, + struct sk_buff *skb) +{ + struct bpf_prog *xdp_prog; + u32 act = XDP_PASS; + + xdp_prog = rcu_dereference(tun->xdp_egress_prog); + if (xdp_prog) { + struct xdp_txq_info txq = { .dev = dev }; + struct xdp_buff xdp; + + skb = tun_prepare_xdp_skb(skb); + if (!skb) { + act = XDP_DROP; + goto out; + } + + xdp.txq = &txq; + + act = do_xdp_generic_core(skb, &xdp, xdp_prog); + switch (act) { + case XDP_TX: /* for Tx path, XDP_TX == XDP_PASS */ + act = XDP_PASS; + break; + case XDP_PASS: + break; + case XDP_REDIRECT: + /* fall through */ + default: + bpf_warn_invalid_xdp_action(act); + /* fall through */ + case XDP_ABORTED: + trace_xdp_exception(tun->dev, xdp_prog, act);Hmm, don't we need to extend the trace_xdp_exception() to give users a hint that this happened on the TX/egress path?
tracepoint has the program id, unsupported action and device. Seems like the program id is sufficient. I do need to update libbpf to account for the attach type.