diff options
author | Arend van Spriel <arend@broadcom.com> | 2013-08-10 06:27:24 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2013-08-15 16:07:54 -0400 |
commit | 2ee8382fc6c763c76396a6aaff77a27089eed3aa (patch) | |
tree | bef8a19068e51f68d0a827b352f9107a23482551 | |
parent | 3f4f910fdc3b9eff06a007ab28762cd3d6720d51 (diff) |
brcmfmac: ignore IF event if firmware indicates it
Not every IF event from the firmware needs to result in a
related interface, netdev or wdev, on the host. This is
indicated in the event message. Handle that flag and effectively
ignore the firmware event.
Reviewed-by: Hante Meuleman <meuleman@broadcom.com>
Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r-- | drivers/net/wireless/brcm80211/brcmfmac/dhd.h | 2 | ||||
-rw-r--r-- | drivers/net/wireless/brcm80211/brcmfmac/fweh.c | 4 |
2 files changed, 6 insertions, 0 deletions
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/dhd.h b/drivers/net/wireless/brcm80211/brcmfmac/dhd.h index 1273dfdb521b..2eb9e642c9bf 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/dhd.h +++ b/drivers/net/wireless/brcm80211/brcmfmac/dhd.h | |||
@@ -194,6 +194,8 @@ | |||
194 | #define BRCMF_E_IF_DEL 2 | 194 | #define BRCMF_E_IF_DEL 2 |
195 | #define BRCMF_E_IF_CHANGE 3 | 195 | #define BRCMF_E_IF_CHANGE 3 |
196 | 196 | ||
197 | #define BRCMF_E_IF_FLAG_NOIF 1 | ||
198 | |||
197 | #define BRCMF_E_IF_ROLE_STA 0 | 199 | #define BRCMF_E_IF_ROLE_STA 0 |
198 | #define BRCMF_E_IF_ROLE_AP 1 | 200 | #define BRCMF_E_IF_ROLE_AP 1 |
199 | #define BRCMF_E_IF_ROLE_WDS 2 | 201 | #define BRCMF_E_IF_ROLE_WDS 2 |
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/fweh.c b/drivers/net/wireless/brcm80211/brcmfmac/fweh.c index 83ee53a7c76e..fad77dd2a3a5 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/fweh.c +++ b/drivers/net/wireless/brcm80211/brcmfmac/fweh.c | |||
@@ -185,6 +185,10 @@ static void brcmf_fweh_handle_if_event(struct brcmf_pub *drvr, | |||
185 | ifevent->action, ifevent->ifidx, ifevent->bssidx, | 185 | ifevent->action, ifevent->ifidx, ifevent->bssidx, |
186 | ifevent->flags, ifevent->role); | 186 | ifevent->flags, ifevent->role); |
187 | 187 | ||
188 | if (ifevent->flags & BRCMF_E_IF_FLAG_NOIF) { | ||
189 | brcmf_dbg(EVENT, "event can be ignored\n"); | ||
190 | return; | ||
191 | } | ||
188 | if (ifevent->ifidx >= BRCMF_MAX_IFS) { | 192 | if (ifevent->ifidx >= BRCMF_MAX_IFS) { |
189 | brcmf_err("invalid interface index: %u\n", | 193 | brcmf_err("invalid interface index: %u\n", |
190 | ifevent->ifidx); | 194 | ifevent->ifidx); |