diff options
author | Steve Kondik <shade@chemlab.org> | 2012-12-20 20:39:18 -0800 |
---|---|---|
committer | Gerrit Code Review <gerrit@review.cyanogenmod.com> | 2012-12-20 20:43:02 -0800 |
commit | c4392efa0270620ac64c967ada82e47d59484f1a (patch) | |
tree | c398e5b80b075a9ff14d8c176d2c3d4d432c8a0d | |
parent | 5d93191d7227c3e891677871ad3d3bc6de544cbc (diff) | |
download | hardware_libhardware_legacy-c4392efa0270620ac64c967ada82e47d59484f1a.zip hardware_libhardware_legacy-c4392efa0270620ac64c967ada82e47d59484f1a.tar.gz hardware_libhardware_legacy-c4392efa0270620ac64c967ada82e47d59484f1a.tar.bz2 |
wifi: Add support for AP module args
* Needed for Samsung's goofy handling of AP mode
Change-Id: I5ec65460b7c9f8ef34170473cf1bdaa36587767b
-rw-r--r-- | include/hardware_legacy/wifi.h | 5 | ||||
-rw-r--r-- | wifi/Android.mk | 3 | ||||
-rw-r--r-- | wifi/wifi.c | 19 |
3 files changed, 27 insertions, 0 deletions
diff --git a/include/hardware_legacy/wifi.h b/include/hardware_legacy/wifi.h index 4d051e7..01d73e4 100644 --- a/include/hardware_legacy/wifi.h +++ b/include/hardware_legacy/wifi.h @@ -145,6 +145,11 @@ const char *wifi_get_fw_path(int fw_type); int wifi_change_fw_path(const char *fwpath); /** + * Set the wifi mode (0 = normal, 1 = ap) + */ +int wifi_set_mode(int mode); + +/** * Check and create if necessary initial entropy file */ #define WIFI_ENTROPY_FILE "/data/misc/wifi/entropy.bin" diff --git a/wifi/Android.mk b/wifi/Android.mk index 387f9ce..b6795fc 100644 --- a/wifi/Android.mk +++ b/wifi/Android.mk @@ -9,6 +9,9 @@ endif ifdef WIFI_DRIVER_MODULE_ARG LOCAL_CFLAGS += -DWIFI_DRIVER_MODULE_ARG=\"$(WIFI_DRIVER_MODULE_ARG)\" endif +ifdef WIFI_DRIVER_MODULE_AP_ARG +LOCAL_CFLAGS += -DWIFI_DRIVER_MODULE_AP_ARG=\"$(WIFI_DRIVER_MODULE_AP_ARG)\" +endif ifdef WIFI_DRIVER_MODULE_NAME LOCAL_CFLAGS += -DWIFI_DRIVER_MODULE_NAME=\"$(WIFI_DRIVER_MODULE_NAME)\" endif diff --git a/wifi/wifi.c b/wifi/wifi.c index 1231a99..e9b1764 100644 --- a/wifi/wifi.c +++ b/wifi/wifi.c @@ -72,6 +72,8 @@ extern void get_dhcp_info(); extern int init_module(void *, unsigned long, const char *); extern int delete_module(const char *, unsigned int); +static int wifi_mode = 0; + static char primary_iface[PROPERTY_VALUE_MAX]; // TODO: use new ANDROID_SOCKET mechanism, once support for multiple // sockets is in @@ -86,6 +88,9 @@ struct genl_family *nl80211; #ifndef WIFI_DRIVER_MODULE_ARG #define WIFI_DRIVER_MODULE_ARG "" #endif +#ifndef WIFI_DRIVER_MODULE_AP_ARG +#define WIFI_DRIVER_MODULE_AP_ARG "" +#endif #ifndef WIFI_FIRMWARE_LOADER #define WIFI_FIRMWARE_LOADER "" #endif @@ -111,6 +116,7 @@ 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; +static const char DRIVER_MODULE_AP_ARG[] = WIFI_DRIVER_MODULE_AP_ARG; #endif static const char FIRMWARE_LOADER[] = WIFI_FIRMWARE_LOADER; static const char DRIVER_PROP_NAME[] = "wlan.driver.status"; @@ -273,8 +279,16 @@ int wifi_load_driver() char module_arg2[256]; #ifdef SAMSUNG_WIFI +#ifdef WIFI_DRIVER_MODULE_AP_ARG + if (wifi_mode == 1) { + snprintf(module_arg2, sizeof(module_arg2), DRIVER_MODULE_AP_ARG); + } else { + snprintf(module_arg2, sizeof(module_arg2), DRIVER_MODULE_ARG); + } +#else char* type = get_samsung_wifi_type(); snprintf(module_arg2, sizeof(module_arg2), "%s%s", DRIVER_MODULE_ARG, type == NULL ? "" : type); +#endif if (insmod(DRIVER_MODULE_PATH, module_arg2) < 0) { #else @@ -1174,3 +1188,8 @@ int wifi_change_fw_path(const char *fwpath) close(fd); return ret; } + +int wifi_set_mode(int mode) { + wifi_mode = mode; + return 0; +} |