- while (to_send) {
- tx_mbuf = *tx_pkts++;
- rte_prefetch0(tx_mbuf);
-
- tx_buf = &txr->tx_buf_ring[prod];
- tx_buf->mbuf = tx_mbuf;
- tx_buf->nr_bds = 1;
-
- txbd = &txr->tx_desc_ring[prod];
- txbd->address = tx_mbuf->buf_iova + tx_mbuf->data_off;
- txbd->len = tx_mbuf->data_len;
- txbd->flags_type = bnxt_xmit_flags_len(tx_mbuf->data_len,
- TX_BD_FLAGS_NOCMPL);
- prod = RING_NEXT(txr->tx_ring_struct, prod);
- to_send--;
+ while (to_send >= BNXT_TX_DESCS_PER_LOOP) {
+ /* Prefetch next transmit buffer descriptors. */
+ rte_prefetch0(txbd + 4);
+ rte_prefetch0(txbd + 7);
+
+ bnxt_xmit_one(tx_pkts[0], txbd++, tx_buf++);
+ bnxt_xmit_one(tx_pkts[1], txbd++, tx_buf++);
+ bnxt_xmit_one(tx_pkts[2], txbd++, tx_buf++);
+ bnxt_xmit_one(tx_pkts[3], txbd++, tx_buf++);
+
+ to_send -= BNXT_TX_DESCS_PER_LOOP;
+ tx_pkts += BNXT_TX_DESCS_PER_LOOP;