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 B4CF045BB5;
	Wed, 23 Oct 2024 20:33:01 +0200 (CEST)
Received: from mails.dpdk.org (localhost [127.0.0.1])
	by mails.dpdk.org (Postfix) with ESMTP id A418842F01;
	Wed, 23 Oct 2024 20:33:01 +0200 (CEST)
Received: from egress-ip11a.ess.de.barracuda.com
 (egress-ip11a.ess.de.barracuda.com [18.184.203.234])
 by mails.dpdk.org (Postfix) with ESMTP id 7D693402A7
 for <dev@dpdk.org>; Wed, 23 Oct 2024 20:32:58 +0200 (CEST)
Received: from EUR05-VI1-obe.outbound.protection.outlook.com
 (mail-vi1eur05lp2169.outbound.protection.outlook.com [104.47.17.169]) by
 mx-outbound42-14.eu-central-1c.ess.aws.cudaops.com (version=TLSv1.2
 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO);
 Wed, 23 Oct 2024 18:32:57 +0000
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=kTHjKddIFPk4I2oaZUjlDlwMUuETWQBKnipAfMwXl3T0IpKyyK6TDTEKiGAi4+2SHdm4B7/aa8c77vV5a9u7OJjOnWKc5txjxjbiH17faXvM7k1fSruGRUMWyUR8AVx0P3zTc3LMd8ORncQBhKI/eSyD9g7ddHiMunhoFzdOGcKMepEY4UC94YZqb2UosJZanzKgGV/H1LdyDAPRVX1L7wF461sKq7bClc+rUOszeItZ7gBjQoUQrlP1U5dgnkbTH1OaQH3+Ghzzsic5A0YgdLFFQ9nXIGdgKhfofyv7mR9j6rpMzKdOc/NGW+JVaj4aW9SdnTI2KLC25OwGooQrVA==
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=gg7exYkNdYOMZ/nCbtkqugJ89HT2ov3g6OKShoxc/As=;
 b=RkWykZwP9q0hRZwu55uf2Urim/z8LJkUY5NOmNQAbbGS4gFxQh3/tNZmOGP3vQrxF50eJOghiezC1LdA5rIqUwqcLFv1rygJVNomasih8hpjsjJgRJg96Ih0XQ33Ika8n1NkYYTh8OM8R/zpZbcVRgGAC7nnoc3C7BHBLDw7YFCPNE8FOTv+9A23mirNUthad4AEJ4pkhE1NDmkTE2RqdK3PL2G78pc0SRRXRN5/rDH7ksRPRsrqbhyWz7ncmpKdCZkxa8Q3beUv1XPgoySQmFb+85zM0eJiN9cBiWLJG0WdbRfBY6pN2ClXozMZK27sIyQDcixVF/wtHoZUw5B4nw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=fail (sender ip is
 178.72.21.4) smtp.rcpttodomain=dpdk.org 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=gg7exYkNdYOMZ/nCbtkqugJ89HT2ov3g6OKShoxc/As=;
 b=lHgdRcJlcipeHAzmIhksHLFxssfEAG1W9maoHrf8exVdvZ59gknjEHKzKCEXnlqqlVG/+qAGO/lOkraVY90dxvpwKcQ7Z8Cxup9oydFbqmWRxx4oSeQVIAStR3Zf36es3qyChzlQ0RoStBs7RNs7PjRUWdm1ztJz3SFarySG2Nw=
Received: from DU7PR01CA0006.eurprd01.prod.exchangelabs.com
 (2603:10a6:10:50f::6) by VI1P190MB0607.EURP190.PROD.OUTLOOK.COM
 (2603:10a6:800:12a::10) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.23; Wed, 23 Oct
 2024 17:01:42 +0000
