diff options
author | Eliad Peller <eliad@wizery.com> | 2014-01-16 17:10:44 +0200 |
---|---|---|
committer | Emmanuel Grumbach <emmanuel.grumbach@intel.com> | 2014-02-03 22:23:39 +0200 |
commit | 7498cf4cebc2dab430d41ea5ccaac2197b9c7020 (patch) | |
tree | 1a8f6520ff5ca2251e483ff30007912e433ff94c /drivers/net/wireless/iwlwifi/mvm/ops.c | |
parent | d62309726d498e6f23e1f4ecdb12b0e4b59b0c8a (diff) | |
download | blackbird-obmc-linux-7498cf4cebc2dab430d41ea5ccaac2197b9c7020.tar.gz blackbird-obmc-linux-7498cf4cebc2dab430d41ea5ccaac2197b9c7020.zip |
iwlwifi: mvm: allow transport sleep when FW is operational
Hold a bitmap of taken references, according to the
reference reason (e.g. down, scan).
This will allow us validate our state and add some debugfs
entries later on.
Unref the transport when the FW is fully initialized,
allowing it to go into a low power mode.
Disallow the transition to low-power while recovery is in
progress.
Signed-off-by: Arik Nemtsov <arikx.nemtsov@intel.com>
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>
Diffstat (limited to 'drivers/net/wireless/iwlwifi/mvm/ops.c')
-rw-r--r-- | drivers/net/wireless/iwlwifi/mvm/ops.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/net/wireless/iwlwifi/mvm/ops.c b/drivers/net/wireless/iwlwifi/mvm/ops.c index cdb4c929e017..5bc44395fa96 100644 --- a/drivers/net/wireless/iwlwifi/mvm/ops.c +++ b/drivers/net/wireless/iwlwifi/mvm/ops.c @@ -501,6 +501,9 @@ iwl_op_mode_mvm_start(struct iwl_trans *trans, const struct iwl_cfg *cfg, memset(&mvm->rx_stats, 0, sizeof(struct mvm_statistics_rx)); + /* rpm starts with a taken ref. only set the appropriate bit here. */ + set_bit(IWL_MVM_REF_UCODE_DOWN, mvm->ref_bitmap); + return op_mode; out_unregister: @@ -788,6 +791,9 @@ static void iwl_mvm_nic_restart(struct iwl_mvm *mvm) INIT_WORK(&reprobe->work, iwl_mvm_reprobe_wk); schedule_work(&reprobe->work); } else if (mvm->cur_ucode == IWL_UCODE_REGULAR && mvm->restart_fw) { + /* don't let the transport/FW power down */ + iwl_mvm_ref(mvm, IWL_MVM_REF_UCODE_DOWN); + if (mvm->restart_fw > 0) mvm->restart_fw--; ieee80211_restart_hw(mvm->hw); |