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 44FE545ACC;
	Sun,  6 Oct 2024 22:40:36 +0200 (CEST)
Received: from mails.dpdk.org (localhost [127.0.0.1])
	by mails.dpdk.org (Postfix) with ESMTP id 989E740DCD;
	Sun,  6 Oct 2024 22:38:14 +0200 (CEST)
Received: from egress-ip42a.ess.de.barracuda.com
 (egress-ip42a.ess.de.barracuda.com [18.185.115.201])
 by mails.dpdk.org (Postfix) with ESMTP id 553C540A4B
 for <dev@dpdk.org>; Sun,  6 Oct 2024 22:37:54 +0200 (CEST)
Received: from EUR02-VI1-obe.outbound.protection.outlook.com
 (mail-vi1eur02lp2045.outbound.protection.outlook.com [104.47.11.45]) by
 mx-outbound8-201.eu-central-1a.ess.aws.cudaops.com (version=TLSv1.2
 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO);
 Sun, 06 Oct 2024 20:37:53 +0000
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=sx/1S1AG5D6VyvQ01mzbDO+9eJj+kfgeEUDOZ9HHSJt8kkr29mB6oaCZ92jUoDjllGoHOiTgj6koglwpCDSByPNSG3bRLoqASHDYk60r5fwdpJbIcTVjamG5HkjzOm2S4ntl14kowiYkdAWtRprXb5GXZBxdodZo7jioYvEdN/ACNT6QogPajKzJD3wohETgjWKFOSNKJ/JXnLpDfmwqiDAlaTFF6T/bB4303IM/++zabDISPLpifpsqmBZe5MCqOhy+2ntPijQdW7a+qXQMI8jcFQUeOQqbpYGUasOWLFcZAvO6ZrubxhXUB3O4OLfgkBviaUn1uQDZPi0gov/srQ==
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=iC2fEP617U9Ale0rtyGA8Ykji7USJBbdrpOBtr5suaw=;
 b=pUZ3Oj51Wfpp+c7zywZO+Pj18YnD6rSu16icFCn0HObcnBmeDdCeZCME6dEZQUa3wHV9VDjHmapRsiJHTfRi3upY5PcQlKFaFMctO8PAEC1NE5n9xkqQTxP6C8jhVwbhVipedXEzVARQ0LWGxmQ3+EGptbEalhRiE4IuLvklD7wTbRi3mNwTCXKB/Bsb7GBGj8Ht6n0YA5opsgfZQnQ97aD8r7AV69h7EyAQEhrY5JuTsR5eo0QTAUviQBrwuLRetPb/eTUgdy5NJBI5jYQPcMaRG7JToch7gNZrELaqT5zECCF7ZhZDxKa2fa6Iuj4bTKPOb90MdfMtRlQYgmNNZQ==
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=iC2fEP617U9Ale0rtyGA8Ykji7USJBbdrpOBtr5suaw=;
 b=ZgvVQ0ktOulZkPaWdDyRLlBsbPAaNgqyxrbkHHescevVXD+xAnS2qJIsftO1CqndH6NEmLvVAwsRzSOksTGxvr4nuOQWo6fVOj2eAvEni7nGCpc+PZ9IkW/jnOnG9OpxjlhlSshgTzLZSYCQ1Q3UAfJA5XRyh4nPERay4+igbSc=
Received: from AM6PR04CA0013.eurprd04.prod.outlook.com (2603:10a6:20b:92::26)
 by AM9P190MB1185.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:273::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.22; Sun, 6 Oct
 2024 20:37:50 +0000
Received: from AMS0EPF00000190.eurprd05.prod.outlook.com
 (2603:10a6:20b:92:cafe::1b) by AM6PR04CA0013.outlook.office365.com
 (2603:10a6:20b:92::26) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.20 via Frontend
 Transport; Sun, 6 Oct 2024 20:37:50 +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
 AMS0EPF00000190.mail.protection.outlook.com (10.167.16.213) with Microsoft
 SMTP Server id 15.20.7918.13 via Frontend Transport; Sun, 6 Oct 2024 20:37:49
 +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,
 Oleksandr Kolomeiets <okl-plv@napatech.com>
