diff mbox series

[EXT,RESEND] Issue: Non-HE capable interface advertising HE

Message ID VE1PR04MB6431889C6886D23AE655549D8D579@VE1PR04MB6431.eurprd04.prod.outlook.com
State Changes Requested
Headers show
Series [EXT,RESEND] Issue: Non-HE capable interface advertising HE | expand

Commit Message

Deepti Panchal Sept. 29, 2022, 10:41 a.m. UTC
This mail describes the purpose of the attached "hostapd" patch.
The patch avoids issue when there is mismatch between user's 11ax config and DRV capability

Behavior (without the patch):
==========================
    Non-HE capable interface advertising HE IEs/Capabilities in Beacon/Probe Response/Association Response frames if "ieee80211ax=1" configuration is used

Patch Description:
================
    1. The HE capability for an AP iface was read from the driver, but was not used to update the "drv_flags" for the interface
    2. Change is now added to update the HE capability in the "drv_flags" of the interface
    3. If the interface does not support HE capability, the "iface->conf->ieee80211ax" flag is set to 0
    4. Now Beacons/Probe response/Association Response will advertise HE capabilities ONLY if the interface is HE capable

Patch Verification:
=================
1.      For Intel and NXP non-11ax/HE capable chip/interface, when "ieee80211ax=1" is used in the config file, NO HE IEs are added in the Beacon/Probe Response/Association Response frames
2.      For NXP 11ax/HE capable chips, the HE IEs get added correctly to the required MGMT frames

==============================================================================================================
From e19bf318ce2a27ccc03f72023b2fc7f1bf6cd496 Mon Sep 17 00:00:00 2001
From: Deepti Panchal <deepti.panchal@nxp.com>
Date: Mon, 18 Jul 2022 15:59:10 +0530
Subject: [PATCH] Issue: Non-HE capable interface advertising HE  IEs/Capabilities in Beacon/Probe Response/Association Response frames if  "ieee80211ax=1" configuration is used

Change Description:
    1. The HE capability for an AP iface was read from the driver, but was not used to update the "drv_flags" for the iface
    2. Change is now added to update the HE capability in the "drv_flags" of the interface
    3. If the interface does not support HE capability, the "iface->conf->ieee80211ax" flag is set to 0
    4. Hence now Beacons/Probe response/Association Response will advertise HE capabilities ONLY if the interface is HE capable
---
 src/ap/hw_features.c | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

Comments

Jouni Malinen Nov. 5, 2022, 2:27 p.m. UTC | #1
On Thu, Sep 29, 2022 at 10:41:53AM +0000, Deepti Panchal wrote:
> This mail describes the purpose of the attached "hostapd" patch.
> The patch avoids issue when there is mismatch between user's 11ax config and DRV capability
> 
> Behavior (without the patch):
> ==========================
>     Non-HE capable interface advertising HE IEs/Capabilities in Beacon/Probe Response/Association Response frames if "ieee80211ax=1" configuration is used
> 
> Patch Description:
> ================
>     1. The HE capability for an AP iface was read from the driver, but was not used to update the "drv_flags" for the interface
>     2. Change is now added to update the HE capability in the "drv_flags" of the interface
>     3. If the interface does not support HE capability, the "iface->conf->ieee80211ax" flag is set to 0
>     4. Now Beacons/Probe response/Association Response will advertise HE capabilities ONLY if the interface is HE capable

So this would make hostapd ignore what the configuration is trying it to
do? That does not sound correct behavior, i.e., I would have expected
the configuration to be rejected instead of being silently ignored.

In any case, I cannot really consider applying this patch without the
Signed-off-by: line in the commit message as described in the
CONTRIBUTIONS file.
Deepti Panchal Nov. 14, 2022, 12:33 p.m. UTC | #2
Hi Jouni,

My patch will override the user config in case the hardware does not support HE configuration.
An error message will also be shown in the debug logs indicating the hardware is not HE supported.

Can you  please elaborate on what you mean by:
"I would have expected the configuration to be rejected instead of being silently ignored"

Please find the modified patch with the "Signed-off" line:

======================================================================================
From 1c6e7696df5664b86a5ce16631e04801fe5907a6 Mon Sep 17 00:00:00 2001
From: Deepti Panchal <deepti.panchal@nxp.com>
Date: Mon, 18 Jul 2022 15:59:10 +0530
Subject: [PATCH] Issue: Non-HE capable interface advertising HE
 IEs/Capabilities in Beacon/Probe Response/Association Response frames if
 "ieee80211ax=1" configuration is used

Change Description:
    1. The HE capability for an AP iface was read from the driver, but was not used to update the "drv_flags" for the iface
    2. Change is now added to update the HE capability in the "drv_flags" of the interface
    3. If the interface does not support HE capability, the "iface->conf->ieee80211ax" flag is set to 0
    4. Hence now Beacons/Probe response/Association Response will advertise HE capabilities ONLY if the interface is HE capable

Signed-off-by: Deepti Panchal <deepti.panchal@nxp.com>
---
 src/ap/hw_features.c | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/src/ap/hw_features.c b/src/ap/hw_features.c
index ed5ff41d3..87d7b52bd 100644
--- a/src/ap/hw_features.c
+++ b/src/ap/hw_features.c
@@ -679,7 +679,19 @@ static int ieee80211ac_supported_vht_capab(struct hostapd_iface *iface)
 #ifdef CONFIG_IEEE80211AX
 static int ieee80211ax_supported_he_capab(struct hostapd_iface *iface)
 {
-	return 1;
+    struct hostapd_hw_modes *mode = iface->current_mode;
+    struct he_capabilities *he_cap = &(mode->he_capab[IEEE80211_MODE_AP]);
+
+    /* Check iface HE capability, update drv_flags and HE config setting */
+    if (he_cap && he_cap->he_supported) {
+        wpa_printf(MSG_DEBUG, "iface hw he_supported: %d", he_cap->he_supported);
+        iface->drv_flags |= WPA_DRIVER_FLAGS_HE_CAPABILITIES;
+    } else {
+        wpa_printf(MSG_DEBUG, "iface does not support HE capability");
+        iface->conf->ieee80211ax = 0;
+    }
+
+    return 1;
 }
 #endif /* CONFIG_IEEE80211AX */
==================================================================================

Thanks,
Deepti

-----Original Message-----
From: Jouni Malinen <j@w1.fi> 
Sent: Saturday, November 5, 2022 19:57
To: Deepti Panchal <deepti.panchal@nxp.com>
Cc: hostap@lists.infradead.org
Subject: Re: [EXT] [RESEND PATCH] Issue: Non-HE capable interface advertising HE

Caution: EXT Email

On Thu, Sep 29, 2022 at 10:41:53AM +0000, Deepti Panchal wrote:
> This mail describes the purpose of the attached "hostapd" patch.
> The patch avoids issue when there is mismatch between user's 11ax 
> config and DRV capability
>
> Behavior (without the patch):
> ==========================
>     Non-HE capable interface advertising HE IEs/Capabilities in 
> Beacon/Probe Response/Association Response frames if "ieee80211ax=1" 
> configuration is used
>
> Patch Description:
> ================
>     1. The HE capability for an AP iface was read from the driver, but was not used to update the "drv_flags" for the interface
>     2. Change is now added to update the HE capability in the "drv_flags" of the interface
>     3. If the interface does not support HE capability, the "iface->conf->ieee80211ax" flag is set to 0
>     4. Now Beacons/Probe response/Association Response will advertise 
> HE capabilities ONLY if the interface is HE capable

So this would make hostapd ignore what the configuration is trying it to do? That does not sound correct behavior, i.e., I would have expected the configuration to be rejected instead of being silently ignored.

In any case, I cannot really consider applying this patch without the
Signed-off-by: line in the commit message as described in the CONTRIBUTIONS file.

--
Jouni Malinen                                            PGP id EFC895FA
Deepti Panchal Dec. 4, 2022, 11:05 a.m. UTC | #3
Hi Jouni,

Can you please review my comments below ?

Thanks,
Deepti

-----Original Message-----
From: Hostap <hostap-bounces@lists.infradead.org> On Behalf Of Deepti Panchal
Sent: Monday, November 14, 2022 18:04
To: Jouni Malinen <j@w1.fi>
Cc: hostap@lists.infradead.org
Subject: RE: [EXT] [RESEND PATCH] Issue: Non-HE capable interface advertising HE

