From: Danylo Vodopianov <dvo-...@napatech.com> Minimal implementation for link agx 100g was added. Add support for NT400D13 (Intel Agilex FPGA) link operations.
Signed-off-by: Danylo Vodopianov <dvo-...@napatech.com> --- drivers/net/ntnic/adapter/nt4ga_adapter.c | 9 ++++ .../link_agx_100g/nt4ga_agx_link_100g.c | 42 +++++++++++++++++++ drivers/net/ntnic/meson.build | 1 + drivers/net/ntnic/ntnic_mod_reg.c | 17 ++++++++ drivers/net/ntnic/ntnic_mod_reg.h | 4 ++ 5 files changed, 73 insertions(+) create mode 100644 drivers/net/ntnic/link_mgmt/link_agx_100g/nt4ga_agx_link_100g.c diff --git a/drivers/net/ntnic/adapter/nt4ga_adapter.c b/drivers/net/ntnic/adapter/nt4ga_adapter.c index fa72dfda8d..fe9d397293 100644 --- a/drivers/net/ntnic/adapter/nt4ga_adapter.c +++ b/drivers/net/ntnic/adapter/nt4ga_adapter.c @@ -196,6 +196,15 @@ static int nt4ga_adapter_init(struct adapter_info_s *p_adapter_info) res = link_ops->link_init(p_adapter_info, p_fpga); break; + case 9574: /* NT400D13 (Intel Agilex FPGA) */ + link_ops = get_agx_100g_link_ops(); + if (link_ops == NULL) { + NT_LOG(ERR, NTNIC, "NT400D11 100G link module uninitialized"); + res = -1; + break; + } + res = link_ops->link_init(p_adapter_info, p_fpga); + break; default: NT_LOG(ERR, NTNIC, "Unsupported FPGA product: %04d", diff --git a/drivers/net/ntnic/link_mgmt/link_agx_100g/nt4ga_agx_link_100g.c b/drivers/net/ntnic/link_mgmt/link_agx_100g/nt4ga_agx_link_100g.c new file mode 100644 index 0000000000..ad3398500f --- /dev/null +++ b/drivers/net/ntnic/link_mgmt/link_agx_100g/nt4ga_agx_link_100g.c @@ -0,0 +1,42 @@ +/* + * SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2023 Napatech A/S + */ + +#include "nt_util.h" +#include "ntlog.h" +#include "i2c_nim.h" +#include "nt4ga_adapter.h" + +#include <string.h> +#include "ntnic_mod_reg.h" +#include "nim_defines.h" + +static int nt4ga_agx_link_100g_ports_init(struct adapter_info_s *p_adapter_info, + nthw_fpga_t *fpga); + +/* + * Init AGX 100G link ops variables + */ +static struct link_ops_s link_agx_100g_ops = { + .link_init = nt4ga_agx_link_100g_ports_init, +}; + +void link_agx_100g_init(void) +{ + register_agx_100g_link_ops(&link_agx_100g_ops); +} + +/* + * Initialize all ports + * The driver calls this function during initialization (of the driver). + */ +int nt4ga_agx_link_100g_ports_init(struct adapter_info_s *p_adapter_info, nthw_fpga_t *fpga) +{ + (void)fpga; + int res = 0; + + NT_LOG(DBG, NTNIC, "%s: Initializing ports", p_adapter_info->mp_adapter_id_str); + + return res; +} diff --git a/drivers/net/ntnic/meson.build b/drivers/net/ntnic/meson.build index 8ae6817dea..7e4f47b1e6 100644 --- a/drivers/net/ntnic/meson.build +++ b/drivers/net/ntnic/meson.build @@ -32,6 +32,7 @@ sources = files( 'adapter/nt4ga_stat/nt4ga_stat.c', 'dbsconfig/ntnic_dbsconfig.c', 'link_mgmt/link_100g/nt4ga_link_100g.c', + 'link_mgmt/link_agx_100g/nt4ga_agx_link_100g.c', 'link_mgmt/nt4ga_link.c', 'nim/i2c_nim.c', 'ntnic_filter/ntnic_filter.c', diff --git a/drivers/net/ntnic/ntnic_mod_reg.c b/drivers/net/ntnic/ntnic_mod_reg.c index 658fac72c0..598df08fb7 100644 --- a/drivers/net/ntnic/ntnic_mod_reg.c +++ b/drivers/net/ntnic/ntnic_mod_reg.c @@ -69,6 +69,23 @@ const struct link_ops_s *get_100g_link_ops(void) return link_100g_ops; } +/* + * + */ +static struct link_ops_s *link_agx_100g_ops; + +void register_agx_100g_link_ops(struct link_ops_s *ops) +{ + link_agx_100g_ops = ops; +} + +const struct link_ops_s *get_agx_100g_link_ops(void) +{ + if (link_agx_100g_ops == NULL) + link_agx_100g_init(); + return link_agx_100g_ops; +} + static const struct port_ops *port_ops; void register_port_ops(const struct port_ops *ops) diff --git a/drivers/net/ntnic/ntnic_mod_reg.h b/drivers/net/ntnic/ntnic_mod_reg.h index bddae823c8..3e84beaa62 100644 --- a/drivers/net/ntnic/ntnic_mod_reg.h +++ b/drivers/net/ntnic/ntnic_mod_reg.h @@ -144,6 +144,10 @@ void register_100g_link_ops(struct link_ops_s *ops); const struct link_ops_s *get_100g_link_ops(void); void link_100g_init(void); +void register_agx_100g_link_ops(struct link_ops_s *ops); +const struct link_ops_s *get_agx_100g_link_ops(void); +void link_agx_100g_init(void); + struct port_ops { bool (*get_nim_present)(struct adapter_info_s *p, int port); -- 2.45.0