brcmfmac: Fix p2p bug for older firmwares.
authorHante Meuleman <meuleman@broadcom.com>
Fri, 18 Sep 2015 20:08:14 +0000 (22:08 +0200)
committerKalle Valo <kvalo@codeaurora.org>
Tue, 29 Sep 2015 07:55:59 +0000 (10:55 +0300)
Some devices with older firmwares are reporting new p2p device
interface with the wrong type. Accept this type to get p2p
working for these devices.

Reviewed-by: Arend Van Spriel <arend@broadcom.com>
Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Signed-off-by: Hante Meuleman <meuleman@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/brcm80211/brcmfmac/fweh.c

index 3330f30be8ef634b124dc85b9fd81483ab91e145..dc34d3a69b271d7c652007c25b4b374c3102dff4 100644 (file)
@@ -186,11 +186,13 @@ static void brcmf_fweh_handle_if_event(struct brcmf_pub *drvr,
                  ifevent->action, ifevent->ifidx, ifevent->bssidx,
                  ifevent->flags, ifevent->role);
 
-       /* The P2P Device interface event must not be ignored
-        * contrary to what firmware tells us.
+       /* The P2P Device interface event must not be ignored contrary to what
+        * firmware tells us. Older firmware uses p2p noif, with sta role.
+        * This should be accepted.
         */
-       is_p2pdev = (ifevent->flags & BRCMF_E_IF_FLAG_NOIF) &&
-                   ifevent->role == BRCMF_E_IF_ROLE_P2P_CLIENT;
+       is_p2pdev = ((ifevent->flags & BRCMF_E_IF_FLAG_NOIF) &&
+                    (ifevent->role == BRCMF_E_IF_ROLE_P2P_CLIENT ||
+                     ifevent->role == BRCMF_E_IF_ROLE_STA));
        if (!is_p2pdev && (ifevent->flags & BRCMF_E_IF_FLAG_NOIF)) {
                brcmf_dbg(EVENT, "event can be ignored\n");
                return;