diff options
| author | Jouni Malinen <j@w1.fi> | 2011-07-17 13:56:34 +0300 |
|---|---|---|
| committer | Keith Deacon <kdeacon@ti.com> | 2011-11-15 20:45:50 -0600 |
| commit | dde5d82cae87c9e56716d63000cac9ef11ada45b (patch) | |
| tree | 929e9c4c7297cfb0b141869a0b5d4bd21387d473 | |
| parent | 44039e3a836cec2c38587e07da622161d2ac332e (diff) | |
| download | android_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.c | 13 |
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: |
