numam-dpdk/drivers/net/mlx5
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
..
linux common/mlx5: share interrupt management 2022-06-23 17:24:59 +02:00
windows common/mlx5: share interrupt management 2022-06-23 17:24:59 +02:00
meson.build app/testpmd: add host shaper command 2022-06-23 17:25:04 +02:00
mlx5_defs.h net/mlx5: add Rx drop counters to xstats 2022-06-01 09:49:44 +02:00
mlx5_devx.c net/mlx5: handle Rx descriptor LWM event 2022-06-23 17:25:00 +02:00
mlx5_devx.h net/mlx5: support descriptor LWM for Rx queue 2022-06-23 17:23:29 +02:00
mlx5_dr.c net/mlx5: add HW steering low-level abstract stub 2022-02-24 22:10:16 +01:00
mlx5_dr.h net/mlx5: add HW steering low-level abstract stub 2022-02-24 22:10:16 +01:00
mlx5_ethdev.c net/mlx5: fix configuration without Rx queue 2022-03-07 11:49:43 +01:00
mlx5_flow_aso.c net/mlx5: support previous meter color aware 2022-06-01 09:49:30 +02:00
mlx5_flow_dv.c net/mlx5: reject negative integrity item configuration 2022-07-05 20:04:02 +02:00
mlx5_flow_flex.c net/mlx5: fix flex item header length translation 2022-03-02 17:36:47 +01:00
mlx5_flow_hw.c net/mlx5: fix entry size in construct data ipool 2022-06-05 17:04:46 +02:00
mlx5_flow_meter.c net/mlx5: support field modification in meter rules 2022-06-23 17:23:26 +02:00
mlx5_flow_verbs.c net/mlx5: fix MPLS/GRE Verbs spec ordering 2022-03-07 11:49:10 +01:00
mlx5_flow.c net/mlx5: fix metering on E-Switch Manager 2022-06-23 17:25:06 +02:00
mlx5_flow.h net/mlx5: fix metering on E-Switch Manager 2022-06-23 17:25:06 +02:00
mlx5_mac.c net/mlx5: support Sub-Function 2021-07-22 00:11:14 +02:00
mlx5_rss.c net/mlx5: fix RETA update without stopping device 2021-11-10 15:44:44 +01:00
mlx5_rx.c net/mlx5: add API to configure host port shaper 2022-06-23 17:25:04 +02:00
mlx5_rx.h net/mlx5: support Rx descriptor threshold event 2022-06-23 17:25:02 +02:00
mlx5_rxmode.c net/mlx5: concentrate all device configurations 2022-02-21 11:36:51 +01:00
mlx5_rxq.c net/mlx5: fix stack buffer overflow in drop action 2022-06-23 17:25:07 +02:00
mlx5_rxtx_vec_altivec.h avoid AltiVec keyword vector 2022-05-25 11:49:39 +02:00
mlx5_rxtx_vec_neon.h fix spelling in comments and strings 2022-01-11 12:16:53 +01:00
mlx5_rxtx_vec_sse.h fix spelling in comments and strings 2022-01-11 12:16:53 +01:00
mlx5_rxtx_vec.c net/mlx5: improve stride parameter names 2021-12-05 12:22:09 +01:00
mlx5_rxtx_vec.h ethdev: add namespace 2021-10-22 18:15:38 +02:00
mlx5_rxtx.c net/mlx5: move Rx queue DevX resource 2021-11-04 22:55:48 +01:00
mlx5_rxtx.h common/mlx5: share MR mempool registration 2021-10-21 15:58:00 +02:00
mlx5_stats.c net/mlx5: fix Rx/Tx stats concurrency 2022-04-21 12:50:26 +02:00
mlx5_testpmd.c net/mlx5: add test for external Rx queue 2022-07-05 20:02:57 +02:00
mlx5_testpmd.h app/testpmd: add host shaper command 2022-06-23 17:25:04 +02:00
mlx5_trigger.c net/mlx5: fix link status change detection 2022-03-01 16:54:07 +01:00
mlx5_tx_empw.c net/mlx5: separate Tx burst functions to different files 2021-04-15 08:24:59 +02:00
mlx5_tx_mpw.c net/mlx5: separate Tx burst functions to different files 2021-04-15 08:24:59 +02:00
mlx5_tx_nompw.c net/mlx5: separate Tx burst functions to different files 2021-04-15 08:24:59 +02:00
mlx5_tx_txpp.c net/mlx5: separate Tx burst functions to different files 2021-04-15 08:24:59 +02:00
mlx5_tx.c net/mlx5: separate per port configuration 2022-02-21 11:36:54 +01:00
mlx5_tx.h net/mlx5: fix Rx/Tx stats concurrency 2022-04-21 12:50:26 +02:00
mlx5_txpp.c common/mlx5: share interrupt management 2022-06-23 17:24:59 +02:00
mlx5_txq.c net/mlx5: optimize queue type checks 2022-02-25 17:33:31 +01:00
mlx5_utils.c net/mlx5: fix indexed pool fetch overlap 2022-03-01 22:24:22 +01:00
mlx5_utils.h net/mlx5: remove unused function 2022-02-23 15:57:33 +01:00
mlx5_vlan.c net/mlx5: concentrate all device configurations 2022-02-21 11:36:51 +01:00
mlx5.c net/mlx5: support Rx descriptor threshold event 2022-06-23 17:25:02 +02:00
mlx5.h net/mlx5: add API to configure host port shaper 2022-06-23 17:25:04 +02:00
rte_pmd_mlx5.h net/mlx5: add API to configure host port shaper 2022-06-23 17:25:04 +02:00
version.map net/mlx5: add API to configure host port shaper 2022-06-23 17:25:04 +02:00