Lines Matching defs:xdp

21 #include <net/xdp.h>
43 /* xdp */
122 struct xdp_buff xdp;
282 static void *veth_xdp_to_ptr(struct xdp_frame *xdp)
284 return (void *)((unsigned long)xdp | VETH_XDP_FLAG);
317 struct veth_rq *rq, bool xdp)
319 return __dev_forward_skb(dev, skb) ?: xdp ?
592 static int veth_xdp_tx(struct veth_rq *rq, struct xdp_buff *xdp,
595 struct xdp_frame *frame = xdp_convert_buff_to_frame(xdp);
620 struct xdp_buff *xdp = &vxbuf.xdp;
623 xdp_convert_frame_to_buff(frame, xdp);
624 xdp->rxq = &rq->xdp_rxq;
627 act = bpf_prog_run_xdp(xdp_prog, xdp);
631 if (xdp_update_frame_from_buff(xdp, frame))
636 xdp->rxq->mem = frame->mem;
637 if (unlikely(veth_xdp_tx(rq, xdp, bq) < 0)) {
648 xdp->rxq->mem = frame->mem;
649 if (xdp_do_redirect(rq->dev, xdp, xdp_prog)) {
709 static void veth_xdp_get(struct xdp_buff *xdp)
711 struct skb_shared_info *sinfo = xdp_get_shared_info_from_buff(xdp);
714 get_page(virt_to_page(xdp->data));
715 if (likely(!xdp_buff_has_frags(xdp)))
723 struct xdp_buff *xdp,
803 xdp_init_buff(xdp, frame_sz, &rq->xdp_rxq);
804 xdp_prepare_buff(xdp, skb->head, skb_headroom(skb),
809 xdp_buff_set_frags_flag(xdp);
811 xdp_buff_clear_frags_flag(xdp);
831 struct xdp_buff *xdp = &vxbuf.xdp;
845 if (veth_convert_skb_to_xdp_buff(rq, xdp, &skb))
849 orig_data = xdp->data;
850 orig_data_end = xdp->data_end;
852 act = bpf_prog_run_xdp(xdp_prog, xdp);
858 veth_xdp_get(xdp);
860 xdp->rxq->mem = rq->xdp_mem;
861 if (unlikely(veth_xdp_tx(rq, xdp, bq) < 0)) {
870 veth_xdp_get(xdp);
872 xdp->rxq->mem = rq->xdp_mem;
873 if (xdp_do_redirect(rq->dev, xdp, xdp_prog)) {
893 off = orig_data - xdp->data;
902 off = xdp->data_end - orig_data_end;
909 if (xdp_buff_has_frags(xdp))
916 metalen = xdp->data - xdp->data_meta;
929 xdp_return_buff(xdp);
1664 static int veth_xdp(struct net_device *dev, struct netdev_bpf *xdp)
1666 switch (xdp->command) {
1668 return veth_xdp_set(dev, xdp->prog, xdp->extack);