diff mbox series

hostapd AX Client Association Issue w/ 6GHz 320MHz AP

Message ID 9353656c-ef90-4f55-9b48-d1d130aa2eb8@candelatech.com
State New
Headers show
Series hostapd AX Client Association Issue w/ 6GHz 320MHz AP | expand

Commit Message

Alex Gavin Aug. 16, 2024, 4:32 a.m. UTC
To Whom It May Concern:

When testing a mt7996-based 6GHz 320MHz AP on a custom 6.10.3+ kernel
and recent upstream hostapd (commit 70b8f64), AX clients will not associate.
However, BE clients will associate. Separately, all AX and BE clients will associate
when the AP is configured to 160MHz. In all cases, the clients are configured to
the 6GHz BSSID.

The following is a selection from the configuration file when configuring the AP
for 320MHz operation:

    ieee80211be=1
    channel=37
    op_class=137
    he_oper_centr_freq_seg0_idx=31
    eht_oper_centr_freq_seg0_idx=31
    he_6ghz_reg_pwr_type=0

With this configuration, the 'Channel Width' in the 'Control' field is set to
'0' (20 MHz). This is located in the '6GHz Operation Information' section of
the 'HE Operation' IE. Beacons from other 320MHz-configured APs (e.g. ASUS RT-BE96U,
Netgear RS700S) show the 'Channel Width' field set to '3' (160MHz or 80+80MHz).

Digging into the beacon creation code for this IE, 'center_idx_to_bw_6ghz()' returns '4'
for 320MHz operation. This overflows the two bit 'Channel Width' field, setting
'Channel Width' field to 0 (also setting the 'Duplicate Beacon' field to '1').

With the following hacked changes, I am able to associate AX clients again:


Can someone double check this partial configuration? I'm happy to provide the full config
if needed. If the config is correct, I am happy to submit this as a proper patch with any
needed modifications.

Best,

Comments

Aditya Kumar Singh Aug. 16, 2024, 7:51 a.m. UTC | #1
On 8/16/24 10:02, Alex Gavin wrote:
> To Whom It May Concern:
> 
> When testing a mt7996-based 6GHz 320MHz AP on a custom 6.10.3+ kernel
> and recent upstream hostapd (commit 70b8f64), AX clients will not associate.
> However, BE clients will associate. Separately, all AX and BE clients will associate
> when the AP is configured to 160MHz. In all cases, the clients are configured to
> the 6GHz BSSID.
> 
> The following is a selection from the configuration file when configuring the AP
> for 320MHz operation:
> 
>      ieee80211be=1
>      channel=37
>      op_class=137
>      he_oper_centr_freq_seg0_idx=31

This seem wrong? HE does not support 320 bandwidth and hence the idx 
should be w.r.t to 160 which should be 47.

>      eht_oper_centr_freq_seg0_idx=31

This is fine.

>      he_6ghz_reg_pwr_type=0
> 
> With this configuration, the 'Channel Width' in the 'Control' field is set to
> '0' (20 MHz). This is located in the '6GHz Operation Information' section of
> the 'HE Operation' IE. Beacons from other 320MHz-configured APs (e.g. ASUS RT-BE96U,
> Netgear RS700S) show the 'Channel Width' field set to '3' (160MHz or 80+80MHz).
> 
> Digging into the beacon creation code for this IE, 'center_idx_to_bw_6ghz()' returns '4'
> for 320MHz operation. This overflows the two bit 'Channel Width' field, setting
> 'Channel Width' field to 0 (also setting the 'Duplicate Beacon' field to '1').
> 
> With the following hacked changes, I am able to associate AX clients again:
> 
> diff --git a/src/ap/ieee802_11_he.c b/src/ap/ieee802_11_he.c
> index a2deda6c4..8b00abad1 100644
> --- a/src/ap/ieee802_11_he.c
> +++ b/src/ap/ieee802_11_he.c
> @@ -252,7 +252,7 @@ u8 * hostapd_eid_he_operation(struct hostapd_data *hapd, u8 *eid)
>                   *      bits 3-5: Regulatory Info
>                   */
>                  /* Channel Width */
> -               if (seg1)
> +               if (seg1 || oper_chwidth == CONF_OPER_CHWIDTH_320MHZ)
>                          control = 3;
>                  else
>                          control = center_idx_to_bw_6ghz(seg0);

So here it will go to center_idx_to_bw_6ghz with value 47 which should 
return 3 which is what is expected.

> 
> Can someone double check this partial configuration? I'm happy to provide the full config
> if needed. If the config is correct, I am happy to submit this as a proper patch with any
> needed modifications.
> 
> Best,
diff mbox series

Patch

diff --git a/src/ap/ieee802_11_he.c b/src/ap/ieee802_11_he.c
index a2deda6c4..8b00abad1 100644
--- a/src/ap/ieee802_11_he.c
+++ b/src/ap/ieee802_11_he.c
@@ -252,7 +252,7 @@  u8 * hostapd_eid_he_operation(struct hostapd_data *hapd, u8 *eid)
                 *      bits 3-5: Regulatory Info
                 */
                /* Channel Width */
-               if (seg1)
+               if (seg1 || oper_chwidth == CONF_OPER_CHWIDTH_320MHZ)
                        control = 3;
                else
                        control = center_idx_to_bw_6ghz(seg0);