Patch "wifi: mac80211: fix tid removal during mesh forwarding" has been added to the 6.12-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    wifi: mac80211: fix tid removal during mesh forwarding

to the 6.12-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     wifi-mac80211-fix-tid-removal-during-mesh-forwarding.patch
and it can be found in the queue-6.12 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 19b8a3ca9ded2bfba91e6995237fb8049e9f130f
Author: Andy Strohman <andrew@xxxxxxxxxxxxxxxxxx>
Date:   Tue Jan 7 10:44:31 2025 +0000

    wifi: mac80211: fix tid removal during mesh forwarding
    
    [ Upstream commit 3aaa1a5a9a2ceeb32afa6ea4110a92338a863c33 ]
    
    With change (wifi: mac80211: fix receiving A-MSDU
    frames on mesh interfaces), a non-zero TID assignment
    is lost during slow path mesh forwarding.
    
    Prior to this change, ieee80211_rx_h_mesh_fwding()
    left the TID intact in the header.
    
    As a result of this header corruption, packets belonging
    to non-zero TIDs will get treating as belonging
    TID 0 by functions such as ieee80211_get_tid().
    While this miscategorization by itself is an
    issue, there are additional ramifications
    due to the fact that skb->priority still reflects
    the mesh forwarded packet's ingress (correct) TID.
    
    The mt7915 driver inspects the TID recorded within
    skb->priority and relays this to the
    hardware/radio during TX. The radio firmware appears to
    react to this by changing the sequence control
    header, but it does not also ensure/correct the TID in
    the QoS control header. As a result, the receiver
    will see packets with sequence numbers corresponding
    to the wrong TID. The receiver of the forwarded
    packet will see TID 0 in QoS control but a sequence number
    corresponding to the correct (different) TID in sequence
    control. This causes data stalls for TID 0 until
    the TID 0 sequence number advances past what the receiver
    believes it should be due to this bug.
    
    Mesh routing mpath changes cause a brief transition
    from fast path forwarding to slow path forwarding.
    Since this bug only affects the slow path forwarding,
    mpath changes bring opportunity for the bug to be triggered.
    In the author's case, he was experiencing TID 0 data stalls
    after mpath changes on an intermediate mesh node.
    
    These observed stalls may be specific
    to mediatek radios. But the inconsistency between
    the packet header and skb->priority may cause problems
    for other drivers as well. Regardless if this causes
    connectivity issues on other radios, this change is
    necessary in order transmit (forward) the packet on the
    correct TID and to have a consistent view a packet's TID
    within mac80211.
    
    Fixes: 986e43b19ae9 ("wifi: mac80211: fix receiving A-MSDU frames on mesh interfaces")
    Signed-off-by: Andy Strohman <andrew@xxxxxxxxxxxxxxxxxx>
    Link: https://patch.msgid.link/20250107104431.446775-1-andrew@xxxxxxxxxxxxxxxxxx
    Signed-off-by: Johannes Berg <johannes.berg@xxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index 694b43091fec6..6f3a86040cfcd 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -2994,6 +2994,7 @@ ieee80211_rx_mesh_data(struct ieee80211_sub_if_data *sdata, struct sta_info *sta
 	}
 
 	IEEE80211_IFSTA_MESH_CTR_INC(ifmsh, fwded_frames);
+	ieee80211_set_qos_hdr(sdata, fwd_skb);
 	ieee80211_add_pending_skb(local, fwd_skb);
 
 rx_accept:




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux