Lines Matching refs:xdp_ring
152 struct i40e_ring *xdp_ring; in i40e_run_xdp_zc() local
173 xdp_ring = rx_ring->vsi->xdp_rings[rx_ring->queue_index]; in i40e_run_xdp_zc()
174 result = i40e_xmit_xdp_tx_ring(xdp, xdp_ring); in i40e_run_xdp_zc()
398 static void i40e_xmit_pkt(struct i40e_ring *xdp_ring, struct xdp_desc *desc, in i40e_xmit_pkt() argument
404 dma = xsk_buff_raw_get_dma(xdp_ring->xsk_pool, desc->addr); in i40e_xmit_pkt()
405 xsk_buff_raw_dma_sync_for_device(xdp_ring->xsk_pool, dma, desc->len); in i40e_xmit_pkt()
407 tx_desc = I40E_TX_DESC(xdp_ring, xdp_ring->next_to_use++); in i40e_xmit_pkt()
415 static void i40e_xmit_pkt_batch(struct i40e_ring *xdp_ring, struct xdp_desc *desc, in i40e_xmit_pkt_batch() argument
418 u16 ntu = xdp_ring->next_to_use; in i40e_xmit_pkt_batch()
424 dma = xsk_buff_raw_get_dma(xdp_ring->xsk_pool, desc[i].addr); in i40e_xmit_pkt_batch()
425 xsk_buff_raw_dma_sync_for_device(xdp_ring->xsk_pool, dma, desc[i].len); in i40e_xmit_pkt_batch()
427 tx_desc = I40E_TX_DESC(xdp_ring, ntu++); in i40e_xmit_pkt_batch()
436 xdp_ring->next_to_use = ntu; in i40e_xmit_pkt_batch()
439 static void i40e_fill_tx_hw_ring(struct i40e_ring *xdp_ring, struct xdp_desc *descs, u32 nb_pkts, in i40e_fill_tx_hw_ring() argument
447 i40e_xmit_pkt_batch(xdp_ring, &descs[i], total_bytes); in i40e_fill_tx_hw_ring()
449 i40e_xmit_pkt(xdp_ring, &descs[i], total_bytes); in i40e_fill_tx_hw_ring()
452 static void i40e_set_rs_bit(struct i40e_ring *xdp_ring) in i40e_set_rs_bit() argument
454 u16 ntu = xdp_ring->next_to_use ? xdp_ring->next_to_use - 1 : xdp_ring->count - 1; in i40e_set_rs_bit()
457 tx_desc = I40E_TX_DESC(xdp_ring, ntu); in i40e_set_rs_bit()
468 static bool i40e_xmit_zc(struct i40e_ring *xdp_ring, unsigned int budget) in i40e_xmit_zc() argument
470 struct xdp_desc *descs = xdp_ring->xsk_descs; in i40e_xmit_zc()
474 nb_pkts = xsk_tx_peek_release_desc_batch(xdp_ring->xsk_pool, descs, budget); in i40e_xmit_zc()
478 if (xdp_ring->next_to_use + nb_pkts >= xdp_ring->count) { in i40e_xmit_zc()
479 nb_processed = xdp_ring->count - xdp_ring->next_to_use; in i40e_xmit_zc()
480 i40e_fill_tx_hw_ring(xdp_ring, descs, nb_processed, &total_bytes); in i40e_xmit_zc()
481 xdp_ring->next_to_use = 0; in i40e_xmit_zc()
484 i40e_fill_tx_hw_ring(xdp_ring, &descs[nb_processed], nb_pkts - nb_processed, in i40e_xmit_zc()
488 i40e_set_rs_bit(xdp_ring); in i40e_xmit_zc()
489 i40e_xdp_ring_update_tail(xdp_ring); in i40e_xmit_zc()
491 i40e_update_tx_stats(xdp_ring, nb_pkts, total_bytes); in i40e_xmit_zc()