numam-dpdk/drivers/net
Raja Zidane 5ddb903824 net/mlx5: reject negative integrity item configuration
Negative integrity item refers to condition when the item value mask
is set, but value spec is cleared:
    ... integrity value mask l4_ok value spec 0 ...

ethdev library defines integrity bits `l3_ok` and `l4_ok` as accumulators
for all hardware L3 and L4 integrity verifications respectfully.
Hardware `l3_ok` and `l4_ok` integrity bits refer to L3 and L4
network headers only.
Integrity bits `l3_ok` and `l4_ok` are not compatible between
ethdev library and hardware.

PMD translations for ethdev `l3_ok` are:
 IPv4: `l3_ok` and `l3_csum_ok`
 IPv6: `l3_ok`
ethdev `l4_ok` is translated into PMD `l4_ok` and `l4_csum_ok` bits.

Positive IPv4 `l3_ok` flow item configuration is translated into
a single matcher that AND corresponding hardware bits.
Negative IPv4 `l3_ok` is translated into 2 hardware conditions where
each condition probes a single integrity bit:
  ethdev::l3_ok is 0 => MLX5::l3_ok is 0 OR MLX5:l3_csum_ok is 0
MLX5 hardware does not do OR condition in flow rule item.
Negative IPv4 `l3_ok` must be translated into 2 flow rules.
Similarly negative ethdev `l4_ok` condition is also translated into 2
hardware rules.

Current PMD roadmap does not allow implicit flow rule split.

Bugzilla ID: 948
Cc: stable@dpdk.org

Suggested-by: Raja Zidane <rzidane@nvidia.com>
Signed-off-by: Gregory Etelson <getelson@nvidia.com>
Acked-by: Matan Azrad <matan@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
2022-07-05 20:04:02 +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: allow using copy mode in XSK 2022-06-23 12:49:51 +02: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: fix check for autoneg enablement in the PHY FW 2022-06-24 23:26:18 +02:00
bonding net/bonding: move testpmd commands 2022-06-20 19:48:39 +02:00
cnxk net/cnxk: fix extended statistics 2022-07-04 14:47:03 +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: delete unused code 2022-06-24 14:28:14 +02:00
i40e net/i40e: fix QinQ enablement 2022-07-05 03:55:32 +02:00
iavf net/iavf: fix VF reset 2022-07-05 03:55:32 +02:00
ice net/ice: fix memory allocation insufficiency 2022-07-05 03:55:32 +02:00
igc net/igc: support multi-process 2022-07-05 03:55:32 +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: reject negative integrity item configuration 2022-07-05 20:04:02 +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 vmbus device reference in multi-process 2022-06-30 14:44:58 +02:00
nfb net/nfb: support more MAC addresses 2022-02-15 14:53:41 +01:00
nfp net/nfp: add NFDk Tx 2022-06-23 11:06:41 +02:00
ngbe net/ngbe: fix customized device probing 2022-06-30 02:16:39 +02:00
null remove unnecessary null checks 2022-02-12 12:07:48 +01:00
octeontx net/octeontx: support allmulticast 2022-06-13 09:29:24 +02: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 build with GCC 12 2022-06-23 16:02:02 +02: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 net/thunderx: populate max and min MTU values 2022-06-13 09:29:24 +02:00
txgbe net/txgbe: fix customized device probing 2022-06-30 02:16:39 +02:00
vdev_netvsc remove unnecessary null checks 2022-02-12 12:07:48 +01:00
vhost net/vhost: fix deadlock on vring state change 2022-07-01 15:49:49 +02:00
virtio net/virtio-user: fix Rx interrupts with multi-queue 2022-07-04 10:28:05 +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