/* The last close may have shutdown the link, so need to call
         * PHY_CFG to bring it back up.
         */
-       if (!netif_carrier_ok(bp->dev))
+       if (!bp->link_info.link_up)
                update_link = true;
 
        if (!bnxt_eee_config_ok(bp))
 
                ethtool_link_ksettings_add_link_mode(lk_ksettings,
                                                     advertising, Autoneg);
                base->autoneg = AUTONEG_ENABLE;
-               if (link_info->phy_link_status == BNXT_LINK_LINK)
+               base->duplex = DUPLEX_UNKNOWN;
+               if (link_info->phy_link_status == BNXT_LINK_LINK) {
                        bnxt_fw_to_ethtool_lp_adv(link_info, lk_ksettings);
+                       if (link_info->duplex & BNXT_LINK_DUPLEX_FULL)
+                               base->duplex = DUPLEX_FULL;
+                       else
+                               base->duplex = DUPLEX_HALF;
+               }
                ethtool_speed = bnxt_fw_to_ethtool_speed(link_info->link_speed);
-               if (!netif_carrier_ok(dev))
-                       base->duplex = DUPLEX_UNKNOWN;
-               else if (link_info->duplex & BNXT_LINK_DUPLEX_FULL)
-                       base->duplex = DUPLEX_FULL;
-               else
-                       base->duplex = DUPLEX_HALF;
        } else {
                base->autoneg = AUTONEG_DISABLE;
                ethtool_speed =
                return rc;
 
        fw_speed = PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_1GB;
-       if (netif_carrier_ok(bp->dev))
+       if (bp->link_info.link_up)
                fw_speed = bp->link_info.link_speed;
        else if (fw_advertising & BNXT_LINK_SPEED_MSK_10GB)
                fw_speed = PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_10GB;