numam-dpdk/drivers/net
Maxime Coquelin 8ba1723783 net/vhost: perform SW checksum in Tx path
Virtio specification supports guest checksum offloading
for L4, which is enabled with VIRTIO_NET_F_GUEST_CSUM
feature negotiation. However, the Vhost PMD does not
advertise Tx checksum offload capabilities.

Advertising these offload capabilities at the ethdev level
is not enough, because we could still end-up with the
application enabling these offloads while the guest not
negotiating it.

This patch advertises the Tx checksum offload capabilities,
and introduces a compatibility layer to cover the case
VIRTIO_NET_F_GUEST_CSUM has not been negotiated but the
application does configure the Tx checksum offloads. This
function performs the L4 Tx checksum in SW for UDP and TCP.
Compared to Rx SW checksum, the Tx SW checksum function
needs to compute the pseudo-header checksum, as we cannot
know whether it was done before.

This patch does not advertise SCTP checksum offloading
capability for now, but it could be handled later if the
need arises.

Reported-by: Jason Wang <jasowang@redhat.com>
Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Reviewed-by: Chenbo Xia <chenbo.xia@intel.com>
Reviewed-by: Cheng Jiang <cheng1.jiang@intel.com>
2022-06-17 14:41:04 +02:00
..
af_packet net/af_packet: fix ignoring full ring on Tx 2021-11-04 12:56:32 +01:00
af_xdp net/af_xdp: fix shared UMEM fill queue reserve 2022-03-14 10:48:18 +01:00
ark net/ark: support virtual functions 2022-06-08 10:38:39 +02:00
atlantic replace zero-length arrays with flexible ones 2022-06-07 16:44:21 +02:00
avp drivers: remove direct access to interrupt handle 2021-10-25 21:20:12 +02:00
axgbe net/axgbe: fix xstats get return if xstats is null 2022-05-20 16:45:48 +02:00
bnx2x ethdev: introduce generic dummy packet burst function 2022-02-11 21:17:34 +01:00
bnxt net/bnxt: remove some dead code 2022-05-23 02:48:42 +02:00
bonding net/bonding: move testpmd commands 2022-06-20 19:48:39 +02:00
cnxk common/cnxk: allow building for generic arm64 2022-06-07 20:49:20 +02:00
cxgbe net/cxgbe: fix build with optimization=1 2022-06-09 15:37:58 +02:00
dpaa net/dpaa: fix event queue detach 2022-05-10 15:43:09 +02:00
dpaa2 net/dpaa2: support ESP in packet type parsing 2022-05-10 15:43:09 +02:00
e1000 fix spelling in comments and strings 2022-01-11 12:16:53 +01:00
ena net/ena: fix build with GCC 12 2022-06-15 10:19:18 +02:00
enetc net/enetc: support VF 2022-01-20 16:24:09 +01:00
enetfec net/enetfec: fix build with GCC 12 2022-06-15 10:19:34 +02:00
enic replace zero-length arrays with flexible ones 2022-06-07 16:44:21 +02:00
failsafe net/failsafe: fix device freeing 2022-06-08 14:38:44 +02:00
fm10k fix spelling in comments and strings 2022-01-11 12:16:53 +01:00
hinic replace zero-length arrays with flexible ones 2022-06-07 16:44:21 +02:00
hns3 net/hns3: fix TM capability 2022-06-09 10:58:26 +02:00
i40e net/i40e: move testpmd commands 2022-06-20 19:48:39 +02:00
iavf net/iavf: fix NAT-T payload length 2022-06-21 20:04:49 +02:00
ice net/ice: fix build with GCC 12 2022-06-15 10:20:36 +02:00
igc net/igc: support I226 devices 2022-05-25 10:52:46 +02:00
ionic remove extra blank line at EOF 2022-02-27 21:26:06 +01:00
ipn3ke net/ipn3ke: fix xstats get return if xstats is null 2022-05-20 16:45:44 +02:00
ixgbe net/ixgbe: add vector stubs for RISC-V 2022-06-08 11:26:34 +02:00
kni net/kni: fix config initialization 2022-03-03 12:30:51 +01:00
liquidio net/liquidio: remove unused counter 2021-11-16 13:01:52 +01:00
memif net/memif: set memfd syscall ID for RISC-V 2022-06-08 11:26:34 +02:00
mlx4 ethdev: introduce generic dummy packet burst function 2022-02-11 21:17:34 +01:00
mlx5 net/mlx5: support ESP item on Windows 2022-06-05 17:04:48 +02:00
mvneta fix spelling in comments and strings 2022-01-11 12:16:53 +01:00
mvpp2 net/mvpp2: fix xstats get return if xstats is null 2022-05-20 16:45:46 +02:00
netvsc net/netvsc: fix hot adding multiple VF PCI devices 2022-04-29 23:36:59 +02:00
nfb net/nfb: support more MAC addresses 2022-02-15 14:53:41 +01:00
nfp net/nfp: fix initialization 2022-06-17 17:29:55 +02:00
ngbe net/ngbe: support YT PHY SGMII to RGMII mode 2022-06-22 12:32:41 +02:00
null remove unnecessary null checks 2022-02-12 12:07:48 +01:00
octeontx remove unnecessary null checks 2022-02-12 12:07:48 +01:00
octeontx_ep remove extra blank line at EOF 2022-02-27 21:26:06 +01:00
pcap build: cleanup libpcap dependent components 2021-11-10 11:42:34 +01:00
pfe ethdev: introduce generic dummy packet burst function 2022-02-11 21:17:34 +01:00
qede net/qede: fix maximum Rx packet length 2022-03-10 08:40:37 +01:00
ring net/ring: support promisc and allmulticast 2022-02-11 20:56:48 +01:00
sfc net/sfc: allow to control the represented entity MAC address 2022-05-31 18:50:00 +02:00
softnic sched: enable traffic class oversubscription unconditionally 2022-02-24 23:44:21 +01:00
tap net/tap: fix device freeing 2022-06-08 14:39:13 +02:00
thunderx fix spelling in comments and strings 2022-01-11 12:16:53 +01:00
txgbe net/txgbe: fix register polling 2022-06-22 12:32:41 +02:00
vdev_netvsc remove unnecessary null checks 2022-02-12 12:07:48 +01:00
vhost net/vhost: perform SW checksum in Tx path 2022-06-17 14:41:04 +02:00
virtio replace zero-length arrays with flexible ones 2022-06-07 16:44:21 +02:00
vmxnet3 net/vmxnet3: fix Rx data ring initialization 2022-05-31 15:37:16 +02:00
meson.build drivers: remove octeontx2 drivers 2022-01-12 15:36:32 +01:00