From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <dev-bounces@dpdk.org>
Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124])
	by inbox.dpdk.org (Postfix) with ESMTP id 19FAE45D36;
	Mon, 18 Nov 2024 12:26:43 +0100 (CET)
Received: from mails.dpdk.org (localhost [127.0.0.1])
	by mails.dpdk.org (Postfix) with ESMTP id 1ABD840E40;
	Mon, 18 Nov 2024 12:26:42 +0100 (CET)
Received: from egress-ip11b.ess.de.barracuda.com
 (egress-ip11b.ess.de.barracuda.com [18.185.115.215])
 by mails.dpdk.org (Postfix) with ESMTP id 9630F40150;
 Mon, 18 Nov 2024 12:26:33 +0100 (CET)
Received: from EUR05-AM6-obe.outbound.protection.outlook.com
 (mail-am6eur05lp2106.outbound.protection.outlook.com [104.47.18.106]) by
 mx-outbound42-231.eu-central-1c.ess.aws.cudaops.com (version=TLSv1.2
 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO);
 Mon, 18 Nov 2024 11:26:32 +0000
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=Vz9YH11O/o3NHOiNIHpLHX1rICPmHup0ZeiDCOwZjdgFPcL2bG3IwKlV1nStutyWJ3hnCvHwJRqFQMOnu5gWyuMwX570rk8A1C9b8cLp0VkFCB/wo1oH2w3vaURM3jT/9oBQ25wkuE+y1Hv3XbeA0TwJKP+6aFmPGMVX5anR0qqgzYekzAJiwtuC/00xFxrqT1AoYoHZRIcTZcpgVlUZqY22yhiiAy8fBQh0vxPzQMFoiShtOdHsxTfU2bniJjNtiQ3v0+1MpubhN3iXgASa5Yi35qCo53Vmyjkm1b8yJTPRktttwzGUmBSg/OsW4DJ10q8Nt/T1x+F+EZ9ke+XJ3g==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; 
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=/CT2pb9qrlLz3Ou6Nn+AbBFsENw48Svcn5klwrZNrYQ=;
 b=mzO4kRvEgFJk2YF+hfmME8ZBj8ACxzWHP47Pm7Z6/PkCwNu7kccx4XHISoZkOboMbkWNISxwYr5kAg8CThz2oPk7ZNrF/VmfENnfKtqYIgSsmEPi/4EfUfN3yFmPpmwdC6qXXwJrIHuIiQXQQ2Y7QjreZyuvhLW6G2UzFcljsbXnOZNei7lr71XXLduLH7DYItBT1TVMXA7MPqviY5WBuXCb6g/7b6Y55v4mOpUbC/q0r0XR+k92LUlbTVkID3FWdMF/bU3lqdbT1hgHkFhUsxqWxOWIDSOviuozquGG8v0vr2IuGoOgTVagIUA2qPnmmkBjJbxhR9rnOxWeF8Rs/g==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=fail (sender ip is
 178.72.21.4) smtp.rcpttodomain=monjalon.net smtp.mailfrom=napatech.com;
 dmarc=fail (p=reject sp=reject pct=100) action=oreject
 header.from=napatech.com; dkim=none (message not signed); arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=napatech.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=/CT2pb9qrlLz3Ou6Nn+AbBFsENw48Svcn5klwrZNrYQ=;
 b=juxeBtBnb662xeJjKvUjZxDr4FCR5G9tb5ml738tGt1qJRFW6PmSrWEaIkbu/8/LCSsqJd5AVoBbtIcnEkeIh3ItIxsRX+sd0WPWyT9CEcuNhCq+rLW4Ebs923FaKwHCcJYahZ9H827ap9hfoOW80o801hVten5LZvsqY1+TBXA=
Received: from DU7PR01CA0038.eurprd01.prod.exchangelabs.com
 (2603:10a6:10:50e::20) by AM8P190MB0977.EURP190.PROD.OUTLOOK.COM
 (2603:10a6:20b:1dd::7) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8158.24; Mon, 18 Nov
 2024 11:26:31 +0000
Received: from DB1PEPF000509F7.eurprd02.prod.outlook.com
 (2603:10a6:10:50e:cafe::3d) by DU7PR01CA0038.outlook.office365.com
 (2603:10a6:10:50e::20) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8158.23 via Frontend
 Transport; Mon, 18 Nov 2024 11:26:30 +0000
X-MS-Exchange-Authentication-Results: spf=fail (sender IP is 178.72.21.4)
 smtp.mailfrom=napatech.com; dkim=none (message not signed)
 header.d=none;dmarc=fail action=oreject header.from=napatech.com;
