brcmfmac: ignore IF event if firmware indicates it
authorArend van Spriel <arend@broadcom.com>
Sat, 10 Aug 2013 10:27:24 +0000 (12:27 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Thu, 15 Aug 2013 20:07:54 +0000 (16:07 -0400)
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>
drivers/net/wireless/brcm80211/brcmfmac/dhd.h
drivers/net/wireless/brcm80211/brcmfmac/fweh.c

index 1273dfd..2eb9e64 100644 (file)
 #define BRCMF_E_IF_DEL                         2
 #define BRCMF_E_IF_CHANGE                      3
 
+#define BRCMF_E_IF_FLAG_NOIF                   1
+
 #define BRCMF_E_IF_ROLE_STA                    0
 #define BRCMF_E_IF_ROLE_AP                     1
 #define BRCMF_E_IF_ROLE_WDS                    2
index 83ee53a..fad77dd 100644 (file)
@@ -185,6 +185,10 @@ static void brcmf_fweh_handle_if_event(struct brcmf_pub *drvr,
                  ifevent->action, ifevent->ifidx, ifevent->bssidx,
                  ifevent->flags, ifevent->role);
 
+       if (ifevent->flags & BRCMF_E_IF_FLAG_NOIF) {
+               brcmf_dbg(EVENT, "event can be ignored\n");
+               return;
+       }
        if (ifevent->ifidx >= BRCMF_MAX_IFS) {
                brcmf_err("invalid interface index: %u\n",
                          ifevent->ifidx);