2022-12-17 00:28:15

by James Prestwood

[permalink] [raw]
Subject: Why does HT/VHT/HE/EHT depend on WMM?

Hi,

I noticed this bit of code which disables HT/VHT/HE/EHT if the AP
doesn't support WMM:

net/mac80211/mlme.c:ieee80211_mgd_assoc()

/* also disable HT/VHT/HE/EHT if the AP doesn't use WMM */
if (!bss->wmm_used) {
conn_flags |= IEEE80211_CONN_DISABLE_HT;
conn_flags |= IEEE80211_CONN_DISABLE_VHT;
conn_flags |= IEEE80211_CONN_DISABLE_HE;
conn_flags |= IEEE80211_CONN_DISABLE_EHT;
netdev_info(sdata->dev, "disabling HT/VHT/HE as WMM/QoS is not
supported by the AP\n");
}

It seems suspicious that 802.11 features would depend on a wifi-
alliance spec. Usually its the other way around.

I can see no such limitation set in 802.11 or the WMM spec, so I wonder
why this was done? If someone could educate me on why I'd be happy to
update the comment.

Thanks,
James


2023-01-18 14:02:33

by Johannes Berg

[permalink] [raw]
Subject: Re: Why does HT/VHT/HE/EHT depend on WMM?

On Fri, 2022-12-16 at 16:17 -0800, James Prestwood wrote:
> Hi,
>
> I noticed this bit of code which disables HT/VHT/HE/EHT if the AP
> doesn't support WMM:
>
> net/mac80211/mlme.c:ieee80211_mgd_assoc()
>
> /* also disable HT/VHT/HE/EHT if the AP doesn't use WMM */
> if (!bss->wmm_used) {
> conn_flags |= IEEE80211_CONN_DISABLE_HT;
> conn_flags |= IEEE80211_CONN_DISABLE_VHT;
> conn_flags |= IEEE80211_CONN_DISABLE_HE;
> conn_flags |= IEEE80211_CONN_DISABLE_EHT;
> netdev_info(sdata->dev, "disabling HT/VHT/HE as WMM/QoS is not
> supported by the AP\n");
> }
>
> It seems suspicious that 802.11 features would depend on a wifi-
> alliance spec. Usually its the other way around.
>
> I can see no such limitation set in 802.11 or the WMM spec, so I wonder
> why this was done? If someone could educate me on why I'd be happy to
> update the comment.
>

It depends on QoS data frames being usable.

Which in turn technically depends on being a QoS-STA in the IEEE spec,
but in practice nobody implements the required signalling for that and
uses the WMM signalling instead. We don't (and probably don't really
want to since it'd be pointless) implemented spec-QoS instead or in
addition to WMM.

johannes