Received-SPF: Fail (protection.outlook.com: domain of napatech.com does not
 designate 178.72.21.4 as permitted sender) receiver=protection.outlook.com;
 client-ip=178.72.21.4; helo=k8s-node-23.default.svc.cluster.local;
Received: from k8s-node-23.default.svc.cluster.local (178.72.21.4) by
 DB1PEPF000509F7.mail.protection.outlook.com (10.167.242.153) with Microsoft
 SMTP Server id 15.20.8158.14 via Frontend Transport; Mon, 18 Nov 2024
 11:26:30 +0000
From: Danylo Vodopianov <dvo-plv@napatech.com>
To: thomas@monjalon.net, aman.deep.singh@intel.com, yuying.zhang@intel.com,
 orika@nvidia.com, mko-plv@napatech.com, ckm@napatech.com,
 dsosnowski@nvidia.com, sil-plv@napatech.com
Cc: getelson@nvidia.com, akozyrev@nvidia.com, dev@dpdk.org, stable@dpdk.org,
 ferruh.yigit@amd.com
Subject: [PATCH v2 1/2] app/testpmd: fix flow update
Date: Mon, 18 Nov 2024 12:26:24 +0100
Message-ID: <20241118112625.1880659-2-dvo-plv@napatech.com>
X-Mailer: git-send-email 2.43.5
In-Reply-To: <20241118112625.1880659-1-dvo-plv@napatech.com>
References: <20241031150010.2991953-1-dvo-plv@napatech.com>
 <20241118112625.1880659-1-dvo-plv@napatech.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DB1PEPF000509F7:EE_|AM8P190MB0977:EE_
X-MS-Office365-Filtering-Correlation-Id: 6f1ab65b-6d10-4c1f-f310-08dd07c3d9b9
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
 ARA:13230040|376014|1800799024|82310400026|36860700013; 
X-Microsoft-Antispam-Message-Info: =?utf-8?B?U1V0eTlVV0greFZ0QlNSVHFRY2x5cDE2QWx3ZHdGK0FrVENVUEd0Qk92ZUpp?=
 =?utf-8?B?QVhIcDZ6VHlaZmZ1Uk04a3EvKzJkYWRjdnpGdEJrbk9KYzhpYUlFNmVqRVpL?=
 =?utf-8?B?UitZVVJUWk5QODRtUEtBSFFTMm13aUdrOHJxVFdYMHFnZmhYZWt4N0JQWFJV?=
 =?utf-8?B?RkJRRUdCZUsrRml2ZzE3S3dMcXVRRy91ZUhSREJvR3pBMjVsd3RRK2tZYTBt?=
 =?utf-8?B?dGFQZEFDeXNLT3hFMnNtOWV3UE9MSXFsci9vQ3FOSGo0VloxLzYrT1NseHly?=
 =?utf-8?B?QzhNdVl5Vnk4bi9UN2JEZDVPclIxZHlqbDJjaEZHZE5YOWordVdBK2VzY21G?=
 =?utf-8?B?MG5MRU1OSllyaUtTRzh6a1RRcGxlVjZPU0hPakVNM0VlL1FCeVVoTm1CZWRl?=
 =?utf-8?B?aUVRR09IVzVJcXJqb1N0eE1Qbm5ndGc2QVhDbWVTRVBsNGZvcUpVZHdEdDlB?=
 =?utf-8?B?MVNVaTJSRDVqNkJCdWg5TE5hTC9uVjZPb2NkUG8zcXA3NlZKMDFLRi9vZWRV?=
 =?utf-8?B?Q0kzbXpuc1Z0WU0yZHI0K2JGNytGa0NobmdrRHh2QjhTT1JTUnZsUW9hRCtz?=
 =?utf-8?B?TnVZR3dtbUpDMmpueGpuWXhTTVhiSXRWSWkxbFIyWUZJelpURDFBMDdrRS84?=
 =?utf-8?B?aHZidkM3bzYvNk9aTVhFMjJhS2w0MHhYVFJ3b21GSXJiWW9zM0Y5NmMzd0xX?=
 =?utf-8?B?bE45K1pBVGFteWs2YlRYaWtlb3pJWGM4a09DZXAxVzI0amVtMDNOendYRHND?=
 =?utf-8?B?dlY2UTBCaXdnKzVHczFDZFh3UnBtaVZ0VVJwUXNicytGNnlJcWJaakE0STRo?=
 =?utf-8?B?WFBxbE9Hczk0cSs0d29NU2JMVFpWK245anF3SHJ5QVE5cXNzRmQ1YURIeHNq?=
 =?utf-8?B?ci9VYmQ4OUY4WGh3R2JRYVdXcitDZ2JtbHZYU0FKelA4OUVLcXpTSis0TlJk?=
 =?utf-8?B?NlBVSW1zQ05aU3U0WUhrL3hLTGlzM1FVNi9ZMmRUaVoxeHIvSzBEcVdSbXBG?=
 =?utf-8?B?bklPeXp2cDRIYTdsNE5lZk9DNkNDbk1mOWpXT0lwWkxxS2xacG01Ylp0YTVq?=
 =?utf-8?B?M1dya3lrMldocTlhOTNNTkdsZFlYeFpKajhvZ0t5NkF4QWJhL0VYb1c4cUdi?=
 =?utf-8?B?S3pEM3BNVmNhR2xlcU5IVjdrREorVVR6UU9UZVBodWhXQ0R3bVJ6Qk5MNTA4?=
 =?utf-8?B?dTFFM0pYaEg1dHUyUmM0L0F0R2dYc2JmSll3K1BJTDR6QWFNQ2k2MXhmSzB3?=
 =?utf-8?B?eU5Najcxb20rUnNrSGhJSDhrOHJZdFYyR3F6VWxoM2J1MjVJVlhBOC82dXZl?=
 =?utf-8?B?czl5VGxwZVlXMVBaOWczUWV6TXk3eFZIaTNCZ2Y1NWQvOHc4bU9QeGw0VjVi?=
 =?utf-8?B?SDNOdWs0TW1MNEJYNjJmR3N3cHQ1ak5mRXVqanRsMmw4bThMV2pRZk5LWnlH?=
 =?utf-8?B?bVhiYlN2TUhBdEdDdnVLQkFiQTJwM1hjcnd0VXRHSVV6T3RmQUtETTBOTlNN?=
 =?utf-8?B?cWxHaXJJZFhXbFdCQWlYZjNBT2toVTFDa245TTVKU2hMNXhVbHJVeG12eHow?=
 =?utf-8?B?NENObzVCM0U5NU44RW1USjdDMHVvc3VUdkgxajNIZ0poRUozZWdvR2xnTnRV?=
 =?utf-8?B?Mzh2cEcrZys4cFY3MkxUUkw2TlRxTkZXcDJVU3R3U29ZM1ZkTkJuenI4MEZt?=
 =?utf-8?B?QXRSSVZBaGQ4dWZpb04rTElmczRlcThkUmh3Y2U0MUxQd3I0M05QcUZmV2dt?=
 =?utf-8?B?bzRKTlc4VHFBR2pMUThLcEpxaERDWHJ5N2htS1haQ240UFllb2M5Y2ZmckVH?=
 =?utf-8?B?SkdZeFN2dUk2MVNlUFgvbUxnalkzZ1o4aEVmMW8wMm5vanIrNS9MeHUraXpT?=
 =?utf-8?B?ODlHbGUzL2ZWenp3U3NDUFpJWitEemtGTjQwYmc4cnB5U3c9PQ==?=
