numam-dpdk/lib
Dekel Peled 7f6a3168ed ethdev: fix RSS flow expansion in case of mismatch
Function rte_flow_expand_rss() is used to expand a flow rule with
partial pattern into several rules, to ensure all relevant packets
are matched.
It uses utility function rte_flow_expand_rss_item_complete(), to check
if the last valid item in the flow rule pattern needs to be completed.
For example the pattern "eth / ipv4 proto is 17 / end" will be completed
with a "udp" item.
This function returns "void" item in two cases:
1) The last item has empty spec, for example "eth / ipv4 / end".
2) The last itme has spec that can't be expanded for RSS.
   For example the pattern "eth / ipv4 proto is 47 / end" ends with IPv4
   item that has next protocol GRE.

In both cases the flow rule may be expanded, but in the second case such
expansion may create rules with invalid pattern.
For example "eth / ipv4 proto is 47 / udp / end".
In such a case the flow rule should not be expanded.

This patch updates function rte_flow_expand_rss_item_complete().
Return value RTE_FLOW_ITEM_TYPE_END is used to indicate the flow rule
should not be expanded.
In such a case, rte_flow_expand_rss() will return with the original flow
rule only, without any expansion.

Fixes: fc2dd8dd49 ("ethdev: fix expand RSS flows")
Cc: stable@dpdk.org

Signed-off-by: Dekel Peled <dekelp@nvidia.com>
Acked-by: Xiaoyu Min <jackmin@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
Acked-by: Ori Kam <orika@nvidia.com>
2020-10-08 19:58:11 +02:00
..
librte_acl build: remove deprecated cpuflag macros 2020-09-25 11:13:57 +02:00
librte_bbdev bbdev: use C11 atomics for device processing counter 2020-09-25 15:37:55 +02:00
librte_bitratestats build: remove makefiles 2020-09-08 00:09:50 +02:00
librte_bpf bpf: promote library as stable 2020-09-16 18:52:55 +02:00
librte_cfgfile build: remove makefiles 2020-09-08 00:09:50 +02:00
librte_cmdline build: remove makefiles 2020-09-08 00:09:50 +02:00
librte_compressdev build: remove makefiles 2020-09-08 00:09:50 +02:00
librte_cryptodev build: remove makefiles 2020-09-08 00:09:50 +02:00
librte_distributor build: remove makefiles 2020-09-08 00:09:50 +02:00
librte_eal eal: fix experimental block for 20.11 2020-10-08 15:20:51 +02:00
librte_efd build: remove deprecated cpuflag macros 2020-09-25 11:13:57 +02:00
librte_ethdev ethdev: fix RSS flow expansion in case of mismatch 2020-10-08 19:58:11 +02:00
librte_eventdev build: remove makefiles 2020-09-08 00:09:50 +02:00
librte_fib build: remove makefiles 2020-09-08 00:09:50 +02:00
librte_flow_classify build: remove makefiles 2020-09-08 00:09:50 +02:00
librte_graph build: remove makefiles 2020-09-08 00:09:50 +02:00
librte_gro gro: support VXLAN UDP/IPv4 2020-10-06 21:51:03 +02:00
librte_gso gso: fix payload unit size for UDP 2020-09-18 18:55:12 +02:00
librte_hash build: remove deprecated cpuflag macros 2020-09-25 11:13:57 +02:00
librte_ip_frag build: remove makefiles 2020-09-08 00:09:50 +02:00
librte_ipsec build: remove makefiles 2020-09-08 00:09:50 +02:00
librte_jobstats build: remove makefiles 2020-09-08 00:09:50 +02:00
librte_kni mem: remove physical address aliases 2020-09-19 00:25:35 +02:00
librte_kvargs build: remove makefiles 2020-09-08 00:09:50 +02:00
librte_latencystats build: remove makefiles 2020-09-08 00:09:50 +02:00
librte_lpm build: remove makefiles 2020-09-08 00:09:50 +02:00
librte_mbuf mbuf: remove physical address alias 2020-09-19 00:25:37 +02:00
librte_member build: remove deprecated cpuflag macros 2020-09-25 11:13:57 +02:00
librte_mempool mempool: dump handler index and name 2020-10-06 23:44:15 +02:00
librte_meter meter: remove experimental alias 2020-10-05 11:11:59 +02:00
librte_metrics build: remove makefiles 2020-09-08 00:09:50 +02:00
librte_net net: calculate checksum of packet with IPv4 options 2020-10-06 17:10:02 +02:00
librte_node build: remove deprecated cpuflag macros 2020-09-25 11:13:57 +02:00
librte_pci net/qede: define PCI config space specific osals 2020-09-30 19:19:11 +02:00
librte_pdump build: remove makefiles 2020-09-08 00:09:50 +02:00
librte_pipeline pipeline: fix instruction config free 2020-10-08 15:09:28 +02:00
librte_port port: remove useless assignment 2020-10-06 23:39:34 +02:00
librte_power power: fix current frequency index 2020-10-07 14:51:52 +02:00
librte_rawdev telemetry: fix passing full params string to command 2020-10-06 22:54:58 +02:00
librte_rcu rcu: promote library as stable 2020-10-06 10:31:13 +02:00
librte_regexdev build: remove makefiles 2020-09-08 00:09:50 +02:00
librte_reorder build: remove makefiles 2020-09-08 00:09:50 +02:00
librte_rib build: remove makefiles 2020-09-08 00:09:50 +02:00
librte_ring config: remove default configs used with make 2020-09-08 00:11:30 +02:00
librte_sched build: remove deprecated cpuflag macros 2020-09-25 11:13:57 +02:00
librte_security build: remove makefiles 2020-09-08 00:09:50 +02:00
librte_stack stack: promote library as stable 2020-10-05 11:56:17 +02:00
librte_table table: add exact match SWX table 2020-10-01 18:43:10 +02:00
librte_telemetry telemetry: support array values in data object 2020-10-06 22:55:00 +02:00
librte_timer timer: add limitation note for sync stop and reset 2020-10-08 09:43:57 +02:00
librte_vhost vhost: remove dequeue zero-copy support 2020-09-30 23:16:56 +02:00
meson.build hash: build on Windows 2020-10-05 09:49:55 +02:00