Subject: [PATCH v1 23/50] net/ntnic: add insert (Tx INS) flow module
Date: Sun,  6 Oct 2024 22:36:50 +0200
Message-ID: <20241006203728.330792-24-sil-plv@napatech.com>
X-Mailer: git-send-email 2.45.0
In-Reply-To: <20241006203728.330792-1-sil-plv@napatech.com>
References: <20241006203728.330792-1-sil-plv@napatech.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: AMS0EPF00000190:EE_|AM9P190MB1185:EE_
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: ef21ed9f-06b2-4891-037f-08dce646beb5
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
 ARA:13230040|82310400026|36860700013|1800799024|376014; 
X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?weRKq3v9i+xQRfh4ZLh+Lxcb0c8iH872XncNaDR6iFErg1urI9ohOrEb4FTK?=
 =?us-ascii?Q?gnwdbe0gLfmLQFpkUvUcmR6+ETSq2ngQKTl3a2Vgr8qWxzcR38f0Vs66Z2rl?=
 =?us-ascii?Q?5c1Q5usvOZHm4pMyULs9+lqINulO2rxvv8Ovc2n2WDT5wBLO/djcxHQ4Q5hG?=
 =?us-ascii?Q?DKOCb5VjjZBPigzwQUBEZI9T5BH6yr/re4ppre4n533bXbrXY+WtQgQFPjos?=
 =?us-ascii?Q?M/62jlxXrMl8Tbu0m3w5s9iuIONdgn80LYMYD6yeAN3fojT7HNUeoU1xqnNk?=
 =?us-ascii?Q?8QUKamDOeGV6AHbfZhhxFK88ODIkYc4YcM9fJVSP92cchE8ZxxC/rcO1qtDg?=
 =?us-ascii?Q?TZBWSxLjjeS7gFKU3oQ+eA6Y3O6tNs7ohs5V17M8ucz7NzJiiHH9QEhkrnht?=
 =?us-ascii?Q?rTnMpVXV5oH04kzorEMt9qlO+v2NWHRVgbXyM/QXA+HHeeq4Ct+r5XPuo5u2?=
 =?us-ascii?Q?gcsAUz/aX/6yhSqXNDol9OLNOfWLnZrqNo/4bMK0qNSkyJGDDmgeZQAaYsR9?=
 =?us-ascii?Q?I/C8hVlo1TvnK+40ZkGA5sJ3N5leFbkQkLL0gvVkyJ/HMQ8dtE8Tp/GUHXje?=
 =?us-ascii?Q?me4RXUVLcseVrX/9ySJ8UYehPTNrbZtVJgMNSxsU6MuYnvNJgslm6fbYm3B2?=
 =?us-ascii?Q?wU0PpzwCuO5vtCmoR83uy9ocE/wASgeEE+8ZXH4HWeyqKI+sfk2DlRrksu4T?=
 =?us-ascii?Q?/mRKL6WurFAzA1w19B3If3G+JVZVH7pTigc7jhjINXxciUwvMJeRIcUzMNtt?=
 =?us-ascii?Q?Xdf5ZXgICFmbDAspqB8x4gDVFTQvqEKMN3YkiN/U4fWQjq98wRvDvaeqwBGc?=
 =?us-ascii?Q?WV6A5YmpQ5RwNCOaoDwGVGixsxqM+wPg0WJmdaMqphDpPRcx6CTKNjdQM8oT?=
 =?us-ascii?Q?Lgock/gKHwDbtGRnO8xKnGk6xh9PcDsjIDPz0YDzjI0yKkfT+m/acsu8NYl0?=
 =?us-ascii?Q?Xv0p2Jk/j4nN6urR+F0nYtjq/f3EnKbK5fpaDp7qZS6X/QQkDKSgKr4CE6UI?=
 =?us-ascii?Q?B6vyAzdt3iW8fhKzY5Pnb3cacVPWKp05DhRErDfu0208l7zmHq3AX2T4aNnp?=
 =?us-ascii?Q?uQfbZ9oOWhVK2/moL3gV3cWf/5hn4vFnTBEjruyMiyw51YNdAnjMuk52ReLL?=
 =?us-ascii?Q?1bJvUYQTOEXrkB/qnjRvsWy80p7eda+flzJIfixwUza3v0JIGbvugB1aZcWz?=
 =?us-ascii?Q?GLcqNGFhNC7oNAQWjEMCMj/aGsp1Vw+fboQLaQ+6qcSLU1XsmIh1HkPJrPDl?=
 =?us-ascii?Q?ksVKN5gPGG0U+BV0ym4OhX+iFn/Xn6FZgZXcmBwZN27NO2fp6W/Udq1mOeHM?=
 =?us-ascii?Q?ytUVuBhVO0Tq0bXmd+Zd5A77lfumKUoaXTL30Khg5xptBHkvtfJwXMR4M0Gk?=
 =?us-ascii?Q?UFbnRbnbbwUPulptfk0r5OG418xb?=
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)(82310400026)(36860700013)(1800799024)(376014);
 DIR:OUT; SFP:1102; 
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: bap4KZ3Kzd2DVnHtakE5QDSmD1GDeVoiYkIB3rtw20WeY/zuTRjIV3bQLok1nruADy5q+JPr/B88+3KkQ6yUHuOxmKX8OQ4dv7FoMvNFw5Qd6Cqb8lR4uaS6IS5XZa7y38xBWij91HsqjefcSUZjjlfr2jttiJrBXfABEDDpC3kSWziynMvMwJScvraJ2E9y4zmuFw3Kkygyrhk8wZDiUlttYXFnA0Nz0a+u8ISWU2Y/TXPCkAMiVdiJ3GUzHctZG52XEi3DCO+JKXjJHcGnUbwy5WcVsFIMpGTXhthuNVYEmOjZ8moEKxYFZW4m7c4XCr0QUF+Z5voWDRm3DvCNR/ht+DAQnyfLySJhgtvEZGQu5YMbFFtkSj7cUu2//Yry822ozbietX6Ev19yJz5CqVWhCQP+cluYzqqJ0ByZ7cqedMQ/Cq/eX4c4wnqB0PAKYZcUz/7gOyjCTisoxjvZjdkFU15o3pGO7mjZCN8WqtCSyH1AZ9uh04VaXBOOGVljbrmeF/KAmj3JeypojmsPb6Hl7j+fV4dFYAD0AagMLCEBvmWK7d8LOy+YpTHchSpKU4UMU+rRI8jIGM6dRjCnLqQk9A/Q1N8tAJc/OAhY16i/kfA/wotF/iwOm3okXTIM9wvfwGqLqDv3n0D36jFjag==
X-OriginatorOrg: napatech.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Oct 2024 20:37:49.9994 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: ef21ed9f-06b2-4891-037f-08dce646beb5
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: AMS0EPF00000190.eurprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9P190MB1185
X-BESS-ID: 1728247071-302249-12638-126744-2
X-BESS-VER: 2019.1_20240924.1654
X-BESS-Apparent-Source-IP: 104.47.11.45
X-BESS-Parts: H4sIAAAAAAACA4uuVkqtKFGyUioBkjpK+cVKVpbG5oZAVgZQ0NDQIMnE2Cwlyc
 DI1MTEJDEl2cAsKdXcPCkxKcXUNDFNqTYWAPYdeH9BAAAA
