xdp_desc
static int tsnep_xdp_tx_map_zc(struct xdp_desc *xdpd, struct tsnep_tx *tx)
static void tsnep_xdp_xmit_frame_ring_zc(struct xdp_desc *xdpd,
struct xdp_desc *descs = tx->xsk_pool->tx_descs;
struct xdp_desc *xdp_desc)
addr = xsk_buff_raw_get_dma(ch->xsk_pool, xdp_desc->addr);
xsk_buff_raw_dma_sync_for_device(ch->xsk_pool, addr, xdp_desc->len);
dpaa2_sg_set_len(sgt, xdp_desc->len);
dpaa2_fd_set_len(fd, xdp_desc->len);
struct xdp_desc *xdp_descs = ch->xsk_pool->tx_descs;
struct xdp_desc *xsk_desc = pool->tx_descs;
struct xdp_desc desc;
struct xdp_desc desc;
static void i40e_xmit_pkt(struct i40e_ring *xdp_ring, struct xdp_desc *desc,
static void i40e_xmit_pkt_batch(struct i40e_ring *xdp_ring, struct xdp_desc *desc,
static void i40e_fill_tx_hw_ring(struct i40e_ring *xdp_ring, struct xdp_desc *descs, u32 nb_pkts,
struct xdp_desc *descs = xdp_ring->xsk_pool->tx_descs;
struct xsk_buff_pool *xsk_pool, struct xdp_desc *desc,
struct xdp_desc *descs,
struct xdp_desc *descs, u32 nb_pkts,
struct xdp_desc *descs = xsk_pool->tx_descs;
struct xdp_desc *descs = xsk_pool->tx_descs;
struct xdp_desc xdp_desc;
while (budget >= 4 && xsk_tx_peek_desc(pool, &xdp_desc)) {
IGC_TXD_DCMD | xdp_desc.len;
olinfo_status = xdp_desc.len << IGC_ADVTXD_PAYLEN_SHIFT;
dma = xsk_buff_raw_get_dma(pool, xdp_desc.addr);
meta = xsk_buff_get_metadata(pool, xdp_desc.addr);
xsk_buff_raw_dma_sync_for_device(pool, dma, xdp_desc.len);
bi->bytecount = xdp_desc.len;
netdev_tx_sent_queue(txring_txq(ring), xdp_desc.len);
struct xdp_desc desc;
struct xdp_desc *xdp_desc = pool->tx_descs;
dma_addr = xsk_buff_raw_get_dma(pool, xdp_desc[i].addr);
otx2_xsk_sq_append_pkt(pfvf, dma_addr, xdp_desc[i].len, queue);
struct xdp_desc desc;
struct xdp_desc desc[NFP_NET_XSK_TX_BATCH];
struct xdp_desc xdp_desc;
if (!xsk_tx_peek_desc(pool, &xdp_desc))
xdp_desc.len > priv->est->max_sdu[queue]) {
dma_addr = xsk_buff_raw_get_dma(pool, xdp_desc.addr);
meta = xsk_buff_get_metadata(pool, xdp_desc.addr);
xsk_buff_raw_dma_sync_for_device(pool, dma_addr, xdp_desc.len);
tx_q->tx_skbuff_dma[entry].len = xdp_desc.len;
stmmac_prepare_tx_desc(priv, tx_desc, 1, xdp_desc.len,
xdp_desc.len);
struct xdp_desc xdp_desc;
if (!xsk_tx_peek_desc(pool, &xdp_desc))
dma_buf = xsk_buff_raw_get_dma(pool, xdp_desc.addr);
pkt_len = xdp_desc.len;
struct xdp_desc *desc)
struct xdp_desc *descs = pool->tx_descs;
struct xdp_desc desc;
} __aligned(sizeof(struct xdp_desc));
static_assert(sizeof(struct libeth_xdp_tx_frame) == sizeof(struct xdp_desc));
__libeth_xsk_xmit_fill_buf_md(const struct xdp_desc *xdesc,
__libeth_xsk_xmit_fill_buf(const struct xdp_desc *xdesc,
static inline bool xsk_is_eop_desc(const struct xdp_desc *desc)
bool xsk_tx_peek_desc(struct xsk_buff_pool *pool, struct xdp_desc *desc);
struct xdp_desc *desc)
static inline bool xsk_is_eop_desc(const struct xdp_desc *desc)
struct xdp_desc;
static inline bool xp_mb_desc(const struct xdp_desc *desc)
struct xdp_desc *tx_descs;
bool xsk_tx_peek_desc(struct xsk_buff_pool *pool, struct xdp_desc *desc)
struct xdp_desc *descs = pool->tx_descs;
struct xdp_desc *desc, struct xsk_buff_pool *pool,
struct xdp_desc *desc)
struct xdp_desc *desc)
struct xdp_desc desc;
struct xdp_desc *desc)
struct xdp_desc *desc)
struct xdp_desc *desc)
struct xdp_desc *d,
struct xdp_desc *desc,
struct xdp_desc *desc, struct parsed_desc *parsed)
struct xdp_desc *descs = pool->tx_descs;
struct xdp_desc desc[] ____cacheline_aligned_in_smp;
struct xdp_desc *desc,
static inline void xskq_prod_write_addr_batch(struct xsk_queue *q, struct xdp_desc *descs,
(struct xdp_desc){ ifindex, prog_id, xdp_flags };
const struct xdp_desc *desc = xsk_ring_cons__rx_desc(&xsk->rx, idx_rx++);
struct xdp_desc *tx_desc = xsk_ring_prod__tx_desc(&xsk->tx, idx + i);
struct xdp_desc *tx_desc;
const struct xdp_desc *rx_desc;
struct xdp_desc *tx_desc;
const struct xdp_desc *rx_desc;
xsk->config.rx_size * sizeof(struct xdp_desc),
xsk->config.tx_size * sizeof(struct xdp_desc),
xsk->config.tx_size * sizeof(struct xdp_desc));
xsk->config.rx_size * sizeof(struct xdp_desc));
size_t desc_sz = sizeof(struct xdp_desc);
static inline struct xdp_desc *xsk_ring_prod__tx_desc(struct xsk_ring_prod *tx,
struct xdp_desc *descs = (struct xdp_desc *)tx->ring;
static inline const struct xdp_desc *
const struct xdp_desc *descs = (const struct xdp_desc *)rx->ring;