Home
last modified time | relevance | path

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

1234

/linux/drivers/net/ethernet/mellanox/mlx5/core/en/xsk/
H A Dpool.c23 static int mlx5e_xsk_get_pools(struct mlx5e_xsk *xsk) in mlx5e_xsk_get_pools() argument
25 if (!xsk->pools) { in mlx5e_xsk_get_pools()
26 xsk->pools = kcalloc(MLX5E_MAX_NUM_CHANNELS, in mlx5e_xsk_get_pools()
27 sizeof(*xsk->pools), GFP_KERNEL); in mlx5e_xsk_get_pools()
28 if (unlikely(!xsk->pools)) in mlx5e_xsk_get_pools()
32 xsk->refcnt++; in mlx5e_xsk_get_pools()
33 xsk->ever_used = true; in mlx5e_xsk_get_pools()
38 static void mlx5e_xsk_put_pools(struct mlx5e_xsk *xsk) in mlx5e_xsk_put_pools() argument
40 if (!--xsk->refcnt) { in mlx5e_xsk_put_pools()
41 kfree(xsk->pools); in mlx5e_xsk_put_pools()
[all …]
H A Dsetup.c12 struct mlx5e_xsk_param *xsk) in mlx5e_legacy_rq_validate_xsk() argument
14 if (!mlx5e_rx_is_linear_skb(mdev, params, xsk)) { in mlx5e_legacy_rq_validate_xsk()
15 mlx5_core_err(mdev, "Legacy RQ linear mode for XSK can't be activated with current params\n"); in mlx5e_legacy_rq_validate_xsk()
28 struct mlx5e_xsk_param *xsk, in mlx5e_validate_xsk_param() argument
32 * and xsk->chunk_size is limited to 65535 bytes. in mlx5e_validate_xsk_param()
34 if ((size_t)xsk->chunk_size > PAGE_SIZE || xsk->chunk_size < MLX5E_MIN_XSK_CHUNK_SIZE) { in mlx5e_validate_xsk_param()
35 mlx5_core_err(mdev, "XSK chunk size %u out of bounds [%u, %lu]\n", xsk->chunk_size, in mlx5e_validate_xsk_param()
40 /* frag_sz is different for regular and XSK RQs, so ensure that linear in mlx5e_validate_xsk_param()
45 return !mlx5e_mpwrq_validate_xsk(mdev, params, xsk); in mlx5e_validate_xsk_param()
47 return !mlx5e_legacy_rq_validate_xsk(mdev, params, xsk); in mlx5e_validate_xsk_param()
[all …]
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);
H A Dsetup.h12 struct mlx5e_xsk_param *xsk,
15 struct mlx5e_xsk_param *xsk, struct xsk_buff_pool *pool,
/linux/drivers/net/ethernet/mellanox/mlx5/core/en/
H A Dparams.c23 u8 mlx5e_mpwrq_page_shift(struct mlx5_core_dev *mdev, struct mlx5e_xsk_param *xsk) in mlx5e_mpwrq_page_shift() argument
25 u8 req_page_shift = xsk ? order_base_2(xsk->chunk_size) : PAGE_SHIFT; in mlx5e_mpwrq_page_shift()
29 if (WARN_ON_ONCE(!xsk && req_page_shift < min_page_shift)) in mlx5e_mpwrq_page_shift()
36 mlx5e_mpwrq_umr_mode(struct mlx5_core_dev *mdev, struct mlx5e_xsk_param *xsk) in mlx5e_mpwrq_umr_mode() argument
47 u8 page_shift = mlx5e_mpwrq_page_shift(mdev, xsk); in mlx5e_mpwrq_umr_mode()
48 bool unaligned = xsk ? xsk->unaligned : false; in mlx5e_mpwrq_umr_mode()
51 if (xsk) { in mlx5e_mpwrq_umr_mode()
52 oversized = xsk->chunk_size < (1 << page_shift); in mlx5e_mpwrq_umr_mode()
53 WARN_ON_ONCE(xsk->chunk_size > (1 << page_shift)); in mlx5e_mpwrq_umr_mode()
56 /* XSK frame size doesn't match the UMR page size, either because the in mlx5e_mpwrq_umr_mode()
[all …]
H A Dparams.h58 u8 mlx5e_mpwrq_page_shift(struct mlx5_core_dev *mdev, struct mlx5e_xsk_param *xsk);
60 mlx5e_mpwrq_umr_mode(struct mlx5_core_dev *mdev, struct mlx5e_xsk_param *xsk);
82 struct mlx5e_xsk_param *xsk);
88 struct mlx5e_xsk_param *xsk);
91 struct mlx5e_xsk_param *xsk);
94 struct mlx5e_xsk_param *xsk);
97 struct mlx5e_xsk_param *xsk);
107 struct mlx5e_xsk_param *xsk);
110 struct mlx5e_xsk_param *xsk);
114 struct mlx5e_xsk_param *xsk);
[all …]
/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 in open_xsk()
51 umemxsk global() argument
52 fillxsk global() argument
53 compxsk global() argument
54 txxsk global() argument
55 rxxsk global() argument
56 socketxsk global() argument
127 close_xsk(struct xsk * xsk) close_xsk() argument
136 generate_packet(struct xsk * xsk,__u16 dst_port) generate_packet() argument
227 complete_tx(struct xsk * xsk) complete_tx() argument
248 refill_rx(struct xsk * xsk,__u64 addr) refill_rx() argument
259 verify_xsk_metadata(struct xsk * xsk,bool sent_from_af_xdp) verify_xsk_metadata() argument
[all...]
/linux/include/net/libeth/
H A Dxsk.h18 * libeth_xsk_tx_queue_head - internal helper for queueing XSk ``XDP_TX`` head
20 * @xdp: XSk buffer with the head to queue
28 .xsk = xdp, in libeth_xsk_tx_queue_head()
42 * libeth_xsk_tx_queue_frag - internal helper for queueing XSk ``XDP_TX`` frag
44 * @frag: XSk frag to queue
50 .xsk = frag, in libeth_xsk_tx_queue_frag()
56 * libeth_xsk_tx_queue_bulk - internal helper for queueing XSk ``XDP_TX`` frame
58 * @xdp: XSk buffer to queue
102 * libeth_xsk_tx_fill_buf - internal helper to fill XSk ``XDP_TX`` &libeth_sqe
115 struct libeth_xdp_buff *xdp = frm.xsk; in libeth_xsk_tx_fill_buf()
[all …]
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/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
103 #include "xsk.h"
168 static void gen_eth_hdr(struct xsk_socket_info *xsk, struct ethhdr *eth_hdr) in gen_eth_hdr() argument
170 memcpy(eth_hdr->h_dest, xsk->dst_mac, ETH_ALEN); in gen_eth_hdr()
171 memcpy(eth_hdr->h_source, xsk->src_mac, ETH_ALEN); in gen_eth_hdr()
242 static void enable_busy_poll(struct xsk_socket_info *xsk) in enable_busy_poll() argument
247 if (setsockopt(xsk_socket__fd(xsk->xsk), SOL_SOCKET, SO_PREFER_BUSY_POLL, in enable_busy_poll()
252 if (setsockopt(xsk_socket__fd(xsk->xsk), SOL_SOCKET, SO_BUSY_POLL, in enable_busy_poll()
256 sock_opt = xsk->batch_size; in enable_busy_poll()
257 if (setsockopt(xsk_socket__fd(xsk->xsk), SOL_SOCKET, SO_BUSY_POLL_BUDGET, in enable_busy_poll()
[all …]
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/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()
/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_xdp_drop()
33 return bpf_redirect_map(&xsk, 0, XDP_DROP); in xsk_xdp_populate_metadata()
56 return bpf_redirect_map(&xsk, 0, XDP_DROP); in xsk_xdp_shared_umem()
73 return bpf_redirect_map(&xsk, idx, XDP_DROP);
93 return bpf_redirect_map(&xsk, 0, XDP_DROP);
120 return bpf_redirect_map(&xsk, 0, XDP_DROP);
H A Dxdp_metadata.c13 } xsk SEC(".maps");
102 return bpf_redirect_map(&xsk, ctx->rx_queue_index, XDP_PASS);
/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
60 call and submits the XSK of the process it would like to share UMEM
61 with as well as its own newly created XSK socket. The new process will
72 user-space application can place an XSK at an arbitrary place in this
74 this map and at this point XDP validates that the XSK in that map was
78 program loaded (and one XSK in the XSKMAP) to be able to get any
79 traffic to user space through the XSK.
212 in tools/testing/selftests/bpf/xsk.h for facilitating the use of
532 On the Rx path in copy-mode, the xsk core copies the XDP data into
[all …]
H A Dxdp-rx-metadata.rst61 program that redirects XDP frames into the ``AF_XDP`` socket (``XSK``) and
64 of kfuncs to populate it. The userspace ``XSK`` consumer computes
107 in its ``skb``. If such a packet is later redirected into an ``XSK``,
/linux/Documentation/netlink/specs/
H A Dnetdev.yaml28 name: xsk-zerocopy
66 name: xsk-flags
124 name: xsk-features
127 enum: xsk-flags
298 name: xsk-info
320 the xsk attribute.
337 name: xsk
338 doc: XSK information for this queue, if any.
340 nested-attributes: xsk-info
581 - xsk-features
[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/drivers/net/ethernet/intel/ice/
H A Dice_xsk.c309 * ice_realloc_rx_xdp_bufs - reallocate for either XSK or normal buffer
311 * @pool_present: is pool for XSK present
345 * Reallocate buffer for rx_rings that might be used by XSK.
425 * ice_fill_rx_descs - pick buffers from XSK buffer pool and use it
426 * @pool: XSK Buffer pool to pull the buffers from
466 * @xsk_pool: XSK buffer pool to pick buffers to be filled by HW
517 * @xsk_pool: XSK buffer pool to pick buffers to be filled by HW
955 * @xsk_pool: XSK buffer pool to pick buffers to be consumed by HW
980 * @xsk_pool: XSK buffer pool to pick buffers to be consumed by HW
1014 * @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