Patch "wifi: mac80211: recalc chanctx mindef before assigning" has been added to the 6.1-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: recalc chanctx mindef before assigning

to the 6.1-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-recalc-chanctx-mindef-before-assigning.patch
and it can be found in the queue-6.1 subdirectory.

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



commit 63c25c7f5707e6fc9781f629160f796740f6d4d1
Author: Johannes Berg <johannes.berg@xxxxxxxxx>
Date:   Thu May 4 16:45:04 2023 +0300

    wifi: mac80211: recalc chanctx mindef before assigning
    
    [ Upstream commit 04312de4ced4b152749614e8179f3978a20a992f ]
    
    When we allocate a new channel context, or find an existing one
    that is compatible, we currently assign it to a link before its
    mindef is updated. This leads to strange situations, especially
    in link switching where you switch to an 80 MHz link and expect
    it to be active immediately, but the mindef is still configured
    to 20 MHz while assigning.  Also, it's strange that the chandef
    passed to the assign method's argument is wider than the one in
    the context.
    
    Fix this by calculating the mindef with the new link considered
    before calling the driver.
    
    In particular, this fixes an iwlwifi problem during link switch
    where the firmware would assert because the (link) station that
    was added for the AP is configured to transmit at a bandwidth
    that's wider than the channel context that it's configured on.
    
    Signed-off-by: Johannes Berg <johannes.berg@xxxxxxxxx>
    Signed-off-by: Gregory Greenman <gregory.greenman@xxxxxxxxx>
    Link: https://lore.kernel.org/r/20230504134511.828474-5-gregory.greenman@xxxxxxxxx
    Signed-off-by: Johannes Berg <johannes.berg@xxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/net/mac80211/chan.c b/net/mac80211/chan.c
index c5d345e53056a..f07e34bed8f3a 100644
--- a/net/mac80211/chan.c
+++ b/net/mac80211/chan.c
@@ -871,6 +871,9 @@ static int ieee80211_assign_link_chanctx(struct ieee80211_link_data *link,
 	}
 
 	if (new_ctx) {
+		/* recalc considering the link we'll use it for now */
+		ieee80211_recalc_chanctx_min_def(local, new_ctx, link);
+
 		ret = drv_assign_vif_chanctx(local, sdata, link->conf, new_ctx);
 		if (ret)
 			goto out;



[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