2024-03-15 14:48:14

by Janusz Dziedzic

[permalink] [raw]
Subject: BE200 - 6.5 backports - disabled EHT issue

Hello,
Using EHT AP with 320MHz support - 6GHz.
Seems this part disable EHT on BE200 during assoc.
FW used: iwlwifi-gl-c0-fm-c0-83.ucode

I see this one do this:
if (!ieee80211_verify_sta_eht_mcs_support(sdata, sband, eht_oper))
*conn_flags |= IEEE80211_CONN_DISABLE_EHT;

Testing on openwrt and using backports.
Is there some patch I can easy cherry-pick to fix it?
So far just disable ieee80211_verify_sta_eht_mcs_support() check and
BE200 works in EHT mode correctly.

BR
Janusz


2024-03-15 18:05:02

by Johannes Berg

[permalink] [raw]
Subject: Re: BE200 - 6.5 backports - disabled EHT issue

>
> I see this one do this:
> if (!ieee80211_verify_sta_eht_mcs_support(sdata, sband, eht_oper))
> *conn_flags |= IEEE80211_CONN_DISABLE_EHT;
>
> Testing on openwrt and using backports.
> Is there some patch I can easy cherry-pick to fix it?
> So far just disable ieee80211_verify_sta_eht_mcs_support() check and
> BE200 works in EHT mode correctly.

Then either the code there or the AP is broken?

That function checks that the client supports the MCSes that the AP
requires. If it lets you connect without them, then it's broken. If the
checks there are wrong, the code is broken :)

I guess you can capture the assoc response frame and we can check
manually.

johannes

2024-03-17 09:53:24

by Janusz Dziedzic

[permalink] [raw]
Subject: Re: BE200 - 6.5 backports - disabled EHT issue

pt., 15 mar 2024 o 19:04 Johannes Berg <[email protected]> napisał(a):
>
> >
> > I see this one do this:
> > if (!ieee80211_verify_sta_eht_mcs_support(sdata, sband, eht_oper))
> > *conn_flags |= IEEE80211_CONN_DISABLE_EHT;
> >
> > Testing on openwrt and using backports.
> > Is there some patch I can easy cherry-pick to fix it?
> > So far just disable ieee80211_verify_sta_eht_mcs_support() check and
> > BE200 works in EHT mode correctly.
>
> Then either the code there or the AP is broken?
>
> That function checks that the client supports the MCSes that the AP
> requires. If it lets you connect without them, then it's broken. If the
> checks there are wrong, the code is broken :)
>
> I guess you can capture the assoc response frame and we can check
> manually.
Added such dbg:

printk(KERN_ERR "%d vs %d, %d vs %d\n",
req_rx_nss, have_rx_nss,
req_tx_nss, have_tx_nss);
if (req_rx_nss > have_rx_nss ||
req_tx_nss > have_tx_nss)
return false;

[ 70.243183] ieee80211_verify_sta_eht_mcs_support nss 4 -
(ARRAY_SIZE(req->rx_tx_max_nss))
[ 70.248336] 4 vs 2, 4 vs 2
[ 70.251035] disable EHT due to mcs
[ 70.260724] wlan1: send auth to ....

AP have 4 NSS.
Will dig more ...

BR
Janusz

2024-03-18 09:58:58

by Johannes Berg

[permalink] [raw]
Subject: Re: BE200 - 6.5 backports - disabled EHT issue