Received: from DB5PEPF00014B9E.eurprd02.prod.outlook.com
 (2603:10a6:10:50f:cafe::47) by DU7PR01CA0006.outlook.office365.com
 (2603:10a6:10:50f::6) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.31 via Frontend
 Transport; Wed, 23 Oct 2024 17:01:41 +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=localhost.localdomain;
Received: from localhost.localdomain (178.72.21.4) by
 DB5PEPF00014B9E.mail.protection.outlook.com (10.167.8.171) with Microsoft
 SMTP Server id 15.20.8093.14 via Frontend Transport; Wed, 23 Oct 2024
 17:01:41 +0000
From: Serhii Iliushyk <sil-plv@napatech.com>
To: dev@dpdk.org
Cc: mko-plv@napatech.com, sil-plv@napatech.com, ckm@napatech.com,
 andrew.rybchenko@oktetlabs.ru, ferruh.yigit@amd.com,
 Danylo Vodopianov <dvo-plv@napatech.com>
Subject: [PATCH v3 65/73] net/ntnic: add flow aging API
Date: Wed, 23 Oct 2024 19:00:13 +0200
Message-ID: <20241023170032.314155-66-sil-plv@napatech.com>
X-Mailer: git-send-email 2.45.0
In-Reply-To: <20241023170032.314155-1-sil-plv@napatech.com>
References: <20241021210527.2075431-1-sil-plv@napatech.com>
 <20241023170032.314155-1-sil-plv@napatech.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DB5PEPF00014B9E:EE_|VI1P190MB0607:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: 56707144-afa4-4f42-99a3-08dcf3845e10
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
 ARA:13230040|376014|36860700013|1800799024|82310400026; 
X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?hFsMgYydy6DyroyTiBteV1JRh1XzAiO3Aw1hFsluPTS9U+pvkM7TmXgml57L?=
 =?us-ascii?Q?zs6OA+5LD30ykM4jpkpgDc7TA8adN4DWs+oMlJMqPby2TvXfjK0nFNFD86IT?=
 =?us-ascii?Q?MFdl79cb1W3TwWuH9XV/oryQzCcwV9BDn0RVlvtgyExn3Og2h5tyUKmU2eiN?=
 =?us-ascii?Q?JVyrD5XdZbv4GrUbgKrqnygKTWf/fEd9OyG6mC0cTjcqFKZv0lI9BJN0r2Jz?=
 =?us-ascii?Q?t9TfXslyw5u11CsL07fp7A1+hqekxWj9QjtZeGJSD8MAKU6bZHkc0v8DHmBC?=
 =?us-ascii?Q?hwV13s4D+Lzg6S1FPIGN/8lv3KnW+6Rn/fzZnf22ndkVh8UYXxlDSWUiCqzp?=
 =?us-ascii?Q?B+ytLsoHMFmHvpBE7NoefBkx+vNIcE+mmHGZ9JH+CTT9+t7E+VraEkvFusGd?=
 =?us-ascii?Q?+XdoeYF5vIP675jqPyXiF9FSK8hNR3Th3Wc3a1mN18+Sj7+D821ml1raklmS?=
 =?us-ascii?Q?j6xHaeaEeLPWIuo/fkuFaJDk2vSIjCrZV6JjM2P65J0ceR/pVxpFPgIr26ay?=
 =?us-ascii?Q?MzNtm85bNQwuIK8UPObBrCR7hjK7UCcmmN6p3h55bHTuBH0VkQSaaqciangi?=
 =?us-ascii?Q?CHZ68VTeqBGQOhQmaxFWrpp7LQa9rMuZhMmDzyq0+p3d+k/bQ+AJRxUeKFjG?=
 =?us-ascii?Q?ouk2RfI9HYDhLkM9QjmCg81hIpOQR+PSmZmaHpPlUOYGMMO2hlLWTpos7bOh?=
 =?us-ascii?Q?QfB+MqDSV3nsAksvVVe7OD4/cDUFKcTrYLJw/cn7/elYr8HFxKn3vn7YLR/6?=
 =?us-ascii?Q?bnYIxNM8qO9QzpRDnENaMJObFunvsmSa1kYI5uB/8QSfUveWrf06qNvN0O4d?=
 =?us-ascii?Q?gUGb7y7d9BQy/Blv/A1FTrSVLEF31JnVZS5nIyP8peoSKCsGf/H7kYJJMEiq?=
 =?us-ascii?Q?4QqRxxT/1Wr9GoEAJXMykEyTsD2Zj1aCi7bUKMCUV0SKU7LRMswb1zVsCH9s?=
 =?us-ascii?Q?tHeY1DHzRcHSXw0KNvaCLcukzQIZW8CFcQGOdmCq/RCbpi2McpgqbM4pUmt9?=
 =?us-ascii?Q?ZW38GTi+ypKmYw5qCYPYwk9wZRzZ58e1I3swn8OpIk9R6B4WSqRmKtskTJCj?=
 =?us-ascii?Q?Y7zPpqQS36nFbYs7ldjGwXuVQFQ0vvxbwfDMguJO/TI/M41PaWOJt9s6G30M?=
 =?us-ascii?Q?Hr6g8lGqu3E1SW5flvSgGP+T78GbuDIv6Ho/WfXl13hmOfKHxn3sW61YYlJu?=
 =?us-ascii?Q?ab9dCairQV2+a3qvoAHypiWSabXploRfVsLHTUWFAH/EFTicQkaVTqUd1bn3?=
 =?us-ascii?Q?V/TpNRshoSiV57JOU3i5zCqERA5aNI2GYWq4BivAXB3UhKZQh3ceM/YVLuWZ?=
 =?us-ascii?Q?26Ly3189RTkAKanOnjHR5KGH9jcq/3tHNlL7qYrh4d+569JMcTGPcsts1euX?=
 =?us-ascii?Q?122GDLmdCyjuuIyswtvpwZ7U4R61NtnnW11zYgzlhWUhqkSKgA=3D=3D?=
