net/mlx5: fix L3 vxlan RSS expansion

Message ID 1582100976-18770-1-git-send-email-matan@mellanox.com (mailing list archive)
State Accepted, archived
Delegated to: Raslan Darawsheh
Headers
Series net/mlx5: fix L3 vxlan RSS expansion |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/iol-mellanox-Performance success Performance Testing PASS
ci/iol-testing success Testing PASS
ci/Intel-compilation fail apply issues
ci/travis-robot success Travis build: passed

Commit Message

Matan Azrad Feb. 19, 2020, 8:29 a.m. UTC
  The RSS expansion feature was introduced to split RSS flows according to
the adjustment between the RSS types and the flow items.

The expansion function gets an item tree for the above adjustment from
the caller which reflects the HW needs.

The standard vxlan header next protocol is always ethernet while there
are some Mellanox customers who use their own method to allow L3
headers after the vxlan tunnel header.

The expansion tree of mlx5 PMD didn't expect to get L3 headers after the
vxlan header what caused a failure in flow creation when inner RSS is
requested on L3 after vxlan flow.

Add IPV4 and IPV6 as optional headers after vxlan in the RSS expansion
tree to allow L3 tunnel support for vxlan.

Fixes: f4f06e361516 ("net/mlx5: add flow VXLAN item")
Cc: stable@dpdk.org

Signed-off-by: Matan Azrad <matan@mellanox.com>
---
 drivers/net/mlx5/mlx5_flow.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
  

Comments

Slava Ovsiienko Feb. 19, 2020, 9:13 a.m. UTC | #1
> -----Original Message-----
> From: Matan Azrad <matan@mellanox.com>
> Sent: Wednesday, February 19, 2020 10:30
> To: dev@dpdk.org
> Cc: Slava Ovsiienko <viacheslavo@mellanox.com>; stable@dpdk.org
> Subject: [PATCH] net/mlx5: fix L3 vxlan RSS expansion
> 
> The RSS expansion feature was introduced to split RSS flows according to the
> adjustment between the RSS types and the flow items.
> 
> The expansion function gets an item tree for the above adjustment from the
> caller which reflects the HW needs.
> 
> The standard vxlan header next protocol is always ethernet while there are
> some Mellanox customers who use their own method to allow L3 headers
> after the vxlan tunnel header.
> 
> The expansion tree of mlx5 PMD didn't expect to get L3 headers after the
> vxlan header what caused a failure in flow creation when inner RSS is
> requested on L3 after vxlan flow.
> 
> Add IPV4 and IPV6 as optional headers after vxlan in the RSS expansion tree
> to allow L3 tunnel support for vxlan.
> 
> Fixes: f4f06e361516 ("net/mlx5: add flow VXLAN item")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Matan Azrad <matan@mellanox.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>

> ---
>  drivers/net/mlx5/mlx5_flow.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c
> index 2548201..6544cc4 100644
> --- a/drivers/net/mlx5/mlx5_flow.c
> +++ b/drivers/net/mlx5/mlx5_flow.c
> @@ -167,7 +167,9 @@ enum mlx5_expansion {
>  		.rss_types = ETH_RSS_NONFRAG_IPV6_TCP,
>  	},
>  	[MLX5_EXPANSION_VXLAN] = {
> -		.next =
> RTE_FLOW_EXPAND_RSS_NEXT(MLX5_EXPANSION_ETH),
> +		.next =
> RTE_FLOW_EXPAND_RSS_NEXT(MLX5_EXPANSION_ETH,
> +						 MLX5_EXPANSION_IPV4,
> +						 MLX5_EXPANSION_IPV6),
>  		.type = RTE_FLOW_ITEM_TYPE_VXLAN,
>  	},
>  	[MLX5_EXPANSION_VXLAN_GPE] = {
> --
> 1.8.3.1
  
Raslan Darawsheh Feb. 19, 2020, 3:12 p.m. UTC | #2
Hi,

> -----Original Message-----
> From: dev <dev-bounces@dpdk.org> On Behalf Of Matan Azrad
> Sent: Wednesday, February 19, 2020 10:30 AM
> To: dev@dpdk.org
> Cc: Slava Ovsiienko <viacheslavo@mellanox.com>; stable@dpdk.org
> Subject: [dpdk-dev] [PATCH] net/mlx5: fix L3 vxlan RSS expansion
> 
> The RSS expansion feature was introduced to split RSS flows according to
> the adjustment between the RSS types and the flow items.
> 
> The expansion function gets an item tree for the above adjustment from
> the caller which reflects the HW needs.
> 
> The standard vxlan header next protocol is always ethernet while there
> are some Mellanox customers who use their own method to allow L3
> headers after the vxlan tunnel header.
> 
> The expansion tree of mlx5 PMD didn't expect to get L3 headers after the
> vxlan header what caused a failure in flow creation when inner RSS is
> requested on L3 after vxlan flow.
> 
> Add IPV4 and IPV6 as optional headers after vxlan in the RSS expansion
> tree to allow L3 tunnel support for vxlan.
> 
> Fixes: f4f06e361516 ("net/mlx5: add flow VXLAN item")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Matan Azrad <matan@mellanox.com>
> ---
>  drivers/net/mlx5/mlx5_flow.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c
> index 2548201..6544cc4 100644
> --- a/drivers/net/mlx5/mlx5_flow.c
> +++ b/drivers/net/mlx5/mlx5_flow.c
> @@ -167,7 +167,9 @@ enum mlx5_expansion {
>  		.rss_types = ETH_RSS_NONFRAG_IPV6_TCP,
>  	},
>  	[MLX5_EXPANSION_VXLAN] = {
> -		.next =
> RTE_FLOW_EXPAND_RSS_NEXT(MLX5_EXPANSION_ETH),
> +		.next =
> RTE_FLOW_EXPAND_RSS_NEXT(MLX5_EXPANSION_ETH,
> +						 MLX5_EXPANSION_IPV4,
> +						 MLX5_EXPANSION_IPV6),
>  		.type = RTE_FLOW_ITEM_TYPE_VXLAN,
>  	},
>  	[MLX5_EXPANSION_VXLAN_GPE] = {
> --
> 1.8.3.1


Patch applied to next-net-mlx,

Kindest regards,
Raslan Darawsheh
  

Patch

diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c
index 2548201..6544cc4 100644
--- a/drivers/net/mlx5/mlx5_flow.c
+++ b/drivers/net/mlx5/mlx5_flow.c
@@ -167,7 +167,9 @@  enum mlx5_expansion {
 		.rss_types = ETH_RSS_NONFRAG_IPV6_TCP,
 	},
 	[MLX5_EXPANSION_VXLAN] = {
-		.next = RTE_FLOW_EXPAND_RSS_NEXT(MLX5_EXPANSION_ETH),
+		.next = RTE_FLOW_EXPAND_RSS_NEXT(MLX5_EXPANSION_ETH,
+						 MLX5_EXPANSION_IPV4,
+						 MLX5_EXPANSION_IPV6),
 		.type = RTE_FLOW_ITEM_TYPE_VXLAN,
 	},
 	[MLX5_EXPANSION_VXLAN_GPE] = {