diff mbox

[2/2] Require WMM to be enabled before allowing inclusion of the QBSS Load element

Message ID CAGnO3dpwYNHc1VsjX7aWJtaH7ZzkFD4y9J-oD-jH+cgkwPUpQA@mail.gmail.com
State Changes Requested
Headers show

Commit Message

Nick Lowe Feb. 22, 2017, 4:55 p.m. UTC
Require WMM to be enabled before allowing inclusion of
 the QBSS Load element. WMM is based on the EDCA portion of 802.11e that
 defines a QBSS.

Signed-off-by: Nick Lowe <nick.lowe@gmail.com>
---
 hostapd/hostapd.conf | 5 +++--
 src/ap/bss_load.c    | 2 +-
 2 files changed, 4 insertions(+), 3 deletions(-)

Comments

Jouni Malinen Feb. 25, 2017, 8:31 a.m. UTC | #1
On Wed, Feb 22, 2017 at 04:55:19PM +0000, Nick Lowe wrote:
>  Require WMM to be enabled before allowing inclusion of
>  the QBSS Load element. WMM is based on the EDCA portion of 802.11e that
>  defines a QBSS.

Why would this be a good thing to do? What harm is there in including
the BSS Load element even if WMM is disabled?

> diff --git a/hostapd/hostapd.conf b/hostapd/hostapd.conf
> @@ -484,9 +484,10 @@ wmm_ac_vo_acm=0
>  # associated stations in the BSS. By default, this bridging is allowed.
>  #ap_isolate=1
> 
> -# BSS Load update period (in BUs)
> -# This field is used to enable and configure adding a BSS Load element into
> +# QBSS Load update period (in BUs)
> +# This field is used to enable and configure adding a QBSS Load element into
>  # Beacon and Probe Response frames.
> +# Note: You will also need to enable WMM, the basis for a QBSS via EDCA.
>  #bss_load_update_period=50

The name of that element if "BSS Load element", not "QBSS Load element".
Nick Lowe Feb. 25, 2017, 2:48 p.m. UTC | #2
Hi Jouni,

It is called the QBSS Load element in 802.11e-2005 and is called the
BSS Load element in 802.11-2012.

Calling it QBSS Load in the documentation more clearly distinguishes
that by spec this is for a QBSS only, that is, where WMM is enabled
only.

802.11e-2005 and 802.11-2012 specify that this element must only be
present for a QOS-enhanced BSS.

From 802.11e-2005:

22
QBSS Load
The QBSS Load information element is only present within Beacon frames
generated by QAPs. The QBSS Load element is present when
dot11QosOptionImplemented and dot11QBSSLoadImplemented are both true.

23
EDCA Parameter Set
The EDCA Parameter Set information element is only present within
Beacon frames generated by QAPs. The EDCA Parameter Set element is
present when dot11QosOptionImplemented is true and the QoS Capability
element is not present.

24
QoS Capability
The QoS Capability information element is only present within Beacon
frames generated by QAPs. The QoS Capability element is present when
dot11QosOptionImplemented is true and EDCA Parameter Set element is
not present.

Thanks,

Nick
Jouni Malinen Feb. 25, 2017, 5:44 p.m. UTC | #3
On Sat, Feb 25, 2017 at 02:48:46PM +0000, Nick Lowe wrote:
> It is called the QBSS Load element in 802.11e-2005 and is called the
> BSS Load element in 802.11-2012.

It might have been called QBSS Load element ten years ago, but the name
of this element is BSS Load element in the current standard and that's
the name hostap.git should use for it.

> Calling it QBSS Load in the documentation more clearly distinguishes
> that by spec this is for a QBSS only, that is, where WMM is enabled
> only.

I rather call it with the correct name and if there is a particular need
for explicitly stating something about QoS BSS, that can be done
separately. "QBSS" was removed from the standard.

> 802.11e-2005 and 802.11-2012 specify that this element must only be
> present for a QOS-enhanced BSS.
> 
> From 802.11e-2005:

IEEE Std 802.11e-2005 is not relevant; it became obsolete when the
P802.11e amendment was merged into the main standard. We should use the
current standard, i.e., IEEE Std 802.11-2016 when talking about what the
standard requires.

I don't see why hostapd should prevent BSS Load element from being
added to Beacon frames even if WMM is disabled. This is already added
only if explicitly configured to do so (bss_load_update_period which
defaults to being disabled). As such, hostapd is in no way trying to
force that element to be there for WMM disabled cases.
diff mbox

Patch

diff --git a/hostapd/hostapd.conf b/hostapd/hostapd.conf
index 89e61a1..96aed35 100644
--- a/hostapd/hostapd.conf
+++ b/hostapd/hostapd.conf
@@ -484,9 +484,10 @@  wmm_ac_vo_acm=0
 # associated stations in the BSS. By default, this bridging is allowed.
 #ap_isolate=1

-# BSS Load update period (in BUs)
-# This field is used to enable and configure adding a BSS Load element into
+# QBSS Load update period (in BUs)
+# This field is used to enable and configure adding a QBSS Load element into
 # Beacon and Probe Response frames.
+# Note: You will also need to enable WMM, the basis for a QBSS via EDCA.
 #bss_load_update_period=50

 # Fixed BSS Load value for testing purposes
diff --git a/src/ap/bss_load.c b/src/ap/bss_load.c
index fb63942..42b9d22 100644
--- a/src/ap/bss_load.c
+++ b/src/ap/bss_load.c
@@ -46,7 +46,7 @@  int bss_load_update_init(struct hostapd_data *hapd)
  struct hostapd_config *iconf = hapd->iconf;
  unsigned int sec, usec;

- if (!conf->bss_load_update_period || !iconf->beacon_int)
+ if (!conf->wmm_enabled || !conf->bss_load_update_period || !iconf->beacon_int)
  return -1;

  hapd->bss_load_update_timeout = conf->bss_load_update_period *