]> git.kernelconcepts.de Git - karo-tx-linux.git/commit
b43: A fix for DMA transmission sequence errors
authorIestyn C. Elfick <isedev@gmail.com>
Wed, 20 Mar 2013 19:02:31 +0000 (14:02 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 5 Apr 2013 16:25:48 +0000 (09:25 -0700)
commitdf27b773250ee2a3f5ff0ac87bf912feb8c4a1b4
treec02bd3ac7abc7eebaa63c4d0798a995319b9ea2f
parent4a3e9039d7323c0be222cff4c5c133ca37f4fefa
b43: A fix for DMA transmission sequence errors

commit b251412db99ccd4495ce372fec7daee27bf06923 upstream.

Intermittently, b43 will report "Out of order TX status report on DMA ring".
When this happens, the driver must be reset before communication can resume.
The cause of the problem is believed to be an error in the closed-source
firmware; however, all versions of the firmware are affected.

This change uses the observation that the expected status is always 2 less
than the observed value, and supplies a fake status report to skip one
header/data pair.

Not all devices suffer from this problem, but it can occur several times
per second under heavy load. As each occurence kills the unmodified driver,
this patch makes if possible for the affected devices to function. The patch
logs only the first instance of the reset operation to prevent spamming
the logs.

Tested-by: Chris Vine <chris@cvine.freeserve.co.uk>
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/net/wireless/b43/dma.c