X-Forefront-Antispam-Report: CIP:178.72.21.4; CTRY:DK; LANG:en; SCL:1; SRV:;
 IPV:NLI; SFV:NSPM; H:localhost.localdomain; PTR:InfoDomainNonexistent;
 CAT:NONE; SFS:(13230040)(376014)(36860700013)(1800799024)(82310400026);
 DIR:OUT; SFP:1102; 
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: rubi/dckfjagXMeIGm8Ko3T8yzoW8HOiTEwYcz3vUha/RK/LZQy1nHeHTufaQBMBOrYZX6b6bJVt5WEfnpoHLs7kNxYffcqpoDPZKYF0n40MyYnEraeQRMeE2TsX4ABwChusVKLMU/w3WAf8h0609pwVhzFU55VsfiN7om6sVRfRsebvVmTnz5ZNfWbv9mStqj2GZUmeC7KVk47PDfxCLcjIdGJoccLo6FvHZcKUEtjKvUk9sjkgN+7hmJWdWgrIPNwKEzJAr1WpgBkkdk1ksm+EXZRHdxotR4HrJpECfLBDswzwggNme+qbBxDzY4+QZXmSvff0we6UtReGiGqO2t9MVpmM1rbKqbiYJ2HYSk73mSAhT3a+ePmejm/2E60wpizp03mXWoYu+odvKC1IQyNKDwV2mA6IDiIPmTL9SDhDlYFWd7uZWaERbyf/v70TylV4pdjBUPhpK9CpieNqZ1LUqS2TLqufyGi8GkeKhuaUp4EPCxmu2C67Bo6lsHWns68bRH00lhR5ABNE2UMMVFNzsqJwSFbvl570tU1aaj0+Chz+3Kkyw1OF6i8mkHCgpLbTv+5L2MDIyWHJ2XnPUZUsRlpbdtlkF0sofIDWWfED6+rblBKfytU8nMVwPaQ8UI3Uth5/JAOvUwD/ulbCXUYcM9Ks8RpXs01B8qcbrSY=
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Oct 2024 17:01:41.5865 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 56707144-afa4-4f42-99a3-08dcf3845e10
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=[localhost.localdomain]
X-MS-Exchange-CrossTenant-AuthSource: DB5PEPF00014B9E.eurprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1P190MB0607
X-OriginatorOrg: napatech.com
X-BESS-ID: 1729708377-310766-12792-45798-1
X-BESS-VER: 2019.1_20241018.1852
X-BESS-Apparent-Source-IP: 104.47.17.169
X-BESS-Parts: H4sIAAAAAAACA4uuVkqtKFGyUioBkjpK+cVKVubmxpZAVgZQMNnYOM3ALDUxzc
 TE1DI5xSzNJCnNIinV2CI5zSjFJDVRqTYWAPZojitBAAAA
