Lines Matching defs:tx_ring

17 		    struct nfp_net_tx_ring *tx_ring,
26 if (nfp_net_tx_space(tx_ring) < 1)
32 wr_idx = D_IDX(tx_ring, tx_ring->wr_p);
34 txbuf = &tx_ring->txbufs[wr_idx];
40 txd = &tx_ring->txds[wr_idx];
50 tx_ring->wr_ptr_add++;
51 tx_ring->wr_p++;
120 struct nfp_net_tx_ring *tx_ring;
126 tx_ring = r_vec->xdp_ring;
230 if (!nfp_nfd3_xsk_tx_xdp(dp, r_vec, rx_ring, tx_ring,
261 if (tx_ring->wr_ptr_add)
262 nfp_net_tx_xmit_more_flush(tx_ring);
275 static bool nfp_nfd3_xsk_complete(struct nfp_net_tx_ring *tx_ring)
277 struct nfp_net_r_vector *r_vec = tx_ring->r_vec;
283 if (tx_ring->wr_p == tx_ring->rd_p)
287 qcp_rd_p = nfp_qcp_rd_ptr_read(tx_ring->qcp_q);
289 if (qcp_rd_p == tx_ring->qcp_rd_p)
292 todo = D_IDX(tx_ring, qcp_rd_p - tx_ring->qcp_rd_p);
297 tx_ring->qcp_rd_p = D_IDX(tx_ring, tx_ring->qcp_rd_p + todo);
303 idx = D_IDX(tx_ring, tx_ring->rd_p);
304 tx_ring->rd_p++;
306 txbuf = &tx_ring->txbufs[idx];
326 WARN_ONCE(tx_ring->wr_p - tx_ring->rd_p > tx_ring->cnt,
328 tx_ring->rd_p, tx_ring->wr_p, tx_ring->cnt);
333 static void nfp_nfd3_xsk_tx(struct nfp_net_tx_ring *tx_ring)
335 struct nfp_net_r_vector *r_vec = tx_ring->r_vec;
344 while (nfp_net_tx_space(tx_ring) >= NFP_NET_XSK_TX_BATCH) {
352 wr_idx = D_IDX(tx_ring, tx_ring->wr_p + i);
353 prefetchw(&tx_ring->txds[wr_idx]);
360 wr_idx = D_IDX(tx_ring, tx_ring->wr_p + i);
362 tx_ring->txbufs[wr_idx].real_len = desc[i].len;
363 tx_ring->txbufs[wr_idx].is_xsk_tx = false;
366 txd = &tx_ring->txds[wr_idx];
374 tx_ring->wr_p += got;
384 nfp_qcp_wr_ptr_add(tx_ring->qcp_q, pkts);
396 if (r_vec->tx_ring)
397 nfp_nfd3_tx_complete(r_vec->tx_ring, budget);