summaryrefslogtreecommitdiff
path: root/gsupplicant/supplicant.c
diff options
context:
space:
mode:
authorJukka Rissanen <jukka.rissanen@linux.intel.com>2012-05-04 15:24:32 +0300
committerPatrik Flykt <patrik.flykt@linux.intel.com>2012-05-04 16:17:05 +0300
commit305a6cb8bc6aa464a7a5e2669d00ac4691f4a2a5 (patch)
tree91a9ae59b32cd9d932a0abf86447d8a96f776052 /gsupplicant/supplicant.c
parent4cd19238f5499623391ebf74c74af03905a14ef8 (diff)
downloadconnman-305a6cb8bc6aa464a7a5e2669d00ac4691f4a2a5.tar.gz
connman-305a6cb8bc6aa464a7a5e2669d00ac4691f4a2a5.tar.bz2
connman-305a6cb8bc6aa464a7a5e2669d00ac4691f4a2a5.zip
wifi: Allow max number of scan entries
Do no limit the scan entries to 4 (G_SUPPLICANT_MAX_FAST_SCAN) but use the limit given by the driver. The limit is given by wpa_s. If the supplicant does not return the limit, then use 4 as a max value.
Diffstat (limited to 'gsupplicant/supplicant.c')
-rw-r--r--gsupplicant/supplicant.c19
1 files changed, 12 insertions, 7 deletions
diff --git a/gsupplicant/supplicant.c b/gsupplicant/supplicant.c
index 58d40c13..867fa028 100644
--- a/gsupplicant/supplicant.c
+++ b/gsupplicant/supplicant.c
@@ -742,6 +742,9 @@ unsigned int g_supplicant_interface_get_max_scan_ssids(
if (interface == NULL)
return 0;
+ if (interface->max_scan_ssids == 0)
+ return WPAS_MAX_SCAN_SSIDS;
+
return interface->max_scan_ssids;
}
@@ -2618,7 +2621,7 @@ static void interface_scan_result(const char *error,
}
if (data != NULL && data->scan_params != NULL)
- g_free(data->scan_params);
+ g_supplicant_free_scan_params(data->scan_params);
dbus_free(data);
}
@@ -2643,7 +2646,7 @@ static void add_scan_frequencies(DBusMessageIter *iter,
unsigned int freq;
int i;
- for (i = 0; i < G_SUPPLICANT_MAX_FAST_SCAN; i++) {
+ for (i = 0; i < scan_data->num_ssids; i++) {
freq = scan_data->freqs[i];
if (!freq)
break;
@@ -2668,11 +2671,13 @@ static void append_ssid(DBusMessageIter *iter,
static void append_ssids(DBusMessageIter *iter, void *user_data)
{
GSupplicantScanParams *scan_data = user_data;
- int i;
+ GSList *list;
- for (i = 0; i < scan_data->num_ssids; i++)
- append_ssid(iter, scan_data->ssids[i].ssid,
- scan_data->ssids[i].ssid_len);
+ for (list = scan_data->ssids; list; list = list->next) {
+ struct scan_ssid *scan_ssid = list->data;
+
+ append_ssid(iter, scan_ssid->ssid, scan_ssid->ssid_len);
+ }
}
static void supplicant_add_scan_frequency(DBusMessageIter *dict,
@@ -2683,7 +2688,7 @@ static void supplicant_add_scan_frequency(DBusMessageIter *dict,
DBusMessageIter entry, value, array;
const char *key = "Channels";
- if (scan_params->freqs[0] != 0) {
+ if (scan_params->freqs && scan_params->freqs[0] != 0) {
dbus_message_iter_open_container(dict, DBUS_TYPE_DICT_ENTRY,
NULL, &entry);