X-Forefront-Antispam-Report: CIP:178.72.21.4; CTRY:DK; LANG:en; SCL:1; SRV:;
 IPV:NLI; SFV:NSPM; H:k8s-node-23.default.svc.cluster.local;
 PTR:InfoDomainNonexistent; CAT:NONE;
 SFS:(13230040)(376014)(1800799024)(82310400026)(36860700013); DIR:OUT;
 SFP:1102; 
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: LtdUqEXN9EfAeUt+Nyi/TSbs7f5EM5SJJf/7udhpaLWYD9BivRrzEoejdwuAqsxkHusJXxQepZ6vhGHU5/UAiSKC9D1ncixuwNNmhR4GCjXLvRZH3vM9X6WS5qQ298nMS+/0B0zd5mA6IgkuSFaT66g5rOo1DMDUjxaRF2zoOUpLcgtCUNBUaM32lKBPU35CjbG+jeuWsj2/NIkFJTfRxNEaUeCMannpxAdQrnq1Ypn1N06wepOJmS8eTGCbg6En51BsbWjaLQ3pqdLzXZ4DOfQ2pl4ssOiU3B8DSJkGMGFacY0fJHPMOIELe19sXHg0VD69TvSJM1qZ2Ytt6hdu7N18Ri/tvYgVey1CE8Ag6lZJu56NrVCREPNd4ht1p1+OB7ILOeTwcNihHpAaY4ShlyfhbKEXgHnZDZzm4ogBgz1DOpSWkV9ajU4i0zHNMFxSDW+kRqah1BcPb9T/g1iPr0FbAo6mpQNxlMMRc/WI8eCaVhT14OVGoSMXT8OeHj39fbdI5VHBAXqKFlUkDFkzZEk/EVKe0N3uhuFUDszk3xHeCS7AqODYzEfCmH/UVLX4gD4eVjrzh9OjZYC3h8tMq3D2lMOMrEGG//JVjM2KUWzwPHuj1xXVZi2ci/XgyTPm1uqta80s4AILI3MULrvHO+AcdzgJ/GMynPHHwkPQitU=
X-OriginatorOrg: napatech.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Nov 2024 11:26:30.4806 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 6f1ab65b-6d10-4c1f-f310-08dd07c3d9b9
X-MS-Exchange-CrossTenant-Id: c4540d0b-728a-4233-9da5-9ea30c7ec3ed
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c4540d0b-728a-4233-9da5-9ea30c7ec3ed; Ip=[178.72.21.4];
 Helo=[k8s-node-23.default.svc.cluster.local]
