patches for DPDK stable branches
 help / color / mirror / Atom feed
* [dpdk-stable] [PATCH] net/mlx5: fix tunnel flow prioriity
@ 2020-12-13 18:33 Matan Azrad
  2020-12-17 11:41 ` Kevin Traynor
  0 siblings, 1 reply; 2+ messages in thread
From: Matan Azrad @ 2020-12-13 18:33 UTC (permalink / raw)
  To: stable, Viacheslav Ovsiienko; +Cc: Kevin Traynor

[ upstream commit 050bfe033c2dcaff1f6cfb3110aa90bf80071513 ]

The PMD manages internally the priority of the flows in addition to
the user configured priority.
So, 2 flows with the same user priority may get different priority.
The method:
As much as the flow is more specific it gets higher priority
(higher means first to be matched).

In addition, When the user creates a RSS flow the PMD splits the flows
according to the flow RSS layers as the HW requests for RSS TIR.
The internal priority for each flow is decided by the flow last layer.
L2, L3 and L4 (L2 low and L4 high).

The tunnel layer was wrongly decided to be L4 all the time, even when
the flow is configured with inner-RSS.

Hence, the first RSS split which takes the tunnel layer priority all the
time will be matched before the more specific splits.

Change the priority of tunnel layer to be L2 when inner-RSS is
configured.

Fixes: d4a405186b73 ("net/mlx5: support tunnel RSS level")

Signed-off-by: Matan Azrad <matan@nvidia.com>
Acked-by: Ori Kam <orika@nvidia.com>
---
 drivers/net/mlx5/mlx5_flow_dv.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c
index 3363f90..67327c2 100644
--- a/drivers/net/mlx5/mlx5_flow_dv.c
+++ b/drivers/net/mlx5/mlx5_flow_dv.c
@@ -2232,26 +2232,36 @@
 		case RTE_FLOW_ITEM_TYPE_GRE:
 			flow_dv_translate_item_gre(match_mask, match_value,
 						   items, tunnel);
+			matcher.priority = flow->rss.level >= 2 ?
+				    MLX5_PRIORITY_MAP_L2 : MLX5_PRIORITY_MAP_L4;
 			last_item = MLX5_FLOW_LAYER_GRE;
 			break;
 		case RTE_FLOW_ITEM_TYPE_NVGRE:
 			flow_dv_translate_item_nvgre(match_mask, match_value,
 						     items, tunnel);
+			matcher.priority = flow->rss.level >= 2 ?
+				    MLX5_PRIORITY_MAP_L2 : MLX5_PRIORITY_MAP_L4;
 			last_item = MLX5_FLOW_LAYER_GRE;
 			break;
 		case RTE_FLOW_ITEM_TYPE_VXLAN:
 			flow_dv_translate_item_vxlan(match_mask, match_value,
 						     items, tunnel);
+			matcher.priority = flow->rss.level >= 2 ?
+				    MLX5_PRIORITY_MAP_L2 : MLX5_PRIORITY_MAP_L4;
 			last_item = MLX5_FLOW_LAYER_VXLAN;
 			break;
 		case RTE_FLOW_ITEM_TYPE_VXLAN_GPE:
 			flow_dv_translate_item_vxlan(match_mask, match_value,
 						     items, tunnel);
+			matcher.priority = flow->rss.level >= 2 ?
+				    MLX5_PRIORITY_MAP_L2 : MLX5_PRIORITY_MAP_L4;
 			last_item = MLX5_FLOW_LAYER_VXLAN_GPE;
 			break;
 		case RTE_FLOW_ITEM_TYPE_MPLS:
 			flow_dv_translate_item_mpls(match_mask, match_value,
 						    items, last_item, tunnel);
+			matcher.priority = flow->rss.level >= 2 ?
+				    MLX5_PRIORITY_MAP_L2 : MLX5_PRIORITY_MAP_L4;
 			last_item = MLX5_FLOW_LAYER_MPLS;
 			break;
 		case RTE_FLOW_ITEM_TYPE_META:
-- 
1.8.3.1


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [dpdk-stable] [PATCH] net/mlx5: fix tunnel flow prioriity
  2020-12-13 18:33 [dpdk-stable] [PATCH] net/mlx5: fix tunnel flow prioriity Matan Azrad
@ 2020-12-17 11:41 ` Kevin Traynor
  0 siblings, 0 replies; 2+ messages in thread
From: Kevin Traynor @ 2020-12-17 11:41 UTC (permalink / raw)
  To: Matan Azrad, stable, Viacheslav Ovsiienko

On 13/12/2020 18:33, Matan Azrad wrote:
> [ upstream commit 050bfe033c2dcaff1f6cfb3110aa90bf80071513 ]
> 
> The PMD manages internally the priority of the flows in addition to
> the user configured priority.
> So, 2 flows with the same user priority may get different priority.
> The method:
> As much as the flow is more specific it gets higher priority
> (higher means first to be matched).
> 
> In addition, When the user creates a RSS flow the PMD splits the flows
> according to the flow RSS layers as the HW requests for RSS TIR.
> The internal priority for each flow is decided by the flow last layer.
> L2, L3 and L4 (L2 low and L4 high).
> 
> The tunnel layer was wrongly decided to be L4 all the time, even when
> the flow is configured with inner-RSS.
> 
> Hence, the first RSS split which takes the tunnel layer priority all the
> time will be matched before the more specific splits.
> 
> Change the priority of tunnel layer to be L2 when inner-RSS is
> configured.
> 
> Fixes: d4a405186b73 ("net/mlx5: support tunnel RSS level")
> 
> Signed-off-by: Matan Azrad <matan@nvidia.com>
> Acked-by: Ori Kam <orika@nvidia.com>
> ---
>  drivers/net/mlx5/mlx5_flow_dv.c | 10 ++++++++++
>  1 file changed, 10 insertions(+)

Applied, thanks.


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2020-12-17 11:41 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-12-13 18:33 [dpdk-stable] [PATCH] net/mlx5: fix tunnel flow prioriity Matan Azrad
2020-12-17 11:41 ` Kevin Traynor

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).