summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSara Sharon <sara.sharon@intel.com>2018-08-27 14:07:20 +0300
committerKalle Valo <kvalo@codeaurora.org>2018-12-20 09:08:25 +0200
commit3681729429f4626c85a4eb62e5ce76be0b626f87 (patch)
tree3ba31a782baf3c8428c470eea8d5dd2d8c588063
parent83eabf1e9810f3753d6dafd9a0dc3849924d4fc0 (diff)
downloadcachepc-linux-3681729429f4626c85a4eb62e5ce76be0b626f87.tar.gz
cachepc-linux-3681729429f4626c85a4eb62e5ce76be0b626f87.zip
iwlwifi: pcie: lock txq a bit later in reclaim code
In reclaim code, we don't need to take the queue lock for waking the queue. The code section is executed only when the tx path is stopped, and since the reclaim path is not executed in parallel to itself, no one can update the queue pointers, and accessing them is safe without a lock. Signed-off-by: Sara Sharon <sara.sharon@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
-rw-r--r--drivers/net/wireless/intel/iwlwifi/pcie/tx.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/tx.c b/drivers/net/wireless/intel/iwlwifi/pcie/tx.c
index 3d53842ee60e..ee990a7a5411 100644
--- a/drivers/net/wireless/intel/iwlwifi/pcie/tx.c
+++ b/drivers/net/wireless/intel/iwlwifi/pcie/tx.c
@@ -1160,10 +1160,11 @@ void iwl_trans_pcie_reclaim(struct iwl_trans *trans, int txq_id, int ssn,
*/
iwl_trans_tx(trans, skb, dev_cmd_ptr, txq_id);
}
- spin_lock_bh(&txq->lock);
if (iwl_queue_space(trans, txq) > txq->low_mark)
iwl_wake_queue(trans, txq);
+
+ spin_lock_bh(&txq->lock);
}
if (txq->read_ptr == txq->write_ptr) {