diff options
author | Arend van Spriel <arend@broadcom.com> | 2012-11-14 21:46:15 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2012-11-16 14:28:56 -0500 |
commit | b522dd8071947be7f62e75d7de5b6b3de0d882f5 (patch) | |
tree | 18939eba53d549f93c88158a21a5b95f996bc045 /drivers | |
parent | b6f06f6e31b575bb7d5bc3452264ffa60b7e26f0 (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.c | 15 | ||||
-rw-r--r-- | drivers/net/wireless/brcm80211/brcmfmac/fweh.c | 7 |
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, | |||
415 | void brcmf_fweh_unregister(struct brcmf_pub *drvr, | 416 | void 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", |