08/02/2021 07:29, Chengchang Tang: > Hi, Thomas Monjalon and Ferruh Yigit and others. > > I have some questions about 'rte_eth_tx_prepare'. > > When I use TSO offload in bond mode, the checksum error occurs. It is > because the bond PMD does not implement 'tx_prepare'. So, it will not > invoke the 'tx_prepare' of each PMDs to do prepare for the PMDs. I am > not sure whether to add the 'tx_preapre' implementation for the bond > PMD or put the process of pseudo header in the apps. > > And we are now designing the outer UDP cksum offload for HNS3 PMD. > I find that many PMDs process these pseudo headers in 'tx_prepare', but > does not process the pseudo header for outer UDP checksum offload. > Instead, it is processed in csum forward mode of testpmd. Does this mean > that the pseudo header should be completed by the apps and the apps does > not need to call 'tx_prepare' to avoid repeated processing? (it seems > not transplantable) If so, it seems that PMDs need to avoid doing this > in 'tx_prepare'. > > Here are two questions: > 1. What functions should be included in the 'tx_prepare' for PMDs? > 2. Whether an app must invoke 'rte_eth_tx_prepare' or under which > conditions an app must invoke the 'rte_eth_tx_prepare'?
I would say by default the app should prepare the checksums, except if there is an explicit offload request (DEV_TX_OFFLOAD_*). I think the tx_prepare should only prepare the HW Tx offload if the offload is not entirely done in HW.