Re: [PATCH 6/9] 6G: Do not add VHT IEs in 6 GHz band
Rajkumar Manoharan <[email protected]> Tue, 19 May 2020 20:45:27 -0700
| Newsgroups | gmane.linux.drivers.hostap |
|---|---|
| Message-ID | <[email protected]> |
On 2020-05-17 07:05, Jouni Malinen wrote:
> On Fri, Apr 24, 2020 at 03:45:39PM -0700, Rajkumar Manoharan wrote:
>> Do not account VHT IEs for total beacon length and also add 6 GHz
>> checks
>> in Wide band VHT channel switch, VHT Tx power and Vendor VHT IE
>> construction.
>
> It would be correct to remove the IEs that are specific to VHT, but
> that
> list of elements does not look correct.
>
> "Wide band VHT channel switch" is called "Wide Bandwidth Channel Switch
> subelement" and it is included in the "Channel Switch Wrapper element".
> It is not VHT specific in the current standard baseline. Can you please
> clarify why it would not be allowed on the 6 GHz band?
>
> "VHT Tx power IE" is called "Transmit Power Envelope element" in the
> current standard baseline, i.e., it is not specific to VHT. Can you
> please clarify why it would not be allowed on the 6 GHz band?
>
My bad. I wrongly interpret them as VHT specific. Will remove checks
from wide band
chan switch and TPC IE.
> Furthermore, it does not look like these changes are really needed
> since
> the cases covered here are all for invalid configuration cases:
>
>> diff --git a/src/ap/beacon.c b/src/ap/beacon.c
>> @@ -452,7 +452,8 @@ static u8 * hostapd_gen_probe_resp(struct
>> hostapd_data *hapd,
>> - if (hapd->conf->vendor_vht) {
>> + if (hapd->conf->vendor_vht &&
>> + !is_6ghz_op_class(hapd->iconf->op_class)) {
>> buflen += 5 + 2 + sizeof(struct ieee80211_vht_capabilities) +
>> 2 + sizeof(struct ieee80211_vht_operation);
>
> Why would this be needed? vendor_vht=1 is used only on the 2.4 GHz band
> and it would not be valid to set it when operating on 6 GHz.
>
Yes. Just to avoid accidentally enabling vht IEs in case of wrong user
config in 6 GHz band.
Perhaps It would be better to check mode->mode !=
HOSTAPD_MODE_IEEE80211G instead of 6 GHz. no?
>> @@ -558,8 +559,7 @@ static u8 * hostapd_gen_probe_resp(struct
>> hostapd_data *hapd,
>> #ifdef CONFIG_IEEE80211AC
>> - if (hapd->iconf->ieee80211ac && !hapd->conf->disable_11ac &&
>> - !is_6ghz_op_class(hapd->iconf->op_class)) {
>> + if (hapd->iconf->ieee80211ac && !hapd->conf->disable_11ac) {
>> pos = hostapd_eid_vht_capabilities(hapd, pos, 0);
>> pos = hostapd_eid_vht_operation(hapd, pos);
>> pos = hostapd_eid_txpower_envelope(hapd, pos);
>
> Why would this be needed? ieee80211ac=1 is used only on the 5 GHz band
> (not including 6 GHz) and it would not be valid to set it when
> operating
> on 6 GHz.
>
Don't understand why is_6ghz_op_class check is remove from above hunk.
As I explain in another patch, both ieee80211n, ieee80211ac are set to 1
in order to verify
user config of ht_capab and vht_capab against phy cap. Otherwise those
configs are skipped.
Herewith I attached my hostapd config for your reference.
>> @@ -1156,7 +1156,8 @@ int ieee802_11_build_ap_params(struct
>> hostapd_data *hapd,
>> #ifdef CONFIG_IEEE80211AC
>> - if (hapd->conf->vendor_vht) {
>> + if (hapd->conf->vendor_vht &&
>> + !is_6ghz_op_class(hapd->iconf->op_class)) {
>> tail_len += 5 + 2 + sizeof(struct ieee80211_vht_capabilities) +
>> 2 + sizeof(struct ieee80211_vht_operation);
>
> Why would this be needed? vendor_vht=1 is used only on the 2.4 GHz band
> and it would not be valid to set it when operating on 6 GHz.
>
As clarified above, better to add 2 GHz band check instead of 6 GHz.
Will send patch for this
if you are fine.
>> diff --git a/src/ap/ieee802_11_vht.c b/src/ap/ieee802_11_vht.c
>> @@ -176,6 +176,9 @@ u8 * hostapd_eid_wb_chsw_wrapper(struct
>> hostapd_data *hapd, u8 *eid)
>> + if (is_6ghz_op_class(hapd->iconf->op_class))
>> + return eid;
>
> This function is called only if ieee80211ac=1 configuration is used.
> Why
> would that be used if operating on 6 GHz?
>
>> @@ -234,6 +237,9 @@ u8 * hostapd_eid_txpower_envelope(struct
>> hostapd_data *hapd, u8 *eid)
>> + if (is_6ghz_op_class(hapd->iconf->op_class))
>> + return eid;
>
> This function is called only if ieee80211ac=1 configuration is used.
> Why
> would that be used if operating on 6 GHz?
>
ieee80211ac is set to 1 to verify vht user config that is used to build
6 GHz config. Hence
added this check. Anyway I agree that txpower and wide_chsw are needed
for 6 GHz. Will remove these checks.
>> @@ -428,6 +434,9 @@ u8 * hostapd_eid_vendor_vht(struct hostapd_data
>> *hapd, u8 *eid)
>> + if (is_6ghz_op_class(hapd->iconf->op_class))
>> + return eid;
>
> This function is called only if vendor_vht=1 configuration is used. Why
> would that be used if operating on 6 GHz?
Same as above.
-Rajkumar
_______________________________________________
Hostap mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/hostap
6g.conf
(text/plain, 1.2 KB)
driver=nl80211 logger_syslog=127 logger_syslog_level=2 logger_stdout=127 logger_stdout_level=2 hw_mode=a channel=1 op_class=131 ieee80211n=1 ht_capab=[MAX-AMSDU-7935] ieee80211ac=1 vht_capab=[RX-ANTENNA-PATTERN][TX-ANTENNA-PATTERN][MAX-MPDU-11454][MAX-A-MPDU-LEN-EXP7] ieee80211ax=1 he_su_beamformer=1 he_mu_beamformer=1 he_bss_color=1 he_default_pe_duration=4 he_mu_edca_qos_info_param_count=0 he_mu_edca_qos_info_q_ack=0 he_mu_edca_qos_info_queue_request=0 he_mu_edca_qos_info_txop_request=0 he_mu_edca_ac_be_aifsn=8 he_mu_edca_ac_be_aci=0 he_mu_edca_ac_be_ecwmin=9 he_mu_edca_ac_be_ecwmax=10 he_mu_edca_ac_be_timer=255 he_mu_edca_ac_bk_aifsn=15 he_mu_edca_ac_bk_aci=1 he_mu_edca_ac_bk_ecwmin=9 he_mu_edca_ac_bk_ecwmax=10 he_mu_edca_ac_bk_timer=255 he_mu_edca_ac_vi_ecwmin=5 he_mu_edca_ac_vi_ecwmax=7 he_mu_edca_ac_vi_aifsn=5 he_mu_edca_ac_vi_aci=2 he_mu_edca_ac_vi_timer=255 he_mu_edca_ac_vo_aifsn=5 he_mu_edca_ac_vo_aci=3 he_mu_edca_ac_vo_ecwmin=5 he_mu_edca_ac_vo_ecwmax=7 he_mu_edca_ac_vo_timer=255 interface=wlan0 ctrl_interface=/var/run/hostapd max_num_sta=128 disassoc_low_ack=0 preamble=1 wmm_enabled=1 ignore_broadcast_ssid=0 uapsd_advertisement_enabled=1 auth_algs=1 wpa=0 ssid=vmraj-6g bridge=br-lan #bssid=00:03:7f:12:a5:cb