patches for DPDK stable branches
 help / color / mirror / Atom feed
* [dpdk-stable] [PATCH] net/mlx5: fix VLAN/DECAP actions not work in mirror flow
@ 2021-04-09 12:36 Jiawei Wang
  2021-04-12  6:37 ` Slava Ovsiienko
  2021-04-19 12:26 ` [dpdk-stable] [dpdk-dev] " Raslan Darawsheh
  0 siblings, 2 replies; 3+ messages in thread
From: Jiawei Wang @ 2021-04-09 12:36 UTC (permalink / raw)
  To: Matan Azrad, Shahaf Shuler, Viacheslav Ovsiienko, Jiawei Wang; +Cc: dev, stable

Due to hardware limitations the VLAN push/pop and Decap actions following
the sample action are supported in the FDB Tx steering domain only, the
flows with incorrect action order for other domains are rejected by
rdma-core.

To provide the action order requested in RTE flow this patch checks for
the VLAN or Decap precedence to the sample action and moves the VLAN or
Decap actions into the next flow in the new table and adds the jump
action in the prefix sample flow.

This patch also adds the validation for these combination actions.

Fixes: 255b8f86eb6e ("net/mlx5: fix E-Switch egress mirror flow validation")
Cc: stable@dpdk.org

Signed-off-by: Jiawei Wang <jiaweiw@nvidia.com>
---
 drivers/net/mlx5/mlx5_flow.c    |  8 ++++++++
 drivers/net/mlx5/mlx5_flow_dv.c | 15 +++++++++++++++
 2 files changed, 23 insertions(+)

diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c
index c347f81..2140ee3 100644
--- a/drivers/net/mlx5/mlx5_flow.c
+++ b/drivers/net/mlx5/mlx5_flow.c
@@ -4759,6 +4759,14 @@ struct mlx5_hlist_entry *
 		case RTE_FLOW_ACTION_TYPE_MARK:
 		case RTE_FLOW_ACTION_TYPE_SET_META:
 		case RTE_FLOW_ACTION_TYPE_SET_TAG:
+		case RTE_FLOW_ACTION_TYPE_OF_POP_VLAN:
+		case RTE_FLOW_ACTION_TYPE_OF_PUSH_VLAN:
+		case RTE_FLOW_ACTION_TYPE_OF_SET_VLAN_VID:
+		case RTE_FLOW_ACTION_TYPE_OF_SET_VLAN_PCP:
+		case RTE_FLOW_ACTION_TYPE_VXLAN_DECAP:
+		case RTE_FLOW_ACTION_TYPE_NVGRE_DECAP:
+		case RTE_FLOW_ACTION_TYPE_RAW_DECAP:
+		case RTE_FLOW_ACTION_TYPE_MODIFY_FIELD:
 			if (fdb_mirror)
 				*modify_after_mirror = 1;
 			break;
diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c
index 1818895..989fdde 100644
--- a/drivers/net/mlx5/mlx5_flow_dv.c
+++ b/drivers/net/mlx5/mlx5_flow_dv.c
@@ -6589,6 +6589,8 @@ struct mlx5_hlist_entry *
 							     item_flags, attr,
 							     error))
 				return -rte_errno;
+			if (action_flags & MLX5_FLOW_ACTION_SAMPLE)
+				modify_after_mirror = 1;
 			action_flags |= MLX5_FLOW_ACTION_OF_POP_VLAN;
 			++actions_n;
 			break;
@@ -6600,6 +6602,8 @@ struct mlx5_hlist_entry *
 								error);
 			if (ret < 0)
 				return ret;
+			if (action_flags & MLX5_FLOW_ACTION_SAMPLE)
+				modify_after_mirror = 1;
 			action_flags |= MLX5_FLOW_ACTION_OF_PUSH_VLAN;
 			++actions_n;
 			break;
@@ -6608,6 +6612,8 @@ struct mlx5_hlist_entry *
 						(action_flags, actions, error);
 			if (ret < 0)
 				return ret;
+			if (action_flags & MLX5_FLOW_ACTION_SAMPLE)
+				modify_after_mirror = 1;
 			/* Count PCP with push_vlan command. */
 			action_flags |= MLX5_FLOW_ACTION_OF_SET_VLAN_PCP;
 			break;
@@ -6617,6 +6623,8 @@ struct mlx5_hlist_entry *
 						 actions, error);
 			if (ret < 0)
 				return ret;
+			if (action_flags & MLX5_FLOW_ACTION_SAMPLE)
+				modify_after_mirror = 1;
 			/* Count VID with push_vlan command. */
 			action_flags |= MLX5_FLOW_ACTION_OF_SET_VLAN_VID;
 			rw_act_num += MLX5_ACT_NUM_MDF_VID;
@@ -6639,6 +6647,8 @@ struct mlx5_hlist_entry *
 							    attr, error);
 			if (ret < 0)
 				return ret;
+			if (action_flags & MLX5_FLOW_ACTION_SAMPLE)
+				modify_after_mirror = 1;
 			action_flags |= MLX5_FLOW_ACTION_DECAP;
 			++actions_n;
 			break;
@@ -6666,6 +6676,9 @@ struct mlx5_hlist_entry *
 					    actions, item_flags, error);
 			if (ret < 0)
 				return ret;
+			if ((action_flags & MLX5_FLOW_ACTION_SAMPLE) &&
+			    (action_flags & MLX5_FLOW_ACTION_DECAP))
+				modify_after_mirror = 1;
 			break;
 		case RTE_FLOW_ACTION_TYPE_SET_MAC_SRC:
 		case RTE_FLOW_ACTION_TYPE_SET_MAC_DST:
@@ -6949,6 +6962,8 @@ struct mlx5_hlist_entry *
 								   error);
 			if (ret < 0)
 				return ret;
+			if (action_flags & MLX5_FLOW_ACTION_SAMPLE)
+				modify_after_mirror = 1;
 			/* Count all modify-header actions as one action. */
 			if (!(action_flags & MLX5_FLOW_ACTION_MODIFY_FIELD))
 				++actions_n;
-- 
1.8.3.1


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

* Re: [dpdk-stable] [PATCH] net/mlx5: fix VLAN/DECAP actions not work in mirror flow
  2021-04-09 12:36 [dpdk-stable] [PATCH] net/mlx5: fix VLAN/DECAP actions not work in mirror flow Jiawei Wang
@ 2021-04-12  6:37 ` Slava Ovsiienko
  2021-04-19 12:26 ` [dpdk-stable] [dpdk-dev] " Raslan Darawsheh
  1 sibling, 0 replies; 3+ messages in thread
From: Slava Ovsiienko @ 2021-04-12  6:37 UTC (permalink / raw)
  To: Jiawei(Jonny) Wang, Matan Azrad, Shahaf Shuler, Jiawei(Jonny) Wang
  Cc: dev, stable

> -----Original Message-----
> From: Jiawei Wang <jiaweiw@nvidia.com>
> Sent: Friday, April 9, 2021 15:37
> To: Matan Azrad <matan@nvidia.com>; Shahaf Shuler
> <shahafs@nvidia.com>; Slava Ovsiienko <viacheslavo@nvidia.com>;
> Jiawei(Jonny) Wang <jiaweiw@nvidia.com>
> Cc: dev@dpdk.org; stable@dpdk.org
> Subject: [PATCH] net/mlx5: fix VLAN/DECAP actions not work in mirror flow
> 
> Due to hardware limitations the VLAN push/pop and Decap actions following
> the sample action are supported in the FDB Tx steering domain only, the
> flows with incorrect action order for other domains are rejected by rdma-
> core.
> 
> To provide the action order requested in RTE flow this patch checks for the
> VLAN or Decap precedence to the sample action and moves the VLAN or
> Decap actions into the next flow in the new table and adds the jump action in
> the prefix sample flow.
> 
> This patch also adds the validation for these combination actions.
> 
> Fixes: 255b8f86eb6e ("net/mlx5: fix E-Switch egress mirror flow validation")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Jiawei Wang <jiaweiw@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>

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

* Re: [dpdk-stable] [dpdk-dev] [PATCH] net/mlx5: fix VLAN/DECAP actions not work in mirror flow
  2021-04-09 12:36 [dpdk-stable] [PATCH] net/mlx5: fix VLAN/DECAP actions not work in mirror flow Jiawei Wang
  2021-04-12  6:37 ` Slava Ovsiienko
@ 2021-04-19 12:26 ` Raslan Darawsheh
  1 sibling, 0 replies; 3+ messages in thread
From: Raslan Darawsheh @ 2021-04-19 12:26 UTC (permalink / raw)
  To: Jiawei(Jonny) Wang, Matan Azrad, Shahaf Shuler, Slava Ovsiienko,
	Jiawei(Jonny) Wang
  Cc: dev, stable

Hi,

> -----Original Message-----
> From: dev <dev-bounces@dpdk.org> On Behalf Of Jiawei Wang
> Sent: Friday, April 9, 2021 3:37 PM
> To: Matan Azrad <matan@nvidia.com>; Shahaf Shuler
> <shahafs@nvidia.com>; Slava Ovsiienko <viacheslavo@nvidia.com>;
> Jiawei(Jonny) Wang <jiaweiw@nvidia.com>
> Cc: dev@dpdk.org; stable@dpdk.org
> Subject: [dpdk-dev] [PATCH] net/mlx5: fix VLAN/DECAP actions not work in
> mirror flow
> 
> Due to hardware limitations the VLAN push/pop and Decap actions following
> the sample action are supported in the FDB Tx steering domain only, the
> flows with incorrect action order for other domains are rejected by
> rdma-core.
> 
> To provide the action order requested in RTE flow this patch checks for
> the VLAN or Decap precedence to the sample action and moves the VLAN or
> Decap actions into the next flow in the new table and adds the jump
> action in the prefix sample flow.
> 
> This patch also adds the validation for these combination actions.
> 
> Fixes: 255b8f86eb6e ("net/mlx5: fix E-Switch egress mirror flow validation")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Jiawei Wang <jiaweiw@nvidia.com>
> ---
Patch applied to next-net-mlx,

Kindest regards,
Raslan Darawsheh

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

end of thread, other threads:[~2021-04-19 12:26 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-09 12:36 [dpdk-stable] [PATCH] net/mlx5: fix VLAN/DECAP actions not work in mirror flow Jiawei Wang
2021-04-12  6:37 ` Slava Ovsiienko
2021-04-19 12:26 ` [dpdk-stable] [dpdk-dev] " Raslan Darawsheh

patches for DPDK stable branches

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://inbox.dpdk.org/stable/0 stable/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 stable stable/ https://inbox.dpdk.org/stable \
		stable@dpdk.org
	public-inbox-index stable

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://inbox.dpdk.org/inbox.dpdk.stable


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git