Add function and structures required to init the new NIC NT400D13 Signed-off-by: Serhii Iliushyk <sil-...@napatech.com> --- doc/guides/nics/ntnic.rst | 7 +++++- doc/guides/rel_notes/release_25_03.rst | 4 ++++ drivers/net/ntnic/meson.build | 1 + .../net/ntnic/nthw/core/include/nthw_fpga.h | 8 +++++++ .../nthw/core/nt400dxx/nthw_fpga_nt400dxx.c | 23 +++++++++++++++++++ drivers/net/ntnic/nthw/core/nthw_fpga.c | 20 ++++++++++++++++ drivers/net/ntnic/nthw/nthw_platform.c | 3 +++ drivers/net/ntnic/nthw/nthw_platform_drv.h | 2 ++ drivers/net/ntnic/ntnic_ethdev.c | 1 + 9 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 drivers/net/ntnic/nthw/core/nt400dxx/nthw_fpga_nt400dxx.c
diff --git a/doc/guides/nics/ntnic.rst b/doc/guides/nics/ntnic.rst index f186822504..f519a9f083 100644 --- a/doc/guides/nics/ntnic.rst +++ b/doc/guides/nics/ntnic.rst @@ -27,8 +27,13 @@ Supported NICs - FPGA ID 9563 (Inline Flow Management) -All information about NT200A02 can be found by link below: +- NT400D13 2x100G SmartNIC + + - FPGA ID 9574 (Inline Flow Management) + +All information about NT200A02 and NT400D13 can be found by links below: https://www.napatech.com/products/nt200a02-smartnic-inline/ +https://www.napatech.com/support/resources/data-sheets/link-inline-software-for-napatech/ Features diff --git a/doc/guides/rel_notes/release_25_03.rst b/doc/guides/rel_notes/release_25_03.rst index 8867a4bd74..8064a2e688 100644 --- a/doc/guides/rel_notes/release_25_03.rst +++ b/doc/guides/rel_notes/release_25_03.rst @@ -123,6 +123,10 @@ New Features This feature enhances the efficiency of probing VF/SFs on a large scale by significantly reducing the probing time. +* **Updated Napatech ntnic driver.** + + * Added support for the NT400D13 adapter. + * **Updated Wangxun ngbe driver.** * Added support for virtual function (VF). diff --git a/drivers/net/ntnic/meson.build b/drivers/net/ntnic/meson.build index 92aad6f94d..d56e85dd66 100644 --- a/drivers/net/ntnic/meson.build +++ b/drivers/net/ntnic/meson.build @@ -43,6 +43,7 @@ sources = files( 'nthw/supported/nthw_fpga_mod_str_map.c', 'nthw/core/nt200a0x/clock_profiles/nthw_fpga_clk9563.c', 'nthw/core/nt200a0x/nthw_fpga_nt200a0x.c', + 'nthw/core/nt400dxx/nthw_fpga_nt400dxx.c', 'nthw/core/nt200a0x/reset/nthw_fpga_rst9563.c', 'nthw/core/nt200a0x/reset/nthw_fpga_rst_nt200a0x.c', 'nthw/core/nthw_fpga.c', diff --git a/drivers/net/ntnic/nthw/core/include/nthw_fpga.h b/drivers/net/ntnic/nthw/core/include/nthw_fpga.h index cee1d23090..8b1d548a25 100644 --- a/drivers/net/ntnic/nthw/core/include/nthw_fpga.h +++ b/drivers/net/ntnic/nthw/core/include/nthw_fpga.h @@ -36,4 +36,12 @@ void register_nt200a0x_ops(struct nt200a0x_ops *ops); struct nt200a0x_ops *get_nt200a0x_ops(void); void nt200a0x_ops_init(void); +struct nt400dxx_ops { + int (*nthw_fpga_nt400dxx_init)(struct fpga_info_s *p_fpga_info); +}; + +void register_nt400dxx_ops(struct nt400dxx_ops *ops); +struct nt400dxx_ops *get_nt400dxx_ops(void); +void nt400dxx_ops_init(void); + #endif /* __NTHW_FPGA_H__ */ diff --git a/drivers/net/ntnic/nthw/core/nt400dxx/nthw_fpga_nt400dxx.c b/drivers/net/ntnic/nthw/core/nt400dxx/nthw_fpga_nt400dxx.c new file mode 100644 index 0000000000..3f86843ff3 --- /dev/null +++ b/drivers/net/ntnic/nthw/core/nt400dxx/nthw_fpga_nt400dxx.c @@ -0,0 +1,23 @@ +/* + * SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2023 Napatech A/S + */ + +#include "nthw_fpga.h" +#include "ntnic_mod_reg.h" + + +static int nthw_fpga_nt400dxx_init(struct fpga_info_s *p_fpga_info) +{ + assert(p_fpga_info); + int res = -1; + + return res; +} + +static struct nt400dxx_ops nt400dxx_ops = { .nthw_fpga_nt400dxx_init = nthw_fpga_nt400dxx_init }; + +void nt400dxx_ops_init(void) +{ + register_nt400dxx_ops(&nt400dxx_ops); +} diff --git a/drivers/net/ntnic/nthw/core/nthw_fpga.c b/drivers/net/ntnic/nthw/core/nthw_fpga.c index 5ca186209a..e54a210c9f 100644 --- a/drivers/net/ntnic/nthw/core/nthw_fpga.c +++ b/drivers/net/ntnic/nthw/core/nthw_fpga.c @@ -266,6 +266,7 @@ int nthw_fpga_init(struct fpga_info_s *p_fpga_info) p_fpga_info->mp_nthw_rac = p_nthw_rac; struct nt200a0x_ops *nt200a0x_ops = get_nt200a0x_ops(); + struct nt400dxx_ops *nt400dxx_ops = get_nt400dxx_ops(); switch (p_fpga_info->n_nthw_adapter_id) { case NT_HW_ADAPTER_ID_NT200A02: @@ -273,6 +274,11 @@ 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_NT400D13: + if (nt400dxx_ops != NULL) + res = nt400dxx_ops->nthw_fpga_nt400dxx_init(p_fpga_info); + break; + default: NT_LOG(ERR, NTHW, "%s: Unsupported HW product id: %d", p_adapter_id_str, p_fpga_info->n_nthw_adapter_id); @@ -398,3 +404,17 @@ struct nt200a0x_ops *get_nt200a0x_ops(void) nt200a0x_ops_init(); return nt200a0x_ops; } + +static struct nt400dxx_ops *nt400dxx_ops; + +void register_nt400dxx_ops(struct nt400dxx_ops *ops) +{ + nt400dxx_ops = ops; +} + +struct nt400dxx_ops *get_nt400dxx_ops(void) +{ + if (nt400dxx_ops == NULL) + nt400dxx_ops_init(); + return nt400dxx_ops; +} diff --git a/drivers/net/ntnic/nthw/nthw_platform.c b/drivers/net/ntnic/nthw/nthw_platform.c index 33e18e549f..80063c9d25 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_nthw_adapter_id(const uint16_t n_pci_device_ case NT_HW_PCI_DEVICE_ID_NT200A02: return NT_HW_ADAPTER_ID_NT200A02; + case NT_HW_PCI_DEVICE_ID_NT400D13: + return NT_HW_ADAPTER_ID_NT400D13; + default: return NT_HW_ADAPTER_ID_UNKNOWN; } diff --git a/drivers/net/ntnic/nthw/nthw_platform_drv.h b/drivers/net/ntnic/nthw/nthw_platform_drv.h index 42eb0b8b05..df54dcead0 100644 --- a/drivers/net/ntnic/nthw/nthw_platform_drv.h +++ b/drivers/net/ntnic/nthw/nthw_platform_drv.h @@ -10,10 +10,12 @@ #define NT_HW_PCI_VENDOR_ID (0x18f4) #define NT_HW_PCI_DEVICE_ID_NT200A02 (0x1C5) +#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_NT400D13, }; typedef enum nthw_adapter_id_e nthw_adapter_id_t; diff --git a/drivers/net/ntnic/ntnic_ethdev.c b/drivers/net/ntnic/ntnic_ethdev.c index 1b6b222c9d..88f6b6af6b 100644 --- a/drivers/net/ntnic/ntnic_ethdev.c +++ b/drivers/net/ntnic/ntnic_ethdev.c @@ -91,6 +91,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_NT400D13) }, { .vendor_id = 0, }, /* sentinel */ -- 2.45.0