Blob Blame History Raw
From c20c4f5dcd31ef9e4acf22a472c33fa6b5f8e8ed Mon Sep 17 00:00:00 2001
From: Alaa Hleihel <ahleihel@redhat.com>
Date: Tue, 19 May 2020 07:49:24 -0400
Subject: [PATCH 262/312] [netdrv] net/mlx5e: Fix missing pedit action after ct
 clear action

Message-id: <20200519074934.6303-54-ahleihel@redhat.com>
Patchwork-id: 310549
Patchwork-instance: patchwork
O-Subject: [RHEL8.3 BZ 1663246 53/63] net/mlx5e: Fix missing pedit action after ct clear action
Bugzilla: 1663246
RH-Acked-by: Marcelo Leitner <mleitner@redhat.com>
RH-Acked-by: Jarod Wilson <jarod@redhat.com>
RH-Acked-by: John Linville <linville@redhat.com>
RH-Acked-by: Ivan Vecera <ivecera@redhat.com>
RH-Acked-by: Tony Camuso <tcamuso@redhat.com>
RH-Acked-by: Kamal Heib <kheib@redhat.com>

Bugzilla: http://bugzilla.redhat.com/1663246
Upstream: v5.7-rc2

commit d5a3c2b640093c8a4bb5d76170a8f6c8c2eacc17
Author: Roi Dayan <roid@mellanox.com>
Date:   Sun Mar 29 18:54:10 2020 +0300

    net/mlx5e: Fix missing pedit action after ct clear action

    With ct clear action we should not allocate the action in hw
    and not release the mod_acts parsed in advance.
    It will be done when handling the ct clear action.

    Fixes: 1ef3018f5af3 ("net/mlx5e: CT: Support clear action")
    Signed-off-by: Roi Dayan <roid@mellanox.com>
    Reviewed-by: Paul Blakey <paulb@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>

Signed-off-by: Alaa Hleihel <ahleihel@redhat.com>
Signed-off-by: Frantisek Hrbata <fhrbata@redhat.com>
---
 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
index f760231213d1..c0e06114d328 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
@@ -1343,7 +1343,8 @@ mlx5e_tc_add_fdb_flow(struct mlx5e_priv *priv,
 	if (err)
 		return err;
 
-	if (attr->action & MLX5_FLOW_CONTEXT_ACTION_MOD_HDR) {
+	if (attr->action & MLX5_FLOW_CONTEXT_ACTION_MOD_HDR &&
+	    !(attr->ct_attr.ct_action & TCA_CT_ACT_CLEAR)) {
 		err = mlx5e_attach_mod_hdr(priv, flow, parse_attr);
 		dealloc_mod_hdr_actions(&parse_attr->mod_hdr_acts);
 		if (err)
-- 
2.13.6