123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- VHT: Add an interoperability workaround for 80+80 and 160 MHz channels
- Number of deployed 80 MHz capable VHT stations that do not support 80+80
- and 160 MHz bandwidths seem to misbehave when trying to connect to an AP
- that advertises 80+80 or 160 MHz channel bandwidth in the VHT Operation
- element. To avoid such issues with deployed devices, modify the design
- based on newly proposed IEEE 802.11 standard changes.
- This allows poorly implemented VHT 80 MHz stations to connect with the
- AP in 80 MHz mode. 80+80 and 160 MHz capable stations need to support
- the new workaround mechanism to allow full bandwidth to be used.
- However, there are more or less no impacted station with 80+80/160
- capability deployed.
- Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
- diff --git a/src/ap/ieee802_11_vht.c b/src/ap/ieee802_11_vht.c
- index 3236016..e923094 100644
- --- a/src/ap/ieee802_11_vht.c
- +++ b/src/ap/ieee802_11_vht.c
- @@ -82,6 +82,27 @@ u8 * hostapd_eid_vht_operation(struct hostapd_data *hapd, u8 *eid)
-
- oper->vht_op_info_chwidth = hapd->iconf->vht_oper_chwidth;
-
- + if (hapd->iconf->vht_oper_chwidth == 2) {
- + /*
- + * Convert 160 MHz channel width to new style as interop
- + * workaround.
- + */
- + oper->vht_op_info_chwidth = 1;
- + oper->vht_op_info_chan_center_freq_seg1_idx =
- + oper->vht_op_info_chan_center_freq_seg0_idx;
- + if (hapd->iconf->channel <
- + hapd->iconf->vht_oper_centr_freq_seg0_idx)
- + oper->vht_op_info_chan_center_freq_seg0_idx -= 8;
- + else
- + oper->vht_op_info_chan_center_freq_seg0_idx += 8;
- + } else if (hapd->iconf->vht_oper_chwidth == 3) {
- + /*
- + * Convert 80+80 MHz channel width to new style as interop
- + * workaround.
- + */
- + oper->vht_op_info_chwidth = 1;
- + }
- +
- /* VHT Basic MCS set comes from hw */
- /* Hard code 1 stream, MCS0-7 is a min Basic VHT MCS rates */
- oper->vht_basic_mcs_set = host_to_le16(0xfffc);
|