@@ -6005,36 +6005,17 @@ void PortsOrch::updatePortOperStatus(Port &port, sai_port_oper_status_t status)
6005
6005
if (port.m_type == Port::PHY)
6006
6006
{
6007
6007
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 )
6009
6011
{
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));
6023
6014
}
6024
- if (port.m_admin_state_up && port. m_link_training > 0 )
6015
+ if (port.m_link_training > 0 )
6025
6016
{
6026
- /* Refresh LT port states for both link up and down */
6027
6017
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));
6038
6019
}
6039
6020
}
6040
6021
port.m_oper_status = status;
@@ -7231,17 +7212,18 @@ void PortsOrch::refreshPortStateAutoNeg(const Port &port)
7231
7212
return ;
7232
7213
}
7233
7214
7234
- string adv_speeds;
7215
+ string adv_speeds = " N/A " ;
7235
7216
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 )
7241
7218
{
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
+ }
7244
7224
}
7225
+
7226
+ m_portStateTable.hset (port.m_alias , " rmt_adv_speeds" , adv_speeds);
7245
7227
}
7246
7228
7247
7229
/* Refresh the per-port Link-Training operational states */
@@ -7256,7 +7238,7 @@ void PortsOrch::refreshPortStateLinkTraining(const Port &port)
7256
7238
7257
7239
string status = " off" ;
7258
7240
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 )
7260
7242
{
7261
7243
sai_port_link_training_rx_status_t rx_status;
7262
7244
sai_port_link_training_failure_status_t failure;
0 commit comments