浏览代码

brcmfmac: Fix p2p bug for older firmwares.

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>
Hante Meuleman 10 年之前
父节点
当前提交
35a3cbcc49
共有 1 个文件被更改,包括 6 次插入4 次删除
  1. 6 4
      drivers/net/wireless/brcm80211/brcmfmac/fweh.c

+ 6 - 4
drivers/net/wireless/brcm80211/brcmfmac/fweh.c

@@ -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;