aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Shmidt <dimitrysh@google.com>2009-11-03 14:55:00 -0800
committerAndroid Git Automerger <android-git-automerger@android.com>2009-11-03 14:55:00 -0800
commit5476383b6e5ac5baec1cae3e88a1df5d214fb16d (patch)
treec482a34b5ba8bf895dcb64b768e3292d8c7279ed
parent434b16e5d9a20883873e949466dc7152b12092ad (diff)
parent4b3af3f6ce0edf38a393c9a55e68a8d94725d810 (diff)
downloadwpa_supplicant-5476383b6e5ac5baec1cae3e88a1df5d214fb16d.tar.gz
am 4b3af3f6: Add scan-channels command support (http://b/2213691)
Merge commit '4b3af3f6ce0edf38a393c9a55e68a8d94725d810' into eclair-mr2 * commit '4b3af3f6ce0edf38a393c9a55e68a8d94725d810': Add scan-channels command support (http://b/2213691)
-rw-r--r--driver_wext.c19
-rw-r--r--driver_wext.h5
2 files changed, 23 insertions, 1 deletions
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 */