numam-dpdk/drivers/net
Shahaf Shuler 9da1db6bbf net/mlx5: fix VLAN filtering
The below commit has added a graph based expansion logic for RSS rule to
satisfy Verbs requirements. With this logic, for example, the rule:

flow create 0 ingress pattern eth / end actions rss queues 0 1 end types
ipv4-tcp ipv6-tcp end / end

will be expanded into the rules:

flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss queues 0 1
end types ipv4-tcp ipv6-tcp end / end

flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss queues 0 1
end types ipv4-tcp ipv6-tcp end / end

flow create 0 ingress pattern eth / end actions queue index 0 / end

The below commit defined two graphs:
1. graph for the tunnel case which starts from the ETH item
2. graph for the non-tunnel case which starts from the ETH item

The graphs are ignoring the VLAN case. Hence rules with VLAN item will
fail to traverse the graph and it will result in flow rule creation error.

Adding the VLAN item to the existing graphs will not work as the flow
engine will reject any VLAN item without a specific vid.

To solve this case two new graphs were added (for the tunnel and
non-tunnel case) which contain the VLAN item and are being used only
when the VLAN item exists in the flow pattern.

Two cases left un-covered for the inner RSS:
1. The case were VLAN exists in the pattern as part of the inner headers
2. The case were VLAN exists in the pattern both in the outer and the
inner headers

Solving those cases will require to add two more graphs.
Holding a VLAN for the overlay network is not common, the subnets are
usually defined by the tunnel protocol, for example the VXLAN vni.
Hence adding those two graphs seems like an overkill at this point.
Based on needs one can add those to provide the full support.

Fixes: 592f05b29a ("net/mlx5: add RSS flow action")

Signed-off-by: Shahaf Shuler <shahafs@mellanox.com>
2018-08-02 13:15:18 +02:00
..
af_packet drivers/net: fix crash in secondary process 2018-07-26 15:00:34 +02:00
ark net/ark: use SPDX tags 2018-07-04 21:21:31 +02:00
avf remove useless constructor headers 2018-07-12 00:00:35 +02:00
avp net/avp: fix 32-bit meson builds 2018-07-12 12:29:07 +02:00
axgbe remove useless constructor headers 2018-07-12 00:00:35 +02:00
bnx2x net/bnx2x: move SPDX tags to source files 2018-08-03 17:08:39 +02:00
bnxt net/bnxt: fix RETA size 2018-08-02 12:12:47 +02:00
bonding drivers/net: fix crash in secondary process 2018-07-26 15:00:34 +02:00
cxgbe net/cxgbevf: do not allocate control queues 2018-08-02 11:24:40 +02:00
dpaa drivers/net: fix crash in secondary process 2018-07-26 15:00:34 +02:00
dpaa2 net/dpaa2: remove loop for unused pool entries 2018-08-03 17:09:44 +02:00
e1000 remove useless constructor headers 2018-07-12 00:00:35 +02:00
ena remove useless constructor headers 2018-07-12 00:00:35 +02:00
enic net/enic: reset VXLAN port during initialization 2018-08-02 10:34:04 +02:00
failsafe drivers/net: fix crash in secondary process 2018-07-26 15:00:34 +02:00
fm10k net/fm10k: remove redundant queue id checks 2018-07-23 23:55:26 +02:00
i40e net/i40e: remove redundant queue id checks 2018-07-23 23:55:26 +02:00
ifc build: fix meson build on FreeBSD 2018-07-26 09:58:19 +02:00
ixgbe net/ixgbe: fix missing null check on detach 2018-07-23 23:55:26 +02:00
kni drivers/net: fix crash in secondary process 2018-07-26 15:00:34 +02:00
liquidio remove useless constructor headers 2018-07-12 00:00:35 +02:00
mlx4 net/mlx4: advertise Rx jumbo frame support 2018-08-02 12:34:18 +02:00
mlx5 net/mlx5: fix VLAN filtering 2018-08-02 13:15:18 +02:00
mvpp2 remove useless constructor headers 2018-07-12 00:00:35 +02:00
netvsc build: fix meson build on FreeBSD 2018-07-26 09:58:19 +02:00
nfp remove useless constructor headers 2018-07-12 00:00:35 +02:00
null drivers/net: fix crash in secondary process 2018-07-26 15:00:34 +02:00
octeontx net/octeontx: fix stop clearing Rx/Tx functions 2018-08-02 09:59:10 +02:00
pcap drivers/net: fix crash in secondary process 2018-07-26 15:00:34 +02:00
qede net/qede: fix MAC address removal failure message 2018-08-02 21:48:19 +02:00
ring remove useless constructor headers 2018-07-12 00:00:35 +02:00
sfc net/sfc: handle unknown L3 packet class in EF10 event parser 2018-07-23 23:55:26 +02:00
softnic net/softnic: add command for default tmgr hierarchy 2018-07-25 19:29:15 +02:00
szedata2 remove useless constructor headers 2018-07-12 00:00:35 +02:00
tap drivers/net: fix crash in secondary process 2018-07-26 15:00:34 +02:00
thunderx net/thunderx: support Rx VLAN offload 2018-07-23 23:55:26 +02:00
vdev_netvsc net/vdev_netvsc: fix automatic probing 2018-05-23 00:35:01 +02:00
vhost drivers/net: fix crash in secondary process 2018-07-26 15:00:34 +02:00
virtio net/virtio-user: fix parameters string 2018-08-02 04:41:58 +02:00
vmxnet3 remove useless constructor headers 2018-07-12 00:00:35 +02:00
Makefile net/netvsc: add Hyper-V network device 2018-07-13 23:48:07 +02:00
meson.build net/netvsc: add Hyper-V network device 2018-07-13 23:48:07 +02:00