Caution: EXT Email

Hi Jouni,

My patch will override the user config in case the hardware does not support HE configuration.
An error message will also be shown in the debug logs indicating the hardware is not HE supported.

Can you  please elaborate on what you mean by:
"I would have expected the configuration to be rejected instead of being silently ignored"

Please find the modified patch with the "Signed-off" line:

======================================================================================
From 1c6e7696df5664b86a5ce16631e04801fe5907a6 Mon Sep 17 00:00:00 2001
From: Deepti Panchal <deepti.panchal@nxp.com>
Date: Mon, 18 Jul 2022 15:59:10 +0530
Subject: [PATCH] Issue: Non-HE capable interface advertising HE  IEs/Capabilities in Beacon/Probe Response/Association Response frames if  "ieee80211ax=1" configuration is used

Change Description:
    1. The HE capability for an AP iface was read from the driver, but was not used to update the "drv_flags" for the iface
    2. Change is now added to update the HE capability in the "drv_flags" of the interface
    3. If the interface does not support HE capability, the "iface->conf->ieee80211ax" flag is set to 0
    4. Hence now Beacons/Probe response/Association Response will advertise HE capabilities ONLY if the interface is HE capable

Signed-off-by: Deepti Panchal <deepti.panchal@nxp.com>
---
 src/ap/hw_features.c | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/src/ap/hw_features.c b/src/ap/hw_features.c index ed5ff41d3..87d7b52bd 100644
--- a/src/ap/hw_features.c
+++ b/src/ap/hw_features.c
@@ -679,7 +679,19 @@ static int ieee80211ac_supported_vht_capab(struct hostapd_iface *iface)  #ifdef CONFIG_IEEE80211AX  static int ieee80211ax_supported_he_capab(struct hostapd_iface *iface)  {
-       return 1;
+    struct hostapd_hw_modes *mode = iface->current_mode;
+    struct he_capabilities *he_cap = 
+ &(mode->he_capab[IEEE80211_MODE_AP]);
+
+    /* Check iface HE capability, update drv_flags and HE config setting */
+    if (he_cap && he_cap->he_supported) {
+        wpa_printf(MSG_DEBUG, "iface hw he_supported: %d", he_cap->he_supported);
+        iface->drv_flags |= WPA_DRIVER_FLAGS_HE_CAPABILITIES;
+    } else {
+        wpa_printf(MSG_DEBUG, "iface does not support HE capability");
+        iface->conf->ieee80211ax = 0;
+    }
+
+    return 1;
 }
 #endif /* CONFIG_IEEE80211AX */
==================================================================================

Thanks,
Deepti

-----Original Message-----
From: Jouni Malinen <j@w1.fi>
Sent: Saturday, November 5, 2022 19:57
To: Deepti Panchal <deepti.panchal@nxp.com>
Cc: hostap@lists.infradead.org
Subject: Re: [EXT] [RESEND PATCH] Issue: Non-HE capable interface advertising HE

Caution: EXT Email

On Thu, Sep 29, 2022 at 10:41:53AM +0000, Deepti Panchal wrote:
> This mail describes the purpose of the attached "hostapd" patch.
> The patch avoids issue when there is mismatch between user's 11ax 
> config and DRV capability
>
> Behavior (without the patch):
> ==========================
>     Non-HE capable interface advertising HE IEs/Capabilities in 
> Beacon/Probe Response/Association Response frames if "ieee80211ax=1"
> configuration is used
>
> Patch Description:
> ================
>     1. The HE capability for an AP iface was read from the driver, but was not used to update the "drv_flags" for the interface
>     2. Change is now added to update the HE capability in the "drv_flags" of the interface
>     3. If the interface does not support HE capability, the "iface->conf->ieee80211ax" flag is set to 0
>     4. Now Beacons/Probe response/Association Response will advertise 
> HE capabilities ONLY if the interface is HE capable

So this would make hostapd ignore what the configuration is trying it to do? That does not sound correct behavior, i.e., I would have expected the configuration to be rejected instead of being silently ignored.

