bnxt_tx_enable(bp);
        mod_timer(&bp->timer, jiffies + bp->current_interval);
        /* Poll link status and check for SFP+ module status */
+       mutex_lock(&bp->link_lock);
        bnxt_get_port_module_status(bp);
+       mutex_unlock(&bp->link_lock);
 
        /* VF-reps may need to be re-opened after the PF is re-opened */
        if (BNXT_PF(bp))
        if (!fw_dflt)
                return 0;
 
+       mutex_lock(&bp->link_lock);
        rc = bnxt_update_link(bp, false);
        if (rc) {
+               mutex_unlock(&bp->link_lock);
                netdev_err(bp->dev, "Probe phy can't update link (rc: %x)\n",
                           rc);
                return rc;
                link_info->support_auto_speeds = link_info->support_speeds;
 
        bnxt_init_ethtool_link_settings(bp);
+       mutex_unlock(&bp->link_lock);
        return 0;
 }
 
 
 
                phy_qcfg_req =
                (struct hwrm_port_phy_qcfg_input *)vf->hwrm_cmd_req_addr;
-               mutex_lock(&bp->hwrm_cmd_lock);
+               mutex_lock(&bp->link_lock);
                memcpy(&phy_qcfg_resp, &bp->link_info.phy_qcfg_resp,
                       sizeof(phy_qcfg_resp));
-               mutex_unlock(&bp->hwrm_cmd_lock);
+               mutex_unlock(&bp->link_lock);
                phy_qcfg_resp.resp_len = cpu_to_le16(sizeof(phy_qcfg_resp));
                phy_qcfg_resp.seq_id = phy_qcfg_req->seq_id;
                phy_qcfg_resp.valid = 1;