aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Shmidt <dimitrysh@google.com>2009-11-23 10:43:13 -0800
committerAndroid Git Automerger <android-git-automerger@android.com>2009-11-23 10:43:13 -0800
commit78eb90b055f8880139e4c690715051517a7c33a9 (patch)
tree6e0c3d80e8ff76b99df4cfa27bf951b267dbab9f
parentcce8160f1471e73f9b4bbe737547485c9b298e6d (diff)
parent68b591fa9047f2df4ac6b346e10e4879f84e95ee (diff)
downloadwpa_supplicant-78eb90b055f8880139e4c690715051517a7c33a9.tar.gz
am 68b591fa: am c7da28cb: Set interface down in case of "driver stop" command (b/2271658)
Merge commit '68b591fa9047f2df4ac6b346e10e4879f84e95ee' into eclair-mr2-plus-aosp * commit '68b591fa9047f2df4ac6b346e10e4879f84e95ee': Set interface down in case of "driver stop" command (b/2271658)
-rw-r--r--driver_wext.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/driver_wext.c b/driver_wext.c
index e939a00..c75dd4a 100644
--- a/driver_wext.c
+++ b/driver_wext.c
@@ -2520,12 +2520,12 @@ static char *wpa_driver_get_country_code(int channels)
return country;
}
-static int wpa_driver_priv_driver_cmd( void *priv, char *cmd, char *buf, size_t buf_len )
+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);
struct iwreq iwr;
- int ret = 0;
+ int ret = 0, flags;
wpa_printf(MSG_DEBUG, "%s %s len = %d", __func__, cmd, buf_len);
@@ -2539,6 +2539,15 @@ static int wpa_driver_priv_driver_cmd( void *priv, char *cmd, char *buf, size_t
os_snprintf(cmd, MAX_DRV_CMD_SIZE, "COUNTRY %s",
wpa_driver_get_country_code(no_of_chan));
}
+ else if (os_strcasecmp(cmd, "STOP") == 0) {
+ if ((wpa_driver_wext_get_ifflags(drv, &flags) == 0) &&
+ (flags & IFF_UP)) {
+ wpa_printf(MSG_ERROR, "WEXT: %s when iface is UP",
+ cmd);
+ wpa_driver_wext_set_ifflags(drv, flags & ~IFF_UP);
+ }
+ }
+
os_memset(&iwr, 0, sizeof(iwr));
os_strncpy(iwr.ifr_name, drv->ifname, IFNAMSIZ);
os_memcpy(buf, cmd, strlen(cmd) + 1);