* for the reset now), poll for reset done, rebuild and return.
         */
        if (test_bit(__ICE_RESET_OICR_RECV, pf->state)) {
-               clear_bit(__ICE_GLOBR_RECV, pf->state);
-               clear_bit(__ICE_CORER_RECV, pf->state);
+               /* Perform the largest reset requested */
+               if (test_and_clear_bit(__ICE_CORER_RECV, pf->state))
+                       reset_type = ICE_RESET_CORER;
+               if (test_and_clear_bit(__ICE_GLOBR_RECV, pf->state))
+                       reset_type = ICE_RESET_GLOBR;
+               /* return if no valid reset type requested */
+               if (reset_type == ICE_RESET_INVAL)
+                       return;
                if (!test_bit(__ICE_PREPARED_FOR_RESET, pf->state))
                        ice_prepare_for_reset(pf);