> From: David Marchand [mailto:david.march...@redhat.com] > Sent: Friday, 5 April 2024 16.46 > > Mandate use of rte_eth_tx_prepare() in the mbuf Tx checksum offload > examples.
I strongly disagree with this change! It will cause a huge performance degradation for shaping applications: A packet will be processed and finalized at an output or forwarding pipeline stage, where some other fields might also be written, so zeroing e.g. the out_ip checksum at this stage has low cost (no new cache misses). Then, the packet might be queued for QoS or similar. If rte_eth_tx_prepare() must be called at the egress pipeline stage, it has to write to the packet and cause a cache miss per packet, instead of simply passing on the packet to the NIC hardware. It must be possible to finalize the packet at the output/forwarding pipeline stage! Also, how is rte_eth_tx_prepare() supposed to work for cloned packets egressing on different NIC hardware? In theory, it might get even worse if we make this opaque instead of transparent and standardized: One PMD might reset out_ip checksum to 0x0000, and another PMD might reset it to 0xFFFF. I can only see one solution: We need to standardize on common minimum requirements for how to prepare packets for each TX offload.