linux_dsm_epyc7002/drivers/net/wireless/brcm80211
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
..
brcmfmac brcmfmac: code cleanup 2012-11-16 14:29:05 -05:00
brcmsmac brcmsmac: Remove internal tx queue 2012-11-20 14:04:23 -05:00
brcmutil brcm80211: brcmu_pkt_buf_free_skb() should handle NULL 2012-06-05 15:23:20 -04:00
include brcmfmac: add BCM43241 sdio interface driver support 2012-09-07 15:03:43 -04:00
Kconfig brcmfmac: remove obsolete i-scan and clean up related code. 2012-11-14 14:55:45 -05:00
Makefile brcm80211: Use normal DEBUG define 2012-01-24 14:21:13 -05:00