> 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.

Reply via email to