diff options
Diffstat (limited to 'drivers/net/ethernet/intel/ice/ice_main.c')
-rw-r--r-- | drivers/net/ethernet/intel/ice/ice_main.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c index d0ea4d059a05..3588cbb8ccd2 100644 --- a/drivers/net/ethernet/intel/ice/ice_main.c +++ b/drivers/net/ethernet/intel/ice/ice_main.c | |||
@@ -478,8 +478,14 @@ static void ice_reset_subtask(struct ice_pf *pf) | |||
478 | * for the reset now), poll for reset done, rebuild and return. | 478 | * for the reset now), poll for reset done, rebuild and return. |
479 | */ | 479 | */ |
480 | if (test_bit(__ICE_RESET_OICR_RECV, pf->state)) { | 480 | if (test_bit(__ICE_RESET_OICR_RECV, pf->state)) { |
481 | clear_bit(__ICE_GLOBR_RECV, pf->state); | 481 | /* Perform the largest reset requested */ |
482 | clear_bit(__ICE_CORER_RECV, pf->state); | 482 | if (test_and_clear_bit(__ICE_CORER_RECV, pf->state)) |
483 | reset_type = ICE_RESET_CORER; | ||
484 | if (test_and_clear_bit(__ICE_GLOBR_RECV, pf->state)) | ||
485 | reset_type = ICE_RESET_GLOBR; | ||
486 | /* return if no valid reset type requested */ | ||
487 | if (reset_type == ICE_RESET_INVAL) | ||
488 | return; | ||
483 | if (!test_bit(__ICE_PREPARED_FOR_RESET, pf->state)) | 489 | if (!test_bit(__ICE_PREPARED_FOR_RESET, pf->state)) |
484 | ice_prepare_for_reset(pf); | 490 | ice_prepare_for_reset(pf); |
485 | 491 | ||