diff options
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-4965.c')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-4965.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-4965.c b/drivers/net/wireless/iwlwifi/iwl-4965.c index 9546582e983f..70c0455b622d 100644 --- a/drivers/net/wireless/iwlwifi/iwl-4965.c +++ b/drivers/net/wireless/iwlwifi/iwl-4965.c | |||
@@ -3547,13 +3547,16 @@ static void iwl4965_rx_reply_compressed_ba(struct iwl_priv *priv, | |||
3547 | * block-ack window (we assume that they've been successfully | 3547 | * block-ack window (we assume that they've been successfully |
3548 | * transmitted ... if not, it's too late anyway). */ | 3548 | * transmitted ... if not, it's too late anyway). */ |
3549 | if (txq->q.read_ptr != (ba_resp_scd_ssn & 0xff)) { | 3549 | if (txq->q.read_ptr != (ba_resp_scd_ssn & 0xff)) { |
3550 | /* calculate mac80211 ampdu sw queue to wake */ | ||
3551 | int ampdu_q = | ||
3552 | scd_flow - IWL_BACK_QUEUE_FIRST_ID + priv->hw->queues; | ||
3550 | int freed = iwl4965_tx_queue_reclaim(priv, scd_flow, index); | 3553 | int freed = iwl4965_tx_queue_reclaim(priv, scd_flow, index); |
3551 | priv->stations[ba_resp->sta_id]. | 3554 | priv->stations[ba_resp->sta_id]. |
3552 | tid[ba_resp->tid].tfds_in_queue -= freed; | 3555 | tid[ba_resp->tid].tfds_in_queue -= freed; |
3553 | if (iwl4965_queue_space(&txq->q) > txq->q.low_mark && | 3556 | if (iwl4965_queue_space(&txq->q) > txq->q.low_mark && |
3554 | priv->mac80211_registered && | 3557 | priv->mac80211_registered && |
3555 | agg->state != IWL_EMPTYING_HW_QUEUE_DELBA) | 3558 | agg->state != IWL_EMPTYING_HW_QUEUE_DELBA) |
3556 | ieee80211_wake_queue(priv->hw, scd_flow); | 3559 | ieee80211_wake_queue(priv->hw, ampdu_q); |
3557 | iwl4965_check_empty_hw_queue(priv, ba_resp->sta_id, | 3560 | iwl4965_check_empty_hw_queue(priv, ba_resp->sta_id, |
3558 | ba_resp->tid, scd_flow); | 3561 | ba_resp->tid, scd_flow); |
3559 | } | 3562 | } |