@@ -6005,36 +6005,17 @@ void PortsOrch::updatePortOperStatus(Port &port, sai_port_oper_status_t status)
60056005 if (port.m_type == Port::PHY)
60066006 {
60076007 updateDbPortOperStatus (port, status);
6008- if (port.m_admin_state_up && port.m_autoneg > 0 )
6008+
6009+ /* Refresh the port states and reschedule the poller tasks */
6010+ if (port.m_autoneg > 0 )
60096011 {
6010- if (status == SAI_PORT_OPER_STATUS_UP)
6011- {
6012- /* Refresh AN port states */
6013- refreshPortStateAutoNeg (port);
6014- /* Stop port state polling for AN */
6015- updatePortStatePoll (port, PORT_STATE_POLL_AN, false );
6016- }
6017- else
6018- {
6019- /* Restart autoneg state polling upon link down event */
6020- m_portStateTable.hdel (port.m_alias , " rmt_adv_speeds" );
6021- updatePortStatePoll (port, PORT_STATE_POLL_AN, true );
6022- }
6012+ refreshPortStateAutoNeg (port);
6013+ updatePortStatePoll (port, PORT_STATE_POLL_AN, !(status == SAI_PORT_OPER_STATUS_UP));
60236014 }
6024- if (port.m_admin_state_up && port. m_link_training > 0 )
6015+ if (port.m_link_training > 0 )
60256016 {
6026- /* Refresh LT port states for both link up and down */
60276017 refreshPortStateLinkTraining (port);
6028- if (status == SAI_PORT_OPER_STATUS_UP)
6029- {
6030- /* Stop port state polling for LT */
6031- updatePortStatePoll (port, PORT_STATE_POLL_LT, false );
6032- }
6033- else
6034- {
6035- /* Restart port state polling upon link down event */
6036- updatePortStatePoll (port, PORT_STATE_POLL_LT, true );
6037- }
6018+ updatePortStatePoll (port, PORT_STATE_POLL_LT, !(status == SAI_PORT_OPER_STATUS_UP));
60386019 }
60396020 }
60406021 port.m_oper_status = status;
@@ -7231,17 +7212,18 @@ void PortsOrch::refreshPortStateAutoNeg(const Port &port)
72317212 return ;
72327213 }
72337214
7234- string adv_speeds;
7215+ string adv_speeds = " N/A " ;
72357216
7236- if (getPortAdvSpeeds (port, true , adv_speeds))
7237- {
7238- m_portStateTable.hset (port.m_alias , " rmt_adv_speeds" , adv_speeds);
7239- }
7240- else
7217+ if (port.m_admin_state_up )
72417218 {
7242- m_portStateTable.hset (port.m_alias , " rmt_adv_speeds" , " N/A" );
7243- updatePortStatePoll (port, PORT_STATE_POLL_AN, false );
7219+ if (!getPortAdvSpeeds (port, true , adv_speeds))
7220+ {
7221+ adv_speeds = " N/A" ;
7222+ updatePortStatePoll (port, PORT_STATE_POLL_AN, false );
7223+ }
72447224 }
7225+
7226+ m_portStateTable.hset (port.m_alias , " rmt_adv_speeds" , adv_speeds);
72457227}
72467228
72477229/* Refresh the per-port Link-Training operational states */
@@ -7256,7 +7238,7 @@ void PortsOrch::refreshPortStateLinkTraining(const Port &port)
72567238
72577239 string status = " off" ;
72587240
7259- if (( port.m_link_training > 0 ) && ( port.m_cap_lt > 0 ) )
7241+ if (port.m_admin_state_up && port. m_link_training > 0 && port.m_cap_lt > 0 )
72607242 {
72617243 sai_port_link_training_rx_status_t rx_status;
72627244 sai_port_link_training_failure_status_t failure;
0 commit comments