linux/drivers/net/wireless/brcm80211/brcmsmac
Seth Forshee e041f65d5f brcmsmac: Remove internal tx queue
The brcmsmac internal tx buffering is problematic. The amount of
buffering is excessive (228 packets in addition to the 256 slots in each
DMA ring), and frames may be dropped due to a lack of flow control.

This patch reworks the transmit code path to remove the internal
buffering. Frames are immediately handed off to the DMA support rather
than passing through an intermediate queue. Non-aggregate frames are
queued immediately into the tx rings, and aggregate frames are queued
temporarily in an AMPDU session until ready for transmit.

Transmit flow control is also added to avoid dropping packets when the
tx rings are full. Conceptually this is a separate change, but it's
included in this commit because removing the tx queue without adding
flow control could cause significant problems.

Signed-off-by: Seth Forshee <seth.forshee@canonical.com>
Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Arend van Spriel <arend@broadcom.com>
Tested-by: Daniel Wagner <wagi@monom.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2012-11-20 14:04:23 -05:00
..
phy brcmsmac: handle non PCI devices in the phy code 2012-07-10 12:16:57 -04:00
aiutils.c bcma: add an extra pcie core struct 2012-10-19 15:52:59 -04:00
aiutils.h brcmsmac: use chip and package id constants from bcma 2012-07-10 12:16:52 -04:00
ampdu.c brcmsmac: Remove internal tx queue 2012-11-20 14:04:23 -05:00
ampdu.h brcmsmac: Remove internal tx queue 2012-11-20 14:04:23 -05:00
antsel.c brcmsmac: use sprom from bcma 2012-05-16 12:45:23 -04:00
antsel.h
brcms_trace_events.c
brcms_trace_events.h
channel.c brcmsmac: fix mismatch in number of custom regulatory rules 2012-09-10 14:38:03 -04:00
channel.h brcm80211: smac: use current regulatory domain when checking whether OFDM is allowed 2012-06-20 15:14:40 -04:00
d11.h wireless: Remove unnecessary ; from while (0) macros 2012-04-11 16:23:56 -04:00
dma.c brcmsmac: Remove internal tx queue 2012-11-20 14:04:23 -05:00
dma.h brcmsmac: Remove internal tx queue 2012-11-20 14:04:23 -05:00
mac80211_if.c brcmsmac: don't start device when RfKill is engaged 2012-09-24 15:02:06 -04:00
mac80211_if.h brcm80211: Use normal DEBUG define 2012-01-24 14:21:13 -05:00
main.c brcmsmac: Remove internal tx queue 2012-11-20 14:04:23 -05:00
main.h brcmsmac: Remove internal tx queue 2012-11-20 14:04:23 -05:00
Makefile brcmsmac: remove nicpci.c 2012-05-16 12:45:25 -04:00
phy_shim.c brcmsmac: remove brcmsmac own sprom parsing 2012-05-16 12:45:23 -04:00
phy_shim.h brcmsmac: remove brcmsmac own sprom parsing 2012-05-16 12:45:23 -04:00
pmu.c brcmsmac: use chip and package id constants from bcma 2012-07-10 12:16:52 -04:00
pmu.h brcmsmac: remove si_pmu_spuravoid_pllupdate() 2012-07-10 12:16:50 -04:00
pub.h brcmsmac: Remove internal tx queue 2012-11-20 14:04:23 -05:00
rate.c
rate.h brcm80211: smac: remove phy api bypass in rate.h 2011-11-08 15:54:09 -05:00
scb.h
stf.c brcmsmac: use sprom from bcma 2012-05-16 12:45:23 -04:00
stf.h
types.h brcmsmac: Remove internal tx queue 2012-11-20 14:04:23 -05:00
ucode_loader.c
ucode_loader.h