++ struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(skb);
+ struct ath_frame_info *fi = get_frame_info(skb);
+ struct list_head bf_head;
+- struct ath_buf *bf;
+-
+- bf = fi->bf;
++ struct ath_buf *bf = fi->bf;
+
+ INIT_LIST_HEAD(&bf_head);
+ list_add_tail(&bf->list, &bf_head);
+ bf->bf_state.bf_type = 0;
++ if (tid && (tx_info->flags & IEEE80211_TX_CTL_AMPDU)) {
++ bf->bf_state.bf_type = BUF_AMPDU;
++ ath_tx_addto_baw(sc, tid, bf);
++ }
+
+ bf->bf_next = NULL;
+ bf->bf_lastbf = bf;
+@@ -1985,6 +2111,7 @@ static int ath_tx_prepare(struct ieee802