> -----Original Message----- > From: Johannes Berg <johannes@xxxxxxxxxxxxxxxx> > Sent: Tuesday, December 27, 2022 9:13 PM > To: Rameshkumar Sundaram (QUIC) <quic_ramess@xxxxxxxxxxx> > Cc: linux-wireless@xxxxxxxxxxxxxxx > Subject: Re: [PATCH] wifi: mac80211: Allow NSS change only up to capability > > On Tue, 2022-12-27 at 08:04 +0000, Rameshkumar Sundaram (QUIC) wrote: > > > > > > > + if (nss <= link_sta->pub->rx_nss) { > > > > + link_sta->pub->rx_nss = nss; > > > > > > That, however, doesn't seem right. It means that you can only ever > > > reduce the RX NSS, not switch it around within the originally > > > negotiated range. > > > > > Not sure if I understood you comment. > > We reset Sta's rx_nss > > I don't see where it's being reset? > > The way I'm reading this, you check nss<=rx_nss and then set rx_nss=nss. > I didn't see any code that sets rx_nss higher, but maybe I missed it? > + cur_nss = link_sta->pub->rx_nss; + link_sta->pub->rx_nss = 0; + ieee80211_sta_set_rx_nss(link_sta); Here we take copy of current rx_nss of STA (that sent the VHT Op. mode notif frame to AP), reset it and call ieee80211_sta_set_rx_nss() which will set link_sta->pub->rx_nss to Max nss that was capped and stored for this STA during association. Hence Below check will allow an nss change until max_nss at any point. + if (nss <= link_sta->pub->rx_nss) { + link_sta->pub->rx_nss = nss; > So if say rx_nss is 4, and nss is 2, then we set rx_nss to 2. But now if the AP > wants to switch back to 4, nss will be 4, rx_nss will be 2, and the change is > ignored, no? > > johannes