Lines Matching defs:tx_ring

11 nfp_nfdk_tx_ring_reset(struct nfp_net_dp *dp, struct nfp_net_tx_ring *tx_ring)
16 while (!tx_ring->is_xdp && tx_ring->rd_p != tx_ring->wr_p) {
23 rd_idx = D_IDX(tx_ring, tx_ring->rd_p);
24 txbuf = &tx_ring->ktxbufs[rd_idx];
28 n_descs = D_BLOCK_CPL(tx_ring->rd_p);
57 tx_ring->rd_p += n_descs;
60 memset(tx_ring->txds, 0, tx_ring->size);
61 tx_ring->data_pending = 0;
62 tx_ring->wr_p = 0;
63 tx_ring->rd_p = 0;
64 tx_ring->qcp_rd_p = 0;
65 tx_ring->wr_ptr_add = 0;
67 if (tx_ring->is_xdp || !dp->netdev)
70 nd_q = netdev_get_tx_queue(dp->netdev, tx_ring->idx);
74 static void nfp_nfdk_tx_ring_free(struct nfp_net_tx_ring *tx_ring)
76 struct nfp_net_r_vector *r_vec = tx_ring->r_vec;
79 kvfree(tx_ring->ktxbufs);
81 if (tx_ring->ktxds)
82 dma_free_coherent(dp->dev, tx_ring->size,
83 tx_ring->ktxds, tx_ring->dma);
85 tx_ring->cnt = 0;
86 tx_ring->txbufs = NULL;
87 tx_ring->txds = NULL;
88 tx_ring->dma = 0;
89 tx_ring->size = 0;
93 nfp_nfdk_tx_ring_alloc(struct nfp_net_dp *dp, struct nfp_net_tx_ring *tx_ring)
95 struct nfp_net_r_vector *r_vec = tx_ring->r_vec;
97 tx_ring->cnt = dp->txd_cnt * NFDK_TX_DESC_PER_SIMPLE_PKT;
98 tx_ring->size = array_size(tx_ring->cnt, sizeof(*tx_ring->ktxds));
99 tx_ring->ktxds = dma_alloc_coherent(dp->dev, tx_ring->size,
100 &tx_ring->dma,
102 if (!tx_ring->ktxds) {
104 tx_ring->cnt);
108 tx_ring->ktxbufs = kvcalloc(tx_ring->cnt, sizeof(*tx_ring->ktxbufs),
110 if (!tx_ring->ktxbufs)
113 if (!tx_ring->is_xdp && dp->netdev)
115 tx_ring->idx);
120 nfp_nfdk_tx_ring_free(tx_ring);
126 struct nfp_net_tx_ring *tx_ring)
132 struct nfp_net_tx_ring *tx_ring)
140 struct nfp_net_tx_ring *tx_ring,
144 u32 txd_cnt = tx_ring->cnt;
148 txd = &tx_ring->ktxds[i];
151 txd->vals[0], txd->vals[1], tx_ring->ktxbufs[i].raw);
153 if (i == tx_ring->rd_p % txd_cnt)
155 if (i == tx_ring->wr_p % txd_cnt)