brcmfmac: no flow-control tlv signals when fcmode is NONE
authorArend van Spriel <arend@broadcom.com>
Wed, 3 Apr 2013 10:40:49 +0000 (12:40 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 3 Apr 2013 19:07:08 +0000 (15:07 -0400)
The fcmode provided by module parameter defaults to NONE, which
means no flow-control is required. In this case flow-control
signals should not be enabled.

Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Piotr Haber <phaber@broadcom.com>
Reviewed-by: Hante Meuleman <meuleman@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/brcm80211/brcmfmac/fwsignal.c

index 430baa249465ecbb8da3a755144e0834d556fef7..22a6eb2c7bf70c92d3db8b642b6d3e7404a8854d 100644 (file)
@@ -1221,16 +1221,12 @@ void brcmf_fws_del_interface(struct brcmf_if *ifp)
 
 int brcmf_fws_init(struct brcmf_pub *drvr)
 {
-       u32 tlv = 0;
+       u32 tlv = BRCMF_FWS_FLAGS_RSSI_SIGNALS;
        int rc;
 
        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);
 
        drvr->fws = kzalloc(sizeof(*(drvr->fws)), GFP_KERNEL);
@@ -1243,7 +1239,11 @@ int brcmf_fws_init(struct brcmf_pub *drvr)
        drvr->fws->drvr = drvr;
        drvr->fws->fcmode = fcmode;
 
-       /* enable proptxtstatus signaling by default */
+       /* enable firmware signalling if fcmode active */
+       if (drvr->fws->fcmode != BRCMF_FWS_FCMODE_NONE)
+               tlv |= BRCMF_FWS_FLAGS_XONXOFF_SIGNALS |
+                      BRCMF_FWS_FLAGS_CREDIT_STATUS_SIGNALS;
+
        rc = brcmf_fil_iovar_int_set(drvr->iflist[0], "tlv", tlv);
        if (rc < 0) {
                brcmf_err("failed to set bdcv2 tlv signaling\n");