From: Serhii Iliushyk <sil-plv@napatech.com>
To: dev@dpdk.org
Cc: mko-plv@napatech.com, sil-plv@napatech.com, ckm@napatech.com,
stephen@networkplumber.org
Subject: [PATCH v1 01/20] net/ntnic: add stubs for init NT400D11
Date: Wed, 1 Oct 2025 17:09:43 +0200 [thread overview]
Message-ID: <20251001151018.250671-2-sil-plv@napatech.com> (raw)
In-Reply-To: <20251001151018.250671-1-sil-plv@napatech.com>
Add stubs for NT400D11 init functions.
These stubs will be replaced with actual implementations in future commits.
Signed-off-by: Serhii Iliushyk <sil-plv@napatech.com>
---
doc/guides/nics/ntnic.rst | 6 +++
drivers/net/ntnic/adapter/nt4ga_adapter.c | 3 +-
drivers/net/ntnic/meson.build | 1 +
.../nthw/core/nt400dxx/nthw_fpga_nt400dxx.c | 41 +++++++++++++++++++
.../core/nt400dxx/reset/nthw_fpga_rst9569.c | 27 ++++++++++++
drivers/net/ntnic/nthw/core/nthw_fpga.c | 1 +
drivers/net/ntnic/nthw/nthw_platform.c | 3 ++
drivers/net/ntnic/nthw/nthw_platform_drv.h | 2 +
drivers/net/ntnic/ntnic_ethdev.c | 1 +
drivers/net/ntnic/ntnic_mod_reg.c | 15 +++++++
drivers/net/ntnic/ntnic_mod_reg.h | 9 ++++
11 files changed, 108 insertions(+), 1 deletion(-)
create mode 100644 drivers/net/ntnic/nthw/core/nt400dxx/reset/nthw_fpga_rst9569.c
diff --git a/doc/guides/nics/ntnic.rst b/doc/guides/nics/ntnic.rst
index a173eaa2ac..5375d89a2d 100644
--- a/doc/guides/nics/ntnic.rst
+++ b/doc/guides/nics/ntnic.rst
@@ -27,6 +27,10 @@ Supported NICs
- FPGA ID 9563 (Inline Flow Management)
+- NT400D11 2x100G SmartNIC
+
+ - FPGA ID 9569 (Inline Flow Management)
+
- NT400D13 2x100G SmartNIC
- FPGA ID 9574 (Inline Flow Management)
@@ -34,6 +38,8 @@ Supported NICs
All information about NT200A02 and NT400D13 can be found by links below:
- https://www.napatech.com/products/nt200a02-smartnic-inline/
+- https://www.napatech.com/products/nt400d11-smartnic-programmable/
+- https://www.napatech.com/products/nt400d13-smartnic-programmable/
- https://www.napatech.com/support/resources/data-sheets/link-inline-software-for-napatech/
diff --git a/drivers/net/ntnic/adapter/nt4ga_adapter.c b/drivers/net/ntnic/adapter/nt4ga_adapter.c
index 6d8547483f..4599f78e3f 100644
--- a/drivers/net/ntnic/adapter/nt4ga_adapter.c
+++ b/drivers/net/ntnic/adapter/nt4ga_adapter.c
@@ -172,10 +172,11 @@ static int nt4ga_adapter_init(struct adapter_info_s *p_adapter_info)
res = link_ops->link_init(p_adapter_info, p_fpga);
break;
+ case 9569: /* NT400D11 (Intel Agilex FPGA) */
case 9574: /* NT400D13 (Intel Agilex FPGA) */
link_ops = nthw_get_agx_100g_link_ops();
if (link_ops == NULL) {
- NT_LOG(ERR, NTNIC, "NT400D11 100G link module uninitialized");
+ NT_LOG(ERR, NTNIC, "NT400Dxx 100G link module uninitialized");
res = -1;
break;
}
diff --git a/drivers/net/ntnic/meson.build b/drivers/net/ntnic/meson.build
index 785ac4836d..038c7d90f6 100644
--- a/drivers/net/ntnic/meson.build
+++ b/drivers/net/ntnic/meson.build
@@ -47,6 +47,7 @@ sources = files(
'nthw/core/nt400dxx/nthw_fpga_nt400dxx.c',
'nthw/core/nt200a0x/reset/nthw_fpga_rst9563.c',
'nthw/core/nt400dxx/reset/nthw_fpga_rst9574.c',
+ 'nthw/core/nt400dxx/reset/nthw_fpga_rst9569.c',
'nthw/core/nt200a0x/reset/nthw_fpga_rst_nt200a0x.c',
'nthw/core/nt400dxx/reset/nthw_fpga_rst_nt400dxx.c',
'nthw/core/nthw_fpga.c',
diff --git a/drivers/net/ntnic/nthw/core/nt400dxx/nthw_fpga_nt400dxx.c b/drivers/net/ntnic/nthw/core/nt400dxx/nthw_fpga_nt400dxx.c
index cc4bee9d4d..99b317d916 100644
--- a/drivers/net/ntnic/nthw/core/nt400dxx/nthw_fpga_nt400dxx.c
+++ b/drivers/net/ntnic/nthw/core/nt400dxx/nthw_fpga_nt400dxx.c
@@ -113,6 +113,7 @@ static int nthw_fpga_nt400dxx_init_sub_systems(struct fpga_info_s *p_fpga_info)
static int nthw_fpga_nt400dxx_init(struct fpga_info_s *p_fpga_info)
{
RTE_ASSERT(p_fpga_info);
+ struct rst9569_ops *rst9569_ops = NULL;
struct rst9574_ops *rst9574_ops = NULL;
const char *const p_adapter_id_str = p_fpga_info->mp_adapter_id_str;
@@ -123,6 +124,29 @@ static int nthw_fpga_nt400dxx_init(struct fpga_info_s *p_fpga_info)
RTE_ASSERT(p_fpga);
switch (p_fpga_info->n_fpga_prod_id) {
+ case 9569:
+ rst9569_ops = nthw_get_rst9569_ops();
+
+ if (rst9569_ops == NULL) {
+ NT_LOG(ERR, NTHW, "%s: RST 9569 NOT INCLUDED", p_adapter_id_str);
+ return -1;
+ }
+
+ res = rst9569_ops->nthw_fpga_rst9569_setup();
+
+ if (res) {
+ NT_LOG(ERR,
+ NTHW,
+ "%s: %s: FPGA=%04d Failed to create reset module res=%d",
+ p_adapter_id_str,
+ __func__,
+ p_fpga_info->n_fpga_prod_id,
+ res);
+ return res;
+ }
+
+ break;
+
case 9574:
rst9574_ops = nthw_get_rst9574_ops();
@@ -183,6 +207,23 @@ static int nthw_fpga_nt400dxx_init(struct fpga_info_s *p_fpga_info)
/* reset specific */
switch (p_fpga_info->n_fpga_prod_id) {
+ case 9569:
+ if (rst9569_ops)
+ res = rst9569_ops->nthw_fpga_rst9569_init();
+
+ if (res) {
+ NT_LOG(ERR,
+ NTHW,
+ "%s: %s: FPGA=%04d - Failed to reset 9569 modules res=%d",
+ p_adapter_id_str,
+ __func__,
+ p_fpga_info->n_fpga_prod_id,
+ res);
+ return res;
+ }
+
+ break;
+
case 9574:
res = rst9574_ops->nthw_fpga_rst9574_init(p_fpga_info, &rst);
diff --git a/drivers/net/ntnic/nthw/core/nt400dxx/reset/nthw_fpga_rst9569.c b/drivers/net/ntnic/nthw/core/nt400dxx/reset/nthw_fpga_rst9569.c
new file mode 100644
index 0000000000..3d1c09fe2d
--- /dev/null
+++ b/drivers/net/ntnic/nthw/core/nt400dxx/reset/nthw_fpga_rst9569.c
@@ -0,0 +1,27 @@
+/*
+ * SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2025 Napatech A/S
+ */
+
+#include "ntnic_mod_reg.h"
+
+
+static int nthw_fpga_rst9569_setup(void)
+{
+ return 0;
+};
+
+static int nthw_fpga_rst9569_init(void)
+{
+ return 0;
+}
+
+static struct rst9569_ops rst9569_ops = {
+ .nthw_fpga_rst9569_init = nthw_fpga_rst9569_init,
+ .nthw_fpga_rst9569_setup = nthw_fpga_rst9569_setup,
+};
+
+void nthw_rst9569_ops_init(void)
+{
+ nthw_reg_rst9569_ops(&rst9569_ops);
+}
diff --git a/drivers/net/ntnic/nthw/core/nthw_fpga.c b/drivers/net/ntnic/nthw/core/nthw_fpga.c
index 24cfb6c284..7ec33aff2d 100644
--- a/drivers/net/ntnic/nthw/core/nthw_fpga.c
+++ b/drivers/net/ntnic/nthw/core/nthw_fpga.c
@@ -440,6 +440,7 @@ int nthw_fpga_init(struct fpga_info_s *p_fpga_info)
res = nt200a0x_ops->nthw_fpga_nt200a0x_init(p_fpga_info);
break;
+ case NT_HW_ADAPTER_ID_NT400D11:
case NT_HW_ADAPTER_ID_NT400D13:
if (nt400dxx_ops != NULL)
res = nt400dxx_ops->nthw_fpga_nt400dxx_init(p_fpga_info);
diff --git a/drivers/net/ntnic/nthw/nthw_platform.c b/drivers/net/ntnic/nthw/nthw_platform.c
index 6f2582d6fe..83e1b38563 100644
--- a/drivers/net/ntnic/nthw/nthw_platform.c
+++ b/drivers/net/ntnic/nthw/nthw_platform.c
@@ -11,6 +11,9 @@ nthw_adapter_id_t nthw_platform_get_adapter_id(const uint16_t n_pci_device_id)
case NT_HW_PCI_DEVICE_ID_NT200A02:
return NT_HW_ADAPTER_ID_NT200A02;
+ case NT_HW_PCI_DEVICE_ID_NT400D11:
+ return NT_HW_ADAPTER_ID_NT400D11;
+
case NT_HW_PCI_DEVICE_ID_NT400D13:
return NT_HW_ADAPTER_ID_NT400D13;
diff --git a/drivers/net/ntnic/nthw/nthw_platform_drv.h b/drivers/net/ntnic/nthw/nthw_platform_drv.h
index db2bc05180..a861c8dd7b 100644
--- a/drivers/net/ntnic/nthw/nthw_platform_drv.h
+++ b/drivers/net/ntnic/nthw/nthw_platform_drv.h
@@ -10,11 +10,13 @@
#define NT_HW_PCI_VENDOR_ID (0x18f4)
#define NT_HW_PCI_DEVICE_ID_NT200A02 (0x1C5)
+#define NT_HW_PCI_DEVICE_ID_NT400D11 (0x215)
#define NT_HW_PCI_DEVICE_ID_NT400D13 (0x295)
enum nthw_adapter_id_e {
NT_HW_ADAPTER_ID_UNKNOWN = 0,
NT_HW_ADAPTER_ID_NT200A02,
+ NT_HW_ADAPTER_ID_NT400D11,
NT_HW_ADAPTER_ID_NT400D13,
};
diff --git a/drivers/net/ntnic/ntnic_ethdev.c b/drivers/net/ntnic/ntnic_ethdev.c
index 42aa2d4095..01b3fe00ef 100644
--- a/drivers/net/ntnic/ntnic_ethdev.c
+++ b/drivers/net/ntnic/ntnic_ethdev.c
@@ -84,6 +84,7 @@ static const char *const valid_arguments[] = {
static const struct rte_pci_id nthw_pci_id_map[] = {
{ RTE_PCI_DEVICE(NT_HW_PCI_VENDOR_ID, NT_HW_PCI_DEVICE_ID_NT200A02) },
+ { RTE_PCI_DEVICE(NT_HW_PCI_VENDOR_ID, NT_HW_PCI_DEVICE_ID_NT400D11) },
{ RTE_PCI_DEVICE(NT_HW_PCI_VENDOR_ID, NT_HW_PCI_DEVICE_ID_NT400D13) },
{
.vendor_id = 0,
diff --git a/drivers/net/ntnic/ntnic_mod_reg.c b/drivers/net/ntnic/ntnic_mod_reg.c
index 00eb07f848..ab29a2d816 100644
--- a/drivers/net/ntnic/ntnic_mod_reg.c
+++ b/drivers/net/ntnic/ntnic_mod_reg.c
@@ -193,6 +193,21 @@ struct rst9574_ops *nthw_get_rst9574_ops(void)
return rst9574_ops;
}
+static struct rst9569_ops *rst9569_ops;
+
+void nthw_reg_rst9569_ops(struct rst9569_ops *ops)
+{
+ rst9569_ops = ops;
+}
+
+struct rst9569_ops *nthw_get_rst9569_ops(void)
+{
+ if (rst9569_ops == NULL)
+ nthw_rst9569_ops_init();
+
+ return rst9569_ops;
+}
+
static struct rst_nt400dxx_ops *rst_nt400dxx_ops;
void nthw_reg_rst_nt400dxx_ops(struct rst_nt400dxx_ops *ops)
diff --git a/drivers/net/ntnic/ntnic_mod_reg.h b/drivers/net/ntnic/ntnic_mod_reg.h
index b534b09234..62f69d239d 100644
--- a/drivers/net/ntnic/ntnic_mod_reg.h
+++ b/drivers/net/ntnic/ntnic_mod_reg.h
@@ -269,6 +269,15 @@ struct rst9574_ops {
struct nthw_fpga_rst_nt400dxx *const p);
};
+struct rst9569_ops {
+ int (*nthw_fpga_rst9569_init)(void);
+ int (*nthw_fpga_rst9569_setup)(void);
+};
+
+void nthw_reg_rst9569_ops(struct rst9569_ops *ops);
+struct rst9569_ops *nthw_get_rst9569_ops(void);
+void nthw_rst9569_ops_init(void);
+
void nthw_reg_rst9574_ops(struct rst9574_ops *ops);
struct rst9574_ops *nthw_get_rst9574_ops(void);
void nthw_rst9574_ops_init(void);
--
2.45.0
next prev parent reply other threads:[~2025-10-01 15:10 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-01 15:09 [PATCH v1 00/20] Add NT400D11 support and new features Serhii Iliushyk
2025-10-01 15:09 ` Serhii Iliushyk [this message]
2025-10-01 15:09 ` [PATCH v1 02/20] net/ntnic: add reset setup for NT400D11 Serhii Iliushyk
2025-10-01 15:09 ` [PATCH v1 03/20] net/ntnic: add reset init stage 0 " Serhii Iliushyk
2025-10-01 15:09 ` [PATCH v1 04/20] net/ntnic: add reset init stage 1 " Serhii Iliushyk
2025-10-01 15:09 ` [PATCH v1 05/20] net/ntnic: add reset init stage 2 " Serhii Iliushyk
2025-10-01 15:09 ` [PATCH v1 06/20] net/ntnic: add reset init stage 3 and 4 " Serhii Iliushyk
2025-10-01 15:09 ` [PATCH v1 07/20] net/ntnic: add reset init stage 5 " Serhii Iliushyk
2025-10-01 15:09 ` [PATCH v1 08/20] net/ntnic: add reset init stage 6 " Serhii Iliushyk
2025-10-01 15:09 ` [PATCH v1 09/20] net/ntnic: add reset init stage 7 " Serhii Iliushyk
2025-10-01 15:09 ` [PATCH v1 10/20] net/ntnic: add reset init stage 8 " Serhii Iliushyk
2025-10-01 15:09 ` [PATCH v1 11/20] net/ntnic: add fpga registers " Serhii Iliushyk
2025-10-01 15:09 ` [PATCH v1 12/20] net/ntnic: add support pattern matching on inner ETH headers Serhii Iliushyk
2025-10-01 15:09 ` [PATCH v1 13/20] net/ntnic: add support pattern matching on inner VLAN header Serhii Iliushyk
2025-10-01 15:09 ` [PATCH v1 14/20] net/ntnic: add handling exception path option Serhii Iliushyk
2025-10-01 15:09 ` [PATCH v1 15/20] net/ntnic: add flow query with count action Serhii Iliushyk
2025-10-01 15:09 ` [PATCH v1 16/20] net/ntnic: add flow pull Serhii Iliushyk
2025-10-01 15:09 ` [PATCH v1 17/20] net/ntnic: extend flow dump with MBR configuration Serhii Iliushyk
2025-10-01 15:10 ` [PATCH v1 18/20] net/ntnic: make flow lock local Serhii Iliushyk
2025-10-01 15:10 ` [PATCH v1 19/20] net/ntnic: rename hwlock Serhii Iliushyk
2025-10-01 15:10 ` [PATCH v1 20/20] net/ntnic: rename nt log types Serhii Iliushyk
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20251001151018.250671-2-sil-plv@napatech.com \
--to=sil-plv@napatech.com \
--cc=ckm@napatech.com \
--cc=dev@dpdk.org \
--cc=mko-plv@napatech.com \
--cc=stephen@networkplumber.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).