From 4b3af3f6ce0edf38a393c9a55e68a8d94725d810 Mon Sep 17 00:00:00 2001 From: Dmitry Shmidt Date: Tue, 3 Nov 2009 14:41:57 -0800 Subject: [PATCH] Add scan-channels command support (http://b/2213691) Signed-off-by: Dmitry Shmidt --- driver_wext.c | 19 ++++++++++++++++++- driver_wext.h | 5 +++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/driver_wext.c b/driver_wext.c index ed5c639..6e33de7 100644 --- a/driver_wext.c +++ b/driver_wext.c @@ -2498,7 +2498,18 @@ int wpa_driver_wext_get_version(struct wpa_driver_wext_data *drv) } #ifdef ANDROID -int wpa_driver_priv_driver_cmd( void *priv, char *cmd, char *buf, size_t buf_len ) +static char *wpa_driver_get_country_code(int channels) +{ + char *country = "US"; /* WEXT_NUMBER_SCAN_CHANNELS_FCC */ + + if (channels == WEXT_NUMBER_SCAN_CHANNELS_ETSI) + country = "EU"; + else if( channels == WEXT_NUMBER_SCAN_CHANNELS_MKK1) + country = "JP"; + return country; +} + +static int wpa_driver_priv_driver_cmd( void *priv, char *cmd, char *buf, size_t buf_len ) { struct wpa_driver_wext_data *drv = priv; struct wpa_supplicant *wpa_s = (struct wpa_supplicant *)(drv->ctx); @@ -2518,7 +2529,13 @@ int wpa_driver_priv_driver_cmd( void *priv, char *cmd, char *buf, size_t buf_len ret = -1; return ret; } + else if( os_strncasecmp(cmd, "SCAN-CHANNELS", 13) == 0 ) { + int no_of_chan; + no_of_chan = atoi(cmd + 13); + os_snprintf(cmd, MAX_DRV_CMD_SIZE, "COUNTRY %s", + wpa_driver_get_country_code(no_of_chan)); + } os_memset(&iwr, 0, sizeof(iwr)); os_strncpy(iwr.ifr_name, drv->ifname, IFNAMSIZ); os_memcpy(buf, cmd, strlen(cmd) + 1); diff --git a/driver_wext.h b/driver_wext.h index b93ddd5..4804ae5 100644 --- a/driver_wext.h +++ b/driver_wext.h @@ -46,7 +46,12 @@ int wpa_driver_wext_set_operstate(void *priv, int state); int wpa_driver_wext_get_version(struct wpa_driver_wext_data *drv); #ifdef ANDROID +#define WEXT_NUMBER_SCAN_CHANNELS_FCC 11 +#define WEXT_NUMBER_SCAN_CHANNELS_ETSI 13 +#define WEXT_NUMBER_SCAN_CHANNELS_MKK1 14 + #define WPA_DRIVER_WEXT_WAIT_US 400000 +#define MAX_DRV_CMD_SIZE 248 #endif #endif /* DRIVER_WEXT_H */ -- 2.11.0