diff options
author | Subhani Shaik <subhanis@codeaurora.org> | 2016-04-01 15:56:32 -0700 |
---|---|---|
committer | Paul Stewart <pstew@google.com> | 2016-04-08 12:27:03 -0700 |
commit | 6428490a6494726668213720ba9f00f81c06d2db (patch) | |
tree | b3e8329cc844e67df68782e619c9bb48377c090e /qcwcn | |
parent | 9f79ca53e0d25f3147396de7f5aaafe4840c1250 (diff) | |
download | wlan-6428490a6494726668213720ba9f00f81c06d2db.tar.gz |
Wifi: Fix handling of DRIVER STOP command
DRIVER STOP command needs to be sent to driver before
bringing the interface down. This is done to address
a bug where driver is de-registering n/w iface as
it can't distinguish between wifi off and DRIVER STOP.
BUG: 27576943
Change-Id: I9885b7858f7ee0dff3d5dcc4c64360147dfd8d9f
Diffstat (limited to 'qcwcn')
-rw-r--r-- | qcwcn/wpa_supplicant_8_lib/driver_cmd_nl80211.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/qcwcn/wpa_supplicant_8_lib/driver_cmd_nl80211.c b/qcwcn/wpa_supplicant_8_lib/driver_cmd_nl80211.c index f2f625d..a82b980 100644 --- a/qcwcn/wpa_supplicant_8_lib/driver_cmd_nl80211.c +++ b/qcwcn/wpa_supplicant_8_lib/driver_cmd_nl80211.c @@ -82,12 +82,7 @@ int wpa_driver_nl80211_driver_cmd(void *priv, char *cmd, char *buf, android_wifi_priv_cmd priv_cmd; int ret = 0; - if (os_strcasecmp(cmd, "STOP") == 0) { - dl_list_for_each(driver, &drv->global->interfaces, struct wpa_driver_nl80211_data, list) { - linux_set_iface_flags(drv->global->ioctl_sock, driver->first_bss->ifname, 0); - wpa_msg(drv->ctx, MSG_INFO, WPA_EVENT_DRIVER_STATE "STOPPED"); - } - } else if (os_strcasecmp(cmd, "START") == 0) { + if (os_strcasecmp(cmd, "START") == 0) { dl_list_for_each(driver, &drv->global->interfaces, struct wpa_driver_nl80211_data, list) { linux_set_iface_flags(drv->global->ioctl_sock, driver->first_bss->ifname, 1); wpa_msg(drv->ctx, MSG_INFO, WPA_EVENT_DRIVER_STATE "STARTED"); @@ -131,6 +126,13 @@ int wpa_driver_nl80211_driver_cmd(void *priv, char *cmd, char *buf, wpa_printf(MSG_DEBUG, "%s: P2P: %s ", __func__, buf); else if (os_strcasecmp(cmd, "P2P_SET_NOA") == 0) wpa_printf(MSG_DEBUG, "%s: P2P: %s ", __func__, buf); + else if (os_strcasecmp(cmd, "STOP") == 0) { + wpa_printf(MSG_DEBUG, "%s: %s ", __func__, buf); + dl_list_for_each(driver, &drv->global->interfaces, struct wpa_driver_nl80211_data, list) { + linux_set_iface_flags(drv->global->ioctl_sock, driver->first_bss->ifname, 0); + wpa_msg(drv->ctx, MSG_INFO, WPA_EVENT_DRIVER_STATE "STOPPED"); + } + } else wpa_printf(MSG_DEBUG, "%s %s len = %d, %lu", __func__, buf, ret, buf_len); wpa_driver_notify_country_change(drv->ctx, cmd); |