numam-dpdk/drivers/net/ixgbe
Feifei Wang b9c366e029 net/ixgbe: fix UDP zero checksum on Arm
There is an 82599 errata that UDP frames with a zero checksum are
incorrectly marked as checksum invalid by the hardware.  This was
leading to misleading PKT_RX_L4_CKSUM_BAD flag.

To fix it for the NEON path in Arm platform, change the bad UDP checksum to
unknown, and then let software application to recompute the checksum.

NICs: 82599(igb)
Driver: ixgbe(vector)
Architecture: arm64
$:./app/dpdk-testpmd -c 0x3 -w 0002:f9:00.0 -- -i
--port-topology=chained --enable-rx-cksum
test-pmd> set fwd rxonly
test-pmd> set verbose 1
test-pmd> start

1. UDP Test:
Package: (Ether()/IP()/UDP(checksum=0)
ol_flags: PKT_RX_L4_CKSUM_UNKNOWN PKT_RX_IP_CKSUM_GOOD

2. TCP Test:
Package: (Ether()/IP()/TCP(checksum=0)
ol_flags: PKT_RX_L4_CKSUM_BAD PKT_RX_IP_CKSUM_GOOD

Bugzilla ID: 629
Fixes: af75078fec ("first public release")
Cc: stable@dpdk.org

Reported-by: Paolo Valerio <pvalerio@redhat.com>
Signed-off-by: Feifei Wang <feifei.wang2@arm.com>
Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
2021-02-10 21:51:38 +01:00
..
base net/ixgbe: clear all queues on VF reset 2021-01-08 16:03:06 +01:00
ixgbe_82599_bypass.c drivers: use SPDX tag for Intel copyright files 2018-01-04 22:41:39 +01:00
ixgbe_bypass_api.h drivers: use SPDX tag for Intel copyright files 2018-01-04 22:41:39 +01:00
ixgbe_bypass_defines.h drivers: use SPDX tag for Intel copyright files 2018-01-04 22:41:39 +01:00
ixgbe_bypass.c ethdev: make driver-only headers private 2021-01-29 20:59:09 +01:00
ixgbe_bypass.h drivers: use SPDX tag for Intel copyright files 2018-01-04 22:41:39 +01:00
ixgbe_ethdev.c ethdev: make driver-only headers private 2021-01-29 20:59:09 +01:00
ixgbe_ethdev.h net/ixgbe: fix jumbo frame flag condition 2021-01-19 03:30:15 +01:00
ixgbe_fdir.c ethdev: make driver-only headers private 2021-01-29 20:59:09 +01:00
ixgbe_flow.c ethdev: make driver-only headers private 2021-01-29 20:59:09 +01:00
ixgbe_ipsec.c ethdev: make driver-only headers private 2021-01-29 20:59:09 +01:00
ixgbe_ipsec.h cryptodev: make xform key pointer constant 2019-07-19 14:15:21 +02:00
ixgbe_logs.h net/ixgbe: use dynamic log type for Tx/Rx debug 2019-10-07 15:00:58 +02:00
ixgbe_pf.c ethdev: make driver-only headers private 2021-01-29 20:59:09 +01:00
ixgbe_regs.h drivers: use SPDX tag for Intel copyright files 2018-01-04 22:41:39 +01:00
ixgbe_rxtx_vec_common.h ethdev: make driver-only headers private 2021-01-29 20:59:09 +01:00
ixgbe_rxtx_vec_neon.c net/ixgbe: fix UDP zero checksum on Arm 2021-02-10 21:51:38 +01:00
ixgbe_rxtx_vec_sse.c net/ixgbe: fix UDP zero checksum on x86 2021-02-10 21:49:00 +01:00
ixgbe_rxtx.c net/ixgbe: fix UDP zero checksum on x86 2021-02-10 21:49:00 +01:00
ixgbe_rxtx.h net/ixgbe: fix UDP zero checksum on x86 2021-02-10 21:49:00 +01:00
ixgbe_tm.c drivers/net: update TM capability 2020-09-18 18:55:10 +02:00
ixgbe_vf_representor.c ethdev: make driver-only headers private 2021-01-29 20:59:09 +01:00
meson.build drivers/net: build i40e and mlx5 on Windows 2021-01-14 23:51:24 +01:00
rte_pmd_ixgbe.c ethdev: make driver-only headers private 2021-01-29 20:59:09 +01:00
rte_pmd_ixgbe.h drivers/net: fix exposing internal headers 2020-07-11 06:18:54 +02:00
version.map build: remove library name from version map file name 2020-10-19 22:13:59 +02:00