diff options
author | Jukka Rissanen <jukka.rissanen@linux.intel.com> | 2012-05-04 15:24:32 +0300 |
---|---|---|
committer | Patrik Flykt <patrik.flykt@linux.intel.com> | 2012-05-04 16:17:05 +0300 |
commit | 305a6cb8bc6aa464a7a5e2669d00ac4691f4a2a5 (patch) | |
tree | 91a9ae59b32cd9d932a0abf86447d8a96f776052 /gsupplicant/supplicant.c | |
parent | 4cd19238f5499623391ebf74c74af03905a14ef8 (diff) | |
download | connman-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.c | 19 |
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); |