summaryrefslogtreecommitdiff
path: root/qcwcn
diff options
context:
space:
mode:
authorSubhani Shaik <subhanis@codeaurora.org>2016-04-01 15:56:32 -0700
committerPaul Stewart <pstew@google.com>2016-04-08 12:27:03 -0700
commit6428490a6494726668213720ba9f00f81c06d2db (patch)
treeb3e8329cc844e67df68782e619c9bb48377c090e /qcwcn
parent9f79ca53e0d25f3147396de7f5aaafe4840c1250 (diff)
downloadwlan-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.c14
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);