diff options
-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, |