In any case, I cannot really consider applying this patch without the
Signed-off-by: line in the commit message as described in the CONTRIBUTIONS file.

--
Jouni Malinen                                            PGP id EFC895FA
Jouni Malinen Dec. 18, 2022, 6:38 p.m. UTC | #4
On Mon, Nov 14, 2022 at 12:33:38PM +0000, Deepti Panchal wrote:
> My patch will override the user config in case the hardware does not support HE configuration.
> An error message will also be shown in the debug logs indicating the hardware is not HE supported.
> 
> Can you  please elaborate on what you mean by:
> "I would have expected the configuration to be rejected instead of being silently ignored"

I would expect hostapd to refuse to start AP operation with invalid
configuration instead of modifying the configuration in this manner to
ignore that the configuration requested HE to be enabled.
Deepti Panchal Dec. 25, 2022, 4:27 p.m. UTC | #5
Hi Jouni,

Rather than refusing to start the AP, my hostapd patch would throw an error message indicating that HE configuration is not supported and would instead start the AP in HT/VHT configuration.
This would result in a seamless end user experience.

Does this approach seem to be fair ?

Thanks,
Deepti

-----Original Message-----
From: Jouni Malinen <j@w1.fi> 
Sent: Monday, December 19, 2022 00:09
To: Deepti Panchal <deepti.panchal@nxp.com>
Cc: hostap@lists.infradead.org
Subject: Re: [EXT] [RESEND PATCH] Issue: Non-HE capable interface advertising HE

Caution: EXT Email

On Mon, Nov 14, 2022 at 12:33:38PM +0000, Deepti Panchal wrote:
> My patch will override the user config in case the hardware does not support HE configuration.
> An error message will also be shown in the debug logs indicating the hardware is not HE supported.
>
> Can you  please elaborate on what you mean by:
> "I would have expected the configuration to be rejected instead of being silently ignored"

I would expect hostapd to refuse to start AP operation with invalid configuration instead of modifying the configuration in this manner to ignore that the configuration requested HE to be enabled.

--
Jouni Malinen                                            PGP id EFC895FA
Matthias May Dec. 25, 2022, 10:32 p.m. UTC | #6
On 25.12.22 17:27, Deepti Panchal wrote:
> Hi Jouni,
> 
> Rather than refusing to start the AP, my hostapd patch would throw an error message indicating that HE configuration is not supported and would instead start the AP in HT/VHT configuration.
> This would result in a seamless end user experience.
> 
> Does this approach seem to be fair ?
> 
> Thanks,
> Deepti
> 

Hi

I personally and professionally would not like something like that.
When i configure something i expect it to be exactly what i configured.
Auto-magically changing what is running to something that is not 
specified just leads to unexpected surprises later on...

BR
Matthias

PS:
If you want to hide config errors from your endusers,
why don't you adjust the code that generated the config for
hostapd to auto-magically mangle the hostapd-config?
diff mbox series

Patch

diff --git a/src/ap/hw_features.c b/src/ap/hw_features.c index ed5ff41d3..87d7b52bd 100644
--- a/src/ap/hw_features.c
+++ b/src/ap/hw_features.c
@@ -679,7 +679,19 @@  static int ieee80211ac_supported_vht_capab(struct hostapd_iface *iface)  #ifdef CONFIG_IEEE80211AX  static int ieee80211ax_supported_he_capab(struct hostapd_iface *iface)  {
-       return 1;
+    struct hostapd_hw_modes *mode = iface->current_mode;
+    struct he_capabilities *he_cap = 
+ &(mode->he_capab[IEEE80211_MODE_AP]);
+
+    /* Check iface HE capability, update drv_flags and HE config setting */
+    if (he_cap && he_cap->he_supported) {
+        wpa_printf(MSG_DEBUG, "iface hw he_supported: %d", he_cap->he_supported);
+        iface->drv_flags |= WPA_DRIVER_FLAGS_HE_CAPABILITIES;
+    } else {
+        wpa_printf(MSG_DEBUG, "iface does not support HE capability");
+        iface->conf->ieee80211ax = 0;
+    }
+
+    return 1;
 }
 #endif /* CONFIG_IEEE80211AX */

Thanks,
Deepti