Symbol: xsk
drivers/net/ethernet/engleder/tsnep_main.c
2297
return tsnep_xdp_setup_pool(adapter, bpf->xsk.pool,
drivers/net/ethernet/engleder/tsnep_main.c
2298
bpf->xsk.queue_id);
drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c
1190
dma_unmap_single(dev, fd_addr, swa->xsk.sgt_size,
drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c
1727
swa->xsk.xdp_buff = xdp_buffs[i];
drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c
2807
return dpaa2_xsk_setup_pool(dev, xdp->xsk.pool, xdp->xsk.queue_id);
drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c
300
xdp_buff = swa->xsk.xdp_buff;
drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h
165
} xsk;
drivers/net/ethernet/freescale/dpaa2/dpaa2-xsk.c
365
swa->xsk.sgt_size = sgt_buf_size;
drivers/net/ethernet/freescale/dpaa2/dpaa2-xsk.c
50
xdp_buff = swa->xsk.xdp_buff;
drivers/net/ethernet/freescale/fec_main.c
2184
static struct sk_buff *fec_build_skb_zc(struct xdp_buff *xsk,
drivers/net/ethernet/freescale/fec_main.c
2187
size_t len = xdp_get_buff_len(xsk);
drivers/net/ethernet/freescale/fec_main.c
2192
xsk_buff_free(xsk);
drivers/net/ethernet/freescale/fec_main.c
2196
skb_put_data(skb, xsk->data, len);
drivers/net/ethernet/freescale/fec_main.c
2197
xsk_buff_free(xsk);
drivers/net/ethernet/freescale/fec_main.c
2203
struct xdp_buff *xsk, int cpu,
drivers/net/ethernet/freescale/fec_main.c
2208
u32 offset = xsk->data - xsk->data_hard_start;
drivers/net/ethernet/freescale/fec_main.c
2210
u32 len = xsk->data_end - xsk->data;
drivers/net/ethernet/freescale/fec_main.c
2232
dma = xsk_buff_xdp_get_frame_dma(xsk) + headroom + offset;
drivers/net/ethernet/freescale/fec_main.c
2236
txq->tx_buf[index].buf_p = xsk;
drivers/net/ethernet/freescale/fec_main.c
2279
struct xdp_buff *xsk;
drivers/net/ethernet/freescale/fec_main.c
2302
xsk = rxq->rx_buf[index].xdp;
drivers/net/ethernet/freescale/fec_main.c
2303
if (unlikely(!xsk)) {
drivers/net/ethernet/freescale/fec_main.c
2339
xsk->data = xsk->data_hard_start + data_start;
drivers/net/ethernet/freescale/fec_main.c
2341
xsk->data_end = xsk->data + pkt_len;
drivers/net/ethernet/freescale/fec_main.c
2342
xsk->data_meta = xsk->data;
drivers/net/ethernet/freescale/fec_main.c
2343
xsk_buff_dma_sync_for_cpu(xsk);
drivers/net/ethernet/freescale/fec_main.c
2353
act = bpf_prog_run_xdp(prog, xsk);
drivers/net/ethernet/freescale/fec_main.c
2358
skb = fec_build_skb_zc(xsk, &fep->napi);
drivers/net/ethernet/freescale/fec_main.c
2369
err = fec_enet_xsk_tx_xmit(fep, xsk, cpu, queue);
drivers/net/ethernet/freescale/fec_main.c
2372
xsk_buff_free(xsk);
drivers/net/ethernet/freescale/fec_main.c
2380
err = xdp_do_redirect(ndev, xsk, prog);
drivers/net/ethernet/freescale/fec_main.c
2386
xsk_buff_free(xsk);
drivers/net/ethernet/freescale/fec_main.c
2400
xsk_buff_free(xsk);
drivers/net/ethernet/freescale/fec_main.c
3853
bool xsk = !!rxq->xsk_pool;
drivers/net/ethernet/freescale/fec_main.c
3862
if (xsk)
drivers/net/ethernet/freescale/fec_main.c
3871
if (!xsk) {
drivers/net/ethernet/freescale/fec_main.c
4503
static void fec_init_rxq_bd_buffers(struct fec_enet_priv_rx_q *rxq, bool xsk)
drivers/net/ethernet/freescale/fec_main.c
4510
if (xsk)
drivers/net/ethernet/freescale/fec_main.c
4667
return fec_setup_xsk_pool(fep, bpf->xsk.pool,
drivers/net/ethernet/freescale/fec_main.c
4668
bpf->xsk.queue_id);
drivers/net/ethernet/google/gve/gve_main.c
1775
if (xdp->xsk.pool)
drivers/net/ethernet/google/gve/gve_main.c
1776
return gve_xsk_pool_enable(dev, xdp->xsk.pool, xdp->xsk.queue_id);
drivers/net/ethernet/google/gve/gve_main.c
1778
return gve_xsk_pool_disable(dev, xdp->xsk.queue_id);
drivers/net/ethernet/intel/i40e/i40e_main.c
13581
return i40e_xsk_pool_setup(vsi, xdp->xsk.pool,
drivers/net/ethernet/intel/i40e/i40e_main.c
13582
xdp->xsk.queue_id);
drivers/net/ethernet/intel/ice/ice_main.c
3074
ret = ice_xsk_pool_setup(vsi, xdp->xsk.pool, xdp->xsk.queue_id);
drivers/net/ethernet/intel/ice/ice_txrx.h
311
struct libeth_xdp_buff *xsk;
drivers/net/ethernet/intel/ice/ice_xsk.c
571
struct xdp_buff *first = (struct xdp_buff *)rx_ring->xsk;
drivers/net/ethernet/intel/ice/ice_xsk.c
677
rx_ring->xsk = (struct libeth_xdp_buff *)first;
drivers/net/ethernet/intel/idpf/idpf_txrx.h
563
struct libeth_xdp_buff *xsk;
drivers/net/ethernet/intel/idpf/xsk.c
485
xdp = rxq->xsk;
drivers/net/ethernet/intel/idpf/xsk.c
536
rxq->xsk = xdp;
drivers/net/ethernet/intel/idpf/xsk.c
556
struct xsk_buff_pool *pool = bpf->xsk.pool;
drivers/net/ethernet/intel/idpf/xsk.c
557
u32 qid = bpf->xsk.queue_id;
drivers/net/ethernet/intel/igb/igb_main.c
2949
return igb_xsk_pool_setup(adapter, xdp->xsk.pool,
drivers/net/ethernet/intel/igb/igb_main.c
2950
xdp->xsk.queue_id);
drivers/net/ethernet/intel/igc/igc_main.c
6864
return igc_xdp_setup_pool(adapter, bpf->xsk.pool,
drivers/net/ethernet/intel/igc/igc_main.c
6865
bpf->xsk.queue_id);
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
10975
return ixgbe_xsk_pool_setup(adapter, xdp->xsk.pool,
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
10976
xdp->xsk.queue_id);
drivers/net/ethernet/intel/libeth/priv.h
27
void (*xsk)(struct libeth_xdp_buff *xdp);
drivers/net/ethernet/intel/libeth/tx.c
13
DEFINE_STATIC_CALL_NULL(xsk, libeth_xsk_buff_free_slow);
drivers/net/ethernet/intel/libeth/tx.c
28
static_call(xsk));
drivers/net/ethernet/intel/libeth/tx.c
39
static_call_update(xsk, ops ? ops->xsk : NULL);
drivers/net/ethernet/intel/libeth/xdp.c
432
.xsk = libeth_xsk_buff_free_slow,
drivers/net/ethernet/intel/libeth/xsk.c
133
const struct xdp_buff_xsk *xsk;
drivers/net/ethernet/intel/libeth/xsk.c
139
xsk = container_of(&xdp->base, typeof(*xsk), xdp);
drivers/net/ethernet/intel/libeth/xsk.c
140
if (xsk_uses_need_wakeup(xsk->pool) && ret == -ENOBUFS)
drivers/net/ethernet/intel/libeth/xsk.c
18
libeth_xsk_buff_free_slow(bq[i].xsk);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_pf.c
2863
return otx2_xsk_pool_setup(pf, xdp->xsk.pool, xdp->xsk.queue_id);
drivers/net/ethernet/mellanox/mlx5/core/en.h
1064
struct mlx5e_xsk_param *xsk, int node, u16 q_counter,
drivers/net/ethernet/mellanox/mlx5/core/en.h
1269
void mlx5e_build_nic_params(struct mlx5e_priv *priv, struct mlx5e_xsk *xsk, u16 mtu);
drivers/net/ethernet/mellanox/mlx5/core/en.h
314
struct mlx5e_xsk *xsk;
drivers/net/ethernet/mellanox/mlx5/core/en.h
612
int mlx5e_rq_set_handlers(struct mlx5e_rq *rq, struct mlx5e_params *params, bool xsk);
drivers/net/ethernet/mellanox/mlx5/core/en.h
969
struct mlx5e_xsk xsk;
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
1087
struct mlx5e_xsk_param *xsk)
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
1089
enum mlx5e_mpwrq_umr_mode umr_mode = mlx5e_mpwrq_umr_mode(mdev, xsk);
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
1090
u8 page_shift = mlx5e_mpwrq_page_shift(mdev, xsk);
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
1095
return umr_wqebbs * (1 << mlx5e_mpwqe_get_log_rq_size(mdev, params, xsk));
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
1128
struct mlx5e_xsk_param xsk = {
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
1135
mlx5e_mpwrq_total_umr_wqebbs(mdev, params, &xsk));
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
1138
xsk.unaligned = true;
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
1140
mlx5e_mpwrq_total_umr_wqebbs(mdev, params, &xsk));
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
1143
xsk.chunk_size -= 1;
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
1145
mlx5e_mpwrq_total_umr_wqebbs(mdev, params, &xsk));
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
1148
xsk.chunk_size = (1 << frame_shift) / 4 * 3;
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
1150
mlx5e_mpwrq_total_umr_wqebbs(mdev, params, &xsk));
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
228
struct mlx5e_xsk_param *xsk)
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
232
if (xsk)
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
233
return xsk->headroom;
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
24
u8 mlx5e_mpwrq_page_shift(struct mlx5_core_dev *mdev, struct mlx5e_xsk_param *xsk)
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
245
struct mlx5e_xsk_param *xsk)
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
249
return xsk->headroom + hw_mtu;
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
26
u8 req_page_shift = xsk ? order_base_2(xsk->chunk_size) : PAGE_SHIFT;
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
266
struct mlx5e_xsk_param *xsk,
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
275
if (xsk)
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
276
return mpwqe ? 1 << mlx5e_mpwrq_page_shift(mdev, xsk) : PAGE_SIZE;
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
278
no_head_tail_room = params->xdp_prog && mpwqe && !mlx5e_rx_is_linear_skb(mdev, params, xsk);
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
294
struct mlx5e_xsk_param *xsk)
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
296
u32 linear_stride_sz = mlx5e_rx_get_linear_stride_sz(mdev, params, xsk, true);
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
297
enum mlx5e_mpwrq_umr_mode umr_mode = mlx5e_mpwrq_umr_mode(mdev, xsk);
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
298
u8 page_shift = mlx5e_mpwrq_page_shift(mdev, xsk);
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
30
if (WARN_ON_ONCE(!xsk && req_page_shift < min_page_shift))
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
306
struct mlx5e_xsk_param *xsk)
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
318
if (mlx5e_rx_get_linear_sz_skb(params, xsk) > PAGE_SIZE)
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
322
if (xsk && mlx5e_rx_get_linear_sz_xsk(params, xsk) > xsk->chunk_size)
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
352
struct mlx5e_xsk_param *xsk)
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
354
u8 log_wqe_num_of_strides = mlx5e_mpwqe_get_log_num_strides(mdev, params, xsk);
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
355
u8 log_wqe_stride_size = mlx5e_mpwqe_get_log_stride_size(mdev, params, xsk);
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
356
enum mlx5e_mpwrq_umr_mode umr_mode = mlx5e_mpwrq_umr_mode(mdev, xsk);
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
357
u8 page_shift = mlx5e_mpwrq_page_shift(mdev, xsk);
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
366
struct mlx5e_xsk_param *xsk)
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
368
enum mlx5e_mpwrq_umr_mode umr_mode = mlx5e_mpwrq_umr_mode(mdev, xsk);
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
369
u8 page_shift = mlx5e_mpwrq_page_shift(mdev, xsk);
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
37
mlx5e_mpwrq_umr_mode(struct mlx5_core_dev *mdev, struct mlx5e_xsk_param *xsk)
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
374
if (!mlx5e_rx_is_linear_skb(mdev, params, xsk))
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
377
log_stride_sz = order_base_2(mlx5e_rx_get_linear_stride_sz(mdev, params, xsk, true));
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
392
struct mlx5e_xsk_param *xsk)
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
394
enum mlx5e_mpwrq_umr_mode umr_mode = mlx5e_mpwrq_umr_mode(mdev, xsk);
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
397
log_pkts_per_wqe = mlx5e_mpwqe_log_pkts_per_wqe(mdev, params, xsk);
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
398
page_shift = mlx5e_mpwrq_page_shift(mdev, xsk);
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
426
struct mlx5e_xsk_param *xsk)
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
428
if (mlx5e_rx_mpwqe_is_linear_skb(mdev, params, xsk))
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
429
return order_base_2(mlx5e_rx_get_linear_stride_sz(mdev, params, xsk, true));
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
440
struct mlx5e_xsk_param *xsk)
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
442
enum mlx5e_mpwrq_umr_mode umr_mode = mlx5e_mpwrq_umr_mode(mdev, xsk);
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
443
u8 page_shift = mlx5e_mpwrq_page_shift(mdev, xsk);
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
447
log_stride_size = mlx5e_mpwqe_get_log_stride_size(mdev, params, xsk);
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
450
log_wqe_size, log_stride_size, page_shift, umr_mode, !!xsk);
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
462
struct mlx5e_xsk_param *xsk)
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
464
u16 linear_headroom = mlx5e_get_linear_rq_headroom(params, xsk);
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
469
if (mlx5e_rx_mpwqe_is_linear_skb(mdev, params, xsk))
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
48
u8 page_shift = mlx5e_mpwrq_page_shift(mdev, xsk);
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
49
bool unaligned = xsk ? xsk->unaligned : false;
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
52
if (xsk) {
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
53
oversized = xsk->chunk_size < (1 << page_shift);
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
538
struct mlx5e_xsk_param *xsk)
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
54
WARN_ON_ONCE(xsk->chunk_size > (1 << page_shift));
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
540
enum mlx5e_mpwrq_umr_mode umr_mode = mlx5e_mpwrq_umr_mode(mdev, xsk);
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
541
u8 page_shift = mlx5e_mpwrq_page_shift(mdev, xsk);
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
550
if (!mlx5e_rx_mpwqe_is_linear_skb(mdev, params, xsk)) {
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
559
mlx5e_mpwrq_max_log_rq_pkts(mdev, page_shift, xsk->unaligned));
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
562
1 << params->log_rq_mtu_frames, xsk->chunk_size);
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
675
struct mlx5e_xsk_param *xsk,
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
687
if (mlx5e_rx_is_linear_skb(mdev, params, xsk)) {
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
690
frag_stride = mlx5e_rx_get_linear_stride_sz(mdev, params, xsk, false);
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
70
if (xsk->chunk_size % 3 == 0 && is_power_of_2(xsk->chunk_size / 3))
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
706
headroom = mlx5e_get_linear_rq_headroom(params, xsk);
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
822
struct mlx5e_xsk_param *xsk)
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
824
u16 num_strides = BIT(mlx5e_mpwqe_get_log_num_strides(mdev, params, xsk));
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
825
u8 log_stride_sz = mlx5e_mpwqe_get_log_stride_size(mdev, params, xsk);
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
827
int wq_size = BIT(mlx5e_mpwqe_get_log_rq_size(mdev, params, xsk));
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
839
struct mlx5e_xsk_param *xsk,
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
850
log_cq_size = mlx5e_shampo_get_log_cq_size(mdev, params, xsk);
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
852
log_cq_size = mlx5e_mpwqe_get_log_rq_size(mdev, params, xsk) +
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
853
mlx5e_mpwqe_get_log_num_strides(mdev, params, xsk);
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
885
struct mlx5e_xsk_param *xsk,
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
896
u8 log_wqe_num_of_strides = mlx5e_mpwqe_get_log_num_strides(mdev, params, xsk);
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
897
u8 log_wqe_stride_size = mlx5e_mpwqe_get_log_stride_size(mdev, params, xsk);
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
898
enum mlx5e_mpwrq_umr_mode umr_mode = mlx5e_mpwrq_umr_mode(mdev, xsk);
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
899
u8 page_shift = mlx5e_mpwrq_page_shift(mdev, xsk);
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
915
MLX5_SET(wq, wq, log_wq_sz, mlx5e_mpwqe_get_log_rq_size(mdev, params, xsk));
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
941
err = mlx5e_build_rq_frags_info(mdev, params, xsk, &param->frags_info,
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
957
mlx5e_build_rx_cq_param(mdev, params, xsk, &param->cqp);
drivers/net/ethernet/mellanox/mlx5/core/en/params.h
108
struct mlx5e_xsk_param *xsk);
drivers/net/ethernet/mellanox/mlx5/core/en/params.h
111
struct mlx5e_xsk_param *xsk);
drivers/net/ethernet/mellanox/mlx5/core/en/params.h
115
struct mlx5e_xsk_param *xsk);
drivers/net/ethernet/mellanox/mlx5/core/en/params.h
122
struct mlx5e_xsk_param *xsk,
drivers/net/ethernet/mellanox/mlx5/core/en/params.h
145
struct mlx5e_xsk_param *xsk);
drivers/net/ethernet/mellanox/mlx5/core/en/params.h
59
u8 mlx5e_mpwrq_page_shift(struct mlx5_core_dev *mdev, struct mlx5e_xsk_param *xsk);
drivers/net/ethernet/mellanox/mlx5/core/en/params.h
61
mlx5e_mpwrq_umr_mode(struct mlx5_core_dev *mdev, struct mlx5e_xsk_param *xsk);
drivers/net/ethernet/mellanox/mlx5/core/en/params.h
83
struct mlx5e_xsk_param *xsk);
drivers/net/ethernet/mellanox/mlx5/core/en/params.h
89
struct mlx5e_xsk_param *xsk);
drivers/net/ethernet/mellanox/mlx5/core/en/params.h
92
struct mlx5e_xsk_param *xsk);
drivers/net/ethernet/mellanox/mlx5/core/en/params.h
95
struct mlx5e_xsk_param *xsk);
drivers/net/ethernet/mellanox/mlx5/core/en/params.h
98
struct mlx5e_xsk_param *xsk);
drivers/net/ethernet/mellanox/mlx5/core/en/rx_res.c
641
unsigned int ix, bool xsk)
drivers/net/ethernet/mellanox/mlx5/core/en/rx_res.c
645
if (xsk)
drivers/net/ethernet/mellanox/mlx5/core/en/rx_res.h
48
unsigned int ix, bool xsk);
drivers/net/ethernet/mellanox/mlx5/core/en/xdp.c
40
int mlx5e_xdp_max_mtu(struct mlx5e_params *params, struct mlx5e_xsk_param *xsk)
drivers/net/ethernet/mellanox/mlx5/core/en/xdp.c
42
int hr = mlx5e_get_linear_rq_headroom(params, xsk);
drivers/net/ethernet/mellanox/mlx5/core/en/xdp.h
99
int mlx5e_xdp_max_mtu(struct mlx5e_params *params, struct mlx5e_xsk_param *xsk);
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/pool.c
102
mlx5e_mpwrq_umr_mode(priv->mdev, &xsk) == MLX5E_MPWRQ_UMR_MODE_OVERSIZED) {
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/pool.c
103
const char *recommendation = is_power_of_2(xsk.chunk_size) ?
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/pool.c
107
xsk.chunk_size, recommendation);
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/pool.c
124
err = mlx5e_open_xsk(priv, params, &xsk, pool, c);
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/pool.c
143
mlx5e_xsk_remove_pool(&priv->xsk, ix);
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/pool.c
154
if (!mlx5e_validate_xsk_param(params, &xsk, priv->mdev)) {
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/pool.c
165
&priv->xsk, ix);
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/pool.c
190
mlx5e_xsk_remove_pool(&priv->xsk, ix);
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/pool.c
23
static int mlx5e_xsk_get_pools(struct mlx5e_xsk *xsk)
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/pool.c
25
if (!xsk->pools) {
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/pool.c
26
xsk->pools = kzalloc_objs(*xsk->pools, MLX5E_MAX_NUM_CHANNELS);
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/pool.c
27
if (unlikely(!xsk->pools))
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/pool.c
31
xsk->refcnt++;
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/pool.c
32
xsk->ever_used = true;
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/pool.c
37
static void mlx5e_xsk_put_pools(struct mlx5e_xsk *xsk)
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/pool.c
39
if (!--xsk->refcnt) {
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/pool.c
40
kfree(xsk->pools);
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/pool.c
41
xsk->pools = NULL;
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/pool.c
45
static int mlx5e_xsk_add_pool(struct mlx5e_xsk *xsk, struct xsk_buff_pool *pool, u16 ix)
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/pool.c
49
err = mlx5e_xsk_get_pools(xsk);
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/pool.c
53
xsk->pools[ix] = pool;
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/pool.c
57
static void mlx5e_xsk_remove_pool(struct mlx5e_xsk *xsk, u16 ix)
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/pool.c
59
xsk->pools[ix] = NULL;
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/pool.c
61
mlx5e_xsk_put_pools(xsk);
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/pool.c
70
void mlx5e_build_xsk_param(struct xsk_buff_pool *pool, struct mlx5e_xsk_param *xsk)
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/pool.c
72
xsk->headroom = xsk_pool_get_headroom(pool);
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/pool.c
73
xsk->chunk_size = xsk_pool_get_chunk_size(pool);
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/pool.c
74
xsk->unaligned = pool->unaligned;
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/pool.c
81
struct mlx5e_xsk_param xsk;
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/pool.c
85
if (unlikely(mlx5e_xsk_get_pool(&priv->channels.params, &priv->xsk, ix)))
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/pool.c
95
err = mlx5e_xsk_add_pool(&priv->xsk, pool, ix);
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/pool.c
99
mlx5e_build_xsk_param(pool, &xsk);
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/pool.h
10
struct mlx5e_xsk *xsk, u16 ix)
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/pool.h
12
if (!xsk || !xsk->pools)
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/pool.h
18
return xsk->pools[ix];
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/pool.h
22
void mlx5e_build_xsk_param(struct xsk_buff_pool *pool, struct mlx5e_xsk_param *xsk);
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/setup.c
101
err = mlx5e_init_xsk_rq(c, params, pool, xsk, xskrq);
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/setup.c
105
err = mlx5e_open_rq(params, rq_params, xsk, cpu_to_node(c->cpu), q_counter, xskrq);
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/setup.c
114
struct mlx5e_xsk_param *xsk, struct xsk_buff_pool *pool,
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/setup.c
12
struct mlx5e_xsk_param *xsk)
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/setup.c
123
if (!mlx5e_validate_xsk_param(params, xsk, priv->mdev))
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/setup.c
130
mlx5e_build_xsk_cparam(priv->mdev, params, xsk, cparam);
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/setup.c
137
err = mlx5e_open_xsk_rq(c, params, &cparam->rq, pool, xsk);
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/setup.c
14
if (!mlx5e_rx_is_linear_skb(mdev, params, xsk)) {
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/setup.c
28
struct mlx5e_xsk_param *xsk,
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/setup.c
34
if ((size_t)xsk->chunk_size > PAGE_SIZE || xsk->chunk_size < MLX5E_MIN_XSK_CHUNK_SIZE) {
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/setup.c
35
mlx5_core_err(mdev, "XSK chunk size %u out of bounds [%u, %lu]\n", xsk->chunk_size,
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/setup.c
45
return !mlx5e_mpwrq_validate_xsk(mdev, params, xsk);
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/setup.c
47
return !mlx5e_legacy_rq_validate_xsk(mdev, params, xsk);
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/setup.c
53
struct mlx5e_xsk_param *xsk,
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/setup.c
56
mlx5e_build_rq_param(mdev, params, xsk, &cparam->rq);
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/setup.c
63
struct mlx5e_xsk_param *xsk,
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/setup.c
86
err = mlx5e_rq_set_handlers(rq, params, xsk);
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/setup.c
95
struct mlx5e_xsk_param *xsk)
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/setup.h
12
struct mlx5e_xsk_param *xsk,
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/setup.h
15
struct mlx5e_xsk_param *xsk, struct xsk_buff_pool *pool,
drivers/net/ethernet/mellanox/mlx5/core/en_main.c
1327
struct mlx5e_xsk_param *xsk, int node, u16 q_counter,
drivers/net/ethernet/mellanox/mlx5/core/en_main.c
1336
err = mlx5e_alloc_rq(params, xsk, param, node, rq);
drivers/net/ethernet/mellanox/mlx5/core/en_main.c
2773
struct mlx5e_xsk_param xsk;
drivers/net/ethernet/mellanox/mlx5/core/en_main.c
2830
mlx5e_build_xsk_param(xsk_pool, &xsk);
drivers/net/ethernet/mellanox/mlx5/core/en_main.c
2831
err = mlx5e_open_xsk(priv, params, &xsk, xsk_pool, c);
drivers/net/ethernet/mellanox/mlx5/core/en_main.c
2922
xsk_pool = mlx5e_xsk_get_pool(&chs->params, chs->params.xsk, i);
drivers/net/ethernet/mellanox/mlx5/core/en_main.c
4536
if (priv->xsk.refcnt) {
drivers/net/ethernet/mellanox/mlx5/core/en_main.c
4539
priv->xsk.refcnt);
drivers/net/ethernet/mellanox/mlx5/core/en_main.c
4544
priv->xsk.refcnt);
drivers/net/ethernet/mellanox/mlx5/core/en_main.c
4588
mlx5e_xsk_get_pool(&chs->params, chs->params.xsk, ix);
drivers/net/ethernet/mellanox/mlx5/core/en_main.c
4589
struct mlx5e_xsk_param xsk;
drivers/net/ethernet/mellanox/mlx5/core/en_main.c
4595
mlx5e_build_xsk_param(xsk_pool, &xsk);
drivers/net/ethernet/mellanox/mlx5/core/en_main.c
4596
max_xdp_mtu = mlx5e_xdp_max_mtu(new_params, &xsk);
drivers/net/ethernet/mellanox/mlx5/core/en_main.c
4599
if (!mlx5e_validate_xsk_param(new_params, &xsk, mdev) ||
drivers/net/ethernet/mellanox/mlx5/core/en_main.c
4601
u32 hr = mlx5e_get_linear_rq_headroom(new_params, &xsk);
drivers/net/ethernet/mellanox/mlx5/core/en_main.c
4608
max_mtu_frame = MLX5E_HW2SW_MTU(new_params, xsk.chunk_size - hr);
drivers/net/ethernet/mellanox/mlx5/core/en_main.c
4677
if (priv->xsk.refcnt &&
drivers/net/ethernet/mellanox/mlx5/core/en_main.c
5204
return mlx5e_xsk_setup_pool(dev, xdp->xsk.pool,
drivers/net/ethernet/mellanox/mlx5/core/en_main.c
5205
xdp->xsk.queue_id);
drivers/net/ethernet/mellanox/mlx5/core/en_main.c
5301
void mlx5e_build_nic_params(struct mlx5e_priv *priv, struct mlx5e_xsk *xsk, u16 mtu)
drivers/net/ethernet/mellanox/mlx5/core/en_main.c
5353
params->xsk = xsk;
drivers/net/ethernet/mellanox/mlx5/core/en_main.c
5880
mlx5e_build_nic_params(priv, &priv->xsk, netdev->mtu);
drivers/net/ethernet/mellanox/mlx5/core/en_main.c
854
struct mlx5e_xsk_param *xsk,
drivers/net/ethernet/mellanox/mlx5/core/en_main.c
875
rq->buff.headroom = mlx5e_get_rq_headroom(mdev, params, xsk);
drivers/net/ethernet/mellanox/mlx5/core/en_main.c
895
rq->mpwqe.page_shift = mlx5e_mpwrq_page_shift(mdev, xsk);
drivers/net/ethernet/mellanox/mlx5/core/en_main.c
896
rq->mpwqe.umr_mode = mlx5e_mpwrq_umr_mode(mdev, xsk);
drivers/net/ethernet/mellanox/mlx5/core/en_main.c
908
mlx5e_mpwqe_get_log_rq_size(mdev, params, xsk);
drivers/net/ethernet/mellanox/mlx5/core/en_main.c
910
if (!mlx5e_rx_mpwqe_is_linear_skb(mdev, params, xsk) && params->xdp_prog)
drivers/net/ethernet/mellanox/mlx5/core/en_main.c
913
rq->mpwqe.log_stride_sz = mlx5e_mpwqe_get_log_stride_size(mdev, params, xsk);
drivers/net/ethernet/mellanox/mlx5/core/en_main.c
915
BIT(mlx5e_mpwqe_get_log_num_strides(mdev, params, xsk));
drivers/net/ethernet/mellanox/mlx5/core/en_main.c
951
if (xsk) {
drivers/net/ethernet/mellanox/mlx5/core/en_rx.c
2585
int mlx5e_rq_set_handlers(struct mlx5e_rq *rq, struct mlx5e_params *params, bool xsk)
drivers/net/ethernet/mellanox/mlx5/core/en_rx.c
2593
rq->mpwqe.skb_from_cqe_mpwrq = xsk ?
drivers/net/ethernet/mellanox/mlx5/core/en_rx.c
2617
rq->wqe.skb_from_cqe = xsk ?
drivers/net/ethernet/mellanox/mlx5/core/en_stats.c
2595
(NUM_XSKRQ_STATS * max_nch * priv->xsk.ever_used) +
drivers/net/ethernet/mellanox/mlx5/core/en_stats.c
2596
(NUM_XSKSQ_STATS * max_nch * priv->xsk.ever_used);
drivers/net/ethernet/mellanox/mlx5/core/en_stats.c
2601
bool is_xsk = priv->xsk.ever_used;
drivers/net/ethernet/mellanox/mlx5/core/en_stats.c
2634
bool is_xsk = priv->xsk.ever_used;
drivers/net/ethernet/netronome/nfp/nfp_net_common.c
2230
return nfp_net_xsk_setup_pool(netdev, xdp->xsk.pool,
drivers/net/ethernet/netronome/nfp/nfp_net_common.c
2231
xdp->xsk.queue_id);
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
6881
return stmmac_xdp_setup_pool(priv, bpf->xsk.pool,
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
6882
bpf->xsk.queue_id);
drivers/net/ethernet/ti/icssg/icssg_prueth.c
1362
return bpf->xsk.pool ?
drivers/net/ethernet/ti/icssg/icssg_prueth.c
1363
prueth_xsk_pool_enable(emac, bpf->xsk.pool, bpf->xsk.queue_id) :
drivers/net/ethernet/ti/icssg/icssg_prueth.c
1364
prueth_xsk_pool_disable(emac, bpf->xsk.queue_id);
drivers/net/virtio_net.c
107
u64 xsk;
drivers/net/virtio_net.c
1561
if (stats.xsk)
drivers/net/virtio_net.c
1562
xsk_tx_completed(sq->xsk_pool, stats.xsk);
drivers/net/virtio_net.c
5960
if (xdp->xsk.pool)
drivers/net/virtio_net.c
5961
return virtnet_xsk_pool_enable(dev, xdp->xsk.pool,
drivers/net/virtio_net.c
5962
xdp->xsk.queue_id);
drivers/net/virtio_net.c
5964
return virtnet_xsk_pool_disable(dev, xdp->xsk.queue_id);
drivers/net/virtio_net.c
622
stats->xsk++;
drivers/net/virtio_net.c
636
if (stats->xsk)
drivers/net/virtio_net.c
637
virtnet_xsk_completed(sq, stats->xsk);
include/linux/netdevice.h
1027
} xsk;
include/net/libeth/tx.h
67
struct libeth_xdp_buff *xsk;
include/net/libeth/xdp.h
1145
#define __libeth_xdp_tx_init_bulk(bq, pr, d, xdpsqs, num, xsk, ub, un) do { \
include/net/libeth/xdp.h
1151
if (un || (xsk)) { \
include/net/libeth/xdp.h
1763
typeof(libeth_xsk_buff_free_slow) xsk)
include/net/libeth/xdp.h
1788
xsk(sqe->xsk);
include/net/libeth/xdp.h
348
struct libeth_xdp_buff *xsk;
include/net/libeth/xsk.h
115
struct libeth_xdp_buff *xdp = frm.xsk;
include/net/libeth/xsk.h
125
sqe->xsk = xdp;
include/net/libeth/xsk.h
28
.xsk = xdp,
include/net/libeth/xsk.h
50
.xsk = frag,
include/net/libeth/xsk.h
549
__LIBETH_XDP_DEFINE_FLUSH_TX(name, prep, xmit, xsk)
include/net/libeth/xsk.h
557
u32 __LIBETH_XDP_DEFINE_RUN_PROG(name, flush, xsk)
include/net/libeth/xsk.h
566
bool __LIBETH_XDP_DEFINE_RUN_PASS(name, run, populate, xsk)
include/net/libeth/xsk.h
585
__LIBETH_XDP_DEFINE_FINALIZE(name, flush, finalize, xsk)
net/xdp/xsk_buff_pool.c
149
bpf.xsk.pool = NULL;
net/xdp/xsk_buff_pool.c
150
bpf.xsk.queue_id = pool->queue_id;
net/xdp/xsk_buff_pool.c
236
bpf.xsk.pool = pool;
net/xdp/xsk_buff_pool.c
237
bpf.xsk.queue_id = queue_id;
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1005
rcvd = xsk_ring_cons__peek(&xsk->rx, xsk->batch_size, &idx_rx);
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1022
const struct xdp_desc *desc = xsk_ring_cons__rx_desc(&xsk->rx, idx_rx++);
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1068
xsk_ring_cons__cancel(&xsk->rx, nb_frags);
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1081
xsk_ring_cons__release(&xsk->rx, frags_processed);
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1091
bool all_packets_received(struct test_spec *test, struct xsk_socket_info *xsk, u32 sock_num,
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1094
struct pkt_stream *pkt_stream = xsk->pkt_stream;
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1114
struct xsk_socket_info *xsk;
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1127
xsk = &test->ifobj_rx->xsk_arr[sock_num];
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1129
if ((all_packets_received(test, xsk, sock_num, bitmap)))
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1132
res = __receive_pkts(test, xsk);
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1150
static int __send_pkts(struct ifobject *ifobject, struct xsk_socket_info *xsk, bool timeout)
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1153
struct pkt_stream *pkt_stream = xsk->pkt_stream;
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1161
if (pkts_in_flight >= (int)((umem_size(umem) - xsk->batch_size * buffer_len) /
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1163
ret = kick_tx(xsk);
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1169
fds.fd = xsk_socket__fd(xsk->xsk);
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1172
while (xsk_ring_prod__reserve(&xsk->tx, xsk->batch_size, &idx) < xsk->batch_size) {
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1192
complete_pkts(xsk, xsk->batch_size);
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1195
for (i = 0; i < xsk->batch_size; i++) {
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1203
if (nb_frags > xsk->batch_size - i) {
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1205
xsk_ring_prod__cancel(&xsk->tx, xsk->batch_size - i);
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1211
struct xdp_desc *tx_desc = xsk_ring_prod__tx_desc(&xsk->tx, idx + i);
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1225
pkt_generate(xsk, umem, tx_desc->addr, tx_desc->len, pkt->pkt_nb,
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1249
xsk_ring_prod__submit(&xsk->tx, i);
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1250
xsk->outstanding_tx += valid_frags;
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1264
if (complete_pkts(xsk, i))
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1274
static int wait_for_tx_completion(struct xsk_socket_info *xsk)
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1284
while (xsk->outstanding_tx) {
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1293
complete_pkts(xsk, xsk->batch_size);
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1340
static int get_xsk_stats(struct xsk_socket *xsk, struct xdp_statistics *stats)
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1342
int fd = xsk_socket__fd(xsk), err;
tools/testing/selftests/bpf/prog_tests/test_xsk.c
135
static int enable_busy_poll(struct xsk_socket_info *xsk)
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1365
struct xsk_socket *xsk = ifobject->xsk->xsk;
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1369
err = kick_rx(ifobject->xsk);
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1373
err = get_xsk_stats(xsk, &stats);
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1383
if (stats.rx_dropped == ifobject->xsk->pkt_stream->nb_pkts / 2 ||
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1384
stats.rx_dropped == ifobject->xsk->pkt_stream->nb_pkts / 2 - 1)
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1392
struct xsk_socket *xsk = ifobject->xsk->xsk;
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1397
err = kick_rx(ifobject->xsk);
tools/testing/selftests/bpf/prog_tests/test_xsk.c
140
if (setsockopt(xsk_socket__fd(xsk->xsk), SOL_SOCKET, SO_PREFER_BUSY_POLL,
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1401
err = get_xsk_stats(xsk, &stats);
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1413
struct xsk_socket *xsk = ifobject->xsk->xsk;
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1418
err = kick_rx(ifobject->xsk);
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1422
err = get_xsk_stats(xsk, &stats);
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1434
struct xsk_socket *xsk = ifobject->xsk->xsk;
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1435
int fd = xsk_socket__fd(xsk);
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1448
if (stats.tx_invalid_descs != ifobject->xsk->pkt_stream->nb_pkts / 2) {
tools/testing/selftests/bpf/prog_tests/test_xsk.c
145
if (setsockopt(xsk_socket__fd(xsk->xsk), SOL_SOCKET, SO_BUSY_POLL,
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1452
ifobject->xsk->pkt_stream->nb_pkts);
tools/testing/selftests/bpf/prog_tests/test_xsk.c
149
sock_opt = xsk->batch_size;
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1495
ifobject->xsk = &ifobject->xsk_arr[0];
tools/testing/selftests/bpf/prog_tests/test_xsk.c
150
if (setsockopt(xsk_socket__fd(xsk->xsk), SOL_SOCKET, SO_BUSY_POLL_BUDGET,
tools/testing/selftests/bpf/prog_tests/test_xsk.c
157
int xsk_configure_socket(struct xsk_socket_info *xsk, struct xsk_umem_info *umem,
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1579
ifobject->xsk = &ifobject->xsk_arr[0];
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1584
ret = xsk_populate_fill_ring(ifobject->umem, ifobject->xsk->pkt_stream,
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1590
ifobject->xsk = &ifobject->xsk_arr[i];
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1591
ret = xsk_update_xskmap(ifobject->xskmap, ifobject->xsk->xsk, i);
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1639
err = xsk_update_xskmap(ifobject->xskmap, ifobject->xsk->xsk, 0);
tools/testing/selftests/bpf/prog_tests/test_xsk.c
164
xsk->umem = umem;
tools/testing/selftests/bpf/prog_tests/test_xsk.c
165
cfg.rx_size = xsk->rxqsize;
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1760
xsk_socket__delete(ifobj->xsk_arr[i].xsk);
tools/testing/selftests/bpf/prog_tests/test_xsk.c
177
txr = ifobject->tx_on ? &xsk->tx : NULL;
tools/testing/selftests/bpf/prog_tests/test_xsk.c
178
rxr = ifobject->rx_on ? &xsk->rx : NULL;
tools/testing/selftests/bpf/prog_tests/test_xsk.c
179
return xsk_socket__create(&xsk->xsk, ifobject->ifindex, 0, umem->umem, rxr, txr, &cfg);
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1800
pkt_stream_reset(ifobj2->xsk->pkt_stream);
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1804
pkt_stream_reset(ifobj1->xsk->pkt_stream);
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1927
test->ifobj_tx->xsk = &test->ifobj_tx->xsk_arr[1];
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1928
test->ifobj_rx->xsk = &test->ifobj_rx->xsk_arr[1];
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1930
ret = xsk_update_xskmap(test->ifobj_rx->xskmap, test->ifobj_rx->xsk->xsk, 0);
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1994
test->ifobj_tx->xsk->pkt_stream = tmp;
tools/testing/selftests/bpf/prog_tests/test_xsk.c
1999
test->ifobj_rx->xsk->pkt_stream = tmp;
tools/testing/selftests/bpf/prog_tests/test_xsk.c
2001
test->ifobj_rx->xsk->rxqsize = DEFAULT_UMEM_BUFFERS;
tools/testing/selftests/bpf/prog_tests/test_xsk.c
2014
test->ifobj_tx->xsk->pkt_stream = tmp;
tools/testing/selftests/bpf/prog_tests/test_xsk.c
2019
test->ifobj_rx->xsk->pkt_stream = tmp;
tools/testing/selftests/bpf/prog_tests/test_xsk.c
2158
skel_rx->maps.xsk, skel_tx->maps.xsk);
tools/testing/selftests/bpf/prog_tests/test_xsk.c
217
ifobj->xsk = &ifobj->xsk_arr[0];
tools/testing/selftests/bpf/prog_tests/test_xsk.c
2172
skel_rx->maps.xsk, skel_tx->maps.xsk);
tools/testing/selftests/bpf/prog_tests/test_xsk.c
2191
skel_rx->maps.xsk, skel_tx->maps.xsk);
tools/testing/selftests/bpf/prog_tests/test_xsk.c
2429
test->ifobj_tx->xsk->batch_size = 1;
tools/testing/selftests/bpf/prog_tests/test_xsk.c
2430
test->ifobj_rx->xsk->batch_size = 1;
tools/testing/selftests/bpf/prog_tests/test_xsk.c
2436
test->ifobj_tx->xsk->batch_size = DEFAULT_BATCH_SIZE - 1;
tools/testing/selftests/bpf/prog_tests/test_xsk.c
2437
test->ifobj_rx->xsk->batch_size = DEFAULT_BATCH_SIZE - 1;
tools/testing/selftests/bpf/prog_tests/test_xsk.c
2453
test->ifobj_tx->xsk->batch_size = XSK_RING_PROD__DEFAULT_NUM_DESCS;
tools/testing/selftests/bpf/prog_tests/test_xsk.c
2454
test->ifobj_rx->xsk->batch_size = XSK_RING_PROD__DEFAULT_NUM_DESCS;
tools/testing/selftests/bpf/prog_tests/test_xsk.c
2463
test->ifobj_tx->xsk->batch_size = test->ifobj_tx->ring.tx_max_pending - 8;
tools/testing/selftests/bpf/prog_tests/test_xsk.c
2464
test->ifobj_rx->xsk->batch_size = test->ifobj_tx->ring.tx_max_pending - 8;
tools/testing/selftests/bpf/prog_tests/test_xsk.c
2482
skel_rx->maps.xsk, skel_tx->maps.xsk);
tools/testing/selftests/bpf/prog_tests/test_xsk.c
2575
test->ifobj_tx->xsk->batch_size = nr_packets;
tools/testing/selftests/bpf/prog_tests/test_xsk.c
2576
test->ifobj_tx->xsk->check_consumer = true;
tools/testing/selftests/bpf/prog_tests/test_xsk.c
266
test->xskmap_rx = ifobj_rx->xdp_progs->maps.xsk;
tools/testing/selftests/bpf/prog_tests/test_xsk.c
268
test->xskmap_tx = ifobj_tx->xdp_progs->maps.xsk;
tools/testing/selftests/bpf/prog_tests/test_xsk.c
371
struct pkt_stream *tx_pkt_stream = test->ifobj_tx->xsk->pkt_stream;
tools/testing/selftests/bpf/prog_tests/test_xsk.c
372
struct pkt_stream *rx_pkt_stream = test->ifobj_rx->xsk->pkt_stream;
tools/testing/selftests/bpf/prog_tests/test_xsk.c
375
pkt_stream_delete(test->ifobj_tx->xsk->pkt_stream);
tools/testing/selftests/bpf/prog_tests/test_xsk.c
376
test->ifobj_tx->xsk->pkt_stream = test->tx_pkt_stream_default;
tools/testing/selftests/bpf/prog_tests/test_xsk.c
380
pkt_stream_delete(test->ifobj_rx->xsk->pkt_stream);
tools/testing/selftests/bpf/prog_tests/test_xsk.c
381
test->ifobj_rx->xsk->pkt_stream = test->rx_pkt_stream_default;
tools/testing/selftests/bpf/prog_tests/test_xsk.c
489
ifobj->xsk->pkt_stream = pkt_stream_generate(nb_pkts, pkt_len);
tools/testing/selftests/bpf/prog_tests/test_xsk.c
491
if (!ifobj->xsk->pkt_stream)
tools/testing/selftests/bpf/prog_tests/test_xsk.c
514
pkt_stream = pkt_stream_clone(ifobj->xsk->pkt_stream);
tools/testing/selftests/bpf/prog_tests/test_xsk.c
518
for (i = 1; i < ifobj->xsk->pkt_stream->nb_pkts; i += 2)
tools/testing/selftests/bpf/prog_tests/test_xsk.c
521
ifobj->xsk->pkt_stream = pkt_stream;
tools/testing/selftests/bpf/prog_tests/test_xsk.c
538
struct pkt_stream *pkt_stream = test->ifobj_tx->xsk->pkt_stream;
tools/testing/selftests/bpf/prog_tests/test_xsk.c
541
if (test->ifobj_rx->xsk->pkt_stream != test->rx_pkt_stream_default)
tools/testing/selftests/bpf/prog_tests/test_xsk.c
546
pkt_stream_delete(test->ifobj_rx->xsk->pkt_stream);
tools/testing/selftests/bpf/prog_tests/test_xsk.c
548
test->ifobj_rx->xsk->pkt_stream = pkt_stream_generate(pkt_stream->nb_pkts,
tools/testing/selftests/bpf/prog_tests/test_xsk.c
550
if (!test->ifobj_rx->xsk->pkt_stream)
tools/testing/selftests/bpf/prog_tests/test_xsk.c
553
pkt_stream = test->ifobj_rx->xsk->pkt_stream;
tools/testing/selftests/bpf/prog_tests/test_xsk.c
588
struct pkt_stream *later_free_tx = test->ifobj_tx->xsk->pkt_stream;
tools/testing/selftests/bpf/prog_tests/test_xsk.c
589
struct pkt_stream *later_free_rx = test->ifobj_rx->xsk->pkt_stream;
tools/testing/selftests/bpf/prog_tests/test_xsk.c
61
static void gen_eth_hdr(struct xsk_socket_info *xsk, struct ethhdr *eth_hdr)
tools/testing/selftests/bpf/prog_tests/test_xsk.c
614
static void pkt_generate(struct xsk_socket_info *xsk, struct xsk_umem_info *umem, u64 addr, u32 len,
tools/testing/selftests/bpf/prog_tests/test_xsk.c
623
gen_eth_hdr(xsk, data);
tools/testing/selftests/bpf/prog_tests/test_xsk.c
63
memcpy(eth_hdr->h_dest, xsk->dst_mac, ETH_ALEN);
tools/testing/selftests/bpf/prog_tests/test_xsk.c
64
memcpy(eth_hdr->h_source, xsk->src_mac, ETH_ALEN);
tools/testing/selftests/bpf/prog_tests/test_xsk.c
692
test->ifobj_tx->xsk->pkt_stream = pkt_stream;
tools/testing/selftests/bpf/prog_tests/test_xsk.c
697
test->ifobj_rx->xsk->pkt_stream = pkt_stream;
tools/testing/selftests/bpf/prog_tests/test_xsk.c
885
static bool kick_tx_with_check(struct xsk_socket_info *xsk, int *ret)
tools/testing/selftests/bpf/prog_tests/test_xsk.c
891
cons = load_value(xsk->tx.consumer);
tools/testing/selftests/bpf/prog_tests/test_xsk.c
892
ready_to_send = load_value(xsk->tx.producer) - cons;
tools/testing/selftests/bpf/prog_tests/test_xsk.c
893
*ret = sendto(xsk_socket__fd(xsk->xsk), NULL, 0, MSG_DONTWAIT, NULL, 0);
tools/testing/selftests/bpf/prog_tests/test_xsk.c
895
delta = load_value(xsk->tx.consumer) - cons;
tools/testing/selftests/bpf/prog_tests/test_xsk.c
909
int kick_tx(struct xsk_socket_info *xsk)
tools/testing/selftests/bpf/prog_tests/test_xsk.c
913
if (xsk->check_consumer) {
tools/testing/selftests/bpf/prog_tests/test_xsk.c
914
if (!kick_tx_with_check(xsk, &ret))
tools/testing/selftests/bpf/prog_tests/test_xsk.c
917
ret = sendto(xsk_socket__fd(xsk->xsk), NULL, 0, MSG_DONTWAIT, NULL, 0);
tools/testing/selftests/bpf/prog_tests/test_xsk.c
928
int kick_rx(struct xsk_socket_info *xsk)
tools/testing/selftests/bpf/prog_tests/test_xsk.c
932
ret = recvfrom(xsk_socket__fd(xsk->xsk), NULL, 0, MSG_DONTWAIT, NULL, NULL);
tools/testing/selftests/bpf/prog_tests/test_xsk.c
939
static int complete_pkts(struct xsk_socket_info *xsk, int batch_size)
tools/testing/selftests/bpf/prog_tests/test_xsk.c
945
if (xsk_ring_prod__needs_wakeup(&xsk->tx)) {
tools/testing/selftests/bpf/prog_tests/test_xsk.c
946
ret = kick_tx(xsk);
tools/testing/selftests/bpf/prog_tests/test_xsk.c
951
rcvd = xsk_ring_cons__peek(&xsk->umem->cq, batch_size, &idx);
tools/testing/selftests/bpf/prog_tests/test_xsk.c
953
if (rcvd > xsk->outstanding_tx) {
tools/testing/selftests/bpf/prog_tests/test_xsk.c
954
u64 addr = *xsk_ring_cons__comp_addr(&xsk->umem->cq, idx + rcvd - 1);
tools/testing/selftests/bpf/prog_tests/test_xsk.c
962
xsk_ring_cons__release(&xsk->umem->cq, rcvd);
tools/testing/selftests/bpf/prog_tests/test_xsk.c
963
xsk->outstanding_tx -= rcvd;
tools/testing/selftests/bpf/prog_tests/test_xsk.c
969
static int __receive_pkts(struct test_spec *test, struct xsk_socket_info *xsk)
tools/testing/selftests/bpf/prog_tests/test_xsk.c
973
struct pkt_stream *pkt_stream = xsk->pkt_stream;
tools/testing/selftests/bpf/prog_tests/test_xsk.c
975
struct xsk_umem_info *umem = xsk->umem;
tools/testing/selftests/bpf/prog_tests/test_xsk.c
981
fds.fd = xsk_socket__fd(xsk->xsk);
tools/testing/selftests/bpf/prog_tests/test_xsk.c
984
ret = kick_rx(xsk);
tools/testing/selftests/bpf/prog_tests/test_xsk.h
124
struct xsk_socket_info *xsk;
tools/testing/selftests/bpf/prog_tests/test_xsk.h
159
int xsk_configure_socket(struct xsk_socket_info *xsk, struct xsk_umem_info *umem,
tools/testing/selftests/bpf/prog_tests/test_xsk.h
87
struct xsk_socket *xsk;
tools/testing/selftests/bpf/prog_tests/test_xsk.h
97
int kick_rx(struct xsk_socket_info *xsk);
tools/testing/selftests/bpf/prog_tests/test_xsk.h
98
int kick_tx(struct xsk_socket_info *xsk);
tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
106
printf("%p: tx_desc[%d] -> %lx\n", xsk, i, addr);
tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
111
ret = xsk_ring_prod__reserve(&xsk->fill, UMEM_NUM / 2, &idx);
tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
119
printf("%p: rx_desc[%d] -> %lx\n", xsk, i, addr);
tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
120
*xsk_ring_prod__fill_addr(&xsk->fill, i) = addr;
tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
122
xsk_ring_prod__submit(&xsk->fill, ret);
tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
127
static void close_xsk(struct xsk *xsk)
tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
129
if (xsk->socket)
tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
130
xsk_socket__delete(xsk->socket);
tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
131
if (xsk->umem)
tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
132
xsk_umem__delete(xsk->umem);
tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
133
munmap(xsk->umem_area, UMEM_SIZE);
tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
136
static int generate_packet(struct xsk *xsk, __u16 dst_port)
tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
147
ret = xsk_ring_prod__reserve(&xsk->tx, 1, &idx);
tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
151
tx_desc = xsk_ring_prod__tx_desc(&xsk->tx, idx);
tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
153
printf("%p: tx_desc[%u]->addr=%llx\n", xsk, idx, tx_desc->addr);
tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
154
data = xsk_umem__get_data(xsk->umem_area, tx_desc->addr);
tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
194
xsk_ring_prod__submit(&xsk->tx, 1);
tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
196
ret = sendto(xsk_socket__fd(xsk->socket), NULL, 0, MSG_DONTWAIT, NULL, 0);
tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
227
static void complete_tx(struct xsk *xsk)
tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
234
if (ASSERT_EQ(xsk_ring_cons__peek(&xsk->comp, 1, &idx), 1, "xsk_ring_cons__peek")) {
tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
235
addr = *xsk_ring_cons__comp_addr(&xsk->comp, idx);
tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
237
printf("%p: complete tx idx=%u addr=%llx\n", xsk, idx, addr);
tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
239
data = xsk_umem__get_data(xsk->umem_area, addr);
tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
244
xsk_ring_cons__release(&xsk->comp, 1);
tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
248
static void refill_rx(struct xsk *xsk, __u64 addr)
tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
252
if (ASSERT_EQ(xsk_ring_prod__reserve(&xsk->fill, 1, &idx), 1, "xsk_ring_prod__reserve")) {
tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
253
printf("%p: complete idx=%u addr=%llx\n", xsk, idx, addr);
tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
254
*xsk_ring_prod__fill_addr(&xsk->fill, idx) = addr;
tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
255
xsk_ring_prod__submit(&xsk->fill, 1);
tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
259
static int verify_xsk_metadata(struct xsk *xsk, bool sent_from_af_xdp)
tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
273
ret = recvfrom(xsk_socket__fd(xsk->socket), NULL, 0, MSG_DONTWAIT, NULL, NULL);
tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
277
fds.fd = xsk_socket__fd(xsk->socket);
tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
284
ret = xsk_ring_cons__peek(&xsk->rx, 1, &idx);
tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
288
rx_desc = xsk_ring_cons__rx_desc(&xsk->rx, idx);
tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
292
xsk, idx, rx_desc->addr, addr, comp_addr);
tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
293
data = xsk_umem__get_data(xsk->umem_area, addr);
tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
331
xsk_ring_cons__release(&xsk->rx, 1);
tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
332
refill_rx(xsk, comp_addr);
tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
358
struct xsk tx_xsk = {};
tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
359
struct xsk rx_xsk = {};
tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
455
ret = bpf_map_update_elem(bpf_map__fd(bpf_obj->maps.xsk), &queue_id, &sock_fd, 0);
tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
59
static int open_xsk(int ifindex, struct xsk *xsk)
tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
80
xsk->umem_area = mmap(NULL, UMEM_SIZE, PROT_READ | PROT_WRITE, mmap_flags, -1, 0);
tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
81
if (!ASSERT_NEQ(xsk->umem_area, MAP_FAILED, "mmap"))
tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
84
ret = xsk_umem__create(&xsk->umem,
tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
85
xsk->umem_area, UMEM_SIZE,
tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
86
&xsk->fill,
tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
87
&xsk->comp,
tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
92
ret = xsk_socket__create(&xsk->socket, ifindex, QUEUE_ID,
tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
93
xsk->umem,
tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
94
&xsk->rx,
tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
95
&xsk->tx,
tools/testing/selftests/bpf/progs/xdp_hw_metadata.c
114
return bpf_redirect_map(&xsk, ctx->rx_queue_index, XDP_PASS);
tools/testing/selftests/bpf/progs/xdp_hw_metadata.c
13
} xsk SEC(".maps");
tools/testing/selftests/bpf/progs/xdp_metadata.c
102
return bpf_redirect_map(&xsk, ctx->rx_queue_index, XDP_PASS);
tools/testing/selftests/bpf/progs/xdp_metadata.c
13
} xsk SEC(".maps");
tools/testing/selftests/bpf/progs/xsk_xdp_progs.c
122
return bpf_redirect_map(&xsk, 0, XDP_DROP);
tools/testing/selftests/bpf/progs/xsk_xdp_progs.c
16
} xsk SEC(".maps");
tools/testing/selftests/bpf/progs/xsk_xdp_progs.c
24
return bpf_redirect_map(&xsk, 0, XDP_DROP);
tools/testing/selftests/bpf/progs/xsk_xdp_progs.c
35
return bpf_redirect_map(&xsk, 0, XDP_DROP);
tools/testing/selftests/bpf/progs/xsk_xdp_progs.c
58
return bpf_redirect_map(&xsk, 0, XDP_DROP);
tools/testing/selftests/bpf/progs/xsk_xdp_progs.c
75
return bpf_redirect_map(&xsk, idx, XDP_DROP);
tools/testing/selftests/bpf/progs/xsk_xdp_progs.c
95
return bpf_redirect_map(&xsk, 0, XDP_DROP);
tools/testing/selftests/bpf/xdp_hw_metadata.c
112
xsk->umem_area = mmap(NULL, UMEM_SIZE, PROT_READ | PROT_WRITE, mmap_flags, -1, 0);
tools/testing/selftests/bpf/xdp_hw_metadata.c
113
if (xsk->umem_area == MAP_FAILED)
tools/testing/selftests/bpf/xdp_hw_metadata.c
116
ret = xsk_umem__create(&xsk->umem,
tools/testing/selftests/bpf/xdp_hw_metadata.c
117
xsk->umem_area, UMEM_SIZE,
tools/testing/selftests/bpf/xdp_hw_metadata.c
118
&xsk->fill,
tools/testing/selftests/bpf/xdp_hw_metadata.c
119
&xsk->comp,
tools/testing/selftests/bpf/xdp_hw_metadata.c
124
ret = xsk_socket__create(&xsk->socket, ifindex, queue_id,
tools/testing/selftests/bpf/xdp_hw_metadata.c
125
xsk->umem,
tools/testing/selftests/bpf/xdp_hw_metadata.c
126
&xsk->rx,
tools/testing/selftests/bpf/xdp_hw_metadata.c
127
&xsk->tx,
tools/testing/selftests/bpf/xdp_hw_metadata.c
138
printf("%p: tx_desc[%d] -> %lx\n", xsk, i, addr);
tools/testing/selftests/bpf/xdp_hw_metadata.c
143
ret = xsk_ring_prod__reserve(&xsk->fill, UMEM_NUM / 2, &idx);
tools/testing/selftests/bpf/xdp_hw_metadata.c
146
printf("%p: rx_desc[%d] -> %lx\n", xsk, i, addr);
tools/testing/selftests/bpf/xdp_hw_metadata.c
147
*xsk_ring_prod__fill_addr(&xsk->fill, idx + i) = addr;
tools/testing/selftests/bpf/xdp_hw_metadata.c
149
xsk_ring_prod__submit(&xsk->fill, ret);
tools/testing/selftests/bpf/xdp_hw_metadata.c
154
static void close_xsk(struct xsk *xsk)
tools/testing/selftests/bpf/xdp_hw_metadata.c
156
if (xsk->umem)
tools/testing/selftests/bpf/xdp_hw_metadata.c
157
xsk_umem__delete(xsk->umem);
tools/testing/selftests/bpf/xdp_hw_metadata.c
158
if (xsk->socket)
tools/testing/selftests/bpf/xdp_hw_metadata.c
159
xsk_socket__delete(xsk->socket);
tools/testing/selftests/bpf/xdp_hw_metadata.c
160
munmap(xsk->umem_area, UMEM_SIZE);
tools/testing/selftests/bpf/xdp_hw_metadata.c
163
static void refill_rx(struct xsk *xsk, __u64 addr)
tools/testing/selftests/bpf/xdp_hw_metadata.c
167
if (xsk_ring_prod__reserve(&xsk->fill, 1, &idx) == 1) {
tools/testing/selftests/bpf/xdp_hw_metadata.c
168
printf("%p: complete rx idx=%u addr=%llx\n", xsk, idx, addr);
tools/testing/selftests/bpf/xdp_hw_metadata.c
169
*xsk_ring_prod__fill_addr(&xsk->fill, idx) = addr;
tools/testing/selftests/bpf/xdp_hw_metadata.c
170
xsk_ring_prod__submit(&xsk->fill, 1);
tools/testing/selftests/bpf/xdp_hw_metadata.c
174
static int kick_tx(struct xsk *xsk)
tools/testing/selftests/bpf/xdp_hw_metadata.c
176
return sendto(xsk_socket__fd(xsk->socket), NULL, 0, MSG_DONTWAIT, NULL, 0);
tools/testing/selftests/bpf/xdp_hw_metadata.c
179
static int kick_rx(struct xsk *xsk)
tools/testing/selftests/bpf/xdp_hw_metadata.c
181
return recvfrom(xsk_socket__fd(xsk->socket), NULL, 0, MSG_DONTWAIT, NULL, NULL);
tools/testing/selftests/bpf/xdp_hw_metadata.c
304
static bool complete_tx(struct xsk *xsk, clockid_t clock_id)
tools/testing/selftests/bpf/xdp_hw_metadata.c
311
if (!xsk_ring_cons__peek(&xsk->comp, 1, &idx))
tools/testing/selftests/bpf/xdp_hw_metadata.c
314
addr = *xsk_ring_cons__comp_addr(&xsk->comp, idx);
tools/testing/selftests/bpf/xdp_hw_metadata.c
315
data = xsk_umem__get_data(xsk->umem_area, addr);
tools/testing/selftests/bpf/xdp_hw_metadata.c
318
printf("%p: complete tx idx=%u addr=%llx\n", xsk, idx, addr);
tools/testing/selftests/bpf/xdp_hw_metadata.c
339
xsk_ring_cons__release(&xsk->comp, 1);
tools/testing/selftests/bpf/xdp_hw_metadata.c
352
static void ping_pong(struct xsk *xsk, void *rx_packet, clockid_t clock_id)
tools/testing/selftests/bpf/xdp_hw_metadata.c
366
ret = xsk_ring_prod__reserve(&xsk->tx, 1, &idx);
tools/testing/selftests/bpf/xdp_hw_metadata.c
368
printf("%p: failed to reserve tx slot\n", xsk);
tools/testing/selftests/bpf/xdp_hw_metadata.c
372
tx_desc = xsk_ring_prod__tx_desc(&xsk->tx, idx);
tools/testing/selftests/bpf/xdp_hw_metadata.c
374
data = xsk_umem__get_data(xsk->umem_area, tx_desc->addr);
tools/testing/selftests/bpf/xdp_hw_metadata.c
389
printf("%p: failed to detect IP version for ping pong %04x\n", xsk, eth->h_proto);
tools/testing/selftests/bpf/xdp_hw_metadata.c
390
xsk_ring_prod__cancel(&xsk->tx, 1);
tools/testing/selftests/bpf/xdp_hw_metadata.c
423
xsk, ntohs(udph->check), ntohs(want_csum),
tools/testing/selftests/bpf/xdp_hw_metadata.c
441
xsk_ring_prod__submit(&xsk->tx, 1);
tools/testing/selftests/bpf/xdp_hw_metadata.c
444
static int verify_metadata(struct xsk *rx_xsk, int rxq, int server_fd, clockid_t clock_id)
tools/testing/selftests/bpf/xdp_hw_metadata.c
493
struct xsk *xsk = &rx_xsk[i];
tools/testing/selftests/bpf/xdp_hw_metadata.c
495
ret = xsk_ring_cons__peek(&xsk->rx, 1, &idx);
tools/testing/selftests/bpf/xdp_hw_metadata.c
500
rx_desc = xsk_ring_cons__rx_desc(&xsk->rx, idx);
tools/testing/selftests/bpf/xdp_hw_metadata.c
505
xsk, idx, rx_desc->addr, addr, comp_addr, is_eop ? " EoP" : "");
tools/testing/selftests/bpf/xdp_hw_metadata.c
507
verify_xdp_metadata(xsk_umem__get_data(xsk->umem_area, addr),
tools/testing/selftests/bpf/xdp_hw_metadata.c
513
ping_pong(xsk, xsk_umem__get_data(xsk->umem_area, addr),
tools/testing/selftests/bpf/xdp_hw_metadata.c
516
ret = kick_tx(xsk);
tools/testing/selftests/bpf/xdp_hw_metadata.c
525
if (complete_tx(xsk, clock_id))
tools/testing/selftests/bpf/xdp_hw_metadata.c
534
xsk_ring_cons__release(&xsk->rx, 1);
tools/testing/selftests/bpf/xdp_hw_metadata.c
535
refill_rx(xsk, comp_addr);
tools/testing/selftests/bpf/xdp_hw_metadata.c
70
struct xsk *rx_xsk;
tools/testing/selftests/bpf/xdp_hw_metadata.c
828
rx_xsk = malloc(sizeof(struct xsk) * rxq);
tools/testing/selftests/bpf/xdp_hw_metadata.c
869
ret = bpf_map_update_elem(bpf_map__fd(bpf_obj->maps.xsk), &queue_id, &sock_fd, 0);
tools/testing/selftests/bpf/xdp_hw_metadata.c
92
static int open_xsk(int ifindex, struct xsk *xsk, __u32 queue_id)
tools/testing/selftests/bpf/xsk.c
448
int xsk_update_xskmap(struct bpf_map *map, struct xsk_socket *xsk, u32 index)
tools/testing/selftests/bpf/xsk.c
453
sock_fd = xsk_socket__fd(xsk);
tools/testing/selftests/bpf/xsk.c
502
static struct xsk_ctx *xsk_create_ctx(struct xsk_socket *xsk,
tools/testing/selftests/bpf/xsk.c
516
err = xsk_create_umem_rings(umem, xsk->fd, fill, comp);
tools/testing/selftests/bpf/xsk.c
551
struct xsk_socket *xsk;
tools/testing/selftests/bpf/xsk.c
560
xsk = calloc(1, sizeof(*xsk));
tools/testing/selftests/bpf/xsk.c
561
if (!xsk)
tools/testing/selftests/bpf/xsk.c
564
err = xsk_set_xdp_socket_config(&xsk->config, usr_config);
tools/testing/selftests/bpf/xsk.c
569
xsk->fd = socket(AF_XDP, SOCK_RAW | SOCK_CLOEXEC, 0);
tools/testing/selftests/bpf/xsk.c
570
if (xsk->fd < 0) {
tools/testing/selftests/bpf/xsk.c
575
xsk->fd = umem->fd;
tools/testing/selftests/bpf/xsk.c
587
ctx = xsk_create_ctx(xsk, umem, ifindex, queue_id, fill, comp);
tools/testing/selftests/bpf/xsk.c
593
xsk->ctx = ctx;
tools/testing/selftests/bpf/xsk.c
596
err = setsockopt(xsk->fd, SOL_XDP, XDP_RX_RING,
tools/testing/selftests/bpf/xsk.c
597
&xsk->config.rx_size,
tools/testing/selftests/bpf/xsk.c
598
sizeof(xsk->config.rx_size));
tools/testing/selftests/bpf/xsk.c
603
if (xsk->fd == umem->fd)
tools/testing/selftests/bpf/xsk.c
607
err = setsockopt(xsk->fd, SOL_XDP, XDP_TX_RING,
tools/testing/selftests/bpf/xsk.c
608
&xsk->config.tx_size,
tools/testing/selftests/bpf/xsk.c
609
sizeof(xsk->config.tx_size));
tools/testing/selftests/bpf/xsk.c
614
if (xsk->fd == umem->fd)
tools/testing/selftests/bpf/xsk.c
618
err = xsk_get_mmap_offsets(xsk->fd, &off);
tools/testing/selftests/bpf/xsk.c
626
xsk->config.rx_size * sizeof(struct xdp_desc),
tools/testing/selftests/bpf/xsk.c
628
xsk->fd, XDP_PGOFF_RX_RING);
tools/testing/selftests/bpf/xsk.c
634
rx->mask = xsk->config.rx_size - 1;
tools/testing/selftests/bpf/xsk.c
635
rx->size = xsk->config.rx_size;
tools/testing/selftests/bpf/xsk.c
643
xsk->rx = rx;
tools/testing/selftests/bpf/xsk.c
647
xsk->config.tx_size * sizeof(struct xdp_desc),
tools/testing/selftests/bpf/xsk.c
649
xsk->fd, XDP_PGOFF_TX_RING);
tools/testing/selftests/bpf/xsk.c
655
tx->mask = xsk->config.tx_size - 1;
tools/testing/selftests/bpf/xsk.c
656
tx->size = xsk->config.tx_size;
tools/testing/selftests/bpf/xsk.c
665
tx->cached_cons = *tx->consumer + xsk->config.tx_size;
tools/testing/selftests/bpf/xsk.c
667
xsk->tx = tx;
tools/testing/selftests/bpf/xsk.c
676
sxdp.sxdp_flags = xsk->config.bind_flags;
tools/testing/selftests/bpf/xsk.c
679
err = bind(xsk->fd, (struct sockaddr *)&sxdp, sizeof(sxdp));
tools/testing/selftests/bpf/xsk.c
685
*xsk_ptr = xsk;
tools/testing/selftests/bpf/xsk.c
693
xsk->config.tx_size * sizeof(struct xdp_desc));
tools/testing/selftests/bpf/xsk.c
697
xsk->config.rx_size * sizeof(struct xdp_desc));
tools/testing/selftests/bpf/xsk.c
702
close(xsk->fd);
tools/testing/selftests/bpf/xsk.c
704
free(xsk);
tools/testing/selftests/bpf/xsk.c
746
void xsk_socket__delete(struct xsk_socket *xsk)
tools/testing/selftests/bpf/xsk.c
754
if (!xsk)
tools/testing/selftests/bpf/xsk.c
757
ctx = xsk->ctx;
tools/testing/selftests/bpf/xsk.c
762
err = xsk_get_mmap_offsets(xsk->fd, &off);
tools/testing/selftests/bpf/xsk.c
764
if (xsk->rx) {
tools/testing/selftests/bpf/xsk.c
765
munmap(xsk->rx->ring - off.rx.desc,
tools/testing/selftests/bpf/xsk.c
766
off.rx.desc + xsk->config.rx_size * desc_sz);
tools/testing/selftests/bpf/xsk.c
768
if (xsk->tx) {
tools/testing/selftests/bpf/xsk.c
769
munmap(xsk->tx->ring - off.tx.desc,
tools/testing/selftests/bpf/xsk.c
770
off.tx.desc + xsk->config.tx_size * desc_sz);
tools/testing/selftests/bpf/xsk.c
778
if (xsk->fd != umem->fd)
tools/testing/selftests/bpf/xsk.c
779
close(xsk->fd);
tools/testing/selftests/bpf/xsk.c
780
free(xsk);
tools/testing/selftests/bpf/xsk.c
97
int xsk_socket__fd(const struct xsk_socket *xsk)
tools/testing/selftests/bpf/xsk.c
99
return xsk ? xsk->fd : -EINVAL;
tools/testing/selftests/bpf/xsk.h
188
int xsk_socket__fd(const struct xsk_socket *xsk);
tools/testing/selftests/bpf/xsk.h
208
int xsk_update_xskmap(struct bpf_map *map, struct xsk_socket *xsk, u32 index);
tools/testing/selftests/bpf/xsk.h
224
int xsk_socket__create(struct xsk_socket **xsk,
tools/testing/selftests/bpf/xsk.h
241
void xsk_socket__delete(struct xsk_socket *xsk);
tools/testing/selftests/bpf/xskxceiver.c
124
struct xsk_socket_info *xsk;
tools/testing/selftests/bpf/xskxceiver.c
144
xsk = calloc(1, sizeof(struct xsk_socket_info));
tools/testing/selftests/bpf/xskxceiver.c
145
if (!xsk)
tools/testing/selftests/bpf/xskxceiver.c
149
xsk->rxqsize = XSK_RING_CONS__DEFAULT_NUM_DESCS;
tools/testing/selftests/bpf/xskxceiver.c
150
ret = xsk_configure_socket(xsk, umem, ifobject, false);
tools/testing/selftests/bpf/xskxceiver.c
154
xsk_socket__delete(xsk->xsk);
tools/testing/selftests/bpf/xskxceiver.c
155
free(xsk);