[PATCH v1 12/32] net/ntnic: add port disable API
Serhii Iliushyk
sil-plv at napatech.com
Thu Feb 20 23:03:36 CET 2025
From: Danylo Vodopianov <dvo-plv at napatech.com>
Added logic to check if the administrative port state
has changed.
Signed-off-by: Danylo Vodopianov <dvo-plv at napatech.com>
---
.../link_agx_100g/nt4ga_agx_link_100g.c | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
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
index 33d39ce62f..3f59c4a6b8 100644
--- 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
@@ -501,6 +501,14 @@ set_loopback(struct adapter_info_s *p_adapter_info, int port, uint32_t mode, uin
nt_os_wait_usec(10000); /* 10ms - arbitrary choice */
}
+static void port_disable(adapter_info_t *drv, int port)
+{
+ nim_i2c_ctx_t *nim_ctx = &drv->nt4ga_link.u.nim_ctx[port];
+ phy_reset_rx(drv, port);
+ phy_reset_tx(drv, port);
+ set_nim_low_power(nim_ctx, port, true);
+}
+
/*
* Initialize NIM, Code based on nt400d1x.cpp: MyPort::createNim()
*/
@@ -822,6 +830,17 @@ static void *_common_ptp_nim_state_machine(void *data)
*/
assert(!(disable_port && enable_port));
+ if (disable_port) {
+ memset(&link_state[i], 0, sizeof(link_state[i]));
+ link_state[i].link_disabled = true;
+ link_state[i].lh_nim_absent = true;
+ reported_link[i] = false;
+ port_disable(drv, i);
+ NT_LOG(INF, NTNIC, "%s: Port %i is disabled",
+ drv->mp_port_id_str[i], i);
+ continue;
+ }
+
if (enable_port) {
link_state[i].link_disabled = false;
NT_LOG(DBG, NTNIC, "%s: Port %i is enabled",
--
2.45.0
More information about the dev
mailing list