[PATCH 1/4] ibss: add fixed freq ssid param

Janusz Dziedzic janusz.dziedzic
Wed Feb 18 22:15:45 PST 2015


Add fixed freq param and pass to driver.
After we will set this flag, IBSS should not try
to look for other networks on different channels.

Signed-off-by: Janusz Dziedzic <janusz.dziedzic at tieto.com>
---
 src/drivers/driver.h            | 7 +++++++
 src/drivers/driver_nl80211.c    | 6 ++++++
 wpa_supplicant/config.c         | 1 +
 wpa_supplicant/config_ssid.h    | 5 +++++
 wpa_supplicant/wpa_supplicant.c | 1 +
 5 files changed, 20 insertions(+)

diff --git a/src/drivers/driver.h b/src/drivers/driver.h
index c9e860f..6d0d6f3 100644
--- a/src/drivers/driver.h
+++ b/src/drivers/driver.h
@@ -767,6 +767,13 @@ struct wpa_driver_associate_params {
 	int fixed_bssid;
 
 	/**
+	 * fixed_freq - fix control channel in IBSS mode
+	 * 1 = fix control channel
+	 * 0 = don't fix control channel
+	 */
+	int fixed_freq;
+
+	/**
 	 * disable_ht - Disable HT (IEEE 802.11n) for this connection
 	 */
 	int disable_ht;
diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c
index 9d93cc9..396fdd9 100644
--- a/src/drivers/driver_nl80211.c
+++ b/src/drivers/driver_nl80211.c
@@ -4374,6 +4374,12 @@ retry:
 			goto fail;
 	}
 
+	if (params->fixed_freq) {
+		wpa_printf(MSG_DEBUG, "  * fixed_freq");
+		if (nla_put_flag(msg, NL80211_ATTR_FREQ_FIXED))
+			goto fail;
+	}
+
 	if (params->key_mgmt_suite == WPA_KEY_MGMT_IEEE8021X ||
 	    params->key_mgmt_suite == WPA_KEY_MGMT_PSK ||
 	    params->key_mgmt_suite == WPA_KEY_MGMT_IEEE8021X_SHA256 ||
diff --git a/wpa_supplicant/config.c b/wpa_supplicant/config.c
index ea633a6..4dc7a8d 100644
--- a/wpa_supplicant/config.c
+++ b/wpa_supplicant/config.c
@@ -1896,6 +1896,7 @@ static const struct parse_data ssid_fields[] = {
 	{ INT_RANGE(peerkey, 0, 1) },
 	{ INT_RANGE(mixed_cell, 0, 1) },
 	{ INT_RANGE(frequency, 0, 65000) },
+	{ INT_RANGE(fixed_freq, 0, 1) },
 #ifdef CONFIG_MESH
 	{ FUNC(mesh_basic_rates) },
 	{ INT(dot11MeshMaxRetries) },
diff --git a/wpa_supplicant/config_ssid.h b/wpa_supplicant/config_ssid.h
index f744895..9e68525 100644
--- a/wpa_supplicant/config_ssid.h
+++ b/wpa_supplicant/config_ssid.h
@@ -420,6 +420,11 @@ struct wpa_ssid {
 	int frequency;
 
 	/**
+	 * fixed_freq - use fixed frequency for IBSS
+	 */
+	int fixed_freq;
+
+	/**
 	 * mesh_basic_rates - BSS Basic rate set for mesh network
 	 *
 	 */
diff --git a/wpa_supplicant/wpa_supplicant.c b/wpa_supplicant/wpa_supplicant.c
index 5f67e55..2a0bf39 100644
--- a/wpa_supplicant/wpa_supplicant.c
+++ b/wpa_supplicant/wpa_supplicant.c
@@ -2122,6 +2122,7 @@ static void wpas_start_assoc_cb(struct wpa_radio_work *work, int deinit)
 		ibss_mesh_setup_freq(wpa_s, ssid, &params.freq);
 
 	if (ssid->mode == WPAS_MODE_IBSS) {
+		params.fixed_freq = ssid->fixed_freq;
 		if (ssid->beacon_int)
 			params.beacon_int = ssid->beacon_int;
 		else
-- 
1.9.1




More information about the Hostap mailing list