mirror of https://gitee.com/openkylin/linux.git
ice: Set carrier state and start/stop queues in rebuild
Set the carrier state post rebuild by querying the link status. Also start/stop queues based on link status. Signed-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com> Tested-by: Andrew Bowers <andrewx.bowers@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
parent
042cb56478
commit
ce317dd9f8
|
@ -3296,7 +3296,7 @@ static void ice_rebuild(struct ice_pf *pf)
|
|||
struct device *dev = &pf->pdev->dev;
|
||||
struct ice_hw *hw = &pf->hw;
|
||||
enum ice_status ret;
|
||||
int err;
|
||||
int err, i;
|
||||
|
||||
if (test_bit(__ICE_DOWN, pf->state))
|
||||
goto clear_recovery;
|
||||
|
@ -3370,6 +3370,22 @@ static void ice_rebuild(struct ice_pf *pf)
|
|||
}
|
||||
|
||||
ice_reset_all_vfs(pf, true);
|
||||
|
||||
for (i = 0; i < pf->num_alloc_vsi; i++) {
|
||||
bool link_up;
|
||||
|
||||
if (!pf->vsi[i] || pf->vsi[i]->type != ICE_VSI_PF)
|
||||
continue;
|
||||
ice_get_link_status(pf->vsi[i]->port_info, &link_up);
|
||||
if (link_up) {
|
||||
netif_carrier_on(pf->vsi[i]->netdev);
|
||||
netif_tx_wake_all_queues(pf->vsi[i]->netdev);
|
||||
} else {
|
||||
netif_carrier_off(pf->vsi[i]->netdev);
|
||||
netif_tx_stop_all_queues(pf->vsi[i]->netdev);
|
||||
}
|
||||
}
|
||||
|
||||
/* if we get here, reset flow is successful */
|
||||
clear_bit(__ICE_RESET_FAILED, pf->state);
|
||||
return;
|
||||
|
|
Loading…
Reference in New Issue