diff options
author | Arend van Spriel <arend@broadcom.com> | 2012-11-15 06:46:15 +0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2012-11-16 23:28:56 +0400 |
commit | b522dd8071947be7f62e75d7de5b6b3de0d882f5 (patch) | |
tree | 18939eba53d549f93c88158a21a5b95f996bc045 /drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c | |
parent | b6f06f6e31b575bb7d5bc3452264ffa60b7e26f0 (diff) | |
download | linux-b522dd8071947be7f62e75d7de5b6b3de0d882f5.tar.xz |
brcmfmac: ignore IF event if it is a add for ifidx 0
Firmware fires IF event to add the primary interface but that
is already created in the driver.
Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Hante Meuleman <meuleman@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
Signed-off-by: Franky Lin <frankyl@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c')
-rw-r--r-- | drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c b/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c index 51cbc7234583..a39ea20403b0 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c +++ b/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c @@ -696,12 +696,17 @@ struct brcmf_if *brcmf_add_if(struct brcmf_pub *drvr, int ifidx, s32 bssidx, * in case we missed the BRCMF_E_IF_DEL event. */ if (ifp) { - brcmf_dbg(ERROR, "ERROR: netdev:%s already exists, try free & unregister\n", + brcmf_dbg(ERROR, "ERROR: netdev:%s already exists\n", ifp->ndev->name); - netif_stop_queue(ifp->ndev); - unregister_netdev(ifp->ndev); - free_netdev(ifp->ndev); - drvr->iflist[ifidx] = NULL; + if (ifidx) { + netif_stop_queue(ifp->ndev); + unregister_netdev(ifp->ndev); + free_netdev(ifp->ndev); + drvr->iflist[ifidx] = NULL; + } else { + brcmf_dbg(ERROR, "ignore IF event\n"); + return ERR_PTR(-EINVAL); + } } /* Allocate netdev, including space for private structure */ |