X-BESS-Outbound-Spam-Score: 0.50
X-BESS-Outbound-Spam-Report: Code version 3.2,
 rules version 3.2.2.259547 [from 
 cloudscan15-133.eu-central-1a.ess.aws.cudaops.com]
 Rule breakdown below
 pts rule name              description
 ---- ---------------------- --------------------------------
 0.50 BSF_RULE7568M          META: Custom Rule 7568M 
 0.00 BSF_BESS_OUTBOUND      META: BESS Outbound 
X-BESS-Outbound-Spam-Status: SCORE=0.50 using account:ESS113687 scores of
 KILL_LEVEL=7.0 tests=BSF_RULE7568M, 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: Oleksandr Kolomeiets <okl-plv@napatech.com>

he TX Inserter module injects zeros into an offset of a packet,
effectively expanding the packet.

Signed-off-by: Oleksandr Kolomeiets <okl-plv@napatech.com>
---
 drivers/net/ntnic/meson.build                 |  1 +
 .../nthw/flow_api/flow_backend/flow_backend.c | 13 ++++
 .../ntnic/nthw/flow_filter/flow_nthw_tx_ins.c | 62 +++++++++++++++++++
 .../ntnic/nthw/flow_filter/flow_nthw_tx_ins.h | 35 +++++++++++
 .../ntnic/nthw/supported/nthw_fpga_mod_defs.h |  1 +
 .../ntnic/nthw/supported/nthw_fpga_reg_defs.h |  2 +
 .../nthw/supported/nthw_fpga_reg_defs_ins.h   | 30 +++++++++
 .../supported/nthw_fpga_reg_defs_tx_ins.h     | 23 +++++++
 8 files changed, 167 insertions(+)
 create mode 100644 drivers/net/ntnic/nthw/flow_filter/flow_nthw_tx_ins.c
 create mode 100644 drivers/net/ntnic/nthw/flow_filter/flow_nthw_tx_ins.h
 create mode 100644 drivers/net/ntnic/nthw/supported/nthw_fpga_reg_defs_ins.h
 create mode 100644 drivers/net/ntnic/nthw/supported/nthw_fpga_reg_defs_tx_ins.h

