| /linux/drivers/net/ethernet/mellanox/mlx5/core/en/xsk/ |
| H A D | pool.c | 23 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 D | pool.h | 10 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 D | setup.h | 12 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 D | xdp_metadata.c | 7 #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/tools/testing/selftests/bpf/ |
| H A D | xdp_hw_metadata.c | 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() 124 ret = xsk_socket__create(&xsk->socket, ifindex, queue_id, in open_xsk() [all …]
|
| H A D | xsk.c | 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() 564 err = xsk_set_xdp_socket_config(&xsk->config, usr_config); in xsk_socket__create_shared() [all …]
|
| H A D | xskxceiver.c | 123 struct xsk_socket_info *xsk; in ifobj_zc_avail() local 143 xsk = calloc(1, sizeof(struct xsk_socket_info)); in ifobj_zc_avail() 144 if (!xsk) in ifobj_zc_avail() 148 xsk->rxqsize = XSK_RING_CONS__DEFAULT_NUM_DESCS; in ifobj_zc_avail() 149 ret = xsk_configure_socket(xsk, umem, ifobject, false); in ifobj_zc_avail() 153 xsk_socket__delete(xsk->xsk); in ifobj_zc_avail() 154 free(xsk); in ifobj_zc_avail()
|
| H A D | xsk.h | 188 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);
|
| H A D | xskxceiver.h | 91 struct xsk_socket *xsk; global() member 132 struct xsk_socket_info *xsk; global() member
|
| /linux/drivers/net/ethernet/mellanox/mlx5/core/en/ |
| H A D | params.c | 24 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() 70 if (xsk->chunk_size % 3 == 0 && is_power_of_2(xsk->chunk_size / 3)) in mlx5e_mpwrq_umr_mode() [all …]
|
| /linux/tools/testing/selftests/bpf/progs/ |
| H A D | xsk_xdp_progs.c | 16 } 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 D | xdp_metadata.c | 13 } xsk SEC(".maps"); 102 return bpf_redirect_map(&xsk, ctx->rx_queue_index, XDP_PASS);
|
| H A D | xdp_hw_metadata.c | 13 } xsk SEC(".maps"); 114 return bpf_redirect_map(&xsk, ctx->rx_queue_index, XDP_PASS); in rx()
|
| /linux/drivers/net/ethernet/intel/libeth/ |
| H A D | tx.c | 13 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 D | xsk.c | 18 libeth_xsk_buff_free_slow(bq[i].xsk); in libeth_xsk_tx_return_bulk() 133 const struct xdp_buff_xsk *xsk; in libeth_xsk_prog_exception() local 139 xsk = container_of(&xdp->base, typeof(*xsk), xdp); in libeth_xsk_prog_exception() 140 if (xsk_uses_need_wakeup(xsk->pool) && ret == -ENOBUFS) in libeth_xsk_prog_exception()
|
| H A D | Makefile | 12 libeth_xdp-y += xsk.o
|
| H A D | priv.h | 27 void (*xsk)(struct libeth_xdp_buff *xdp); member
|
| /linux/include/net/libeth/ |
| H A D | xsk.h | 28 .xsk = xdp, in libeth_xsk_tx_queue_head() 50 .xsk = frag, in libeth_xsk_tx_queue_frag() 115 struct libeth_xdp_buff *xdp = frm.xsk; in libeth_xsk_tx_fill_buf() 125 sqe->xsk = xdp; in libeth_xsk_tx_fill_buf() 549 __LIBETH_XDP_DEFINE_FLUSH_TX(name, prep, xmit, xsk) 557 u32 __LIBETH_XDP_DEFINE_RUN_PROG(name, flush, xsk) 566 bool __LIBETH_XDP_DEFINE_RUN_PASS(name, run, populate, xsk) 585 __LIBETH_XDP_DEFINE_FINALIZE(name, flush, finalize, xsk)
|
| H A D | tx.h | 67 struct libeth_xdp_buff *xsk; member
|
| H A D | xdp.h | 348 struct libeth_xdp_buff *xsk; member 1145 #define __libeth_xdp_tx_init_bulk(bq, pr, d, xdpsqs, num, xsk, ub, un) do { \ argument 1151 if (un || (xsk)) { \ 1763 typeof(libeth_xsk_buff_free_slow) xsk) in __libeth_xdp_complete_tx() argument 1788 xsk(sqe->xsk); in __libeth_xdp_complete_tx()
|
| /linux/Documentation/bpf/ |
| H A D | map_xskmap.rst | 21 | xsk A | xsk B | xsk C |<---+ User space 28 | | key | xsk | | | 30 | | | | 0 | xsk A | | | 32 | | | | 1 | xsk B | | | 34 | | prog | | 2 | xsk C | |
|
| /linux/net/xdp/ |
| H A D | Makefile | 2 obj-$(CONFIG_XDP_SOCKETS) += xsk.o xdp_umem.o xsk_queue.o xskmap.o
|
| H A D | xsk_buff_pool.c | 11 #include "xsk.h" 148 bpf.xsk.pool = NULL; in xp_disable_drv_zc() 149 bpf.xsk.queue_id = pool->queue_id; in xp_disable_drv_zc() 215 bpf.xsk.pool = pool; in xp_assign_dev() 216 bpf.xsk.queue_id = queue_id; in xp_assign_dev()
|
| /linux/drivers/net/ethernet/freescale/dpaa2/ |
| H A D | Makefile | 10 …-eth-objs := dpaa2-eth.o dpaa2-ethtool.o dpni.o dpaa2-mac.o dpmac.o dpaa2-eth-devlink.o dpaa2-xsk.o
|
| /linux/Documentation/networking/ |
| H A D | af_xdp.rst | 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 641 void rx_packets(struct xsk_socket_info *xsk) 647 int rcvd = xsk_ring_cons__peek(&xsk->rx, opt_batch_size, &idx_rx); 649 xsk_ring_prod__reserve(&xsk->umem->fq, rcvd, &idx_fq); 652 struct xdp_desc *desc = xsk_ring_cons__rx_desc(&xsk->rx, idx_rx++); 653 char *frag = xsk_umem__get_data(xsk->umem->buffer, desc->addr); 666 *xsk_ring_prod__fill_addr(&xsk->umem->fq, idx_fq++) = desc->addr; 669 xsk_ring_prod__submit(&xsk->umem->fq, rcvd); 670 xsk_ring_cons__release(&xsk->rx, rcvd); [all …]
|