b43: Fix DMA TX bounce buffer copying
commit4a72cdf3871e086db051c70ade06c0570ac4d5b5
authorMichael Buesch <mb@bu3sch.de>
Wed, 28 Oct 2009 21:08:13 +0000 (28 22:08 +0100)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 8 Dec 2009 18:22:34 +0000 (8 10:22 -0800)
tree37f7ecf538566d44b5d2ec5a9e6b846546f49519
parent380cf591fc6682b1297415c7e90c17e578f3bf44
b43: Fix DMA TX bounce buffer copying

commit 9a3f45116f5e08819136cd512fd7f6450ac22aa8 upstream.

b43 allocates a bouncebuffer, if the supplied TX skb is in an invalid
memory range for DMA.
However, this is broken in that it fails to copy over some metadata to the
new skb.

This patch fixes three problems:
* Failure to adjust the ieee80211_tx_info pointer to the new buffer.
  This results in a kmemcheck warning.
* Failure to copy the skb cb, which contains ieee80211_tx_info, to the new skb.
  This results in breakage of various TX-status postprocessing (Rate control).
* Failure to transfer the queue mapping.
  This results in the wrong queue being stopped on saturation and can result in queue overflow.

Signed-off-by: Michael Buesch <mb@bu3sch.de>
Tested-by: Christian Casteyde <casteyde.christian@free.fr>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/net/wireless/b43/dma.c