Add stubs for NT400D11 init functions. These stubs will be replaced with actual implementations in future commits.
Signed-off-by: Serhii Iliushyk <[email protected]> --- 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

