mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-06 07:34:03 -04:00
wifi: mt76: mt7996: fix header translation logic
When header translation failure is indicated, the hardware will insert
an extra 2-byte field containing the data length after the protocol
type field. This happens either when the LLC-SNAP pattern did not match,
or if a VLAN header was detected.
The previous commit accidentally breaks the logic, so reverts back.
Fixes: 27db47ab1f (wifi: mt76: mt7996: enable mesh HW amsdu/de-amsdu support)
Signed-off-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
@@ -836,14 +836,19 @@ mt7996_mac_fill_rx(struct mt7996_dev *dev, struct sk_buff *skb)
|
||||
skb_pull(skb, hdr_gap);
|
||||
if (!hdr_trans && status->amsdu && !(ieee80211_has_a4(fc) && is_mesh)) {
|
||||
pad_start = ieee80211_get_hdrlen_from_skb(skb);
|
||||
} else if (hdr_trans && (rxd2 & MT_RXD2_NORMAL_HDR_TRANS_ERROR) &&
|
||||
get_unaligned_be16(skb->data + pad_start) == ETH_P_8021Q) {
|
||||
} else if (hdr_trans && (rxd2 & MT_RXD2_NORMAL_HDR_TRANS_ERROR)) {
|
||||
/* When header translation failure is indicated,
|
||||
* the hardware will insert an extra 2-byte field
|
||||
* containing the data length after the protocol
|
||||
* type field.
|
||||
* type field. This happens either when the LLC-SNAP
|
||||
* pattern did not match, or if a VLAN header was
|
||||
* detected.
|
||||
*/
|
||||
pad_start = 16;
|
||||
pad_start = 12;
|
||||
if (get_unaligned_be16(skb->data + pad_start) == ETH_P_8021Q)
|
||||
pad_start += 4;
|
||||
else
|
||||
pad_start = 0;
|
||||
}
|
||||
|
||||
if (pad_start) {
|
||||
|
||||
Reference in New Issue
Block a user