X-MS-Exchange-CrossTenant-AuthSource: DB1PEPF000509F7.eurprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM8P190MB0977
X-BESS-ID: 1731929192-310983-13351-3852-1
X-BESS-VER: 2019.1_20241105.1725
X-BESS-Apparent-Source-IP: 104.47.18.106
X-BESS-Parts: H4sIAAAAAAACA4uuVkqtKFGyUioBkjpK+cVKVkYGZmZAVgZQMNnYxCDRzCjRwD
 zN0CDVwsg0NTHZLDU5ydzY0sTUzNhQqTYWAG1wj2tBAAAA
X-BESS-Outbound-Spam-Score: 0.00
X-BESS-Outbound-Spam-Report: Code version 3.2,
 rules version 3.2.2.260505 [from 
 cloudscan12-37.eu-central-1a.ess.aws.cudaops.com]
 Rule breakdown below
 pts rule name              description
 ---- ---------------------- --------------------------------
 0.00 BSF_BESS_OUTBOUND      META: BESS Outbound 
X-BESS-Outbound-Spam-Status: SCORE=0.00 using account:ESS113687 scores of
 KILL_LEVEL=7.0 tests=BSF_BESS_OUTBOUND
X-BESS-BRTS-Status: 1
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <https://mails.dpdk.org/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://mails.dpdk.org/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <https://mails.dpdk.org/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
Errors-To: dev-bounces@dpdk.org

If actions provided to “flow update…“ command contained an age
action, then testpmd did not update the age action context
accordingly.

Thus "flow aged <port_id> destroy" command can not
execute successfully.

Fix was done with next steps
1. Generate new port flow entry to add/replace action(s).
2. Set age context if age action is present.
3. Replace flow in the flow list.

Fixes: 2d9c7e56e52c ("app/testpmd: support updating flow rule actions")
Cc: stable@dpdk.org

Signed-off-by: Danylo Vodopianov <dvo-plv@napatech.com>
---
 app/test-pmd/config.c | 21 ++++++++++++++++++++-
 1 file changed, 20 insertions(+), 1 deletion(-)

diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c
index 88770b4dfc..c831166431 100644
--- a/app/test-pmd/config.c
+++ b/app/test-pmd/config.c
@@ -3882,7 +3882,8 @@ port_flow_update(portid_t port_id, uint32_t rule_id,
 		 const struct rte_flow_action *actions, bool is_user_id)
 {
 	struct rte_port *port;
-	struct port_flow **flow_list;
+	struct port_flow **flow_list, *uf;
+	struct rte_flow_action_age *age = age_action_get(actions);
 
 	if (port_id_is_invalid(port_id, ENABLED_WARN) ||
 	    port_id == (portid_t)RTE_PORT_ALL)
@@ -3897,6 +3898,16 @@ port_flow_update(portid_t port_id, uint32_t rule_id,
 			flow_list = &flow->next;
 			continue;
 		}
+
+		/* Update flow action(s) with new action(s) */
+		uf = port_flow_new(flow->rule.attr_ro, flow->rule.pattern_ro, actions, &error);
+		if (!uf)
+			return port_flow_complain(&error);
+		if (age) {
+			flow->age_type = ACTION_AGE_CONTEXT_TYPE_FLOW;
+			age->context = &flow->age_type;
+		}
+
 		/*
 		 * Poisoning to make sure PMDs update it in case
 		 * of error.
@@ -3913,6 +3924,14 @@ port_flow_update(portid_t port_id, uint32_t rule_id,
 			printf("Flow rule #%"PRIu64
 			       " updated with new actions\n",
 			       flow->id);
+
+		uf->next = flow->next;
+		uf->id = flow->id;
+		uf->user_id = flow->user_id;
+		uf->flow = flow->flow;
+		*flow_list = uf;
+
+		free(flow);
 		return 0;
 	}
 	printf("Failed to find flow %"PRIu32"\n", rule_id);
-- 
2.43.5