diff options
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-agn-tx.c')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-agn-tx.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-tx.c b/drivers/net/wireless/iwlwifi/iwl-agn-tx.c index 11661fa28f21..c2a5c85542bf 100644 --- a/drivers/net/wireless/iwlwifi/iwl-agn-tx.c +++ b/drivers/net/wireless/iwlwifi/iwl-agn-tx.c | |||
@@ -83,6 +83,15 @@ static inline int get_fifo_from_ac(u8 ac) | |||
83 | return ac_to_fifo[ac]; | 83 | return ac_to_fifo[ac]; |
84 | } | 84 | } |
85 | 85 | ||
86 | static inline int get_ac_from_tid(u16 tid) | ||
87 | { | ||
88 | if (likely(tid < ARRAY_SIZE(tid_to_ac))) | ||
89 | return tid_to_ac[tid]; | ||
90 | |||
91 | /* no support for TIDs 8-15 yet */ | ||
92 | return -EINVAL; | ||
93 | } | ||
94 | |||
86 | static inline int get_fifo_from_tid(u16 tid) | 95 | static inline int get_fifo_from_tid(u16 tid) |
87 | { | 96 | { |
88 | if (likely(tid < ARRAY_SIZE(tid_to_ac))) | 97 | if (likely(tid < ARRAY_SIZE(tid_to_ac))) |
@@ -991,7 +1000,7 @@ int iwlagn_tx_agg_start(struct iwl_priv *priv, const u8 *ra, u16 tid, u16 *ssn) | |||
991 | tid_data = &priv->stations[sta_id].tid[tid]; | 1000 | tid_data = &priv->stations[sta_id].tid[tid]; |
992 | *ssn = SEQ_TO_SN(tid_data->seq_number); | 1001 | *ssn = SEQ_TO_SN(tid_data->seq_number); |
993 | tid_data->agg.txq_id = txq_id; | 1002 | tid_data->agg.txq_id = txq_id; |
994 | priv->txq[txq_id].swq_id = iwl_virtual_agg_queue_num(tx_fifo, txq_id); | 1003 | priv->txq[txq_id].swq_id = iwl_virtual_agg_queue_num(get_ac_from_tid(tid), txq_id); |
995 | spin_unlock_irqrestore(&priv->sta_lock, flags); | 1004 | spin_unlock_irqrestore(&priv->sta_lock, flags); |
996 | 1005 | ||
997 | ret = priv->cfg->ops->lib->txq_agg_enable(priv, txq_id, tx_fifo, | 1006 | ret = priv->cfg->ops->lib->txq_agg_enable(priv, txq_id, tx_fifo, |
@@ -1224,8 +1233,9 @@ static int iwlagn_tx_status_reply_compressed_ba(struct iwl_priv *priv, | |||
1224 | memset(&info->status, 0, sizeof(info->status)); | 1233 | memset(&info->status, 0, sizeof(info->status)); |
1225 | info->flags |= IEEE80211_TX_STAT_ACK; | 1234 | info->flags |= IEEE80211_TX_STAT_ACK; |
1226 | info->flags |= IEEE80211_TX_STAT_AMPDU; | 1235 | info->flags |= IEEE80211_TX_STAT_AMPDU; |
1227 | info->status.ampdu_ack_map = successes; | 1236 | info->status.ampdu_ack_len = successes; |
1228 | info->status.ampdu_ack_len = agg->frame_count; | 1237 | info->status.ampdu_ack_map = bitmap; |
1238 | info->status.ampdu_len = agg->frame_count; | ||
1229 | iwlagn_hwrate_to_tx_control(priv, agg->rate_n_flags, info); | 1239 | iwlagn_hwrate_to_tx_control(priv, agg->rate_n_flags, info); |
1230 | 1240 | ||
1231 | IWL_DEBUG_TX_REPLY(priv, "Bitmap %llx\n", (unsigned long long)bitmap); | 1241 | IWL_DEBUG_TX_REPLY(priv, "Bitmap %llx\n", (unsigned long long)bitmap); |