linux/drivers/net/wireless
Arend van Spriel 7b2385b953 brcmsmac: rework of mac80211 .flush() callback operation
This patch addresses a long standing issue of the driver with the
mac80211 .flush() callback. Since implementing the .flush() callback
a number of issues have been fixed, but a WARN_ON_ONCE() was still
triggered because the timeout on the flush could still occur.

This patch changes the awkward design using msleep() into one using
a waitqueue. The waiting flush() context will kick the transmit dma
when it is idle and the timeout used waiting for the event is set
to 500 ms. Worst case there can be 64 frames outstanding for transmit
in the driver. At a rate of 1Mbps that would take 1.5 seconds assuming
MTU is 1500 bytes and ignoring retries. The WARN_ON_ONCE() is also
removed as this was put in to indicate the flush timeout as a reason
for the driver to stall. That was not happening since fixing endless
AMPDU retries with following upstream commit:

commit 85091fc0a7
Author: Arend van Spriel <arend@broadcom.com>
Date:   Thu Feb 23 18:38:22 2012 +0100

    brcm80211: smac: fix endless retry of A-MPDU transmissions

bugzilla: 42840 <https://bugzilla.kernel.org/show_bug.cgi?id=42840>
bugzilla@redhat: <https://bugzilla.redhat.com/show_bug.cgi?id=799168>
bugzilla@redhat: <https://bugzilla.redhat.com/show_bug.cgi?id=787649>

Cc: Jonathan Nieder <jrnieder@gmail.com>
Cc: Stanislaw Gruszka <sgruszka@redhat.com>
Cc: Camaleón <noelamac@gmail.com>
Cc: Milan Bouchet-Valat <nalimilan@club-internet.fr>
Cc: Seth Forshee <seth.forshee@canonical.com>
Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Hante Meuleman <meuleman@broadcom.com>
Reviewed-by: Piotr Haber <phaber@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
Acked-by: Seth Forshee <seth.forshee@canonical.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2013-02-04 16:46:28 -05:00
..
ath ath9k: allow setting arbitrary antenna masks on AR9003+ 2013-01-22 14:33:44 -05:00
b43 b43: Fix firmware loading when driver is built into the kernel 2013-01-07 14:34:45 -05:00
b43legacy Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next into for-davem 2012-12-11 16:24:55 -05:00
brcm80211 brcmsmac: rework of mac80211 .flush() callback operation 2013-02-04 16:46:28 -05:00
hostap
ipw2x00 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2012-12-13 12:00:02 -08:00
iwlegacy iwlegacy: fix IBSS cleanup 2013-01-22 14:33:43 -05:00
iwlwifi Revert "iwlwifi: fix the reclaimed packet tracking upon flush queue" 2013-01-24 12:54:24 +01:00
libertas libertas: remove __dev* attributes 2012-12-06 15:04:57 -05:00
libertas_tf
mwifiex mwifiex: fix incomplete scan in case of IE parsing error 2013-01-30 14:13:09 -05:00
orinoco orinoco: remove __dev* attributes 2012-12-06 15:04:58 -05:00
p54 p54usb: add USBIDs for two more p54usb devices 2013-01-02 14:38:30 -05:00
prism54
rt2x00 rt2x00: zero-out rx_status 2012-12-17 15:45:17 -05:00
rtl818x rtl8187: remove __dev* attributes 2012-12-06 15:04:59 -05:00
rtlwifi rtlwifi: Fix scheduling while atomic bug 2013-02-04 16:41:56 -05:00
ti wlcore/wl18xx/wl12xx: remove __dev* attributes 2012-12-06 15:04:59 -05:00
zd1211rw treewide: fix typo of "suppport" in various comments 2012-11-19 14:13:52 +01:00
adm8211.c wireless: remove __dev* attributes 2012-12-06 15:04:55 -05:00
adm8211.h
airo_cs.c
airo.c wireless: remove __dev* attributes 2012-12-06 15:04:55 -05:00
airo.h
at76c50x-usb.c wireless: Convert dev_printk(KERN_<LEVEL> to dev_<level>( 2012-11-14 14:55:32 -05:00
at76c50x-usb.h
atmel_cs.c
atmel_pci.c atmel: remove __dev* attributes 2012-12-06 15:04:56 -05:00
atmel.c treewide: fix typo of "suport" in various comments and Kconfig 2012-11-19 14:16:09 +01:00
atmel.h
Kconfig drivers: remove reference to feature-removal-schedule.txt 2012-12-17 17:15:12 -08:00
mac80211_hwsim.c wireless: fix VHT max AMPDU exponent definition 2012-12-06 14:02:51 +01:00
mac80211_hwsim.h
Makefile wireless: fix Atheros drivers compilation 2012-12-17 15:48:43 -05:00
mwl8k.c drivers/net/wireless/mwl8k.c: avoid use-after-free 2013-01-07 14:34:44 -05:00
ray_cs.c
ray_cs.h
rayctl.h
rndis_wlan.c cfg80211: pass a channel definition struct 2012-11-26 12:42:58 +01:00
wl3501_cs.c
wl3501.h
zd1201.c
zd1201.h