mt76: fix using mac80211 tx skb header padding

If the 802.11 frame has no payload, skip the padding.
Also add missing code to mt76x02u

Signed-off-by: Felix Fietkau <[email protected]>
This commit is contained in:
Felix Fietkau
2019-03-22 14:02:57 +01:00
parent 3a7e6bbac3
commit deacb8fa8a
2 changed files with 7 additions and 3 deletions
+3 -2
View File
@@ -154,13 +154,14 @@ int mt76x02_tx_prepare_skb(struct mt76_dev *mdev, void *txwi_ptr,
struct mt76x02_dev *dev = container_of(mdev, struct mt76x02_dev, mt76);
struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data;
struct mt76x02_txwi *txwi = txwi_ptr;
int hdrlen, len, pid, qsel = MT_QSEL_EDCA;
int hdrlen, pad, len, pid, qsel = MT_QSEL_EDCA;
if (qid == MT_TXQ_PSD && wcid && wcid->idx < 128)
mt76x02_mac_wcid_set_drop(dev, wcid->idx, false);
hdrlen = ieee80211_hdrlen(hdr->frame_control);
len = skb->len - (hdrlen & 2);
pad = skb->len > hdrlen ? (hdrlen & 2) : 0;
len = skb->len - pad;
mt76x02_mac_write_txwi(dev, txwi, skb, wcid, sta, len);
pid = mt76_tx_status_skb_add(mdev, wcid, skb);