diff options
author | Saurav Babu <saurav.babu@samsung.com> | 2017-09-28 14:04:31 +0530 |
---|---|---|
committer | taesub kim <taesub.kim@samsung.com> | 2017-09-28 20:52:44 +0900 |
commit | 90a3eec42f77efedafabce182c50dce5fe377140 (patch) | |
tree | 03ed69a3ab1cf8136a7cf7c5c1ef165750e3bf68 | |
parent | 4b46087d69bbb71515b4561f531b9d5c46cdced2 (diff) | |
download | connman-90a3eec42f77efedafabce182c50dce5fe377140.tar.gz connman-90a3eec42f77efedafabce182c50dce5fe377140.tar.bz2 connman-90a3eec42f77efedafabce182c50dce5fe377140.zip |
wifi: Don't increase device ref count on full scan after specific scansubmit/tizen_4.0/20170928.230025accepted/tizen/4.0/unified/20170929.080437
Earlier full scan was done using throw_wifi_scan() which increases
device reference count. As we need to perform full scan then we should
directly call g_supplicant_interface_scan() without increasing the
device ref count.
Change-Id: Icb595ca714d5bf03ed0a071fcd987f9bc1b736dc
Signed-off-by: Saurav Babu <saurav.babu@samsung.com>
-rwxr-xr-x | plugins/wifi.c | 40 |
1 files changed, 24 insertions, 16 deletions
diff --git a/plugins/wifi.c b/plugins/wifi.c index ce532336..58979345 100755 --- a/plugins/wifi.c +++ b/plugins/wifi.c @@ -1301,12 +1301,24 @@ static void scan_callback(int result, GSupplicantInterface *interface, return scan_callback(ret, interface, user_data); } - scanning = connman_device_get_scanning(device); #if defined TIZEN_EXT - if (scanning && wifi && !wifi->allow_full_scan) -#else - if (scanning) + if (wifi && wifi->allow_full_scan) { + int ret; + DBG("Trigger Full Channel Scan"); + wifi->allow_full_scan = FALSE; + + ret = g_supplicant_interface_scan(wifi->interface, NULL, + scan_callback, device); + if (ret == 0) + return; + + /* On error, let's recall scan_callback, which will cleanup */ + return scan_callback(ret, interface, user_data); + } #endif + + scanning = connman_device_get_scanning(device); + if (scanning) connman_device_set_scanning(device, CONNMAN_SERVICE_TYPE_WIFI, false); @@ -1327,11 +1339,6 @@ static void scan_callback(int result, GSupplicantInterface *interface, connman_device_unref(device); #if defined TIZEN_EXT - if (wifi && wifi->allow_full_scan) { - DBG("Trigger Full Channel Scan"); - throw_wifi_scan(device, scan_callback); - wifi->allow_full_scan = FALSE; - } if (wifi && wifi->scan_pending_network && result != -EIO) { network_connect(wifi->scan_pending_network); wifi->scan_pending_network = NULL; @@ -2072,13 +2079,6 @@ static int wifi_scan(enum connman_service_type type, connman_device_ref(device); -#if defined TIZEN_EXT - /*To allow the Full Scan after ssid based scan, set the flag here - It is required because Tizen does not use the ConnMan specific - backgroung Scan feature.Tizen has added the BG Scan feature in net-config - To sync with up ConnMan, we need to issue the Full Scan after SSID specific scan.*/ - wifi->allow_full_scan = TRUE; -#endif reset_autoscan(device); ret = g_supplicant_interface_scan(wifi->interface, scan_params, @@ -2087,6 +2087,14 @@ static int wifi_scan(enum connman_service_type type, if (ret == 0) { connman_device_set_scanning(device, CONNMAN_SERVICE_TYPE_WIFI, true); +#if defined TIZEN_EXT + /*To allow the Full Scan after ssid based scan, set the flag here + It is required because Tizen does not use the ConnMan specific + backgroung Scan feature.Tizen has added the BG Scan feature in + net-config. To sync with up ConnMan, we need to issue the Full Scan + after SSID specific scan.*/ + wifi->allow_full_scan = TRUE; +#endif } else { g_supplicant_free_scan_params(scan_params); connman_device_unref(device); |