linux/drivers/net/wireless
Reinette Chatre df833b1d73 iwlwifi: DMA fixes
A few issues wrt DMA were uncovered when using the driver with swiotlb.
- driver should not use memory after it has been mapped
- iwl3945's RX queue management cannot use all of iwlagn because
  the size of the RX buffer is different. Revert back to using
  iwl3945 specific routines that map/unmap memory.
- no need to "dma_syn_single_range_for_cpu" followed by pci_unmap_single,
  we can just call pci_unmap_single initially
- only map the memory area that will be used by device. this is especially
  relevant to the mapping of iwl_cmd. we should not map the entire
  structure because the meta data at the beginning of structure contains
  the address to be used later for unmapping. If the address to be used for
  unmapping is stored in mapped data it creates a problem.
- ensure that _if_ memory needs to be modified after it is mapped that we
  call _sync_single_for_cpu first, and then release it back to device with
  _sync_single_for_device
- we mapped the wrong length of data for host commands, with mapped length
  differing with length provided to device, fix that.

Thanks to Jason Andryuk <jandryuk@gmail.com> for significant bisecting
help to find these issues.

This fixes http://www.intellinuxwireless.org/bugzilla/show_bug.cgi?id=1964

Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Tested-by: Jason Andryuk <jandryuk@gmail.com>
Tested-by: Ben Gamari <bgamari@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2009-04-21 16:43:34 -04:00
..
ar9170 ar9170usb: fix hang on resume 2009-04-20 16:36:26 -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 ath9k: fix access to a freed skb in ath_rx_tasklet() 2009-04-16 10:39:07 -04:00
b43 b43: Do radio lock assertion in software 2009-04-16 10:39:14 -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 iwlwifi: DMA fixes 2009-04-21 16:43:34 -04:00
libertas libertas: don't leak skb on receive error 2009-04-16 10:39:08 -04:00
libertas_tf
orinoco orinoco: correct timeout logic in __orinoco_hw_set_tkip_key() 2009-04-16 10:39:17 -04:00
p54 p54: deactivate broken powersave function 2009-04-20 16:36:26 -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 rt2x00: Don't free register information on suspend 2009-04-20 16:36:26 -04: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 airo: queue SIOCSIWAUTH-requested auth mode change for next commit 2009-04-16 10:39:10 -04: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: Add device ID for OQO model 01+ 2009-04-16 10:39:09 -04: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: fix netdev ops conversion 2009-04-21 02:08:51 -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 mwl8: fix build warning. 2009-04-21 16:43:33 -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