diff mbox series

Add Extended NSS BW Support

Message ID 20200326135737.26351-1-shay.bar@celeno.com
State Changes Requested
Headers show
Series Add Extended NSS BW Support | expand

Commit Message

Shay Bar March 26, 2020, 1:57 p.m. UTC
Based on IEEE P802.11-REVmdTM/D3.0, October 2019
section 9.4.2.157.2 VHT Capabilities Information field

Signed-off-by: Eliav Farber <eliav.farber@celeno.com>
Signed-off-by: Shay Bar <shay.bar@celeno.com>
---
 hostapd/config_file.c        | 2 ++
 src/common/ieee802_11_defs.h | 1 +
 2 files changed, 3 insertions(+)

Comments

Johannes Berg March 26, 2020, 2:26 p.m. UTC | #1
On Thu, 2020-03-26 at 15:57 +0200, Shay Bar wrote:
> Based on IEEE P802.11-REVmdTM/D3.0, October 2019
> section 9.4.2.157.2 VHT Capabilities Information field

Hmm. How's this useful if you cannot set CF2 etc.?

johannes
Shay Bar March 26, 2020, 3:37 p.m. UTC | #2
Hi Johannes,

It's useful in case you need to be able to support 160Mhz BW but only at 1/2 NSS
(the 2nd row in Table 9-272 of "IEEE P802.11-REVmdTM/D3.0, October 2019")

In this case, you need to set bit30 (Extended NSS BW Support) of VHT Capabilities Information field.

-----Original Message-----
From: Johannes Berg <johannes@sipsolutions.net>
Sent: Thursday, 26 March 2020 16:27
To: Shay Bar <Shay.Bar@celeno.com>; hostap@lists.infradead.org
Cc: Eliav Farber <Eliav.Farber@celeno.com>
Subject: Re: [PATCH] Add Extended NSS BW Support

External Email


On Thu, 2020-03-26 at 15:57 +0200, Shay Bar wrote:
> Based on IEEE P802.11-REVmdTM/D3.0, October 2019
> section 9.4.2.157.2 VHT Capabilities Information field

Hmm. How's this useful if you cannot set CF2 etc.?

johannes


----------

This email has been scanned for spam and viruses by Proofpoint Essentials. Visit the following link to report this email as spam:
https://eu1.proofpointessentials.com/index01.php?mod_id=11&mod_option=logitem&mail_id=1585232810-kfA4zDF1zYZC&r_address=shay.bar%40celeno.com&report=1
Johannes Berg March 26, 2020, 6 p.m. UTC | #3
Hi Shay,

> It's useful in case you need to be able to support 160Mhz BW but only at 1/2 NSS
> (the 2nd row in Table 9-272 of "IEEE P802.11-REVmdTM/D3.0, October 2019")

It'd help to write the table caption too - in this case I found the
exact same document and it's "Setting of the Supported Channel Width Set
subfield and Extended NSS BW Support subfield at a STA transmitting the
VHT Capabilities Information Field" ... OK what a mouthful :)

Anyway, you're making my point ;-)

If you look at the second row, you'll note that in this case you have to
put the "Location of 160 MHz channel center frequency if BSS bandwidth
is 160 MHz" into CCFS2 (see second-to-last column), so having just this
bit isn't enough.

Also, we should then have the ability to also set the "Extended NSS BW
Support" field to 2/3, not just 1, and probably then automatically
encode everything according to this table, i.e. setting CCFS2 etc.

In fact, I'd argue we need to be able to have the *driver* advertise
this NSS restriction (1/2, 3/4) in the VHT capabilities in nl80211, and
then hostapd build everything according to this table automatically?

johannes

