From: Danylo Vodopianov <dvo-...@napatech.com>

Added logic to check if the administrative port state
has changed.

Signed-off-by: Danylo Vodopianov <dvo-...@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

Reply via email to