Usually rte_eth_tx_burst()
not only puts packets into the TX queue, but also notifies the NIC to start the transmission. Sure, it depends on PMD and the device, but it's rather uncommon for device to wait for some more packets.
For example, for e1000
PMD (which supports a whole family of NICs), the rte_eth_tx_burst()
ends down in the eth_igb_xmit_pkts()
. At the very bottom of this function there is signal to NIC:
/*
* Set the Transmit Descriptor Tail (TDT).
*/
E1000_PCI_REG_WRITE_RELAXED(txq->tdt_reg_addr, tx_id);
Basically, it's a write to the device register, updating the tail of the queue and making the NIC to (wake up and) start the transmission. Thanks to DMA, NIC has direct access in RAM to the TX queue and the buffers to transmit, so the transmission will be (eventually) done by NIC without blocking the CPU.