linux/drivers/net/wireless
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
..
ar9170 ar9170: single module build 2009-03-27 20:13:19 -04:00
ath5k dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
ath9k mac80211: unify and fix TX aggregation start 2009-03-27 20:13:22 -04:00
b43 b43: Poison RX buffers 2009-04-16 10:39:03 -04:00
b43legacy dma-mapping: replace all DMA_30BIT_MASK macro with DMA_BIT_MASK(30) 2009-04-07 08:31:11 -07:00
hostap hostap: convert to net_device_ops 2009-03-21 22:55:36 -07:00
ipw2x00 dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
iwlwifi dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
libertas trivial: Fix misspelling of firmware 2009-03-30 15:21:59 +02:00
libertas_tf
orinoco orinoco: firmware: consistently compile out fw cache support if not requested 2009-03-16 18:09:26 -04:00
p54 p54: Kconfig maintenance 2009-03-27 20:13:18 -04:00
prism54 dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
rt2x00 dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
rtl818x Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2009-02-25 00:02:05 -08:00
zd1211rw Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2009-03-17 15:01:30 -07:00
adm8211.c dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
adm8211.h
airo_cs.c airo_cs: checkpatch.pl cleanups 2009-03-16 18:09:35 -04:00
airo.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2009-03-30 18:46:43 -07:00
airo.h
arlan-main.c Merge branch 'linus' into percpu-cpumask-x86-for-linus-2 2009-03-28 04:26:01 +01:00
arlan-proc.c
arlan.h
at76c50x-usb.c at76c50x-usb: use dev_name() instead of struct device.bus_id 2009-02-27 14:53:05 -05:00
at76c50x-usb.h at76c50x-usb: add driver 2009-02-27 14:52:44 -05:00
atmel_cs.c
atmel_pci.c
atmel.c atmel: convert to net_device_ops 2009-03-21 22:44:01 -07:00
atmel.h
i82586.h
i82593.h
Kconfig ar9170: update Makefile, Kconfig and MAINTAINERS 2009-03-27 20:13:09 -04:00
mac80211_hwsim.c mac80211/iwlwifi: move virtual A-MDPU queue bookkeeping to iwlwifi 2009-03-27 20:13:23 -04:00
Makefile ar9170: single module build 2009-03-27 20:13:19 -04:00
mwl8k.c mwl8k: Marvell TOPDOG wireless driver 2009-03-16 18:09:43 -04:00
netwave_cs.c netwave: convert to net_device_ops 2009-03-21 22:43:57 -07:00
ray_cs.c raylan: convert to net_device_ops 2009-03-21 22:51:19 -07:00
ray_cs.h
rayctl.h
rndis_wlan.c rndis_wlan: Fix build with netdev_ops compat disabled. 2009-03-25 00:03:16 -07:00
strip.c strip: convert to net_device_ops 2009-03-21 22:43:57 -07:00
wavelan_cs.c wavelan: convert to net_device_ops 2009-03-21 22:43:59 -07:00
wavelan_cs.h
wavelan_cs.p.h wavelan: convert to internal net_device_stats 2009-03-21 22:43:58 -07:00
wavelan.c wireless: convert wavelan to net_device_ops 2009-03-27 00:46:46 -07:00
wavelan.h
wavelan.p.h wireless: convert wavelan to net_device_ops 2009-03-27 00:46:46 -07:00
wl3501_cs.c wl3501: convert to net_device_ops 2009-03-21 22:51:20 -07:00
wl3501.h wl3501: convert to internal net_device_stats 2009-03-21 22:51:19 -07:00
zd1201.c wireless: remove duplicated .ndo_set_mac_address 2009-03-29 13:52:21 -07:00
zd1201.h zd1201: convert to internal net_device_stats 2009-03-21 22:51:20 -07:00