]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
b43: Work around mac80211 race condition
authorLarry Finger <Larry.Finger@lwfinger.net>
Wed, 29 Jul 2009 15:54:06 +0000 (10:54 -0500)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 8 Dec 2009 18:21:45 +0000 (10:21 -0800)
commit8d0d5e22d59bfd6d58df4f4111bea6dd6b9f9920
treee630512264aac90958503c53fb873ff6754f0b14
parentb62b52ae0de1bb97f8c9dfe4609270493d77c7c4
b43: Work around mac80211 race condition

commit 18c6951091eca7645005a71b556106cc99a6f4b1 upstream.

As shown in http://thread.gmane.org/gmane.linux.kernel.wireless.general/36497,
mac80211 has a bug that allows a call to the TX routine after the queues have
been stopped. This situation will only occur under extreme stress. Although
b43 does not crash when this condition occurs, it does generate a WARN_ON and
also logs a queue overrun message. This patch recognizes b43 is not at fault
and logs a message only when the most verbose debugging mode is enabled. In
the unlikely event that the queue is not stopped when the DMA queue becomes
full, then a warning is issued.

During testing of this patch with one output stream running repeated tcpperf
writes and a second running a flood ping, this routine was entered with
the DMA ring stopped about once per hour. The condition where the DMA queue is
full but the ring has not been stopped has never been seen by me.

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Cc: Michael Buesch <mb@bu3sch.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/net/wireless/b43/dma.c