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>
This commit is contained in:
Grant Grundler 2011-03-09 10:41:25 -08:00 committed by Greg Kroah-Hartman
parent fb44022f18
commit 26a71a4029

View file

@ -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);