diff options
author | Samuel Ortiz <sameo@linux.intel.com> | 2011-11-29 15:00:52 +0100 |
---|---|---|
committer | Samuel Ortiz <sameo@linux.intel.com> | 2011-11-29 15:00:52 +0100 |
commit | ec4029b54511a11900807b97f243dcb5c72685ec (patch) | |
tree | 0b8d452d9ace03c2231573f5cdbdbdfbc010af04 | |
parent | 1bd1ce5f07f16cb0ffef2aab1dc6732ea9ca9337 (diff) | |
download | connman-ec4029b54511a11900807b97f243dcb5c72685ec.tar.gz connman-ec4029b54511a11900807b97f243dcb5c72685ec.tar.bz2 connman-ec4029b54511a11900807b97f243dcb5c72685ec.zip |
wifi: Set device powered from the interface create callback
As interface_added can potentially show up before the interface creation
callback, the device powered flag can be set from the latter.
-rw-r--r-- | gsupplicant/gsupplicant.h | 1 | ||||
-rw-r--r-- | gsupplicant/supplicant.c | 8 | ||||
-rw-r--r-- | plugins/wifi.c | 12 |
3 files changed, 21 insertions, 0 deletions
diff --git a/gsupplicant/gsupplicant.h b/gsupplicant/gsupplicant.h index c7106791..8e96e02c 100644 --- a/gsupplicant/gsupplicant.h +++ b/gsupplicant/gsupplicant.h @@ -197,6 +197,7 @@ const void *g_supplicant_interface_get_wps_ssid(GSupplicantInterface *interface, unsigned int *ssid_len); GSupplicantWpsState g_supplicant_interface_get_wps_state(GSupplicantInterface *interface); unsigned int g_supplicant_interface_get_mode(GSupplicantInterface *interface); +dbus_bool_t g_supplicant_interface_get_ready(GSupplicantInterface *interface); unsigned int g_supplicant_interface_get_max_scan_ssids( GSupplicantInterface *interface); diff --git a/gsupplicant/supplicant.c b/gsupplicant/supplicant.c index 1c360fb0..b8e939dc 100644 --- a/gsupplicant/supplicant.c +++ b/gsupplicant/supplicant.c @@ -766,6 +766,14 @@ int g_supplicant_interface_enable_selected_network(GSupplicantInterface *interfa set_network_enabled, NULL, &enable); } +dbus_bool_t g_supplicant_interface_get_ready(GSupplicantInterface *interface) +{ + if (interface == NULL) + return FALSE; + + return interface->ready; +} + GSupplicantInterface *g_supplicant_network_get_interface( GSupplicantNetwork *network) { diff --git a/plugins/wifi.c b/plugins/wifi.c index 2070bb91..745c2cbc 100644 --- a/plugins/wifi.c +++ b/plugins/wifi.c @@ -213,6 +213,18 @@ static void interface_create_callback(int result, wifi->interface = interface; g_supplicant_interface_set_data(interface, wifi); + + if (g_supplicant_interface_get_ready(interface) == FALSE) + return; + + DBG("interface is ready wifi %p tethering %d", wifi, wifi->tethering); + + if (wifi->device == NULL) { + connman_error("WiFi device not set"); + return; + } + + connman_device_set_powered(wifi->device, TRUE); } static void interface_remove_callback(int result, |