From: Jaehyun Kim Date: Tue, 1 Nov 2022 02:56:08 +0000 (+0900) Subject: DA: Modify backgeround scan routine X-Git-Tag: accepted/tizen/7.0/unified/20221206.171103~4 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F50%2F283650%2F1;p=platform%2Fcore%2Fconnectivity%2Fnet-config.git DA: Modify backgeround scan routine 1. Failure -> IDLE state change will reset bg_interval & resume bg_scan. 2. Move doubling the bg_interval function to __wifi_bgscan_next_scan for preventing skip bg_interval timer. Change-Id: I4f881e06b660215bf9433df7ba5548a6ace113cf Signed-off-by: Jaehyun Kim --- diff --git a/src/wifi-scan.c b/src/wifi-scan.c index 0f8738f..c8669bd 100755 --- a/src/wifi-scan.c +++ b/src/wifi-scan.c @@ -308,6 +308,12 @@ static gboolean __wifi_bgscan_next_scan(gpointer data) if (!scan_data) return FALSE; + if (scan_data->bg_mode == WIFI_BGSCAN_MODE_EXPONENTIAL) { + scan_data->bg_interval = scan_data->bg_interval * 2; + if (scan_data->bg_interval > SCAN_EXPONENTIAL_MAX) + scan_data->bg_interval = SCAN_EXPONENTIAL_MAX; + } + /* In case of LCD off, we don't need Wi-Fi scan */ netconfig_vconf_get_int(VCONFKEY_PM_STATE, &pm_state); if (pm_state >= VCONFKEY_PM_STATE_LCDOFF) @@ -342,8 +348,8 @@ void netconfig_wifi_bgscan_start_timer(const char *interface_name, gboolean imme } if (immediate_scan) - DBG("[%s] Scan immediately[%d], mode[%d](0 exponential / 1 periodic)", - interface_name, immediate_scan, scan_data->bg_mode); + DBG("[%s] Scan immediately[%d], mode[%d](0 exponential / 1 periodic), next[%d]", + interface_name, immediate_scan, scan_data->bg_mode, scan_data->bg_interval); else DBG("[%s] Scan immediately[%d], mode[%d](0 exponential / 1 periodic), next[%d]", interface_name, immediate_scan, scan_data->bg_mode, scan_data->bg_interval); @@ -354,11 +360,6 @@ void netconfig_wifi_bgscan_start_timer(const char *interface_name, gboolean imme netconfig_start_timer_seconds(scan_data->bg_interval, __wifi_bgscan_next_scan, scan_data, &(scan_data->bg_timer_id)); - if (scan_data->bg_mode == WIFI_BGSCAN_MODE_EXPONENTIAL && immediate_scan) { - scan_data->bg_interval = scan_data->bg_interval * 2; - if (scan_data->bg_interval > SCAN_EXPONENTIAL_MAX) - scan_data->bg_interval = SCAN_EXPONENTIAL_MAX; - } } void netconfig_wifi_bgscan_stop_timer(const char *interface_name) diff --git a/src/wifi-state.c b/src/wifi-state.c index 52db93b..eee4fb0 100755 --- a/src/wifi-state.c +++ b/src/wifi-state.c @@ -799,6 +799,11 @@ void wifi_state_set_service_state(const char *interface_name, netconfig_wifi_bgscan_stop(interface_name); netconfig_wifi_bgscan_start(interface_name, TRUE); + } else if (old_state == NETCONFIG_WIFI_FAILURE && new_state == NETCONFIG_WIFI_IDLE) { + DBG("reset the bg scan period, in failure case"); + netconfig_wifi_bgscan_stop(interface_name); + netconfig_wifi_bgscan_set_interval(interface_name, SCAN_EXPONENTIAL_MIN); + netconfig_wifi_bgscan_start(interface_name, FALSE); } _wifi_state_changed(interface_name, new_state);