net/mlx5: handle RSS hash configuration in RSS flow
authorNélio Laranjeiro <nelio.laranjeiro@6wind.com>
Mon, 9 Oct 2017 14:45:04 +0000 (16:45 +0200)
committerFerruh Yigit <ferruh.yigit@intel.com>
Thu, 12 Oct 2017 00:36:58 +0000 (01:36 +0100)
commit8086cf08b2f028ed0fdbbb25d0d283973b17c2cc
tree0b708c359717d62bfdf245cff44b36040161c77b
parent09241a023666d6b6f611f586ebc95bcc142b5a93
net/mlx5: handle RSS hash configuration in RSS flow

Add RSS support according to the RSS configuration.

A special case is handled, when the pattern does not cover the RSS hash
configuration request such as:

flow create 0 ingress pattern eth / end actions rss queues 0 1 end / end

In such situation with the default configuration of testpmd RSS i.e. IP,
it should be converted to 3 Verbs flow to handle correctly the request:

 1. IPv4 flow, an extra IPv4 wildcard specification needs to be added in
    the conversion.
 2. IPv6 flow, same as for IPv4.
 3. Ethernet followed by any other protocol on which no RSS can be
    performed and thus the traffic will be redirected to the first queue
    of the user request.

The same kind of issue is handled if the RSS is performed only on UDPv4
or UDPv6 or TCPv*.

This does not handle a priority conflict which can occurs if the user
adds several colliding flow rules.  Currently in the example above, the
request is already consuming 2 priorities (1 for IPv4/IPV6 matching
rule priority and one for Ethernet matching rule priority + 1).

Signed-off-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
Acked-by: Yongseok Koh <yskoh@mellanox.com>
drivers/net/mlx5/mlx5_flow.c