summaryrefslogtreecommitdiff
path: root/drivers/staging/brcm80211
diff options
context:
space:
mode:
authorGrant Grundler <grundler@google.com>2011-03-09 10:41:25 -0800
committerGreg Kroah-Hartman <gregkh@suse.de>2011-03-09 15:55:42 -0800
commit26a71a40292e3e29e461a2210d9c0c7339427b19 (patch)
treefab3f8c0da1d9c502b75d8598faa7698a8275eae /drivers/staging/brcm80211
parentfb44022f1865ca4a5fcee4fc26a260b83ca05c06 (diff)
STAGING: brcm80211 fix TX Queue overflow
Increase QLEN to avoid TX Queue overflow. iperf testing results in poor throughput and massive reporting of: dhd_bus_txdata: out of bus->txq !!! Also renamed QLEN/et al to reflect usage as TX queue parameters. Tested with "dhd_doflow = true". Signed-off-by: Venkat Rao <vrao@broadcom.com> Signed-off-by: Grant Grundler <grundler@chromium.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/staging/brcm80211')
-rw-r--r--drivers/staging/brcm80211/brcmfmac/dhd_sdio.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/drivers/staging/brcm80211/brcmfmac/dhd_sdio.c b/drivers/staging/brcm80211/brcmfmac/dhd_sdio.c
index b74b3c6ecf8d..f25e5b301119 100644
--- a/drivers/staging/brcm80211/brcmfmac/dhd_sdio.c
+++ b/drivers/staging/brcm80211/brcmfmac/dhd_sdio.c
@@ -57,9 +57,9 @@
#define DHDSDIO_MEM_DUMP_FNAME "mem_dump"
#endif
-#define QLEN 256 /* bulk rx and tx queue lengths */
-#define FCHI (QLEN - 10)
-#define FCLOW (FCHI / 2)
+#define TXQLEN 2048 /* bulk tx queue length */
+#define TXHI (TXQLEN - 256) /* turn on flow control above TXHI */
+#define TXLOW (TXHI - 256) /* turn off flow control below TXLOW */
#define PRIOMASK 7
#define TXRETRIES 2 /* # of retries for tx frames */
@@ -1119,7 +1119,7 @@ int dhd_bus_txdata(struct dhd_bus *bus, struct sk_buff *pkt)
}
dhd_os_sdunlock_txq(bus->dhd);
- if ((pktq_len(&bus->txq) >= FCHI) && dhd_doflow)
+ if ((pktq_len(&bus->txq) >= TXHI) && dhd_doflow)
dhd_txflowcontrol(bus->dhd, 0, ON);
#ifdef DHD_DEBUG
@@ -1218,7 +1218,7 @@ static uint dhdsdio_sendfromq(dhd_bus_t *bus, uint maxframes)
/* Deflow-control stack if needed */
if (dhd_doflow && dhd->up && (dhd->busstate == DHD_BUS_DATA) &&
- dhd->txoff && (pktq_len(&bus->txq) < FCLOW))
+ dhd->txoff && (pktq_len(&bus->txq) < TXLOW))
dhd_txflowcontrol(dhd, 0, OFF);
return cnt;
@@ -5343,7 +5343,7 @@ dhdsdio_probe_attach(struct dhd_bus *bus, void *sdh, void *regsva, u16 devid)
/* Set core control so an SDIO reset does a backplane reset */
OR_REG(&bus->regs->corecontrol, CC_BPRESEN);
- pktq_init(&bus->txq, (PRIOMASK + 1), QLEN);
+ pktq_init(&bus->txq, (PRIOMASK + 1), TXQLEN);
/* Locate an appropriately-aligned portion of hdrbuf */
bus->rxhdr = (u8 *) roundup((unsigned long)&bus->hdrbuf[0], DHD_SDALIGN);