| From 9ec3df1a032646d546feb51e6f4fc8ba6fb484f6 Mon Sep 17 00:00:00 2001 |
| From: Brett Creeley <brett.creeley@intel.com> |
| Date: Wed, 13 Feb 2019 10:51:14 -0800 |
| Subject: ice: Put __ICE_PREPARED_FOR_RESET check in ice_prepare_for_reset |
| |
| [ 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> |
| --- |
| drivers/net/ethernet/intel/ice/ice_main.c | 7 +++++-- |
| 1 file changed, 5 insertions(+), 2 deletions(-) |
| |
| diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c |
| index ba9f88cd138de..6ec73864019c0 100644 |
| --- a/drivers/net/ethernet/intel/ice/ice_main.c |
| +++ b/drivers/net/ethernet/intel/ice/ice_main.c |
| @@ -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)) { |
| -- |
| 2.20.1 |
| |