summaryrefslogtreecommitdiffstats
path: root/wifi
diff options
context:
space:
mode:
authorDmitry Shmidt <dimitrysh@google.com>2011-06-29 16:22:28 -0700
committerDmitry Shmidt <dimitrysh@google.com>2011-06-29 16:22:28 -0700
commitd301cb7a5e76f82d265f8a7d408bec3159614f0b (patch)
tree3dc0e83ced10f2932e054132a3daa1b938f24771 /wifi
parentd17f66f33276e64e8e288f6ff2b1cb8169650c81 (diff)
downloadhardware_libhardware_legacy-d301cb7a5e76f82d265f8a7d408bec3159614f0b.zip
hardware_libhardware_legacy-d301cb7a5e76f82d265f8a7d408bec3159614f0b.tar.gz
hardware_libhardware_legacy-d301cb7a5e76f82d265f8a7d408bec3159614f0b.tar.bz2
wifi: Assume built-in wlan driver if WIFI_DRIVER_MODULE_PATH is not set
Change-Id: Ic63381fe037cd5aa1f3d419d7c253c2b17961a24 Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
Diffstat (limited to 'wifi')
-rw-r--r--wifi/wifi.c24
1 files changed, 18 insertions, 6 deletions
diff --git a/wifi/wifi.c b/wifi/wifi.c
index 8690893..497d1f7 100644
--- a/wifi/wifi.c
+++ b/wifi/wifi.c
@@ -49,12 +49,6 @@ static char iface[PROPERTY_VALUE_MAX];
// TODO: use new ANDROID_SOCKET mechanism, once support for multiple
// sockets is in
-#ifndef WIFI_DRIVER_MODULE_PATH
-#define WIFI_DRIVER_MODULE_PATH "/system/lib/modules/wlan.ko"
-#endif
-#ifndef WIFI_DRIVER_MODULE_NAME
-#define WIFI_DRIVER_MODULE_NAME "wlan"
-#endif
#ifndef WIFI_DRIVER_MODULE_ARG
#define WIFI_DRIVER_MODULE_ARG ""
#endif
@@ -66,10 +60,12 @@ static char iface[PROPERTY_VALUE_MAX];
#define WIFI_DRIVER_LOADER_DELAY 1000000
static const char IFACE_DIR[] = "/data/system/wpa_supplicant";
+#ifdef WIFI_DRIVER_MODULE_PATH
static const char DRIVER_MODULE_NAME[] = WIFI_DRIVER_MODULE_NAME;
static const char DRIVER_MODULE_TAG[] = WIFI_DRIVER_MODULE_NAME " ";
static const char DRIVER_MODULE_PATH[] = WIFI_DRIVER_MODULE_PATH;
static const char DRIVER_MODULE_ARG[] = WIFI_DRIVER_MODULE_ARG;
+#endif
static const char FIRMWARE_LOADER[] = WIFI_FIRMWARE_LOADER;
static const char DRIVER_PROP_NAME[] = "wlan.driver.status";
static const char SUPPLICANT_NAME[] = "wpa_supplicant";
@@ -138,13 +134,16 @@ const char *get_dhcp_error_string() {
int is_wifi_driver_loaded() {
char driver_status[PROPERTY_VALUE_MAX];
+#ifdef WIFI_DRIVER_MODULE_PATH
FILE *proc;
char line[sizeof(DRIVER_MODULE_TAG)+10];
+#endif
if (!property_get(DRIVER_PROP_NAME, driver_status, NULL)
|| strcmp(driver_status, "ok") != 0) {
return 0; /* driver not loaded */
}
+#ifdef WIFI_DRIVER_MODULE_PATH
/*
* If the property says the driver is loaded, check to
* make sure that the property setting isn't just left
@@ -165,10 +164,14 @@ int is_wifi_driver_loaded() {
fclose(proc);
property_set(DRIVER_PROP_NAME, "unloaded");
return 0;
+#else
+ return 1;
+#endif
}
int wifi_load_driver()
{
+#ifdef WIFI_DRIVER_MODULE_PATH
char driver_status[PROPERTY_VALUE_MAX];
int count = 100; /* wait at most 20 seconds for completion */
@@ -201,10 +204,15 @@ int wifi_load_driver()
property_set(DRIVER_PROP_NAME, "timeout");
wifi_unload_driver();
return -1;
+#else
+ property_set(DRIVER_PROP_NAME, "ok");
+ return 0;
+#endif
}
int wifi_unload_driver()
{
+#ifdef WIFI_DRIVER_MODULE_PATH
int count = 20; /* wait at most 10 seconds for completion */
usleep(200000); /* allow to finish interface down */
@@ -220,6 +228,10 @@ int wifi_unload_driver()
return -1;
} else
return -1;
+#else
+ property_set(DRIVER_PROP_NAME, "unloaded");
+ return 0;
+#endif
}
int ensure_config_file_exists()