| /linux/tools/testing/selftests/bpf/prog_tests/ |
| H A D | xdp_metadata.c | 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() 93 xsk->umem, in open_xsk() [all …]
|
| H A D | test_xsk.c | 60 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 D | test_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 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 | 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 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/xsk/ |
| 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);
|
| /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_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 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/mellanox/mlx5/core/en/ |
| H A D | params.c | 29 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() 83 if (xsk->chunk_size % 3 == 0 && is_power_of_2(xsk->chunk_size / 3)) in mlx5e_mpwrq_umr_mode() [all …]
|
| /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/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" 154 bpf.xsk.pool = NULL; in xp_disable_drv_zc() 155 bpf.xsk.queue_id = pool->queue_id; in xp_disable_drv_zc() 244 bpf.xsk.pool = pool; in xp_assign_dev() 245 bpf.xsk.queue_id = queue_id; in xp_assign_dev()
|
| /linux/drivers/net/ethernet/intel/idpf/ |
| H A D | Makefile | 24 idpf-y += xsk.o
|
| H A D | xsk.c | 485 xdp = rxq->xsk; in idpf_xskrq_poll() 536 rxq->xsk = xdp; in idpf_xskrq_poll() 556 struct xsk_buff_pool *pool = bpf->xsk.pool; in idpf_xsk_pool_setup() 557 u32 qid = bpf->xsk.queue_id; in idpf_xsk_pool_setup()
|
| /linux/include/net/libeth/ |
| 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/networking/ |
| H A D | af_xdp.rst | 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 647 void rx_packets(struct xsk_socket_info *xsk) 653 int rcvd = xsk_ring_cons__peek(&xsk->rx, opt_batch_size, &idx_rx); 655 xsk_ring_prod__reserve(&xsk->umem->fq, rcvd, &idx_fq); 658 struct xdp_desc *desc = xsk_ring_cons__rx_desc(&xsk->rx, idx_rx++); 659 char *frag = xsk_umem__get_data(xsk->umem->buffer, desc->addr); 672 *xsk_ring_prod__fill_addr(&xsk->umem->fq, idx_fq++) = desc->addr; 675 xsk_ring_prod__submit(&xsk->umem->fq, rcvd); 676 xsk_ring_cons__release(&xsk->rx, rcvd); [all …]
|