brcmfmac: only allocate firmware-signalling resources if required

Bail out of brcmf_fws_init() when no firmware-signalling is asked
for. Need to take this into account in brcmf_fws_deinit() as well.

Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Piotr Haber <phaber@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
Arend van Spriel 2013-04-03 12:40:48 +02:00 committed by John W. Linville
parent d9337414e8
commit 47829f4fc4
2 changed files with 10 additions and 7 deletions

View file

@ -982,8 +982,7 @@ void brcmf_detach(struct device *dev)
if (drvr->prot)
brcmf_proto_detach(drvr);
if (drvr->fws)
brcmf_fws_deinit(drvr);
brcmf_fws_deinit(drvr);
brcmf_debugfs_detach(drvr);
bus_if->drvr = NULL;

View file

@ -1224,11 +1224,12 @@ int brcmf_fws_init(struct brcmf_pub *drvr)
u32 tlv = 0;
int rc;
/* enable rssi signals */
if (drvr->fw_signals)
tlv = BRCMF_FWS_FLAGS_RSSI_SIGNALS |
BRCMF_FWS_FLAGS_XONXOFF_SIGNALS |
BRCMF_FWS_FLAGS_CREDIT_STATUS_SIGNALS;
if (!drvr->fw_signals)
return 0;
tlv = BRCMF_FWS_FLAGS_RSSI_SIGNALS |
BRCMF_FWS_FLAGS_XONXOFF_SIGNALS |
BRCMF_FWS_FLAGS_CREDIT_STATUS_SIGNALS;
spin_lock_init(&drvr->fws_spinlock);
@ -1277,6 +1278,9 @@ void brcmf_fws_deinit(struct brcmf_pub *drvr)
struct brcmf_fws_info *fws = drvr->fws;
ulong flags;
if (!fws)
return;
/* cleanup */
brcmf_fws_lock(drvr, flags);
brcmf_fws_cleanup(fws, -1);