linux/drivers/net/wireless
andrea merello 4c552a5be7 rtl818x: Make sure the TX descriptor "valid" flag is written by last
The TX descriptors are consumed by the HW using DMA.
Even if in the driver code the memory write that sets the "valid"
flag appears after all other writes, the CPU may reorder writes,
causing the HW to consider as valid a not-fully-written yet
descriptor.

This may cause HW incorrect behaviour.

This can happen because (AFAIK) the HW may attempt DMA
asynchronously without waiting to be kicked by the following
register write.

This patch adds a write memory barrier to enforce writes ordering.

Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Andrea Merello <andrea.merello@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2014-03-04 13:07:52 -05:00
..
ath Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless 2014-03-04 13:05:12 -05:00
b43 net: Replace min macro with min_t 2014-03-03 15:35:54 -05:00
b43legacy net: Replace min macro with min_t 2014-03-03 15:35:54 -05:00
brcm80211 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless 2014-03-04 13:05:12 -05:00
cw1200 net: Replace min macro with min_t 2014-03-03 15:35:54 -05:00
hostap Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless 2014-03-04 13:05:12 -05:00
ipw2x00 net: Replace min macro with min_t 2014-03-03 15:35:54 -05:00
iwlegacy iwlegacy: properly enable power saving 2014-02-24 15:21:55 -05:00
iwlwifi Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless 2014-03-04 13:05:12 -05:00
libertas Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless 2014-03-04 13:05:12 -05:00
libertas_tf
mwifiex Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless 2014-03-04 13:05:12 -05:00
orinoco orinoco: replace function ieee80211_{dsss_chan_to_freq, freq_to_dsss_chan} 2014-02-28 14:12:36 -05:00
p54 net: Replace min macro with min_t 2014-03-03 15:35:54 -05:00
prism54 net: Replace min macro with min_t 2014-03-03 15:35:54 -05:00
rt2x00 net: Replace min macro with min_t 2014-03-03 15:35:54 -05:00
rtl818x rtl818x: Make sure the TX descriptor "valid" flag is written by last 2014-03-04 13:07:52 -05:00
rtlwifi Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless 2014-03-04 13:05:12 -05:00
ti wl1251: use skb_trim to make skb shorter 2014-03-03 15:35:55 -05:00
zd1211rw zd1211rw: slight optimization of addr compare 2013-12-26 13:31:33 -05:00
adm8211.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next into for-davem 2014-01-17 14:43:17 -05:00
adm8211.h
airo_cs.c wireless: delete non-required instances of include <linux/init.h> 2014-01-03 15:37:01 -05:00
airo.c airo: replace function ieee80211_{dsss_chan_to_freq, freq_to_dsss_chan} 2014-02-28 14:11:13 -05:00
airo.h
at76c50x-usb.c Merge branch 'for-john' of git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next 2014-01-13 14:40:59 -05:00
at76c50x-usb.h
atmel_cs.c wireless: delete non-required instances of include <linux/init.h> 2014-01-03 15:37:01 -05:00
atmel_pci.c wireless: delete non-required instances of include <linux/init.h> 2014-01-03 15:37:01 -05:00
atmel.c atmel: replace function ieee80211_{dsss_chan_to_freq, freq_to_dsss_chan} 2014-02-28 14:11:13 -05:00
atmel.h drivers/net/wireless: Fix FSF address in file headers 2013-12-11 10:56:20 -05:00
Kconfig wireless: Kconfig: add missing dependency 2014-03-03 15:35:55 -05:00
mac80211_hwsim.c mac80211_hwsim: allow creation of single-channel radios with chanctx 2014-02-11 13:10:02 +01:00
mac80211_hwsim.h mac80211_hwsim: allow creation of single-channel radios with chanctx 2014-02-11 13:10:02 +01:00
Makefile
mwl8k.c mwl8k: Adding support to gather survey per channel 2014-02-28 14:33:11 -05:00
ray_cs.c drivers/net/wireless: Fix FSF address in file headers 2013-12-11 10:56:20 -05:00
ray_cs.h
rayctl.h
rndis_wlan.c rndis_wlan: replace function ieee80211_{dsss_chan_to_freq, freq_to_dsss_chan} 2014-02-28 14:12:36 -05:00
wl3501_cs.c wl3501_cs: replace function ieee80211_{dsss_chan_to_freq, freq_to_dsss_chan} 2014-02-28 14:12:36 -05:00
wl3501.h
zd1201.c zd1201: replace function ieee80211_{dsss_chan_to_freq, freq_to_dsss_chan} 2014-02-28 14:12:36 -05:00
zd1201.h