hostapd: add interoperability workaround for 80+80 and 160 MHz channels
backport of f9fc9c242fa62c214dc4a92bd89ca9a36bc8308c Signed-off-by: Imre Kaloz <kaloz@openwrt.org>master
parent
8a1f7c9d55
commit
b41b40c00d
|
@ -0,0 +1,48 @@
|
|||
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);
|
Loading…
Reference in New Issue