}
 
        synchronize_net();
+       netif_carrier_off(vsi->netdev);
        netif_tx_stop_queue(netdev_get_tx_queue(vsi->netdev, q_idx));
 
        ice_qvec_dis_irq(vsi, rx_ring, q_vector);
 {
        struct ice_q_vector *q_vector;
        int fail = 0;
+       bool link_up;
        int err;
 
        err = ice_vsi_cfg_single_txq(vsi, vsi->tx_rings, q_idx);
        ice_qvec_toggle_napi(vsi, q_vector, true);
        ice_qvec_ena_irq(vsi, q_vector);
 
-       netif_tx_start_queue(netdev_get_tx_queue(vsi->netdev, q_idx));
+       ice_get_link_status(vsi->port_info, &link_up);
+       if (link_up) {
+               netif_tx_start_queue(netdev_get_tx_queue(vsi->netdev, q_idx));
+               netif_carrier_on(vsi->netdev);
+       }
        clear_bit(ICE_CFG_BUSY, vsi->state);
 
        return fail;