> In this case, you need to set bit30 (Extended NSS BW Support) of VHT Capabilities Information field.
> 
> -----Original Message-----
> From: Johannes Berg <johannes@sipsolutions.net>
> Sent: Thursday, 26 March 2020 16:27
> To: Shay Bar <Shay.Bar@celeno.com>; hostap@lists.infradead.org
> Cc: Eliav Farber <Eliav.Farber@celeno.com>
> Subject: Re: [PATCH] Add Extended NSS BW Support
> 
> External Email
> 
> 
> On Thu, 2020-03-26 at 15:57 +0200, Shay Bar wrote:
> > Based on IEEE P802.11-REVmdTM/D3.0, October 2019
> > section 9.4.2.157.2 VHT Capabilities Information field
> 
> Hmm. How's this useful if you cannot set CF2 etc.?
> 
> johannes
> 
> 
> ----------
> 
> This email has been scanned for spam and viruses by Proofpoint Essentials. Visit the following link to report this email as spam:
> https://eu1.proofpointessentials.com/index01.php?mod_id=11&mod_option=logitem&mail_id=1585232810-kfA4zDF1zYZC&r_address=shay.bar%40celeno.com&report=1
> 
> ________________________________
> The information transmitted is intended only for the person or entity to which it is addressed and may contain confidential and/or privileged material. Any retransmission, dissemination, copying or other use of, or taking of any action in reliance upon this information is prohibited. If you received this in error, please contact the sender and delete the material from any computer. Nothing contained herein shall be deemed as a representation, warranty or a commitment by Celeno. No warranties are expressed or implied, including, but not limited to, any implied warranties of non-infringement, merchantability and fitness for a particular purpose.
> ________________________________
>
Shay Bar April 1, 2020, 12:57 p.m. UTC | #4
>If you look at the second row, you'll note that in this case you have to
>put the "Location of 160 MHz channel center frequency if BSS bandwidth
>is 160 MHz" into CCFS2 (see second-to-last column), so having just this
>bit isn't enough.

Right, it's not enough, also need to ieee80211_hw_set(hw, SUPPORTS_VHT_EXT_NSS_BW) in driver.
ieee80211_chandef_vht_oper() will than set the correct width/center freq.

>In fact, I'd argue we need to be able to have the *driver* advertise
>this NSS restriction (1/2, 3/4) in the VHT capabilities in nl80211, and
>then hostapd build everything according to this table automatically?

In order to include this VHT capability in beacons/assoc req, it must be set to hostapd conf file
same as other capabilities, such as MAX_MPDU_LENGTH_* for example.
What is the alterative ?

>Also, we should then have the ability to also set the "Extended NSS BW
>Support" field to 2/3, not just 1, and probably then automatically
>encode everything according to this table, i.e. setting CCFS2 etc.

Agree, if you approve it should be set to hostapd, I will send a new patch to set each bit separately.
diff mbox series

Patch

diff --git a/hostapd/config_file.c b/hostapd/config_file.c
index bdae3be79..72eaaa03e 100644
--- a/hostapd/config_file.c
+++ b/hostapd/config_file.c
@@ -1287,6 +1287,8 @@  static int hostapd_config_vht_capab(struct hostapd_config *conf,
 		conf->vht_capab |= VHT_CAP_RX_ANTENNA_PATTERN;
 	if (os_strstr(capab, "[TX-ANTENNA-PATTERN]"))
 		conf->vht_capab |= VHT_CAP_TX_ANTENNA_PATTERN;
+	if (os_strstr(capab, "[EXT-NSS-BW]"))
+		conf->vht_capab |= VHT_CAP_EXT_NSS_BW;
 	return 0;
 }
 #endif /* CONFIG_IEEE80211AC */
diff --git a/src/common/ieee802_11_defs.h b/src/common/ieee802_11_defs.h
index 7c51574b5..63f388949 100644
--- a/src/common/ieee802_11_defs.h
+++ b/src/common/ieee802_11_defs.h
@@ -1280,6 +1280,7 @@  struct ieee80211_ampe_ie {
 #define VHT_CAP_VHT_LINK_ADAPTATION_VHT_MRQ_MFB     ((u32) BIT(26) | BIT(27))
 #define VHT_CAP_RX_ANTENNA_PATTERN                  ((u32) BIT(28))
 #define VHT_CAP_TX_ANTENNA_PATTERN                  ((u32) BIT(29))
+#define VHT_CAP_EXT_NSS_BW                          ((u32) BIT(30))
 
 #define VHT_OPMODE_CHANNEL_WIDTH_MASK		    ((u8) BIT(0) | BIT(1))
 #define VHT_OPMODE_CHANNEL_RxNSS_MASK		    ((u8) BIT(4) | BIT(5) | \