diff --git a/hostapd/config_file.c b/hostapd/config_file.c index b9ba70099..1bc0d4dd5 100644 --- a/hostapd/config_file.c +++ b/hostapd/config_file.c @@ -2226,6 +2226,9 @@ static int hostapd_config_fill(struct hostapd_config *conf, conf->require_vht = atoi(pos); } else if (os_strcmp(buf, "vht_oper_chwidth") == 0) { conf->vht_oper_chwidth = atoi(pos); + } else if (os_strcmp(buf, "vht_oper_centr_freq_seg0_idx") == 0) + { + conf->vht_oper_centr_freq_seg0_idx = atoi(pos); #endif /* CONFIG_IEEE80211AC */ } else if (os_strcmp(buf, "max_listen_interval") == 0) { bss->max_listen_interval = atoi(pos); diff --git a/hostapd/hostapd.conf b/hostapd/hostapd.conf index 41c10e89f..1740b49fa 100644 --- a/hostapd/hostapd.conf +++ b/hostapd/hostapd.conf @@ -559,6 +559,12 @@ wmm_ac_vo_acm=0 # 2 = 160 MHz channel width # 3 = 80+80 MHz channel width #vht_oper_chwidth=1 +# +# center freq = 5 GHz + (5 * index) +# So index 42 gives center freq 5.210 GHz +# which is channel 42 in 5G band +# +#vht_oper_centr_freq_seg0_idx=42 ##### IEEE 802.1X-2004 related configuration ################################## diff --git a/src/ap/ap_config.h b/src/ap/ap_config.h index af3140364..5dc310ebf 100644 --- a/src/ap/ap_config.h +++ b/src/ap/ap_config.h @@ -478,6 +478,7 @@ struct hostapd_config { int ieee80211ac; int require_vht; u8 vht_oper_chwidth; + u8 vht_oper_centr_freq_seg0_idx; }; diff --git a/src/ap/ieee802_11_vht.c b/src/ap/ieee802_11_vht.c index f224288f7..7599ef8d7 100644 --- a/src/ap/ieee802_11_vht.c +++ b/src/ap/ieee802_11_vht.c @@ -61,6 +61,14 @@ u8 * hostapd_eid_vht_operation(struct hostapd_data *hapd, u8 *eid) oper = (struct ieee80211_vht_operation *) pos; os_memset(oper, 0, sizeof(*oper)); + /* + * center freq = 5 GHz + (5 * index) + * So index 42 gives center freq 5.210 GHz + * which is channel 42 in 5G band + */ + oper->vht_op_info_chan_center_freq_seg0_idx = + hapd->iconf->vht_oper_centr_freq_seg0_idx; + oper->vht_op_info_chwidth = hapd->iconf->vht_oper_chwidth; /* VHT Basic MCS set comes from hw */