diff --git a/drivers/net/ntnic/meson.build b/drivers/net/ntnic/meson.build
index cc5e6fe100..7e0900f0eb 100644
--- a/drivers/net/ntnic/meson.build
+++ b/drivers/net/ntnic/meson.build
@@ -59,6 +59,7 @@ sources = files(
         'nthw/flow_filter/flow_nthw_rpp_lr.c',
         'nthw/flow_filter/flow_nthw_slc_lr.c',
         'nthw/flow_filter/flow_nthw_tx_cpy.c',
+        'nthw/flow_filter/flow_nthw_tx_ins.c',
         'nthw/model/nthw_fpga_model.c',
         'nthw/nthw_platform.c',
         'nthw/nthw_rac.c',
diff --git a/drivers/net/ntnic/nthw/flow_api/flow_backend/flow_backend.c b/drivers/net/ntnic/nthw/flow_api/flow_backend/flow_backend.c
index c12a3204bc..1b4c6d6b4d 100644
--- a/drivers/net/ntnic/nthw/flow_api/flow_backend/flow_backend.c
+++ b/drivers/net/ntnic/nthw/flow_api/flow_backend/flow_backend.c
@@ -18,6 +18,7 @@
 #include "flow_nthw_pdb.h"
 #include "flow_nthw_rpp_lr.h"
 #include "flow_nthw_tx_cpy.h"
+#include "flow_nthw_tx_ins.h"
 #include "ntnic_mod_reg.h"
 #include "nthw_fpga_model.h"
 #include "hw_mod_backend.h"
@@ -43,6 +44,7 @@ static struct backend_dev_s {
 	struct hfu_nthw *p_hfu_nthw;    /* TPE module */
 	struct rpp_lr_nthw *p_rpp_lr_nthw;      /* TPE module */
 	struct tx_cpy_nthw *p_tx_cpy_nthw;      /* TPE module */
+	struct tx_ins_nthw *p_tx_ins_nthw;      /* TPE module */
 	struct csu_nthw *p_csu_nthw;    /* TPE module */
 	struct ifr_nthw *p_ifr_nthw;    /* TPE module */
 } be_devs[MAX_PHYS_ADAPTERS];
@@ -1831,6 +1833,16 @@ const struct flow_api_backend_ops *bin_flow_backend_init(nthw_fpga_t *p_fpga, vo
 		be_devs[physical_adapter_no].p_csu_nthw = NULL;
 	}
 
+	/* Init nthw TX_INS */
+	if (tx_ins_nthw_init(NULL, p_fpga, physical_adapter_no) == 0) {
+		struct tx_ins_nthw *ptr = tx_ins_nthw_new();
+		tx_ins_nthw_init(ptr, p_fpga, physical_adapter_no);
+		be_devs[physical_adapter_no].p_tx_ins_nthw = ptr;
+
+	} else {
+		be_devs[physical_adapter_no].p_tx_ins_nthw = NULL;
+	}
+
 	be_devs[physical_adapter_no].adapter_no = physical_adapter_no;
 	*dev = (void *)&be_devs[physical_adapter_no];
 
@@ -1852,6 +1864,7 @@ static void bin_flow_backend_done(void *dev)
 	hfu_nthw_delete(be_dev->p_hfu_nthw);
 	rpp_lr_nthw_delete(be_dev->p_rpp_lr_nthw);
 	tx_cpy_nthw_delete(be_dev->p_tx_cpy_nthw);
+	tx_ins_nthw_delete(be_dev->p_tx_ins_nthw);
 }
 
 static const struct flow_backend_ops ops = {
diff --git a/drivers/net/ntnic/nthw/flow_filter/flow_nthw_tx_ins.c b/drivers/net/ntnic/nthw/flow_filter/flow_nthw_tx_ins.c
new file mode 100644
index 0000000000..5d9867981e
--- /dev/null
+++ b/drivers/net/ntnic/nthw/flow_filter/flow_nthw_tx_ins.c
@@ -0,0 +1,62 @@
+/*
+ * SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2023 Napatech A/S
+ */
+
+#include <stdlib.h>
+#include <string.h>
+
+#include "ntlog.h"
+#include "nthw_drv.h"
+#include "nthw_register.h"
+
+#include "flow_nthw_tx_ins.h"
+
+struct tx_ins_nthw *tx_ins_nthw_new(void)
+{
+	struct tx_ins_nthw *p = malloc(sizeof(struct tx_ins_nthw));
+
+	if (p)
+		(void)memset(p, 0, sizeof(*p));
+
+	return p;
+}
+
+void tx_ins_nthw_delete(struct tx_ins_nthw *p)
+{
+	if (p) {
+		(void)memset(p, 0, sizeof(*p));
+		free(p);
+	}
+}
+
+int tx_ins_nthw_init(struct tx_ins_nthw *p, nthw_fpga_t *p_fpga, int n_instance)
+{
+	const char *const p_adapter_id_str = p_fpga->p_fpga_info->mp_adapter_id_str;
+	nthw_module_t *p_mod = nthw_fpga_query_module(p_fpga, MOD_TX_INS, n_instance);
+
+	assert(n_instance >= 0 && n_instance < 256);
+
+	if (p == NULL)
+		return p_mod == NULL ? -1 : 0;
+
+	if (p_mod == NULL) {
+		NT_LOG(ERR, NTHW, "%s: TxIns %d: no such instance\n", p_adapter_id_str,
+			n_instance);
+		return -1;
+	}
+
+	p->mp_fpga = p_fpga;
+	p->m_physical_adapter_no = (uint8_t)n_instance;
+	p->m_tx_ins = nthw_fpga_query_module(p_fpga, MOD_TX_INS, n_instance);
+
+	p->mp_rcp_ctrl = nthw_module_get_register(p->m_tx_ins, INS_RCP_CTRL);
+	p->mp_rcp_addr = nthw_register_get_field(p->mp_rcp_ctrl, INS_RCP_CTRL_ADR);
+	p->mp_rcp_cnt = nthw_register_get_field(p->mp_rcp_ctrl, INS_RCP_CTRL_CNT);
+	p->mp_rcp_data = nthw_module_get_register(p->m_tx_ins, INS_RCP_DATA);
+	p->mp_rcp_data_dyn = nthw_register_get_field(p->mp_rcp_data, INS_RCP_DATA_DYN);
+	p->mp_rcp_data_ofs = nthw_register_get_field(p->mp_rcp_data, INS_RCP_DATA_OFS);
+	p->mp_rcp_data_len = nthw_register_get_field(p->mp_rcp_data, INS_RCP_DATA_LEN);
+
+	return 0;
+}
diff --git a/drivers/net/ntnic/nthw/flow_filter/flow_nthw_tx_ins.h b/drivers/net/ntnic/nthw/flow_filter/flow_nthw_tx_ins.h
new file mode 100644
index 0000000000..4e7c4133da
--- /dev/null
+++ b/drivers/net/ntnic/nthw/flow_filter/flow_nthw_tx_ins.h
@@ -0,0 +1,35 @@
+/*
+ * SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2023 Napatech A/S
+ */
+
+#ifndef __FLOW_NTHW_TX_INS_H__
+#define __FLOW_NTHW_TX_INS_H__
+
+#include <stdint.h>
+
+#include "nthw_fpga_model.h"
+
+struct tx_ins_nthw {
+	uint8_t m_physical_adapter_no;
+	nthw_fpga_t *mp_fpga;
+
+	nthw_module_t *m_tx_ins;
+
+	nthw_register_t *mp_rcp_ctrl;
+	nthw_field_t *mp_rcp_addr;
+	nthw_field_t *mp_rcp_cnt;
+
+	nthw_register_t *mp_rcp_data;
+	nthw_field_t *mp_rcp_data_dyn;
+	nthw_field_t *mp_rcp_data_ofs;
+	nthw_field_t *mp_rcp_data_len;
+};
+
+struct tx_ins_nthw *tx_ins_nthw_new(void);
+void tx_ins_nthw_delete(struct tx_ins_nthw *p);
+int tx_ins_nthw_init(struct tx_ins_nthw *p, nthw_fpga_t *p_fpga, int n_instance);
+
+int tx_ins_nthw_setup(struct tx_ins_nthw *p, int n_idx, int n_idx_cnt);
+
+#endif	/* __FLOW_NTHW_TX_INS_H__ */
diff --git a/drivers/net/ntnic/nthw/supported/nthw_fpga_mod_defs.h b/drivers/net/ntnic/nthw/supported/nthw_fpga_mod_defs.h
index 14e031dc69..0d5385a313 100644
--- a/drivers/net/ntnic/nthw/supported/nthw_fpga_mod_defs.h
+++ b/drivers/net/ntnic/nthw/supported/nthw_fpga_mod_defs.h
@@ -39,6 +39,7 @@
 #define MOD_SDC (0xd2369530UL)
 #define MOD_SLC_LR (0x969fc50bUL)
 #define MOD_TX_CPY (0x60acf217UL)
+#define MOD_TX_INS (0x59afa100UL)
 #define MOD_IDX_COUNT (14)
 
 /* aliases - only aliases go below this point */
diff --git a/drivers/net/ntnic/nthw/supported/nthw_fpga_reg_defs.h b/drivers/net/ntnic/nthw/supported/nthw_fpga_reg_defs.h
index 6eebab65a2..605196e30e 100644
--- a/drivers/net/ntnic/nthw/supported/nthw_fpga_reg_defs.h
+++ b/drivers/net/ntnic/nthw/supported/nthw_fpga_reg_defs.h
@@ -26,6 +26,7 @@
 #include "nthw_fpga_reg_defs_i2cm.h"
 #include "nthw_fpga_reg_defs_ifr.h"
 #include "nthw_fpga_reg_defs_iic.h"
+#include "nthw_fpga_reg_defs_ins.h"
 #include "nthw_fpga_reg_defs_km.h"
 #include "nthw_fpga_reg_defs_mac_pcs.h"
 #include "nthw_fpga_reg_defs_pcie3.h"
@@ -40,6 +41,7 @@
 #include "nthw_fpga_reg_defs_slc.h"
 #include "nthw_fpga_reg_defs_slc_lr.h"
 #include "nthw_fpga_reg_defs_tx_cpy.h"
+#include "nthw_fpga_reg_defs_tx_ins.h"
 
 /* aliases */
 
diff --git a/drivers/net/ntnic/nthw/supported/nthw_fpga_reg_defs_ins.h b/drivers/net/ntnic/nthw/supported/nthw_fpga_reg_defs_ins.h
new file mode 100644
index 0000000000..8aaef2a8f6
--- /dev/null
+++ b/drivers/net/ntnic/nthw/supported/nthw_fpga_reg_defs_ins.h
@@ -0,0 +1,30 @@
+/*
+ * SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2024 Napatech A/S
+ */
+
+/*
+ * nthw_fpga_reg_defs_ins.h
+ *
+ * Auto-generated file - do *NOT* edit
+ *
+ */
+
+#ifndef _NTHW_FPGA_REG_DEFS_INS_
+#define _NTHW_FPGA_REG_DEFS_INS_
+
+/* INS */
+#define NTHW_MOD_INS (0x24df4b78UL)
+#define INS_RCP_CTRL (0x93de4e05UL)
+#define INS_RCP_CTRL_ADR (0x3ae620a8UL)
+#define INS_RCP_CTRL_CNT (0x2aeeb979UL)
+#define INS_RCP_DATA (0x3c0fcc1cUL)
+#define INS_RCP_DATA_DYN (0xc6aa4fccUL)
+#define INS_RCP_DATA_LEN (0x2ece4329UL)
+#define INS_RCP_DATA_OFS (0x64a3c26aUL)
+
+#endif	/* _NTHW_FPGA_REG_DEFS_INS_ */
+
+/*
+ * Auto-generated file - do *NOT* edit
+ */
diff --git a/drivers/net/ntnic/nthw/supported/nthw_fpga_reg_defs_tx_ins.h b/drivers/net/ntnic/nthw/supported/nthw_fpga_reg_defs_tx_ins.h
new file mode 100644
index 0000000000..26635bd0a2
--- /dev/null
+++ b/drivers/net/ntnic/nthw/supported/nthw_fpga_reg_defs_tx_ins.h
@@ -0,0 +1,23 @@
+/*
+ * SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2024 Napatech A/S
+ */
+
+/*
+ * nthw_fpga_reg_defs_tx_ins.h
+ *
+ * Auto-generated file - do *NOT* edit
+ *
+ */
+
+#ifndef _NTHW_FPGA_REG_DEFS_TX_INS_
+#define _NTHW_FPGA_REG_DEFS_TX_INS_
+
+/* TX_INS */
+#define NTHW_MOD_TX_INS (0x59afa100UL)
+
+#endif	/* _NTHW_FPGA_REG_DEFS_TX_INS_ */
+
+/*
+ * Auto-generated file - do *NOT* edit
+ */
-- 
2.45.0