|
|
@@ -1114,16 +1114,17 @@ static void iwlagn_mac_flush(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
|
|
|
scd_queues &= ~(BIT(IWL_IPAN_CMD_QUEUE_NUM) |
|
|
|
BIT(IWL_DEFAULT_CMD_QUEUE_NUM));
|
|
|
|
|
|
- if (vif)
|
|
|
- scd_queues &= ~BIT(vif->hw_queue[IEEE80211_AC_VO]);
|
|
|
-
|
|
|
- IWL_DEBUG_TX_QUEUES(priv, "Flushing SCD queues: 0x%x\n", scd_queues);
|
|
|
- if (iwlagn_txfifo_flush(priv, scd_queues)) {
|
|
|
- IWL_ERR(priv, "flush request fail\n");
|
|
|
- goto done;
|
|
|
+ if (drop) {
|
|
|
+ IWL_DEBUG_TX_QUEUES(priv, "Flushing SCD queues: 0x%x\n",
|
|
|
+ scd_queues);
|
|
|
+ if (iwlagn_txfifo_flush(priv, scd_queues)) {
|
|
|
+ IWL_ERR(priv, "flush request fail\n");
|
|
|
+ goto done;
|
|
|
+ }
|
|
|
}
|
|
|
+
|
|
|
IWL_DEBUG_TX_QUEUES(priv, "wait transmit/flush all frames\n");
|
|
|
- iwl_trans_wait_tx_queue_empty(priv->trans, 0xffffffff);
|
|
|
+ iwl_trans_wait_tx_queue_empty(priv->trans, scd_queues);
|
|
|
done:
|
|
|
mutex_unlock(&priv->mutex);
|
|
|
IWL_DEBUG_MAC80211(priv, "leave\n");
|