iwlwifi: pcie: wake the queue if stopped when being unmapped
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Thu, 13 Jun 2013 10:10:00 +0000 (13:10 +0300)
committerJohannes Berg <johannes.berg@intel.com>
Thu, 13 Jun 2013 14:44:04 +0000 (16:44 +0200)
When the queue is unmapped while it was so loaded that
mac80211's was stopped, we need to wake the queue after
having freed all the packets in the queue.
Not doing so can result in weird stuff like:

* run lots of traffic (mac80211's queue gets stopped)
* RFKILL
* de-assert RFKILL
* no traffic

Cc: stable@vger.kernel.org
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/iwlwifi/pcie/tx.c

index 51fca425def73592e2be4b2f50cc0f37f5418ae0..48acfc6201914ae49823077cea5e78706004ce44 100644 (file)
@@ -583,6 +583,9 @@ static void iwl_pcie_txq_unmap(struct iwl_trans *trans, int txq_id)
        }
        txq->active = false;
        spin_unlock_bh(&txq->lock);
+
+       /* just in case - this queue may have been stopped */
+       iwl_wake_queue(trans, txq);
 }
 
 /*