numam-dpdk/lib
Chengwen Feng c622735dd3 net/bonding: call Tx prepare before Tx burst
Normally, to use the HW offloads capability (e.g. checksum and TSO) in
the Tx direction, the application needs to call rte_eth_tx_prepare() to
do some adjustment with the packets before sending them. But the
tx_prepare callback of the bonding driver is not implemented. Therefore,
the sent packets may have errors (e.g. checksum errors).

However, it is difficult to design the tx_prepare callback for bonding
driver. Because when a bonded device sends packets, the bonded device
allocates the packets to different slave devices based on the real-time
link status and bonding mode. That is, it is very difficult for the
bonded device to determine which slave device's prepare function should
be invoked.

So in this patch, the tx_prepare callback of bonding driver is not
implemented. Instead, the rte_eth_tx_prepare() will be called before
rte_eth_tx_burst(). In this way, all tx_offloads can be processed
correctly for all NIC devices.

Note: because it is rara that bond different PMDs together, so just
call tx-prepare once in broadcast bonding mode.

Also the following description was added to the rte_eth_tx_burst()
function:
"@note This function must not modify mbufs (including packets data)
unless the refcnt is 1. The exception is the bonding PMD, which does not
have tx-prepare function, in this case, mbufs maybe modified."

Signed-off-by: Chengchang Tang <tangchengchang@huawei.com>
Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
Reviewed-by: Min Hu (Connor) <humin29@huawei.com>
Acked-by: Chas Williams <3chas3@gmail.com>
2022-10-20 08:36:34 +02:00
..
acl version: 22.11-rc0 2022-07-21 12:13:48 +02:00
bbdev bbdev: fix build with clang 3.4.2 2022-10-11 01:34:07 +02:00
bitratestats version: 22.11-rc0 2022-07-21 12:13:48 +02:00
bpf eal: remove unneeded includes from a public header 2022-09-21 15:31:03 +02:00
cfgfile version: 22.11-rc0 2022-07-21 12:13:48 +02:00
cmdline version: 22.11-rc0 2022-07-21 12:13:48 +02:00
compressdev dev: hide driver object 2022-09-23 16:14:34 +02:00
cryptodev security: hide session structure 2022-10-04 22:37:54 +02:00
distributor eal: remove unneeded includes from a public header 2022-09-21 15:31:03 +02:00
dmadev dmadev: support telemetry dump dmadev 2022-10-03 12:03:36 +02:00
eal rwlock: promote trylock operations as stable 2022-10-27 13:00:11 +02:00
efd eal: remove unneeded includes from a public header 2022-09-21 15:31:03 +02:00
ethdev net/bonding: call Tx prepare before Tx burst 2022-10-20 08:36:34 +02:00
eventdev eventdev/eth_tx: fix queue delete 2022-10-21 11:42:08 +02:00
fib lib: remove empty return types from doxygen comments 2022-10-26 17:51:51 +02:00
flow_classify lib: remove unneeded header includes 2022-02-22 13:10:39 +01:00
gpudev dev: hide driver object 2022-09-23 16:14:34 +02:00
graph graph: fix node objects allocation 2022-10-10 17:30:39 +02:00
gro gro: check payload length after trim 2022-10-26 17:18:11 +02:00
gso version: 22.11-rc0 2022-07-21 12:13:48 +02:00
hash lib: remove empty return types from doxygen comments 2022-10-26 17:51:51 +02:00
ip_frag ip_frag: add IPv4 fragment copy 2022-08-29 16:24:18 +02:00
ipsec lib: remove empty return types from doxygen comments 2022-10-26 17:51:51 +02:00
jobstats version: 22.11-rc0 2022-07-21 12:13:48 +02:00
kni kni: add deprecation warning at runtime 2022-10-10 17:04:09 +02:00
kvargs version: 22.11-rc0 2022-07-21 12:13:48 +02:00
latencystats version: 22.11-rc0 2022-07-21 12:13:48 +02:00
lpm lib: remove empty return types from doxygen comments 2022-10-26 17:51:51 +02:00
mbuf mbuf: move next pointer to first cache line if PA disabled 2022-10-09 13:14:57 +02:00
member member: fix build with GCC 5.4.0 2022-10-10 12:20:01 +02:00
mempool mempool: flush cache completely on overflow 2022-10-26 12:10:33 +02:00
meter eal: remove unneeded includes from a public header 2022-09-21 15:31:03 +02:00
metrics metrics: return error code on initialization failures 2022-10-03 12:03:36 +02:00
net net: fix build with -Wpedantic 2022-09-29 09:20:12 +02:00
node node: check Rx element allocation 2022-10-10 17:53:12 +02:00
pcapng pcapng: record received RSS hash in pcap file 2022-10-27 10:29:59 +02:00
pci eal: remove unneeded includes from a public header 2022-09-21 15:31:03 +02:00
pdump pdump: do not allow enable/disable in primary process 2022-10-21 14:54:26 +02:00
pipeline mbuf: add helper to get/set IOVA address 2022-10-08 23:58:26 +02:00
port port: prevent unnecessary flush for ring output port 2022-09-22 16:56:58 +02:00
power power: fix P-state number parsing 2022-10-26 23:36:56 +02:00
rawdev rawdev: support telemetry dump rawdev 2022-10-03 12:03:36 +02:00
rcu rcu: fix build with datapath debug log 2022-10-06 12:37:11 +02:00
regexdev regexdev: add maximum number of mbuf segments 2022-10-09 14:54:30 +02:00
reorder lib: remove empty return types from doxygen comments 2022-10-26 17:51:51 +02:00
rib lib: remove empty return types from doxygen comments 2022-10-26 17:51:51 +02:00
ring mem: fix API doc about allocation on secondary processes 2022-10-04 13:36:13 +02:00
sched eal: remove unneeded includes from a public header 2022-09-21 15:31:03 +02:00
security security: hide session structure 2022-10-04 22:37:54 +02:00
stack version: 22.11-rc0 2022-07-21 12:13:48 +02:00
table table: add entry ID for learner tables 2022-09-24 11:35:23 +02:00
telemetry telemetry: make help command more helpful 2022-09-26 13:49:38 +02:00
timer timer: fix stopping all timers 2022-10-05 15:29:54 +02:00
vhost mbuf: add helper to get/set IOVA address 2022-10-08 23:58:26 +02:00
meson.build kni: flag deprecated status at build time 2022-10-10 17:01:59 +02:00