Home
last modified time | relevance | path

Searched full:xsk (Results 1 – 25 of 83) 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 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/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/drivers/net/ethernet/mellanox/mlx5/core/en/
H A Dparams.c24 u8 mlx5e_mpwrq_page_shift(struct mlx5_core_dev *mdev, struct mlx5e_xsk_param *xsk) in mlx5e_mpwrq_page_shift() argument
26 u8 req_page_shift = xsk ? order_base_2(xsk->chunk_size) : PAGE_SHIFT; in mlx5e_mpwrq_page_shift()
30 if (WARN_ON_ONCE(!xsk && req_page_shift < min_page_shift)) in mlx5e_mpwrq_page_shift()
37 mlx5e_mpwrq_umr_mode(struct mlx5_core_dev *mdev, struct mlx5e_xsk_param *xsk) in mlx5e_mpwrq_umr_mode() argument
48 u8 page_shift = mlx5e_mpwrq_page_shift(mdev, xsk); in mlx5e_mpwrq_umr_mode()
49 bool unaligned = xsk ? xsk->unaligned : false; in mlx5e_mpwrq_umr_mode()
52 if (xsk) { in mlx5e_mpwrq_umr_mode()
53 oversized = xsk->chunk_size < (1 << page_shift); in mlx5e_mpwrq_umr_mode()
54 WARN_ON_ONCE(xsk->chunk_size > (1 << page_shift)); in mlx5e_mpwrq_umr_mode()
57 /* XSK frame size doesn't match the UMR page size, either because the in mlx5e_mpwrq_umr_mode()
[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
1145 __libeth_xdp_tx_init_bulk(bq,pr,d,xdpsqs,num,xsk,ub,un) global() argument
1772 __libeth_xdp_complete_tx(struct libeth_sqe * sqe,struct libeth_cq_pp * cp,typeof(libeth_xdp_return_buff_bulk) bulk,typeof(libeth_xsk_buff_free_slow) xsk) __libeth_xdp_complete_tx() argument
[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_SOCKE in enable_busy_poll()
262 __xsk_configure_socket(struct xsk_socket_info * xsk,struct xsk_umem_info * umem,struct ifobject * ifobject,bool shared) __xsk_configure_socket() argument
291 struct xsk_socket_info *xsk; ifobj_zc_avail() local
838 pkt_generate(struct xsk_socket_info * xsk,struct xsk_umem_info * umem,u64 addr,u32 len,u32 pkt_nb,u32 bytes_written) pkt_generate() argument
1101 kick_tx_with_check(struct xsk_socket_info * xsk,int * ret) kick_tx_with_check() argument
1125 kick_tx(struct xsk_socket_info * xsk) kick_tx() argument
1144 kick_rx(struct xsk_socket_info * xsk) kick_rx() argument
1155 complete_pkts(struct xsk_socket_info * xsk,int batch_size) complete_pkts() argument
1185 __receive_pkts(struct test_spec * test,struct xsk_socket_info * xsk) __receive_pkts() argument
1305 all_packets_received(struct test_spec * test,struct xsk_socket_info * xsk,u32 sock_num,unsigned long * bitmap) all_packets_received() argument
1328 struct xsk_socket_info *xsk; receive_pkts() local
1362 __send_pkts(struct ifobject * ifobject,struct xsk_socket_info * xsk,bool timeout) __send_pkts() argument
1486 wait_for_tx_completion(struct xsk_socket_info * xsk) wait_for_tx_completion() argument
1550 get_xsk_stats(struct xsk_socket * xsk,struct xdp_statistics * stats) get_xsk_stats() argument
1575 struct xsk_socket *xsk = ifobject->xsk->xsk; validate_rx_dropped() local
1602 struct xsk_socket *xsk = ifobject->xsk->xsk; validate_rx_full() local
1623 struct xsk_socket *xsk = ifobject->xsk->xsk; validate_fill_empty() local
1644 struct xsk_socket *xsk = ifobject->xsk->xsk; validate_tx_invalid_descs() local
[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()
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/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/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/idpf/
H A Didpf_txrx.h290 * @__IDPF_Q_XSK: the queue has an XSk pool installed
370 * @num_xsksq: number of XSk send queues
375 * @xsksq: array of XSk send queues
377 * @csd: XSk wakeup CSD
500 * @xsk: current XDP buffer in XSk mode
501 * @pool: XSk pool if installed
560 struct libeth_xdp_buff *xsk; member
601 * @pool: corresponding XSk pool if installed
730 * @xsk_buf: &xdp_buff for XSk Rx buffers
731 * @pool: &xsk_buff_pool on XSk queues
[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()
/linux/drivers/net/ethernet/mellanox/mlx5/core/
H A Den_main.c67 #include "en/xsk/pool.h"
68 #include "en/xsk/setup.h"
69 #include "en/xsk/rx.h"
70 #include "en/xsk/tx.h"
620 /* Assumptions used by XSK batched allocator. */ in mlx5e_init_xsk_buffs()
885 struct mlx5e_xsk_param *xsk, in mlx5e_alloc_rq() argument
906 rq->buff.headroom = mlx5e_get_rq_headroom(mdev, params, xsk); in mlx5e_alloc_rq()
926 rq->mpwqe.page_shift = mlx5e_mpwrq_page_shift(mdev, xsk); in mlx5e_alloc_rq()
927 rq->mpwqe.umr_mode = mlx5e_mpwrq_umr_mode(mdev, xsk); in mlx5e_alloc_rq()
939 mlx5e_mpwqe_get_log_rq_size(mdev, params, xsk); in mlx5e_alloc_rq()
[all …]
/linux/net/xdp/
H A Dxsk_buff_pool.c11 #include "xsk.h"
151 bpf.xsk.pool = NULL; in xp_disable_drv_zc()
152 bpf.xsk.queue_id = pool->queue_id; in xp_disable_drv_zc()
222 bpf.xsk.pool = pool; in xp_assign_dev()
223 bpf.xsk.queue_id = queue_id; in xp_assign_dev()
741 * @pool: XSk buff pool desc address belongs to

1234