linux/drivers/net/wireless/b43
Michael Buesch ec9a1d8c13 b43: Poison RX buffers
This patch adds poisoning and sanity checking to the RX DMA buffers.
This is used for protection against buggy hardware/firmware that raises
RX interrupts without doing an actual DMA transfer.

This mechanism protects against rare "bad packets" (due to uninitialized skb data)
and rare kernel crashes due to uninitialized RX headers.

The poison is selected to not match on valid frames and to be cheap for checking.

The poison check mechanism _might_ trigger incorrectly, if we are voluntarily
receiving frames with bad PLCP headers. However, this is nonfatal, because the
chance of such a match is basically zero and in case it happens it just results
in dropping the packet.
Bad-PLCP RX defaults to off, and you should leave it off unless you want to listen
to the latest news broadcasted by your microwave oven.

This patch also moves the initialization of the RX-header "length" field in front of
the mapping of the DMA buffer. The CPU should not touch the buffer after we mapped it.

Cc: stable@kernel.org
Reported-by: Francesco Gringoli <francesco.gringoli@ing.unibs.it>
Signed-off-by: Michael Buesch <mb@bu3sch.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2009-04-16 10:39:03 -04:00
..
b43.h b43: Pass more RX flags to mac80211 2009-03-05 14:39:40 -05:00
debugfs.c b43: checkpatch.pl cleanups 2009-02-27 14:53:04 -05:00
debugfs.h b43: Dynamically control log verbosity 2009-01-29 16:01:47 -05:00
dma.c b43: Poison RX buffers 2009-04-16 10:39:03 -04:00
dma.h b43: Optimize DMA buffers 2009-02-27 14:52:48 -05:00
Kconfig b43: Dynamically control log verbosity 2009-01-29 16:01:47 -05:00
leds.c
leds.h
lo.c b43: checkpatch.pl cleanups 2009-02-27 14:53:04 -05:00
lo.h
main.c b43: Mask PHY TX error interrupt, if not debugging 2009-03-27 20:13:03 -04:00
main.h b43: Dynamically control log verbosity 2009-01-29 16:01:47 -05:00
Makefile b43: Add LP-PHY baseband init for >=rev2 2009-02-09 15:03:48 -05:00
pcmcia.c
pcmcia.h
phy_a.c b43: Convert usage of b43_radio_maskset() 2009-02-27 14:52:53 -05:00
phy_a.h
phy_common.c
phy_common.h
phy_g.c b43: checkpatch.pl cleanups 2009-02-27 14:53:04 -05:00
phy_g.h
phy_lp.c b43: Add parts of LP-PHY TX power control 2009-02-11 11:44:23 -05:00
phy_lp.h b43: Add parts of LP-PHY TX power control 2009-02-11 11:44:23 -05:00
phy_n.c
phy_n.h
pio.c b43: checkpatch.pl cleanups 2009-02-27 14:53:04 -05:00
pio.h
rfkill.c b43: checkpatch.pl cleanups 2009-02-27 14:53:04 -05:00
rfkill.h
sysfs.c
sysfs.h
tables_lpphy.c b43: Add parts of LP-PHY TX power control 2009-02-11 11:44:23 -05:00
tables_lpphy.h b43: Add parts of LP-PHY TX power control 2009-02-11 11:44:23 -05:00
tables_nphy.c
tables_nphy.h
tables.c
tables.h
wa.c b43: Remove bogus integer truncation warnings 2009-02-27 14:53:03 -05:00
wa.h
xmit.c b43: fix b43_plcp_get_bitrate_idx_ofdm return type 2009-03-27 20:13:18 -04:00
xmit.h