Home
last modified time | relevance | path

Searched full:xdp (Results 1 – 25 of 397) sorted by relevance

12345678910>>...16

/linux/include/net/libeth/
H A Dxsk.h7 #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 Dxdp.h43 * 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 Dxdp_redirect_map.c16 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 Dxdp_features.c65 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 Dverifier_xdp_direct_packet_access.c8 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 Dxsk_xdp_progs.c22 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 Dtest_xdp_do_redirect.c11 * @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 Dtest_xdp_loop.c75 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 Dtest_xdp.c79 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 Dredirect.rst25 :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 Dbnxt_xdp.c29 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 Dxdp.c8 #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 Dxsk.c31 * @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 Dxdp-rx-metadata.rst4 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 Digb_xsk.c6 #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 Dice_xsk.c7 #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 Dxdp.py5 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 Dlan966x_xdp.c9 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 Dxdp_tx_iptunnel_kern.c77 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 Dxdp_adjust_tail_kern.c71 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 Dbpftool-net.rst32 | *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 Dxsk_reconfig.py5 # 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 Dxsk.c35 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 Dxdp.h3 #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 Di40e_xsk.c57 * 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...]

12345678910>>...16