On Sun, 2024-03-17 at 10:53 +0100, Janusz Dziedzic wrote:
> pt., 15 mar 2024 o 19:04 Johannes Berg <[email protected]> napisał(a):
> >
> > >
> > > I see this one do this:
> > > if (!ieee80211_verify_sta_eht_mcs_support(sdata, sband, eht_oper))
> > > *conn_flags |= IEEE80211_CONN_DISABLE_EHT;
> > >
> > > Testing on openwrt and using backports.
> > > Is there some patch I can easy cherry-pick to fix it?
> > > So far just disable ieee80211_verify_sta_eht_mcs_support() check and
> > > BE200 works in EHT mode correctly.
> >
> > Then either the code there or the AP is broken?
> >
> > That function checks that the client supports the MCSes that the AP
> > requires. If it lets you connect without them, then it's broken. If the
> > checks there are wrong, the code is broken :)
> >
> > I guess you can capture the assoc response frame and we can check
> > manually.
> Added such dbg:
>
> printk(KERN_ERR "%d vs %d, %d vs %d\n",
> req_rx_nss, have_rx_nss,
> req_tx_nss, have_tx_nss);
> if (req_rx_nss > have_rx_nss ||
> req_tx_nss > have_tx_nss)
> return false;
>
> [ 70.243183] ieee80211_verify_sta_eht_mcs_support nss 4 -
> (ARRAY_SIZE(req->rx_tx_max_nss))
> [ 70.248336] 4 vs 2, 4 vs 2
> [ 70.251035] disable EHT due to mcs
> [ 70.260724] wlan1: send auth to ....
>
> AP have 4 NSS.

Which doesn't just mean it _has_ 4 NSS though, it also means it
_clients_ to have 4 NSS, if I'm reading the code correctly? So we
correctly don't connect, and the AP incorrectly lets us connect if you
hack out the check.

Arguably the AP should not even include 4 NSS as the minimum
requirement, but of course it can, if it really wants pretty much no
client to connect (in EHT) :-)

Unless I'm misreading the code, but it looks pretty straight-forward.
Check what wireshark says about the EHT operation element?

johannes

2024-03-18 11:23:41

by Janusz Dziedzic

[permalink] [raw]
Subject: Re: BE200 - 6.5 backports - disabled EHT issue

pon., 18 mar 2024 o 10:58 Johannes Berg <[email protected]> napisał(a):
>
> On Sun, 2024-03-17 at 10:53 +0100, Janusz Dziedzic wrote:
> > pt., 15 mar 2024 o 19:04 Johannes Berg <[email protected]> napisał(a):
> > >
> > > >
> > > > I see this one do this:
> > > > if (!ieee80211_verify_sta_eht_mcs_support(sdata, sband, eht_oper))
> > > > *conn_flags |= IEEE80211_CONN_DISABLE_EHT;
> > > >
> > > > Testing on openwrt and using backports.
> > > > Is there some patch I can easy cherry-pick to fix it?
> > > > So far just disable ieee80211_verify_sta_eht_mcs_support() check and
> > > > BE200 works in EHT mode correctly.
> > >
> > > Then either the code there or the AP is broken?
> > >
> > > That function checks that the client supports the MCSes that the AP
> > > requires. If it lets you connect without them, then it's broken. If the
> > > checks there are wrong, the code is broken :)
> > >
> > > I guess you can capture the assoc response frame and we can check
> > > manually.
> > Added such dbg:
> >
> > printk(KERN_ERR "%d vs %d, %d vs %d\n",
> > req_rx_nss, have_rx_nss,
> > req_tx_nss, have_tx_nss);
> > if (req_rx_nss > have_rx_nss ||
> > req_tx_nss > have_tx_nss)
> > return false;
> >
> > [ 70.243183] ieee80211_verify_sta_eht_mcs_support nss 4 -
> > (ARRAY_SIZE(req->rx_tx_max_nss))
> > [ 70.248336] 4 vs 2, 4 vs 2
> > [ 70.251035] disable EHT due to mcs
> > [ 70.260724] wlan1: send auth to ....
> >
> > AP have 4 NSS.
>
> Which doesn't just mean it _has_ 4 NSS though, it also means it
> _clients_ to have 4 NSS, if I'm reading the code correctly? So we
> correctly don't connect, and the AP incorrectly lets us connect if you
> hack out the check.
>
> Arguably the AP should not even include 4 NSS as the minimum
> requirement, but of course it can, if it really wants pretty much no
> client to connect (in EHT) :-)
>
> Unless I'm misreading the code, but it looks pretty straight-forward.
> Check what wireshark says about the EHT operation element?
>

Basic EHT-MCS And Nss Set: 0x44444444
Seems this is AP issue, will report it.
Thanks for help.

BR
Janusz