summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEliad Peller <eliad@wizery.com>2015-03-04 10:38:32 +0200
committerEmmanuel Grumbach <emmanuel.grumbach@intel.com>2015-03-26 09:11:38 +0200
commit483f3ab1754f3c3698db622cc181249a0ca6372c (patch)
tree575cc16caf2b7e828ae2544515c62d050b1a13ff
parent4ffb36505c0d4e0909aa1812b0269eb181a51390 (diff)
downloadop-kernel-dev-483f3ab1754f3c3698db622cc181249a0ca6372c.zip
op-kernel-dev-483f3ab1754f3c3698db622cc181249a0ca6372c.tar.gz
iwlwifi: pcie: initialize trans_pcie->ref_count on configure()
ref_count is currently initialized on start_fw(). This causes some issues in restart flow, as currently active references (e.g. unclaimed command) will get cleared, resulting in invalid reference accounting. Move the ref_count initialization to the configure() trans op, so it won't be re-initialized on restart. Signed-off-by: Eliad Peller <eliadx.peller@intel.com> Reviewed-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
-rw-r--r--drivers/net/wireless/iwlwifi/pcie/trans.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/drivers/net/wireless/iwlwifi/pcie/trans.c b/drivers/net/wireless/iwlwifi/pcie/trans.c
index df0022e..39e3cf0 100644
--- a/drivers/net/wireless/iwlwifi/pcie/trans.c
+++ b/drivers/net/wireless/iwlwifi/pcie/trans.c
@@ -964,7 +964,6 @@ static int iwl_pcie_load_given_ucode_8000b(struct iwl_trans *trans,
static int iwl_trans_pcie_start_fw(struct iwl_trans *trans,
const struct fw_img *fw, bool run_in_rfkill)
{
- struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
int ret;
bool hw_rfkill;
@@ -994,9 +993,6 @@ static int iwl_trans_pcie_start_fw(struct iwl_trans *trans,
return ret;
}
- /* init ref_count to 1 (should be cleared when ucode is loaded) */
- trans_pcie->ref_count = 1;
-
/* make sure rfkill handshake bits are cleared */
iwl_write32(trans, CSR_UCODE_DRV_GP1_CLR, CSR_UCODE_SW_BIT_RFKILL);
iwl_write32(trans, CSR_UCODE_DRV_GP1_CLR,
@@ -1315,6 +1311,9 @@ static void iwl_trans_pcie_configure(struct iwl_trans *trans,
trans_pcie->bc_table_dword = trans_cfg->bc_table_dword;
trans_pcie->scd_set_active = trans_cfg->scd_set_active;
+ /* init ref_count to 1 (should be cleared when ucode is loaded) */
+ trans_pcie->ref_count = 1;
+
/* Initialize NAPI here - it should be before registering to mac80211
* in the opmode but after the HW struct is allocated.
* As this function may be called again in some corner cases don't
OpenPOWER on IntegriCloud