hostapd: Add option to send OBSS scan params

Add a parameter to send the overlapping BSS scan parameter
information element. This will require clients to perform
background scans to check for neigbors overlapping this
HT40 BSS. Since the implementation is incomplete it should
only be used for testing.

Signed-hostap: Paul Stewart <pstew@chromium.org>
This commit is contained in:
Paul Stewart 2013-09-04 08:59:52 -07:00 committed by Jouni Malinen
parent 60cdfd7e25
commit c101bb9d23
5 changed files with 37 additions and 0 deletions

View file

@ -2422,6 +2422,8 @@ static int hostapd_config_fill(struct hostapd_config *conf,
}
} else if (os_strcmp(buf, "require_ht") == 0) {
conf->require_ht = atoi(pos);
} else if (os_strcmp(buf, "obss_interval") == 0) {
conf->obss_interval = atoi(pos);
#endif /* CONFIG_IEEE80211N */
#ifdef CONFIG_IEEE80211AC
} else if (os_strcmp(buf, "ieee80211ac") == 0) {

View file

@ -468,6 +468,13 @@ wmm_ac_vo_acm=0
# Require stations to support HT PHY (reject association if they do not)
#require_ht=1
# If set non-zero, require stations to perform scans of overlapping
# channels to test for stations which would be affected by 40 MHz traffic.
# This parameter sets the interval in seconds between these scans. This
# is useful only for testing that stations properly set the OBSS interval,
# since the other parameters in the OBSS scan parameters IE are set to 0.
#obss_interval=0
##### IEEE 802.11ac related configuration #####################################
# ieee80211ac: Whether IEEE 802.11ac (VHT) is enabled

View file

@ -530,6 +530,7 @@ struct hostapd_config {
int ieee80211n;
int secondary_channel;
int require_ht;
int obss_interval;
u32 vht_capab;
int ieee80211ac;
int require_vht;

View file

@ -50,6 +50,22 @@ u8 * hostapd_eid_ht_capabilities(struct hostapd_data *hapd, u8 *eid)
pos += sizeof(*cap);
if (hapd->iconf->obss_interval) {
struct ieee80211_obss_scan_parameters *scan_params;
*pos++ = WLAN_EID_OVERLAPPING_BSS_SCAN_PARAMS;
*pos++ = sizeof(*scan_params);
scan_params = (struct ieee80211_obss_scan_parameters *) pos;
os_memset(scan_params, 0, sizeof(*scan_params));
scan_params->width_trigger_scan_interval =
host_to_le16(hapd->iconf->obss_interval);
/* TODO: Fill in more parameters (supplicant ignores them) */
pos += sizeof(*scan_params);
}
return pos;
}

View file

@ -587,6 +587,17 @@ struct ieee80211_ht_operation {
} STRUCT_PACKED;
struct ieee80211_obss_scan_parameters {
le16 scan_passive_dwell;
le16 scan_active_dwell;
le16 width_trigger_scan_interval;
le16 scan_passive_total_per_channel;
le16 scan_active_total_per_channel;
le16 channel_transition_delay_factor;
le16 scan_activity_threshold;
} STRUCT_PACKED;
struct ieee80211_vht_capabilities {
le32 vht_capabilities_info;
struct {