diff --git a/mt76x02_txrx.c b/mt76x02_txrx.c index e51b9bcf..40a1e8b7 100644 --- a/mt76x02_txrx.c +++ b/mt76x02_txrx.c @@ -156,6 +156,7 @@ int mt76x02_tx_prepare_skb(struct mt76_dev *mdev, void *txwi_ptr, struct mt76x02_txwi *txwi = txwi_ptr; struct sk_buff *skb = tx_info->skb; int hdrlen, pad, len, pid, qsel = MT_QSEL_EDCA; + bool ampdu = IEEE80211_SKB_CB(skb)->flags & IEEE80211_TX_CTL_AMPDU; if (qid == MT_TXQ_PSD && wcid && wcid->idx < 128) mt76x02_mac_wcid_set_drop(dev, wcid->idx, false); @@ -173,7 +174,7 @@ int mt76x02_tx_prepare_skb(struct mt76_dev *mdev, void *txwi_ptr, txwi->pktid = pid; - if (mt76_is_skb_pktid(pid)) + if (mt76_is_skb_pktid(pid) && ampdu) qsel = MT_QSEL_MGMT; tx_info->info = FIELD_PREP(MT_TXD_INFO_QSEL, qsel) | diff --git a/mt76x02_usb_core.c b/mt76x02_usb_core.c index c4a3e159..2cc190a9 100644 --- a/mt76x02_usb_core.c +++ b/mt76x02_usb_core.c @@ -80,6 +80,7 @@ int mt76x02u_tx_prepare_skb(struct mt76_dev *mdev, void *data, struct sk_buff *skb = tx_info->skb; struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; int pid, hdrlen, len = skb->len, ep = q2ep(mdev->q_tx[qid].q->hw_idx); + bool ampdu = IEEE80211_SKB_CB(skb)->flags & IEEE80211_TX_CTL_AMPDU; struct mt76x02_txwi *txwi; enum mt76_qsel qsel; u32 flags; @@ -98,7 +99,7 @@ int mt76x02u_tx_prepare_skb(struct mt76_dev *mdev, void *data, txwi->pktid = pid; - if (mt76_is_skb_pktid(pid) || ep == MT_EP_OUT_HCCA) + if ((mt76_is_skb_pktid(pid) && ampdu) || ep == MT_EP_OUT_HCCA) qsel = MT_QSEL_MGMT; else qsel = MT_QSEL_EDCA;