/linux/include/net/libeth/ |
H A D | xsk.h | 7 #include <net/libeth/xdp.h> 19 * @bq: XDP Tx bulk to queue the head frag to 20 * @xdp: XSk buffer with the head to queue 25 struct libeth_xdp_buff *xdp) in libeth_xsk_tx_queue_head() argument 28 .xsk = xdp, in libeth_xsk_tx_queue_head() 29 __libeth_xdp_tx_len(xdp->base.data_end - xdp->data, in libeth_xsk_tx_queue_head() 33 if (likely(!xdp_buff_has_frags(&xdp->base))) in libeth_xsk_tx_queue_head() 43 * @bq: XDP Tx bulk to queue the frag to 57 * @bq: XDP T 65 libeth_xsk_tx_queue_bulk(struct libeth_xdp_tx_bulk * bq,struct libeth_xdp_buff * xdp,bool (* flush_bulk)(struct libeth_xdp_tx_bulk * bq,u32 flags)) libeth_xsk_tx_queue_bulk() argument 115 struct libeth_xdp_buff *xdp = frm.xsk; libeth_xsk_tx_fill_buf() local 352 libeth_xsk_process_buff(struct libeth_xdp_buff * head,struct libeth_xdp_buff * xdp,u32 len) libeth_xsk_process_buff() argument 390 __libeth_xsk_run_prog(struct libeth_xdp_buff * xdp,const struct libeth_xdp_tx_bulk * bq) __libeth_xsk_run_prog() argument 419 libeth_xsk_run_prog(xdp,bq,fl) global() argument 441 __libeth_xsk_run_pass(struct libeth_xdp_buff * xdp,struct libeth_xdp_tx_bulk * bq,struct napi_struct * napi,struct libeth_rq_napi_stats * rs,const void * md,void (* prep)(struct libeth_xdp_buff * xdp,const void * md),u32 (* run)(struct libeth_xdp_buff * xdp,struct libeth_xdp_tx_bulk * bq),bool (* populate)(struct sk_buff * skb,const struct libeth_xdp_buff * xdp,struct libeth_rq_napi_stats * rs)) __libeth_xsk_run_pass() argument 444 __libeth_xsk_run_pass(struct libeth_xdp_buff * xdp,struct libeth_xdp_tx_bulk * bq,struct napi_struct * napi,struct libeth_rq_napi_stats * rs,const void * md,void (* prep)(struct libeth_xdp_buff * xdp,const void * md),u32 (* run)(struct libeth_xdp_buff * xdp,struct libeth_xdp_tx_bulk * bq),bool (* populate)(struct sk_buff * skb,const struct libeth_xdp_buff * xdp,struct libeth_rq_napi_stats * rs)) __libeth_xsk_run_pass() argument 446 __libeth_xsk_run_pass(struct libeth_xdp_buff * xdp,struct libeth_xdp_tx_bulk * bq,struct napi_struct * napi,struct libeth_rq_napi_stats * rs,const void * md,void (* prep)(struct libeth_xdp_buff * xdp,const void * md),u32 (* run)(struct libeth_xdp_buff * xdp,struct libeth_xdp_tx_bulk * bq),bool (* populate)(struct sk_buff * skb,const struct libeth_xdp_buff * xdp,struct libeth_rq_napi_stats * rs)) __libeth_xsk_run_pass() argument 449 __libeth_xsk_run_pass(struct libeth_xdp_buff * xdp,struct libeth_xdp_tx_bulk * bq,struct napi_struct * napi,struct libeth_rq_napi_stats * rs,const void * md,void (* prep)(struct libeth_xdp_buff * xdp,const void * md),u32 (* run)(struct libeth_xdp_buff * xdp,struct libeth_xdp_tx_bulk * bq),bool (* populate)(struct sk_buff * skb,const struct libeth_xdp_buff * xdp,struct libeth_rq_napi_stats * rs)) __libeth_xsk_run_pass() argument 500 libeth_xsk_run_pass(xdp,bq,napi,rs,desc,run,populate) global() argument 627 libeth_xsk_buff_xdp_get_dma(xdp) global() argument [all...] |
H A D | xdp.h | 43 * to quickly get frame metadata from xdpmo and driver buff-to-xdp callbacks 58 offsetof(struct xdp_buff_xsk, xdp.data)); 114 * Return: number of XDP Tx queues the device needs to use. 317 * struct libeth_xdp_tx_frame - represents one XDP Tx element 324 * @xsk: ``XDP_TX`` for XSk, XDP buffer for any frag 368 * struct libeth_xdp_tx_bulk - XDP Tx frame bulk for bulk sending 369 * @prog: corresponding active XDP program, %NULL for .ndo_xdp_xmit() 372 * @act_mask: Rx only, mask of all the XDP prog verdicts for that NAPI session 376 * All XDP Tx operations except XSk xmit queue each frame to the bulk first 434 * struct libeth_xdp_tx_desc - abstraction for an XDP T 599 libeth_xdp_tx_queue_head(struct libeth_xdp_tx_bulk * bq,const struct libeth_xdp_buff * xdp) libeth_xdp_tx_queue_head() argument 638 libeth_xdp_tx_queue_bulk(struct libeth_xdp_tx_bulk * bq,struct libeth_xdp_buff * xdp,bool (* flush_bulk)(struct libeth_xdp_tx_bulk * bq,u32 flags)) libeth_xdp_tx_queue_bulk() argument 1248 libeth_xdp_return_buff(xdp) global() argument 1250 __libeth_xdp_return_buff(struct libeth_xdp_buff * xdp,bool napi) __libeth_xdp_return_buff() argument 1279 libeth_xdp_prepare_buff(struct libeth_xdp_buff * xdp,const struct libeth_fqe * fqe,u32 len) libeth_xdp_prepare_buff() argument 1312 libeth_xdp_process_buff(struct libeth_xdp_buff * xdp,const struct libeth_fqe * fqe,u32 len) libeth_xdp_process_buff() argument 1339 libeth_xdp_buff_stats_frags(struct libeth_rq_napi_stats * ss,const struct libeth_xdp_buff * xdp) libeth_xdp_buff_stats_frags() argument 1364 __libeth_xdp_run_prog(struct libeth_xdp_buff * xdp,const struct libeth_xdp_tx_bulk * bq) __libeth_xdp_run_prog() argument 1412 __libeth_xdp_run_flush(struct libeth_xdp_buff * xdp,struct libeth_xdp_tx_bulk * bq,u32 (* run)(struct libeth_xdp_buff * xdp,const struct libeth_xdp_tx_bulk * bq),bool (* queue)(struct libeth_xdp_tx_bulk * bq,struct libeth_xdp_buff * xdp,bool (* flush_bulk)(struct libeth_xdp_tx_bulk * bq,u32 flags)),bool (* flush_bulk)(struct libeth_xdp_tx_bulk * bq,u32 flags)) __libeth_xdp_run_flush() argument 1414 __libeth_xdp_run_flush(struct libeth_xdp_buff * xdp,struct libeth_xdp_tx_bulk * bq,u32 (* run)(struct libeth_xdp_buff * xdp,const struct libeth_xdp_tx_bulk * bq),bool (* queue)(struct libeth_xdp_tx_bulk * bq,struct libeth_xdp_buff * xdp,bool (* flush_bulk)(struct libeth_xdp_tx_bulk * bq,u32 flags)),bool (* flush_bulk)(struct libeth_xdp_tx_bulk * bq,u32 flags)) __libeth_xdp_run_flush() argument 1448 libeth_xdp_run_prog(xdp,bq,fl) global() argument 1478 __libeth_xdp_run_pass(struct libeth_xdp_buff * xdp,struct libeth_xdp_tx_bulk * bq,struct napi_struct * napi,struct libeth_rq_napi_stats * rs,const void * md,void (* prep)(struct libeth_xdp_buff * xdp,const void * md),bool (* run)(struct libeth_xdp_buff * xdp,struct libeth_xdp_tx_bulk * bq),bool (* populate)(struct sk_buff * skb,const struct libeth_xdp_buff * xdp,struct libeth_rq_napi_stats * rs)) __libeth_xdp_run_pass() argument 1481 __libeth_xdp_run_pass(struct libeth_xdp_buff * xdp,struct libeth_xdp_tx_bulk * bq,struct napi_struct * napi,struct libeth_rq_napi_stats * rs,const void * md,void (* prep)(struct libeth_xdp_buff * xdp,const void * md),bool (* run)(struct libeth_xdp_buff * xdp,struct libeth_xdp_tx_bulk * bq),bool (* populate)(struct sk_buff * skb,const struct libeth_xdp_buff * xdp,struct libeth_rq_napi_stats * rs)) __libeth_xdp_run_pass() argument 1483 __libeth_xdp_run_pass(struct libeth_xdp_buff * xdp,struct libeth_xdp_tx_bulk * bq,struct napi_struct * napi,struct libeth_rq_napi_stats * rs,const void * md,void (* prep)(struct libeth_xdp_buff * xdp,const void * md),bool (* run)(struct libeth_xdp_buff * xdp,struct libeth_xdp_tx_bulk * bq),bool (* populate)(struct sk_buff * skb,const struct libeth_xdp_buff * xdp,struct libeth_rq_napi_stats * rs)) __libeth_xdp_run_pass() argument 1486 __libeth_xdp_run_pass(struct libeth_xdp_buff * xdp,struct libeth_xdp_tx_bulk * bq,struct napi_struct * napi,struct libeth_rq_napi_stats * rs,const void * md,void (* prep)(struct libeth_xdp_buff * xdp,const void * md),bool (* run)(struct libeth_xdp_buff * xdp,struct libeth_xdp_tx_bulk * bq),bool (* populate)(struct sk_buff * skb,const struct libeth_xdp_buff * xdp,struct libeth_rq_napi_stats * rs)) __libeth_xdp_run_pass() argument 1523 libeth_xdp_prep_desc(struct libeth_xdp_buff * xdp,const void * desc) libeth_xdp_prep_desc() argument 1542 libeth_xdp_run_pass(xdp,bq,napi,ss,desc,run,populate) global() argument 1719 libeth_xdp_buff_to_rq(xdp,type,member) global() argument [all...] |
/linux/tools/testing/selftests/bpf/progs/ |
H A D | xdp_redirect_map.c | 16 SEC("xdp") 17 int xdp_redirect_map_0(struct xdp_md *xdp) in xdp_redirect_map_0() argument 22 SEC("xdp") 23 int xdp_redirect_map_1(struct xdp_md *xdp) in xdp_redirect_map_1() argument 28 SEC("xdp") 29 int xdp_redirect_map_2(struct xdp_md *xdp) in xdp_redirect_map_2() argument 41 static int xdp_count(struct xdp_md *xdp, __u32 key) in xdp_count() argument 43 void *data_end = (void *)(long)xdp->data_end; in xdp_count() 44 void *data = (void *)(long)xdp->data; in xdp_count() 61 SEC("xdp") 62 xdp_count_0(struct xdp_md * xdp) xdp_count_0() argument 68 xdp_count_1(struct xdp_md * xdp) xdp_count_1() argument 74 xdp_count_2(struct xdp_md * xdp) xdp_count_2() argument 86 store_mac(struct xdp_md * xdp,__u32 id) store_mac() argument 108 store_mac_1(struct xdp_md * xdp) store_mac_1() argument 114 store_mac_2(struct xdp_md * xdp) store_mac_2() argument [all...] |
H A D | xdp_features.c | 65 xdp_process_echo_packet(struct xdp_md *xdp, bool dut) in xdp_process_echo_packet() argument 67 void *data_end = (void *)(long)xdp->data_end; in xdp_process_echo_packet() 68 void *data = (void *)(long)xdp->data; in xdp_process_echo_packet() 135 xdp_update_stats(struct xdp_md *xdp, bool tx, bool dut) in xdp_update_stats() argument 139 if (xdp_process_echo_packet(xdp, tx)) in xdp_update_stats() 155 SEC("xdp") 156 int xdp_tester_check_tx(struct xdp_md *xdp) in xdp_tester_check_tx() argument 158 xdp_update_stats(xdp, true, false); in xdp_tester_check_tx() 163 SEC("xdp") 164 int xdp_tester_check_rx(struct xdp_md *xdp) in xdp_tester_check_rx() argument 174 xdp_do_pass(struct xdp_md * xdp) xdp_do_pass() argument 182 xdp_do_drop(struct xdp_md * xdp) xdp_do_drop() argument 191 xdp_do_aborted(struct xdp_md * xdp) xdp_do_aborted() argument 200 xdp_do_tx(struct xdp_md * xdp) xdp_do_tx() argument 217 xdp_do_redirect(struct xdp_md * xdp) xdp_do_redirect() argument 227 BPF_PROG(xdp_exception,const struct net_device * dev,const struct bpf_prog * xdp,__u32 act) BPF_PROG() argument 252 xdp_do_redirect_cpumap(struct xdp_md * xdp) xdp_do_redirect_cpumap() argument [all...] |
H A D | verifier_xdp_direct_packet_access.c | 8 SEC("xdp") 9 __description("XDP pkt read, pkt_end mangling, bad access 1") 29 SEC("xdp") 30 __description("XDP pkt read, pkt_end mangling, bad access 2") 50 SEC("xdp") 51 __description("XDP pkt read, pkt_data' > pkt_end, corner case, good access") 70 SEC("xdp") 71 __description("XDP pkt read, pkt_data' > pkt_end, bad access 1") 91 SEC("xdp") 92 __description("XDP pk [all...] |
H A D | xsk_xdp_progs.c | 22 SEC("xdp.frags") int xsk_def_prog(struct xdp_md *xdp) in xsk_def_prog() argument 27 SEC("xdp.frags") int xsk_xdp_drop(struct xdp_md *xdp) in xsk_xdp_drop() argument 36 SEC("xdp.frags") int xsk_xdp_populate_metadata(struct xdp_md *xdp) in xsk_xdp_populate_metadata() argument 43 err = bpf_xdp_adjust_meta(xdp, -(int)sizeof(struct xdp_info)); in xsk_xdp_populate_metadata() 47 data = (void *)(long)xdp->data; in xsk_xdp_populate_metadata() 48 data_meta = (void *)(long)xdp->data_meta; in xsk_xdp_populate_metadata() 59 SEC("xdp") in argument 76 xsk_xdp_adjust_tail(struct xdp_md * xdp) xsk_xdp_adjust_tail() argument [all...] |
H A D | test_xdp_do_redirect.c | 11 * @MARK_IN: frame is being processed by the input XDP prog. 28 SEC("xdp") 29 int xdp_redirect(struct xdp_md *xdp) in xdp_redirect() argument 31 __u32 *metadata = (void *)(long)xdp->data_meta; in xdp_redirect() 32 void *data_end = (void *)(long)xdp->data_end; in xdp_redirect() 33 void *data = (void *)(long)xdp->data; in xdp_redirect() 41 if (xdp->ingress_ifindex != (__u32)ifindex_in) in xdp_redirect() 55 if (bpf_xdp_adjust_meta(xdp, sizeof(__u64))) in xdp_redirect() 85 SEC("xdp") 86 int xdp_count_pkts(struct xdp_md *xdp) in xdp_count_pkts() argument 102 xdp_redirect_to_111(struct xdp_md * xdp) xdp_redirect_to_111() argument 108 xdp_redirect_to_222(struct xdp_md * xdp) xdp_redirect_to_222() argument [all...] |
H A D | test_xdp_loop.c | 75 static __always_inline int handle_ipv4(struct xdp_md *xdp) in handle_ipv4() argument 77 void *data_end = (void *)(long)xdp->data_end; in handle_ipv4() 78 void *data = (void *)(long)xdp->data; in handle_ipv4() 108 if (bpf_xdp_adjust_head(xdp, 0 - (int)sizeof(struct iphdr))) in handle_ipv4() 111 data = (void *)(long)xdp->data; in handle_ipv4() 112 data_end = (void *)(long)xdp->data_end; in handle_ipv4() 148 static __always_inline int handle_ipv6(struct xdp_md *xdp) in handle_ipv6() argument 150 void *data_end = (void *)(long)xdp->data_end; in handle_ipv6() 151 void *data = (void *)(long)xdp->data; in handle_ipv6() 178 if (bpf_xdp_adjust_head(xdp, in handle_ipv6() 209 _xdp_tx_iptunnel(struct xdp_md * xdp) _xdp_tx_iptunnel() argument [all...] |
H A D | test_xdp.c | 79 static __always_inline int handle_ipv4(struct xdp_md *xdp) in handle_ipv4() argument 81 void *data_end = (void *)(long)xdp->data_end; in handle_ipv4() 82 void *data = (void *)(long)xdp->data; in handle_ipv4() 112 if (bpf_xdp_adjust_head(xdp, 0 - (int)sizeof(struct iphdr))) in handle_ipv4() 115 data = (void *)(long)xdp->data; in handle_ipv4() 116 data_end = (void *)(long)xdp->data_end; in handle_ipv4() 152 static __always_inline int handle_ipv6(struct xdp_md *xdp) in handle_ipv6() argument 154 void *data_end = (void *)(long)xdp->data_end; in handle_ipv6() 155 void *data = (void *)(long)xdp->data; in handle_ipv6() 182 if (bpf_xdp_adjust_head(xdp, in handle_ipv6() 213 _xdp_tx_iptunnel(struct xdp_md * xdp) _xdp_tx_iptunnel() argument [all...] |
/linux/Documentation/bpf/ |
H A D | redirect.rst | 25 :doc: xdp redirect 29 those that do, not all of them support non-linear frames. Non-linear xdp 41 The following bpftrace command can be used to capture and count all XDP tracepoints: 45 sudo bpftrace -e 'tracepoint:xdp:* { @cnt[probe] = count(); }' 49 @cnt[tracepoint:xdp:mem_connect]: 18 50 @cnt[tracepoint:xdp:mem_disconnect]: 18 51 @cnt[tracepoint:xdp:xdp_exception]: 19605 52 @cnt[tracepoint:xdp:xdp_devmap_xmit]: 1393604 53 @cnt[tracepoint:xdp:xdp_redirect]: 22292200 56 The various xdp tracepoint [all...] |
/linux/drivers/net/ethernet/broadcom/bnxt/ |
H A D | bnxt_xdp.c | 29 struct xdp_buff *xdp) in bnxt_xmit_bd() argument 39 if (xdp && xdp_buff_has_frags(xdp)) { in bnxt_xmit_bd() 40 sinfo = xdp_get_shared_info_from_buff(xdp); in bnxt_xmit_bd() 48 if (xdp) in bnxt_xmit_bd() 49 tx_buf->page = virt_to_head_page(xdp->data); in bnxt_xmit_bd() 97 struct xdp_buff *xdp) in __bnxt_xmit_xdp() argument 101 tx_buf = bnxt_xmit_bd(bp, txr, mapping, len, xdp); in __bnxt_xmit_xdp() 184 struct xdp_buff *xdp) in bnxt_xdp_buff_init() argument 199 xdp_init_buff(xdp, bufle in bnxt_xdp_buff_init() 204 bnxt_xdp_buff_frags_free(struct bnxt_rx_ring_info * rxr,struct xdp_buff * xdp) bnxt_xdp_buff_frags_free() argument 225 bnxt_rx_xdp(struct bnxt * bp,struct bnxt_rx_ring_info * rxr,u16 cons,struct xdp_buff * xdp,struct page * page,u8 ** data_ptr,unsigned int * len,u8 * event) bnxt_rx_xdp() argument 358 struct xdp_frame *xdp = frames[i]; bnxt_xdp_xmit() local 446 bnxt_xdp(struct net_device * dev,struct netdev_bpf * xdp) bnxt_xdp() argument 464 bnxt_xdp_build_skb(struct bnxt * bp,struct sk_buff * skb,u8 num_frags,struct page_pool * pool,struct xdp_buff * xdp) bnxt_xdp_build_skb() argument [all...] |
/linux/drivers/net/ethernet/intel/libeth/ |
H A D | xdp.c | 8 #include <net/libeth/xdp.h> 29 netdev_warn(dev, "XDPSQ sharing enabled, possible XDP Tx slowdown\n"); in __libeth_xdpsq_get() 114 * libeth_xdp_tx_exception - handle Tx exceptions of XDP frames 115 * @bq: XDP Tx frame bulk 120 * Reports XDP Tx exceptions, frees the frames that won't be sent or adjust 205 * @src: source XDP buffer 208 * Use the fields from the passed XDP buffer to initialize the stash on the 228 LIBETH_XDP_ONSTACK_BUFF(xdp); in __libeth_xdp_return_stash() 230 libeth_xdp_load_stash(xdp, stash); in __libeth_xdp_return_stash() 231 libeth_xdp_return_buff_slow(xdp); in __libeth_xdp_return_stash() 244 libeth_xdp_return_buff_slow(struct libeth_xdp_buff * xdp) libeth_xdp_return_buff_slow() argument 261 libeth_xdp_buff_add_frag(struct libeth_xdp_buff * xdp,const struct libeth_fqe * fqe,u32 len) libeth_xdp_buff_add_frag() argument 296 libeth_xdp_prog_exception(const struct libeth_xdp_tx_bulk * bq,struct libeth_xdp_buff * xdp,enum xdp_action act,int ret) libeth_xdp_prog_exception() argument [all...] |
H A D | xsk.c | 31 * @xdp: buffer to free 36 void libeth_xsk_buff_free_slow(struct libeth_xdp_buff *xdp) in libeth_xsk_buff_free_slow() argument 38 xsk_buff_free(&xdp->base); in libeth_xsk_buff_free_slow() 45 * @xdp: frag buffer 54 struct libeth_xdp_buff *xdp) in libeth_xsk_buff_add_frag() argument 56 if (!xsk_buff_add_frag(&head->base, &xdp->base)) in libeth_xsk_buff_add_frag() 62 libeth_xsk_buff_free_slow(xdp); in libeth_xsk_buff_add_frag() 72 * @xdp: buffer to account 78 const struct libeth_xdp_buff *xdp) in libeth_xsk_buff_stats_frags() argument 80 libeth_xdp_buff_stats_frags(rs, xdp); in libeth_xsk_buff_stats_frags() 98 __libeth_xsk_run_prog_slow(struct libeth_xdp_buff * xdp,const struct libeth_xdp_tx_bulk * bq,enum xdp_action act,int ret) __libeth_xsk_run_prog_slow() argument 130 libeth_xsk_prog_exception(struct libeth_xdp_buff * xdp,enum xdp_action act,int ret) libeth_xsk_prog_exception() argument [all...] |
/linux/Documentation/networking/ |
H A D | xdp-rx-metadata.rst | 4 XDP RX Metadata 7 This document describes how an eXpress Data Path (XDP) program can access 14 XDP has access to a set of kfuncs to manipulate the metadata in an XDP frame. 16 implement these kfuncs. The set of kfuncs is declared in ``include/net/xdp.h`` 22 .. kernel-doc:: net/core/xdp.c 25 .. kernel-doc:: net/core/xdp.c 28 .. kernel-doc:: net/core/xdp.c 31 An XDP program can use these kfuncs to read the metadata into stack 33 consumers, an XDP progra [all...] |
/linux/drivers/net/ethernet/intel/igb/ |
H A D | igb_xsk.c | 6 #include <net/xdp.h> 176 static u16 igb_fill_rx_descs(struct xsk_buff_pool *pool, struct xdp_buff **xdp, in igb_fill_rx_descs() argument 187 buffs = xsk_buff_alloc_batch(pool, xdp, count); in igb_fill_rx_descs() 189 dma = xsk_buff_xdp_get_dma(*xdp); in igb_fill_rx_descs() 194 xdp++; in igb_fill_rx_descs() 207 struct xdp_buff **xdp; in igb_alloc_rx_buffers_zc() local 210 xdp = &rx_ring->rx_buffer_info_zc[ntu]; in igb_alloc_rx_buffers_zc() 213 nb_buffs_extra = igb_fill_rx_descs(xsk_pool, xdp, rx_desc, in igb_alloc_rx_buffers_zc() 220 xdp = rx_ring->rx_buffer_info_zc; in igb_alloc_rx_buffers_zc() 225 nb_buffs = igb_fill_rx_descs(xsk_pool, xdp, rx_des in igb_alloc_rx_buffers_zc() 256 struct xdp_buff *xdp = rx_ring->rx_buffer_info_zc[ntc]; igb_clean_rx_ring_zc() local 266 igb_construct_skb_zc(struct igb_ring * rx_ring,struct xdp_buff * xdp,ktime_t timestamp) igb_construct_skb_zc() argument 295 igb_run_xdp_zc(struct igb_adapter * adapter,struct igb_ring * rx_ring,struct xdp_buff * xdp,struct xsk_buff_pool * xsk_pool,struct bpf_prog * xdp_prog) igb_run_xdp_zc() argument 360 struct xdp_buff *xdp; igb_clean_rx_irq_zc() local [all...] |
/linux/drivers/net/ethernet/intel/ice/ |
H A D | ice_xsk.c | 7 #include <net/xdp.h> 341 * ice_realloc_zc_buf - reallocate XDP ZC queue pairs 346 * XDP requires more memory, than rx_buf provides. 427 * @xdp: SW ring of xdp_buff that will hold the buffers 438 static u16 ice_fill_rx_descs(struct xsk_buff_pool *pool, struct xdp_buff **xdp, in ice_fill_rx_descs() argument 445 buffs = xsk_buff_alloc_batch(pool, xdp, count); in ice_fill_rx_descs() 447 dma = xsk_buff_xdp_get_dma(*xdp); in ice_fill_rx_descs() 454 ice_xdp_meta_set_desc(*xdp, rx_desc); in ice_fill_rx_descs() 457 xdp++; in ice_fill_rx_descs() 482 struct xdp_buff **xdp; in __ice_alloc_rx_bufs_zc() local 550 ice_construct_skb_zc(struct ice_rx_ring * rx_ring,struct xdp_buff * xdp) ice_construct_skb_zc() argument 678 ice_xmit_xdp_tx_zc(struct xdp_buff * xdp,struct ice_tx_ring * xdp_ring,struct xsk_buff_pool * xsk_pool) ice_xmit_xdp_tx_zc() argument 761 ice_run_xdp_zc(struct ice_rx_ring * rx_ring,struct xdp_buff * xdp,struct bpf_prog * xdp_prog,struct ice_tx_ring * xdp_ring,struct xsk_buff_pool * xsk_pool) ice_run_xdp_zc() argument 840 struct xdp_buff *xdp; ice_clean_rx_irq_zc() local 1153 struct xdp_buff *xdp = *ice_xdp_buf(rx_ring, ntc); ice_xsk_clean_rx_ring() local [all...] |
/linux/tools/testing/selftests/drivers/net/ |
H A D | xdp.py | 5 This file contains tests to verify native XDP support in network drivers. 7 directory, with each test focusing on a specific aspect of XDP functionality. 21 """Enum for XDP configuration options.""" 29 """Enum for XDP actions.""" 38 """Enum for XDP statistics.""" 51 xdp_sec: str = "xdp" # XDP section name (e.g., "xdp" or "xdp.frags") 99 Loads an XDP progra [all...] |
/linux/drivers/net/ethernet/microchip/lan966x/ |
H A D | lan966x_xdp.c | 9 static int lan966x_xdp_setup(struct net_device *dev, struct netdev_bpf *xdp) in lan966x_xdp_setup() argument 18 NL_SET_ERR_MSG_MOD(xdp->extack, in lan966x_xdp_setup() 19 "Allow to set xdp only when using fdma"); in lan966x_xdp_setup() 24 old_prog = xchg(&port->xdp_prog, xdp->prog); in lan966x_xdp_setup() 43 int lan966x_xdp(struct net_device *dev, struct netdev_bpf *xdp) in lan966x_xdp() argument 45 switch (xdp->command) { in lan966x_xdp() 47 return lan966x_xdp_setup(dev, xdp); in lan966x_xdp() 79 struct xdp_buff xdp; in lan966x_xdp_run() local 82 xdp_init_buff(&xdp, PAGE_SIZE << lan966x->rx.page_order, in lan966x_xdp_run() 84 xdp_prepare_buff(&xdp, page_addres in lan966x_xdp_run() [all...] |
/linux/samples/bpf/ |
H A D | xdp_tx_iptunnel_kern.c | 77 static __always_inline int handle_ipv4(struct xdp_md *xdp) in handle_ipv4() argument 79 void *data_end = (void *)(long)xdp->data_end; in handle_ipv4() 80 void *data = (void *)(long)xdp->data; in handle_ipv4() 112 if (bpf_xdp_adjust_head(xdp, 0 - (int)sizeof(struct iphdr))) in handle_ipv4() 115 data = (void *)(long)xdp->data; in handle_ipv4() 116 data_end = (void *)(long)xdp->data_end; in handle_ipv4() 152 static __always_inline int handle_ipv6(struct xdp_md *xdp) in handle_ipv6() argument 154 void *data_end = (void *)(long)xdp->data_end; in handle_ipv6() 155 void *data = (void *)(long)xdp->data; in handle_ipv6() 184 if (bpf_xdp_adjust_head(xdp, in handle_ipv6() 216 _xdp_tx_iptunnel(struct xdp_md * xdp) _xdp_tx_iptunnel() argument [all...] |
H A D | xdp_adjust_tail_kern.c | 71 static __always_inline int send_icmp4_too_big(struct xdp_md *xdp) in send_icmp4_too_big() argument 75 if (bpf_xdp_adjust_head(xdp, 0 - headroom)) in send_icmp4_too_big() 77 void *data = (void *)(long)xdp->data; in send_icmp4_too_big() 78 void *data_end = (void *)(long)xdp->data_end; in send_icmp4_too_big() 121 static __always_inline int handle_ipv4(struct xdp_md *xdp) in handle_ipv4() argument 123 void *data_end = (void *)(long)xdp->data_end; in handle_ipv4() 124 void *data = (void *)(long)xdp->data; in handle_ipv4() 130 if (bpf_xdp_adjust_tail(xdp, 0 - offset)) in handle_ipv4() 132 return send_icmp4_too_big(xdp); in handle_ipv4() 138 int _xdp_icmp(struct xdp_md *xdp) in _xdp_icmp() argument [all...] |
/linux/tools/bpf/bpftool/Documentation/ |
H A D | bpftool-net.rst | 32 | *ATTACH_TYPE* := { **xdp** | **xdpgeneric** | **xdpdrv** | **xdpoffload** | **tcx_ingress** | **tcx_egress** } 39 Currently, device driver xdp attachments, tcx, netkit and old-style tc 52 The current output will start with all xdp program attachments, followed by 54 flow_dissector and finally netfilter programs. Both xdp programs and 64 command used with **overwrite** option. Currently, only XDP-related modes 68 **xdp** - try native XDP and fallback to generic XDP if NIC driver does not support it; 69 **xdpgeneric** - Generic XDP. runs at generic XDP hoo [all...] |
/linux/tools/testing/selftests/drivers/net/hw/ |
H A D | xsk_reconfig.py | 5 # The test binds the XDP socket to the interface without setting 7 # make it easier to reproduce the deadlock when XDP program, 8 # XDP socket bind/unbind, rx ring resize race with refill_work on 27 xdp = cmd(f'{cfg.net_lib_dir / "xdp_helper"} - -', fail=False) 28 if xdp.ret == 255: 30 elif xdp.ret > 0: 37 raise KsftSkipEx('Failed to bind XDP socket in zerocopy.\n' \ 43 ip(f"link set dev %s xdp obj %s sec xdp" % 45 ip(f"link set dev %s xdp of [all...] |
/linux/drivers/net/ethernet/netronome/nfp/nfd3/ |
H A D | xsk.c | 35 txbuf->xdp = xrxbuf->xdp; in nfp_nfd3_xsk_tx_xdp() 87 skb_put_data(skb, xrxbuf->xdp->data, pkt_len); in nfp_nfd3_xsk_rx_skb() 105 xrxbuf->xdp->data - xrxbuf->xdp->data_meta); in nfp_nfd3_xsk_rx_skb() 184 xrxbuf->xdp->data += meta_len; in nfp_nfd3_xsk_rx() 185 xrxbuf->xdp->data_end = xrxbuf->xdp->data + pkt_len; in nfp_nfd3_xsk_rx() 186 xdp_set_data_meta_invalid(xrxbuf->xdp); in nfp_nfd3_xsk_rx() 187 xsk_buff_dma_sync_for_cpu(xrxbuf->xdp); in nfp_nfd3_xsk_rx() [all...] |
/linux/include/trace/events/ |
H A D | xdp.h | 3 #define TRACE_SYSTEM xdp 12 #include <net/xdp.h> 32 const struct bpf_prog *xdp, u32 act), 34 TP_ARGS(dev, xdp, act), 43 __entry->prog_id = xdp->aux->id; 93 const struct bpf_prog *xdp, 98 TP_ARGS(dev, xdp, tgt, err, map_type, map_id, index), 124 __entry->prog_id = xdp->aux->id; 143 const struct bpf_prog *xdp, 147 TP_ARGS(dev, xdp, tg 159 _trace_xdp_redirect(dev,xdp,to) global() argument 162 _trace_xdp_redirect_err(dev,xdp,to,err) global() argument 165 _trace_xdp_redirect_map(dev,xdp,to,map_type,map_id,index) global() argument 168 _trace_xdp_redirect_map_err(dev,xdp,to,map_type,map_id,index,err) global() argument [all...] |
/linux/drivers/net/ethernet/intel/i40e/ |
H A D | i40e_xsk.c | 57 * XDP requires more memory, than rx_buf provides. 191 * i40e_run_xdp_zc - Executes an XDP program on an xdp_buff 193 * @xdp: xdp_buff used as input to the XDP program 194 * @xdp_prog: XDP program to run 198 static int i40e_run_xdp_zc(struct i40e_ring *rx_ring, struct xdp_buff *xdp, in i40e_run_xdp_zc() argument 205 act = bpf_prog_run_xdp(xdp_prog, xdp); in i40e_run_xdp_zc() 208 err = xdp_do_redirect(rx_ring->netdev, xdp, xdp_prog); in i40e_run_xdp_zc() 223 result = i40e_xmit_xdp_tx_ring(xdp, xdp_ring); in i40e_run_xdp_zc() 245 struct xdp_buff **xdp; in i40e_alloc_rx_buffers_zc() local 290 i40e_construct_skb_zc(struct i40e_ring * rx_ring,struct xdp_buff * xdp) i40e_construct_skb_zc() argument [all...] |