The Intel 82599 data sheet (https://www.intel.com/content/dam/www/public/us/en/documents/datasheets/82599-10-gbe-controller-datasheet.pdf, ยง8.2.3.9.8) states that "The only time that software should write to [the TDH] register is after a reset (hardware reset or CTRL.RST) and before enabling the transmit function (TXDCTL.ENABLE). If software were to write to this register while the transmit function was enabled, the on-chip descriptor buffers might be invalidated and the hardware could become confused". The ixgbe driver's ixgbe_dev_tx_queue_start function (http://dpdk.org/browse/dpdk/tree/drivers/net/ixgbe/ixgbe_rxtx.c?h=v18.02#n5148) first enables TXDCTL.ENABLE, then performs some admirable efforts to make sure it is truly enabled, and then changes TDH, ensuring that hardware confusion can happen.
Konstantin, Can you please check. Thanks Ajit
patch is sent out https://patches.dpdk.org/patch/48156/ waiting for regression test.
Patch (https://patches.dpdk.org/patch/48196/) has been merged to dpdk-stable main branch. commit info: ff30a020b net/ixgbe: fix TDH register write.