X-BESS-Outbound-Spam-Score: 0.00
X-BESS-Outbound-Spam-Report: Code version 3.2,
 rules version 3.2.2.259926 [from 
 cloudscan19-22.eu-central-1b.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

From: Danylo Vodopianov <dvo-plv@napatech.com>

add flow aging API to the ops structure

Signed-off-by: Danylo Vodopianov <dvo-plv@napatech.com>
---
 drivers/net/ntnic/nthw/flow_api/flow_api.c    | 71 +++++++++++++++
 drivers/net/ntnic/ntnic_filter/ntnic_filter.c | 88 +++++++++++++++++++
 drivers/net/ntnic/ntnic_mod_reg.h             | 21 +++++
 3 files changed, 180 insertions(+)

diff --git a/drivers/net/ntnic/nthw/flow_api/flow_api.c b/drivers/net/ntnic/nthw/flow_api/flow_api.c
index efe9a1a3b9..b101a9462e 100644
--- a/drivers/net/ntnic/nthw/flow_api/flow_api.c
+++ b/drivers/net/ntnic/nthw/flow_api/flow_api.c
@@ -1048,6 +1048,70 @@ int flow_nic_set_hasher_fields(struct flow_nic_dev *ndev, int hsh_idx,
 	return profile_inline_ops->flow_nic_set_hasher_fields_inline(ndev, hsh_idx, rss_conf);
 }
 
+static int flow_get_aged_flows(struct flow_eth_dev *dev,
+	uint16_t caller_id,
+	void **context,
+	uint32_t nb_contexts,
+	struct rte_flow_error *error)
+{
+	const struct profile_inline_ops *profile_inline_ops = get_profile_inline_ops();
+
+	if (profile_inline_ops == NULL) {
+		NT_LOG_DBGX(ERR, FILTER, "profile_inline_ops uninitialized");
+		return -1;
+	}
+
+	if (nb_contexts > 0 && !context) {
+		error->type = RTE_FLOW_ERROR_TYPE_UNSPECIFIED;
+		error->message = "rte_flow_get_aged_flows - empty context";
+		return -1;
+	}
+
+	return profile_inline_ops->flow_get_aged_flows_profile_inline(dev, caller_id, context,
+			nb_contexts, error);
+}
+
+static int flow_info_get(struct flow_eth_dev *dev, uint8_t caller_id,
+	struct rte_flow_port_info *port_info, struct rte_flow_queue_info *queue_info,
+	struct rte_flow_error *error)
+{
+	(void)dev;
+	(void)caller_id;
+	(void)port_info;
+	(void)queue_info;
+	(void)error;
+
+	const struct profile_inline_ops *profile_inline_ops = get_profile_inline_ops();
+
+	if (profile_inline_ops == NULL) {
+		NT_LOG_DBGX(ERR, FILTER, "profile_inline module uninitialized");
+		return -1;
+	}
+
+	return 0;
+}
+
+static int flow_configure(struct flow_eth_dev *dev, uint8_t caller_id,
+	const struct rte_flow_port_attr *port_attr, uint16_t nb_queue,
+	const struct rte_flow_queue_attr *queue_attr[], struct rte_flow_error *error)
+{
+	(void)dev;
+	(void)caller_id;
+	(void)port_attr;
+	(void)queue_attr;
+	(void)nb_queue;
+	(void)error;
+
+	const struct profile_inline_ops *profile_inline_ops = get_profile_inline_ops();
+
+	if (profile_inline_ops == NULL) {
+		NT_LOG_DBGX(ERR, FILTER, "profile_inline module uninitialized");
+		return -1;
+	}
+
+	return 0;
+}
+
 int flow_get_flm_stats(struct flow_nic_dev *ndev, uint64_t *data, uint64_t size)
 {
 	const struct profile_inline_ops *profile_inline_ops = get_profile_inline_ops();
@@ -1076,6 +1140,13 @@ static const struct flow_filter_ops ops = {
 	.flow_flush = flow_flush,
 	.flow_dev_dump = flow_dev_dump,
 	.flow_get_flm_stats = flow_get_flm_stats,
+	.flow_get_aged_flows = flow_get_aged_flows,
+
+	/*
+	 * NT Flow asynchronous operations API
+	 */
+	.flow_info_get = flow_info_get,
+	.flow_configure = flow_configure,
 
 	/*
 	 * Other
diff --git a/drivers/net/ntnic/ntnic_filter/ntnic_filter.c b/drivers/net/ntnic/ntnic_filter/ntnic_filter.c
index e2fce02afa..9f8670b32d 100644
--- a/drivers/net/ntnic/ntnic_filter/ntnic_filter.c
+++ b/drivers/net/ntnic/ntnic_filter/ntnic_filter.c
@@ -718,6 +718,91 @@ static int eth_flow_dev_dump(struct rte_eth_dev *eth_dev,
 	return res;
 }
 
+static int eth_flow_get_aged_flows(struct rte_eth_dev *eth_dev,
+	void **context,
+	uint32_t nb_contexts,
+	struct rte_flow_error *error)
+{
+	const struct flow_filter_ops *flow_filter_ops = get_flow_filter_ops();
+
+	if (flow_filter_ops == NULL) {
+		NT_LOG_DBGX(ERR, NTNIC, "flow_filter module uninitialized");
+		return -1;
+	}
+
+	struct pmd_internals *internals = (struct pmd_internals *)eth_dev->data->dev_private;
+
+	static struct rte_flow_error flow_error = {
+		.type = RTE_FLOW_ERROR_TYPE_NONE,
+		.message = "none" };
+
+	uint16_t caller_id = get_caller_id(eth_dev->data->port_id);
+
+	int res = flow_filter_ops->flow_get_aged_flows(internals->flw_dev, caller_id, context,
+			nb_contexts, &flow_error);
+
+	convert_error(error, &flow_error);
+	return res;
+}
+
+/*
+ * NT Flow asynchronous operations API
+ */
+
+static int eth_flow_info_get(struct rte_eth_dev *dev, struct rte_flow_port_info *port_info,
+	struct rte_flow_queue_info *queue_info, struct rte_flow_error *error)
+{
+	const struct flow_filter_ops *flow_filter_ops = get_flow_filter_ops();
+
+	if (flow_filter_ops == NULL) {
+		NT_LOG_DBGX(ERR, FILTER, "flow_filter module uninitialized");
+		return -1;
+	}
+
+	struct pmd_internals *internals = dev->data->dev_private;
+
+	static struct rte_flow_error flow_error = {
+		.type = RTE_FLOW_ERROR_TYPE_NONE,
+		.message = "none" };
+
+	int res = flow_filter_ops->flow_info_get(internals->flw_dev,
+			get_caller_id(dev->data->port_id),
+			(struct rte_flow_port_info *)port_info,
+			(struct rte_flow_queue_info *)queue_info,
+			&flow_error);
+
+	convert_error(error, &flow_error);
+	return res;
+}
+
+static int eth_flow_configure(struct rte_eth_dev *dev, const struct rte_flow_port_attr *port_attr,
+	uint16_t nb_queue, const struct rte_flow_queue_attr *queue_attr[],
+	struct rte_flow_error *error)
+{
+	const struct flow_filter_ops *flow_filter_ops = get_flow_filter_ops();
+
+	if (flow_filter_ops == NULL) {
+		NT_LOG_DBGX(ERR, FILTER, "flow_filter module uninitialized");
+		return -1;
+	}
+
+	struct pmd_internals *internals = dev->data->dev_private;
+
+	static struct rte_flow_error flow_error = {
+		.type = RTE_FLOW_ERROR_TYPE_NONE,
+		.message = "none" };
+
+	int res = flow_filter_ops->flow_configure(internals->flw_dev,
+			get_caller_id(dev->data->port_id),
+			(const struct rte_flow_port_attr *)port_attr,
+			nb_queue,
+			(const struct rte_flow_queue_attr **)queue_attr,
+			&flow_error);
+
+	convert_error(error, &flow_error);
+	return res;
+}
+
 static int poll_statistics(struct pmd_internals *internals)
 {
 	int flow;
@@ -844,6 +929,9 @@ static const struct rte_flow_ops dev_flow_ops = {
 	.destroy = eth_flow_destroy,
 	.flush = eth_flow_flush,
 	.dev_dump = eth_flow_dev_dump,
+	.get_aged_flows = eth_flow_get_aged_flows,
+	.info_get = eth_flow_info_get,
+	.configure = eth_flow_configure,
 };
 
 void dev_flow_init(void)
diff --git a/drivers/net/ntnic/ntnic_mod_reg.h b/drivers/net/ntnic/ntnic_mod_reg.h
index 7325bd1ea8..52f197e873 100644
--- a/drivers/net/ntnic/ntnic_mod_reg.h
+++ b/drivers/net/ntnic/ntnic_mod_reg.h
@@ -286,6 +286,12 @@ struct profile_inline_ops {
 		FILE *file,
 		struct rte_flow_error *error);
 
+	int (*flow_get_aged_flows_profile_inline)(struct flow_eth_dev *dev,
+		uint16_t caller_id,
+		void **context,
+		uint32_t nb_contexts,
+		struct rte_flow_error *error);
+
 	int (*flow_nic_set_hasher_fields_inline)(struct flow_nic_dev *ndev,
 		int hsh_idx,
 		struct nt_eth_rss_conf rss_conf);
@@ -355,6 +361,21 @@ struct flow_filter_ops {
 	int (*flow_nic_set_hasher_fields)(struct flow_nic_dev *ndev, int hsh_idx,
 		struct nt_eth_rss_conf rss_conf);
 	int (*hw_mod_hsh_rcp_flush)(struct flow_api_backend_s *be, int start_idx, int count);
+
+	int (*flow_get_aged_flows)(struct flow_eth_dev *dev,
+		uint16_t caller_id,
+		void **context,
+		uint32_t nb_contexts,
+		struct rte_flow_error *error);
+
+	int (*flow_info_get)(struct flow_eth_dev *dev, uint8_t caller_id,
+		struct rte_flow_port_info *port_info, struct rte_flow_queue_info *queue_info,
+		struct rte_flow_error *error);
+
+	int (*flow_configure)(struct flow_eth_dev *dev, uint8_t caller_id,
+		const struct rte_flow_port_attr *port_attr, uint16_t nb_queue,
+		const struct rte_flow_queue_attr *queue_attr[],
+		struct rte_flow_error *error);
 };
 
 void register_dev_flow_ops(const struct rte_flow_ops *ops);
-- 
2.45.0