]> git.proxmox.com Git - mirror_ubuntu-disco-kernel.git/commitdiff
ice: Put __ICE_PREPARED_FOR_RESET check in ice_prepare_for_reset
authorBrett Creeley <brett.creeley@intel.com>
Wed, 13 Feb 2019 18:51:14 +0000 (10:51 -0800)
committerStefan Bader <stefan.bader@canonical.com>
Tue, 13 Aug 2019 12:11:36 +0000 (14:11 +0200)
BugLink: https://bugs.launchpad.net/bugs/1837517
[ Upstream commit 5abac9d7e1bb9a373673811154774d4c89a7f85e ]

Currently we check if the __ICE_PREPARED_FOR_RESET bit is set prior to
calling ice_prepare_for_reset in ice_reset_subtask(), but we aren't
checking that bit in ice_do_reset() before calling
ice_prepare_for_reset(). This is not consistent and can cause issues if
ice_prepare_for_reset() is called prior to ice_do_reset(). Fix this by
checking if the __ICE_PREPARED_FOR_RESET bit is set internal to
ice_prepare_for_reset().

Signed-off-by: Brett Creeley <brett.creeley@intel.com>
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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Khalid Elmously <khalid.elmously@canonical.com>
Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
drivers/net/ethernet/intel/ice/ice_main.c

index 43064b4176d3824dc86e0eb46119a1b1a26780aa..f8801267502af48f820ce8274e55ff1c4cb39301 100644 (file)
@@ -342,6 +342,10 @@ ice_prepare_for_reset(struct ice_pf *pf)
 {
        struct ice_hw *hw = &pf->hw;
 
+       /* already prepared for reset */
+       if (test_bit(__ICE_PREPARED_FOR_RESET, pf->state))
+               return;
+
        /* Notify VFs of impending reset */
        if (ice_check_sq_alive(hw, &hw->mailboxq))
                ice_vc_notify_reset(pf);
@@ -424,8 +428,7 @@ static void ice_reset_subtask(struct ice_pf *pf)
                /* 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);
+               ice_prepare_for_reset(pf);
 
                /* make sure we are ready to rebuild */
                if (ice_check_reset(&pf->hw)) {