diff mbox series

[7/9] AP: Reject association request upon invalid capabilities

Message ID 1587768342-26601-7-git-send-email-rmanohar@codeaurora.org
State Changes Requested
Headers show
Series [1/9] 6G: Define 6 GHz band Capability elements | expand

Commit Message

Rajkumar Manoharan April 24, 2020, 10:45 p.m. UTC
Reject association request from stations that announce HT/VHT
capabilities in 6 GHz band. Also reject the stations that does
not support HE in 6 GHz band.

Signed-off-by: Rajkumar Manoharan <rmanohar@codeaurora.org>
---
 src/ap/ieee802_11.c          | 25 +++++++++++++++++++++++++
 src/common/ieee802_11_defs.h |  1 +
 2 files changed, 26 insertions(+)

Comments

Jouni Malinen May 17, 2020, 2:08 p.m. UTC | #1
On Fri, Apr 24, 2020 at 03:45:40PM -0700, Rajkumar Manoharan wrote:
> Reject association request from stations that announce HT/VHT
> capabilities in 6 GHz band. Also reject the stations that does
> not support HE in 6 GHz band.

Why would the AP explicitly need to check for HT/VHT capabilities on the
6 GHz band? Wouldn't it be sufficient and less likely to cause interop
issues by simply ignoring those unexpected HT/VHT IEs? Or is there some
clear requirement in the standard for the AP to do this type of
validation step?

The HE capability check looks fine, but please split to a separate patch
without these HT/VHT checks.
Rajkumar Manoharan May 18, 2020, 5:34 a.m. UTC | #2
On 2020-05-17 07:08, Jouni Malinen wrote:
> On Fri, Apr 24, 2020 at 03:45:40PM -0700, Rajkumar Manoharan wrote:
>> Reject association request from stations that announce HT/VHT
>> capabilities in 6 GHz band. Also reject the stations that does
>> not support HE in 6 GHz band.
> 
> Why would the AP explicitly need to check for HT/VHT capabilities on 
> the
> 6 GHz band? Wouldn't it be sufficient and less likely to cause interop
> issues by simply ignoring those unexpected HT/VHT IEs? Or is there some
> clear requirement in the standard for the AP to do this type of
> validation step?
> 
IIUC HT/VHT operations are prohibited on 6 GHz band. no? Hence rejecting 
buggy
stations that announce HT/VHT capabilities on 6 GHz band. Do you prefer
to allow such stations?

> The HE capability check looks fine, but please split to a separate 
> patch
> without these HT/VHT checks.
> 
Sure.

-Rajkumar
diff mbox series

Patch

diff --git a/src/ap/ieee802_11.c b/src/ap/ieee802_11.c
index 18ce144d373f..b3644aa7991e 100644
--- a/src/ap/ieee802_11.c
+++ b/src/ap/ieee802_11.c
@@ -3148,6 +3148,14 @@  static int check_assoc_ies(struct hostapd_data *hapd, struct sta_info *sta,
 		return WLAN_STATUS_ASSOC_DENIED_NO_HT;
 	}
 
+	if (is_6ghz_op_class(hapd->iconf->op_class) &&
+	    (sta->flags & WLAN_STA_HT)) {
+		hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE80211,
+			       HOSTAPD_LEVEL_INFO, "HT capab not allowed in "
+			       "6 GHz band - reject association");
+		return WLAN_STATUS_CAPS_UNSUPPORTED;
+	}
+
 #ifdef CONFIG_IEEE80211AC
 	if (hapd->iconf->ieee80211ac) {
 		resp = copy_sta_vht_capab(hapd, sta, elems.vht_capabilities);
@@ -3174,6 +3182,15 @@  static int check_assoc_ies(struct hostapd_data *hapd, struct sta_info *sta,
 			return resp;
 	}
 #endif /* CONFIG_IEEE80211AC */
+
+	if (is_6ghz_op_class(hapd->iconf->op_class) &&
+	    (sta->flags & WLAN_STA_VHT)) {
+		hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE80211,
+			       HOSTAPD_LEVEL_INFO, "VHT capab not allowed in "
+			       "6 GHz band - reject association");
+		return WLAN_STATUS_CAPS_UNSUPPORTED;
+	}
+
 #ifdef CONFIG_IEEE80211AX
 	if (hapd->iconf->ieee80211ax) {
 		resp = copy_sta_he_capab(hapd, sta, IEEE80211_MODE_AP,
@@ -3182,6 +3199,14 @@  static int check_assoc_ies(struct hostapd_data *hapd, struct sta_info *sta,
 		if (resp != WLAN_STATUS_SUCCESS)
 			return resp;
 	}
+
+	if (is_6ghz_op_class(hapd->iconf->op_class) &&
+	    !(sta->flags & WLAN_STA_HE)) {
+		hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE80211,
+			       HOSTAPD_LEVEL_INFO, "Station does not support "
+			       "mandatory HE PHY - reject association");
+		return WLAN_STATUS_ASSOC_DENIED_NO_HE;
+	}
 #endif /* CONFIG_IEEE80211AX */
 
 #ifdef CONFIG_P2P
diff --git a/src/common/ieee802_11_defs.h b/src/common/ieee802_11_defs.h
index 7efbdc0834a2..55be298a8f6d 100644
--- a/src/common/ieee802_11_defs.h
+++ b/src/common/ieee802_11_defs.h
@@ -204,6 +204,7 @@ 
 #define WLAN_STATUS_FILS_AUTHENTICATION_FAILURE 112
 #define WLAN_STATUS_UNKNOWN_AUTHENTICATION_SERVER 113
 #define WLAN_STATUS_UNKNOWN_PASSWORD_IDENTIFIER 123
+#define WLAN_STATUS_ASSOC_DENIED_NO_HE 124
 #define WLAN_STATUS_SAE_HASH_TO_ELEMENT 126
 
 /* Reason codes (IEEE Std 802.11-2016, 9.4.1.7, Table 9-45) */