aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJouni Malinen <j@w1.fi>2011-07-17 13:56:34 +0300
committerKeith Deacon <kdeacon@ti.com>2011-11-15 20:45:50 -0600
commitdde5d82cae87c9e56716d63000cac9ef11ada45b (patch)
tree929e9c4c7297cfb0b141869a0b5d4bd21387d473
parent44039e3a836cec2c38587e07da622161d2ac332e (diff)
downloadandroid_external_wpa_supplicant_8-dde5d82cae87c9e56716d63000cac9ef11ada45b.tar.gz
android_external_wpa_supplicant_8-dde5d82cae87c9e56716d63000cac9ef11ada45b.tar.bz2
android_external_wpa_supplicant_8-dde5d82cae87c9e56716d63000cac9ef11ada45b.zip
nl80211: Ignore ifdown event if mode change triggered it
When driver_nl80211.c has to set the netdev down to change iftype, an RTM_NEWLINK event is generated. Do not generate EVENT_INTERFACE_DISABLED event based on that. Change-Id: Ifbc7ed1f7def0725f393b29c51777848cfdddfb7 Signed-off-by: Vishal Mahaveer <a0271468@ti.com>
-rw-r--r--src/drivers/driver_nl80211.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c
index e8c71def..df187aa1 100644
--- a/src/drivers/driver_nl80211.c
+++ b/src/drivers/driver_nl80211.c
@@ -134,6 +134,7 @@ struct wpa_driver_nl80211_data {
int ifindex;
int if_removed;
int if_disabled;
+ int ignore_if_down_event;
struct rfkill_data *rfkill;
struct wpa_driver_capa capa;
int has_capability;
@@ -507,8 +508,15 @@ static void wpa_driver_nl80211_event_rtm_newlink(void *ctx,
if (!drv->if_disabled && !(ifi->ifi_flags & IFF_UP)) {
wpa_printf(MSG_DEBUG, "nl80211: Interface down");
- drv->if_disabled = 1;
- wpa_supplicant_event(drv->ctx, EVENT_INTERFACE_DISABLED, NULL);
+ if (drv->ignore_if_down_event) {
+ wpa_printf(MSG_DEBUG, "nl80211: Ignore interface down "
+ "event generated by mode change");
+ drv->ignore_if_down_event = 0;
+ } else {
+ drv->if_disabled = 1;
+ wpa_supplicant_event(drv->ctx,
+ EVENT_INTERFACE_DISABLED, NULL);
+ }
}
if (drv->if_disabled && (ifi->ifi_flags & IFF_UP)) {
@@ -5111,6 +5119,7 @@ static int wpa_driver_nl80211_set_mode(void *priv, int mode)
wpa_printf(MSG_DEBUG, "nl80211: Mode change succeeded while "
"interface is down");
drv->nlmode = nlmode;
+ drv->ignore_if_down_event = 1;
}
done: