caching_dw = &port->cached_hw_stats.caching_dw;
 
-               if (port->phy_link) {
-                       memset(&smac, 0, sizeof(smac));
-                       smac.valid = true;
-                       smac.oper = pevt->data.mac.oper;
-                       if (smac.oper) {
-                               smac.mode = pevt->data.mac.mode;
-                               smac.speed = pevt->data.mac.speed;
-                               smac.duplex = pevt->data.mac.duplex;
-                               smac.fc = pevt->data.mac.fc;
-                               smac.fec = pevt->data.mac.fec;
-                               phylink_mac_change(port->phy_link, true);
-                       } else {
-                               phylink_mac_change(port->phy_link, false);
-                       }
-                       prestera_port_mac_state_cache_write(port, &smac);
+               memset(&smac, 0, sizeof(smac));
+               smac.valid = true;
+               smac.oper = pevt->data.mac.oper;
+               if (smac.oper) {
+                       smac.mode = pevt->data.mac.mode;
+                       smac.speed = pevt->data.mac.speed;
+                       smac.duplex = pevt->data.mac.duplex;
+                       smac.fc = pevt->data.mac.fc;
+                       smac.fec = pevt->data.mac.fec;
                }
+               prestera_port_mac_state_cache_write(port, &smac);
 
                if (port->state_mac.oper) {
-                       if (!port->phy_link)
+                       if (port->phy_link)
+                               phylink_mac_change(port->phy_link, true);
+                       else
                                netif_carrier_on(port->dev);
 
                        if (!delayed_work_pending(caching_dw))
                                queue_delayed_work(prestera_wq, caching_dw, 0);
-               } else if (netif_running(port->dev) &&
-                          netif_carrier_ok(port->dev)) {
-                       if (!port->phy_link)
+               } else {
+                       if (port->phy_link)
+                               phylink_mac_change(port->phy_link, false);
+                       else if (netif_running(port->dev) && netif_carrier_ok(port->dev))
                                netif_carrier_off(port->dev);
 
                        if (delayed_work_pending(caching_dw))