aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorArend van Spriel <arend@broadcom.com>2012-11-14 21:46:15 -0500
committerJohn W. Linville <linville@tuxdriver.com>2012-11-16 14:28:56 -0500
commitb522dd8071947be7f62e75d7de5b6b3de0d882f5 (patch)
tree18939eba53d549f93c88158a21a5b95f996bc045 /drivers
parentb6f06f6e31b575bb7d5bc3452264ffa60b7e26f0 (diff)
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')
-rw-r--r--drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c15
-rw-r--r--drivers/net/wireless/brcm80211/brcmfmac/fweh.c7
2 files changed, 15 insertions, 7 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,
696 * in case we missed the BRCMF_E_IF_DEL event. 696 * in case we missed the BRCMF_E_IF_DEL event.
697 */ 697 */
698 if (ifp) { 698 if (ifp) {
699 brcmf_dbg(ERROR, "ERROR: netdev:%s already exists, try free & unregister\n", 699 brcmf_dbg(ERROR, "ERROR: netdev:%s already exists\n",
700 ifp->ndev->name); 700 ifp->ndev->name);
701 netif_stop_queue(ifp->ndev); 701 if (ifidx) {
702 unregister_netdev(ifp->ndev); 702 netif_stop_queue(ifp->ndev);
703 free_netdev(ifp->ndev); 703 unregister_netdev(ifp->ndev);
704 drvr->iflist[ifidx] = NULL; 704 free_netdev(ifp->ndev);
705 drvr->iflist[ifidx] = NULL;
706 } else {
707 brcmf_dbg(ERROR, "ignore IF event\n");
708 return ERR_PTR(-EINVAL);
709 }
705 } 710 }
706 711
707 /* Allocate netdev, including space for private structure */ 712 /* Allocate netdev, including space for private structure */
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/fweh.c b/drivers/net/wireless/brcm80211/brcmfmac/fweh.c
index 283acee1798b..7b57b8902a34 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/fweh.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/fweh.c
@@ -402,7 +402,8 @@ int brcmf_fweh_register(struct brcmf_pub *drvr, enum brcmf_fweh_event_code code,
402 return -ENOSPC; 402 return -ENOSPC;
403 } 403 }
404 drvr->fweh.evt_handler[code] = handler; 404 drvr->fweh.evt_handler[code] = handler;
405 brcmf_dbg(TRACE, "event handler registered for code %d\n", code); 405 brcmf_dbg(TRACE, "event handler registered for %s\n",
406 brcmf_fweh_event_name(code));
406 return 0; 407 return 0;
407} 408}
408 409
@@ -415,7 +416,8 @@ int brcmf_fweh_register(struct brcmf_pub *drvr, enum brcmf_fweh_event_code code,
415void brcmf_fweh_unregister(struct brcmf_pub *drvr, 416void brcmf_fweh_unregister(struct brcmf_pub *drvr,
416 enum brcmf_fweh_event_code code) 417 enum brcmf_fweh_event_code code)
417{ 418{
418 brcmf_dbg(TRACE, "event handler cleared for code %d\n", code); 419 brcmf_dbg(TRACE, "event handler cleared for %s\n",
420 brcmf_fweh_event_name(code));
419 drvr->fweh.evt_handler[code] = NULL; 421 drvr->fweh.evt_handler[code] = NULL;
420} 422}
421 423
@@ -438,6 +440,7 @@ int brcmf_fweh_activate_events(struct brcmf_if *ifp)
438 } 440 }
439 441
440 /* want to handle IF event as well */ 442 /* want to handle IF event as well */
443 brcmf_dbg(EVENT, "enable event IF\n");
441 setbit(eventmask, BRCMF_E_IF); 444 setbit(eventmask, BRCMF_E_IF);
442 445
443 err = brcmf_fil_iovar_data_set(ifp, "event_msgs", 446 err = brcmf_fil_iovar_data_set(ifp, "event_msgs",