2021-09-27 13:43:51

by Thiraviyam Mariyappan

[permalink] [raw]
Subject: [PATCH] mac80211: fix incorrect nss config

In HE capabilities, HE-MCS Rx map field filled with value 0x3 for all eight
spatial streams if txrx chains configured as incorrect value.
This patch changes configure at least single spatial stream for HE-MCS
0 to 7 in all supported channel widths if nss configured as incorrect
value.

Signed-off-by: Thiraviyam Mariyappan <[email protected]>
---
net/mac80211/he.c | 7 +++++++
1 file changed, 7 insertions(+)

diff --git a/net/mac80211/he.c b/net/mac80211/he.c
index c05af70..ee113ff5 100644
--- a/net/mac80211/he.c
+++ b/net/mac80211/he.c
@@ -151,6 +151,13 @@ ieee80211_he_cap_ie_to_sta_he_cap(struct ieee80211_sub_if_data *sdata,
&he_cap_ie[sizeof(he_cap->he_cap_elem) + mcs_nss_size],
he_ppe_size);

+ if (he_cap->he_mcs_nss_supp.rx_mcs_80 == cpu_to_le16(0xFFFF)) {
+ he_cap->has_he = false;
+ sdata_info(sdata, "Ignoring HE IE from %pM due to incorrect rx_mcs_80\n",
+ sta->addr);
+ return;
+ }
+
he_cap->has_he = true;

sta->cur_max_bandwidth = ieee80211_sta_cap_rx_bw(sta);
--
2.7.4


2021-09-27 15:05:14

by Johannes Berg

[permalink] [raw]
Subject: Re: [PATCH] mac80211: fix incorrect nss config

On Mon, 2021-09-27 at 19:11 +0530, Thiraviyam Mariyappan wrote:
> In HE capabilities, HE-MCS Rx map field filled with value 0x3 for all eight
> spatial streams if txrx chains configured as incorrect value.
> This patch changes configure at least single spatial stream for HE-MCS
> 0 to 7 in all supported channel widths if nss configured as incorrect
> value.
>
> Signed-off-by: Thiraviyam Mariyappan <[email protected]>
> ---
>  net/mac80211/he.c | 7 +++++++
>  1 file changed, 7 insertions(+)
>
> diff --git a/net/mac80211/he.c b/net/mac80211/he.c
> index c05af70..ee113ff5 100644
> --- a/net/mac80211/he.c
> +++ b/net/mac80211/he.c
> @@ -151,6 +151,13 @@ ieee80211_he_cap_ie_to_sta_he_cap(struct ieee80211_sub_if_data *sdata,
>   &he_cap_ie[sizeof(he_cap->he_cap_elem) + mcs_nss_size],
>   he_ppe_size);
>  
>
> + if (he_cap->he_mcs_nss_supp.rx_mcs_80 == cpu_to_le16(0xFFFF)) {
> + he_cap->has_he = false;
> + sdata_info(sdata, "Ignoring HE IE from %pM due to incorrect rx_mcs_80\n",
> + sta->addr);
> + return;
> + }

Like so many other workarounds, this should probably come with a comment
as to _why_ we're doing this, ideally including the model/firmware
version ...

johannes