Go to file
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
.ci ci: combine static and shared linking build tests 2022-10-27 13:20:12 +02:00
.github/workflows ci: combine static and shared linking build tests 2022-10-27 13:20:12 +02:00
app app/testpmd: remove unused parameter in Rx header split 2022-10-17 10:34:03 +02:00
buildtools buildtools: fix NUMA nodes count 2022-10-11 02:13:52 +02:00
config config/arm: add Phytium TengYun S2500 2022-10-26 17:39:24 +02:00
devtools devtools: guess checkpatch.pl path 2022-10-11 02:18:48 +02:00
doc net/ionic: add optimized non-scattered Rx/Tx 2022-10-18 23:38:26 +02:00
drivers net/bonding: call Tx prepare before Tx burst 2022-10-20 08:36:34 +02:00
examples examples/l3fwd: fix MTU configuration with event mode 2022-10-11 01:34:07 +02:00
kernel kni: use dedicated function to set MAC address 2022-06-08 19:17:21 +02:00
lib net/bonding: call Tx prepare before Tx burst 2022-10-20 08:36:34 +02:00
license license: add MIT license exception for GVE driver 2022-10-27 12:36:22 +02:00
usertools usertools/pmdinfo: rewrite simpler script 2022-10-11 02:11:33 +02:00
.editorconfig devtools: clarify that lines up to 100 characters are ok 2021-11-25 11:51:24 +01:00
.gitattributes
.gitignore doc: add eventdev feature matrices 2021-11-26 16:29:25 +01:00
.travis.yml version: 22.11-rc0 2022-07-21 12:13:48 +02:00
ABI_VERSION version: 22.11-rc0 2022-07-21 12:13:48 +02:00
MAINTAINERS net/ionic: update documentation and copyrights 2022-10-18 23:38:25 +02:00
Makefile build: create dummy Makefile 2020-09-07 23:51:57 +02:00
meson_options.txt kni: flag deprecated status at build time 2022-10-10 17:01:59 +02:00
meson.build build: introduce deprecated libraries 2022-10-10 17:01:56 +02:00
README license: introduce SPDX identifiers 2018-01-04 22:41:38 +01:00
VERSION version: 22.11-rc1 2022-10-11 02:39:28 +02:00

DPDK is a set of libraries and drivers for fast packet processing.
It supports many processor architectures and both FreeBSD and Linux.

The DPDK uses the Open Source BSD-3-Clause license for the core libraries
and drivers. The kernel components are GPL-2.0 licensed.

Please check the doc directory for release notes,
API documentation, and sample application information.

For questions and usage discussions, subscribe to: users@dpdk.org
Report bugs and issues to the development mailing list: dev@dpdk.org