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)
}
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);
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)
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);