Home
last modified time | relevance | path

Searched full:xsk (Results 1 – 25 of 84) sorted by relevance

1234

/linux/tools/testing/selftests/bpf/prog_tests/
H A Dxdp_metadata.c7 #include "xsk.h"
49 struct xsk { struct
59 static int open_xsk(int ifindex, struct xsk *xsk) in open_xsk() argument
80 xsk->umem_area = mmap(NULL, UMEM_SIZE, PROT_READ | PROT_WRITE, mmap_flags, -1, 0); in open_xsk()
81 if (!ASSERT_NEQ(xsk->umem_area, MAP_FAILED, "mmap")) in open_xsk()
84 ret = xsk_umem__create(&xsk->umem, in open_xsk()
85 xsk->umem_area, UMEM_SIZE, in open_xsk()
86 &xsk->fill, in open_xsk()
87 &xsk->comp, in open_xsk()
92 ret = xsk_socket__create(&xsk->socket, ifindex, QUEUE_ID, in open_xsk()
[all …]
H A Dtest_xsk.c60 static void gen_eth_hdr(struct xsk_socket_info *xsk, struct ethhdr *eth_hdr) in gen_eth_hdr() argument
62 memcpy(eth_hdr->h_dest, xsk->dst_mac, ETH_ALEN); in gen_eth_hdr()
63 memcpy(eth_hdr->h_source, xsk->src_mac, ETH_ALEN); in gen_eth_hdr()
129 static int enable_busy_poll(struct xsk_socket_info *xsk) in enable_busy_poll() argument
134 if (setsockopt(xsk_socket__fd(xsk->xsk), SOL_SOCKET, SO_PREFER_BUSY_POLL, in enable_busy_poll()
139 if (setsockopt(xsk_socket__fd(xsk->xsk), SOL_SOCKET, SO_BUSY_POLL, in enable_busy_poll()
143 sock_opt = xsk->batch_size; in enable_busy_poll()
144 if (setsockopt(xsk_socket__fd(xsk->xsk), SOL_SOCKET, SO_BUSY_POLL_BUDGET, in enable_busy_poll()
151 int xsk_configure_socket(struct xsk_socket_info *xsk, struct xsk_umem_info *umem, in xsk_configure_socket() argument
158 xsk->umem = umem; in xsk_configure_socket()
[all …]
H A Dtest_xsk.h9 #include "xsk.h"
88 struct xsk_socket *xsk; member
98 int kick_rx(struct xsk_socket_info *xsk);
99 int kick_tx(struct xsk_socket_info *xsk);
126 struct xsk_socket_info *xsk; member
160 int xsk_configure_socket(struct xsk_socket_info *xsk, struct xsk_umem_info *umem,
/linux/tools/testing/selftests/bpf/
H A Dxsk.c37 #include "xsk.h"
97 int xsk_socket__fd(const struct xsk_socket *xsk) in xsk_socket__fd() argument
99 return xsk ? xsk->fd : -EINVAL; in xsk_socket__fd()
448 int xsk_update_xskmap(struct bpf_map *map, struct xsk_socket *xsk, u32 index) in xsk_update_xskmap() argument
453 sock_fd = xsk_socket__fd(xsk); in xsk_update_xskmap()
502 static struct xsk_ctx *xsk_create_ctx(struct xsk_socket *xsk, in xsk_create_ctx() argument
516 err = xsk_create_umem_rings(umem, xsk->fd, fill, comp); in xsk_create_ctx()
551 struct xsk_socket *xsk; in xsk_socket__create_shared() local
560 xsk = calloc(1, sizeof(*xsk)); in xsk_socket__create_shared()
561 if (!xsk) in xsk_socket__create_shared()
[all …]
H A Dxdp_hw_metadata.c22 #include "xsk.h"
58 struct xsk { struct
70 struct xsk *rx_xsk; argument
92 static int open_xsk(int ifindex, struct xsk *xsk, __u32 queue_id) in open_xsk() argument
112 xsk->umem_area = mmap(NULL, UMEM_SIZE, PROT_READ | PROT_WRITE, mmap_flags, -1, 0); in open_xsk()
113 if (xsk->umem_area == MAP_FAILED) in open_xsk()
116 ret = xsk_umem__create(&xsk->umem, in open_xsk()
117 xsk->umem_area, UMEM_SIZE, in open_xsk()
118 &xsk->fill, in open_xsk()
119 &xsk->comp, in open_xsk()
[all …]
H A Dxskxceiver.c46 * then remove xsk sockets from queue 0 on both veth interfaces and
96 #include "xsk.h"
124 struct xsk_socket_info *xsk; in ifobj_zc_avail() local
144 xsk = calloc(1, sizeof(struct xsk_socket_info)); in ifobj_zc_avail()
145 if (!xsk) in ifobj_zc_avail()
149 xsk->rxqsize = XSK_RING_CONS__DEFAULT_NUM_DESCS; in ifobj_zc_avail()
150 ret = xsk_configure_socket(xsk, umem, ifobject, false); in ifobj_zc_avail()
154 xsk_socket__delete(xsk->xsk); in ifobj_zc_avail()
155 free(xsk); in ifobj_zc_avail()
H A Dxsk.h188 int xsk_socket__fd(const struct xsk_socket *xsk);
208 int xsk_update_xskmap(struct bpf_map *map, struct xsk_socket *xsk, u32 index);
224 int xsk_socket__create(struct xsk_socket **xsk,
241 void xsk_socket__delete(struct xsk_socket *xsk);
/linux/Documentation/bpf/
H A Dmap_xskmap.rst21 | xsk A | xsk B | xsk C |<---+ User space
28 | | key | xsk | | |
30 | | | | 0 | xsk A | | |
32 | | | | 1 | xsk B | | |
34 | | prog | | 2 | xsk C | |
48 Typically an XSKMAP is created per netdev. This map contains an array of XSK File
68 For ``BPF_MAP_TYPE_XSKMAP`` this map contains references to XSK FDs
73 necessary to have an XDP program loaded with at least one XSK in the
82 XSK entry references of type ``struct xdp_sock *`` can be retrieved using the
88 XSK entries can only be updated/deleted from user space and not from
[all …]
/linux/drivers/net/ethernet/mellanox/mlx5/core/en/
H A Dparams.c29 struct mlx5e_xsk_param *xsk = mlx5e_rqo_xsk_param(rqo); in mlx5e_mpwrq_page_shift() local
33 if (xsk) in mlx5e_mpwrq_page_shift()
34 req_page_shift = order_base_2(xsk->chunk_size); in mlx5e_mpwrq_page_shift()
41 if (WARN_ON_ONCE(!xsk && req_page_shift < min_page_shift)) in mlx5e_mpwrq_page_shift()
60 struct mlx5e_xsk_param *xsk = mlx5e_rqo_xsk_param(rqo); in mlx5e_mpwrq_umr_mode() local
62 bool unaligned = xsk ? xsk->unaligned : false; in mlx5e_mpwrq_umr_mode()
65 if (xsk) { in mlx5e_mpwrq_umr_mode()
66 oversized = xsk->chunk_size < (1 << page_shift); in mlx5e_mpwrq_umr_mode()
67 WARN_ON_ONCE(xsk->chunk_size > (1 << page_shift)); in mlx5e_mpwrq_umr_mode()
70 /* XSK frame size doesn't match the UMR page size, either because the in mlx5e_mpwrq_umr_mode()
[all …]
/linux/drivers/net/ethernet/intel/libeth/
H A Dxsk.c8 #include <net/libeth/xsk.h>
18 libeth_xsk_buff_free_slow(bq[i].xsk); in libeth_xsk_tx_return_bulk()
21 /* XSk TMO */
30 * libeth_xsk_buff_free_slow - free an XSk Rx buffer
43 * libeth_xsk_buff_add_frag - add frag to XSk Rx buffer
70 * libeth_xsk_buff_stats_frags - update onstack RQ stats with XSk frags info
92 * ``XDP_REDIRECT`` is the most common and hottest verdict on XSk, thus
120 * libeth_xsk_prog_exception - handle XDP prog exceptions on XSk
125 * Internal. Frees the buffer and, if the queue uses XSk wakeups, stop the
133 const struct xdp_buff_xsk *xsk; in libeth_xsk_prog_exception() local
[all …]
H A Dtx.c13 DEFINE_STATIC_CALL_NULL(xsk, libeth_xsk_buff_free_slow);
28 static_call(xsk)); in libeth_tx_complete_any()
39 static_call_update(xsk, ops ? ops->xsk : NULL); in libeth_attach_xdp()
H A Dxdp.c117 * @flags: internal libeth_xdp flags (XSk, .ndo_xdp_xmit etc.)
384 * @tmo: XSk Tx metadata ops (Tx hints)
387 * necessary; without the third one (zero), XSk support won't be advertised.
432 .xsk = libeth_xsk_buff_free_slow,
/linux/drivers/net/ethernet/mellanox/mlx5/core/en/xsk/
H A Dpool.h10 struct mlx5e_xsk *xsk, u16 ix) in mlx5e_xsk_get_pool() argument
12 if (!xsk || !xsk->pools) in mlx5e_xsk_get_pool()
18 return xsk->pools[ix]; in mlx5e_xsk_get_pool()
22 void mlx5e_build_xsk_param(struct xsk_buff_pool *pool, struct mlx5e_xsk_param *xsk);
/linux/drivers/net/ethernet/intel/idpf/
H A Dxsk.c4 #include <net/libeth/xsk.h>
8 #include "xsk.h"
23 idpf_queue_set(XSK, rxq); in idpf_xsk_setup_rxq()
51 idpf_queue_set(XSK, bufq); in idpf_xsk_setup_bufq()
60 idpf_queue_clear(XSK, txq); in idpf_xsk_setup_txq()
76 idpf_queue_set(XSK, txq); in idpf_xsk_setup_txq()
85 idpf_queue_clear(XSK, complq); in idpf_xsk_setup_complq()
97 idpf_queue_set(XSK, complq); in idpf_xsk_setup_complq()
134 if (!idpf_queue_has_clear(XSK, rxq)) in idpf_xsk_clear_queue()
141 if (!idpf_queue_has_clear(XSK, bufq)) in idpf_xsk_clear_queue()
[all …]
H A Didpf_txrx.h292 * @__IDPF_Q_XSK: the queue has an XSk pool installed
373 * @num_xsksq: number of XSk send queues
378 * @xsksq: array of XSk send queues
380 * @csd: XSk wakeup CSD
503 * @xsk: current XDP buffer in XSk mode
504 * @pool: XSk pool if installed
563 struct libeth_xdp_buff *xsk; member
604 * @pool: corresponding XSk pool if installed
733 * @xsk_buf: &xdp_buff for XSk Rx buffers
734 * @pool: &xsk_buff_pool on XSk queues
[all …]
/linux/tools/testing/selftests/bpf/progs/
H A Dxsk_xdp_progs.c16 } xsk SEC(".maps");
24 return bpf_redirect_map(&xsk, 0, XDP_DROP); in xsk_def_prog()
35 return bpf_redirect_map(&xsk, 0, XDP_DROP); in xsk_xdp_drop()
58 return bpf_redirect_map(&xsk, 0, XDP_DROP); in xsk_xdp_populate_metadata()
75 return bpf_redirect_map(&xsk, idx, XDP_DROP); in xsk_xdp_shared_umem()
95 return bpf_redirect_map(&xsk, 0, XDP_DROP); in xsk_xdp_adjust_tail()
122 return bpf_redirect_map(&xsk, 0, XDP_DROP); in xsk_xdp_adjust_tail()
H A Dxdp_metadata.c13 } xsk SEC(".maps");
102 return bpf_redirect_map(&xsk, ctx->rx_queue_index, XDP_PASS);
H A Dxdp_hw_metadata.c13 } xsk SEC(".maps");
114 return bpf_redirect_map(&xsk, ctx->rx_queue_index, XDP_PASS); in rx()
/linux/include/net/libeth/
H A Dtx.h15 * @LIBETH_SQE_EMPTY: unused/empty OR XDP_TX/XSk frame, no action required
24 * @LIBETH_SQE_XSK_TX: &libeth_xdp_buff on XSk queue, xsk_buff_free(), stats
25 * @LIBETH_SQE_XSK_TX_FRAG: &libeth_xdp_buff frag on XSk queue, xsk_buff_free()
50 * @xsk: XSk Rx frame from XDP_TX action
67 struct libeth_xdp_buff *xsk; member
96 * @xdp_tx: number of XDP-not-XSk frames processed
H A Dxdp.h110 * Each RQ must have its own XDPSQ for XSk pairs, each CPU must have own XDPSQ
282 * @LIBETH_XDP_TX_XSK: whether the function is called for ``XDP_TX`` for XSk
296 * @LIBETH_XDP_TX_CSUM: for XSk xmit, enable checksum offload
297 * @LIBETH_XDP_TX_XSKMD: for XSk xmit, mask of the metadata bits
324 * @xsk: ``XDP_TX`` for XSk, XDP buffer for any frag
325 * @len: frag length for XSk ``XDP_TX`` and .ndo_xdp_xmit()
328 * @desc: XSk xmit descriptor for direct casting
342 /* .ndo_xdp_xmit(), XSk ``XDP_TX`` */
348 struct libeth_xdp_buff *xsk; member
359 /* XSk xmit */
[all …]
/linux/Documentation/networking/
H A Daf_xdp.rst23 An AF_XDP socket (XSK) is created with the normal socket()
24 syscall. Associated with each XSK are two rings: the RX ring and the
61 call and submits the XSK of the process it would like to share UMEM
62 with as well as its own newly created XSK socket. The new process will
73 user-space application can place an XSK at an arbitrary place in this
75 this map and at this point XDP validates that the XSK in that map was
79 program loaded (and one XSK in the XSKMAP) to be able to get any
80 traffic to user space through the XSK.
214 in tools/testing/selftests/bpf/xsk.h for facilitating the use of
538 On the Rx path in copy-mode, the xsk core copies the XDP data into
[all …]
/linux/tools/testing/selftests/drivers/net/
H A Dqueues.py51 ksft_eq(q.get('xsk', None), {},
52 comment="xsk attr on queue we configured")
54 ksft_not_in('xsk', q,
55 comment="xsk attr on queue we didn't configure")
/linux/Documentation/netlink/specs/
H A Dnetdev.yaml36 name: xsk-zerocopy
74 name: xsk-flags
132 name: xsk-features
135 enum: xsk-flags
314 name: xsk-info
336 the xsk attribute.
353 name: xsk
354 doc: XSK information for this queue, if any.
356 nested-attributes: xsk-info
636 - xsk-features
[all …]
/linux/drivers/net/ethernet/intel/ice/
H A Dice_xsk.c165 * ice_realloc_rx_xdp_bufs - reallocate for either XSK or normal buffer
167 * @pool_present: is pool for XSK present
247 * ice_fill_rx_descs - pick buffers from XSK buffer pool and use it
248 * @pool: XSK Buffer pool to pull the buffers from
283 * @xsk_pool: XSK buffer pool to pick buffers to be filled by HW
334 * @xsk_pool: XSK buffer pool to pick buffers to be filled by HW
571 struct xdp_buff *first = (struct xdp_buff *)rx_ring->xsk; in ice_clean_rx_irq_zc()
677 rx_ring->xsk = (struct libeth_xdp_buff *)first; in ice_clean_rx_irq_zc()
705 * @xsk_pool: XSK buffer pool to pick buffers to be consumed by HW
730 * @xsk_pool: XSK buffer pool to pick buffers to be consumed by HW
[all …]
/linux/drivers/net/ethernet/engleder/
H A Dtsnep_xdp.c35 "XSK support only for TX/RX queue pairs\n"); in tsnep_xdp_enable_pool()
43 netdev_err(adapter->netdev, "failed to map XSK pool\n"); in tsnep_xdp_enable_pool()

1234