linux/net/mac80211
Zhu Yi ece8edddf0 mac80211: hardware scan rework
The scan code in mac80211 makes the software scan assumption in various
places. For example, we stop the Tx queue during a software scan so that
all the Tx packets will be queued by the stack. We also drop frames not
related to scan in the software scan process. But these are not true for
hardware scan.

Some wireless hardwares (for example iwl3945/4965) has the ability to
perform the whole scan process by hardware and/or firmware. The hardware
scan is relative powerful in that it tries to maintain normal network
traffic while doing a scan in the background. Some drivers (i.e iwlwifi)
do provide a way to tune the hardware scan parameters (for example if the
STA is associated, what's the max time could the STA leave from the
associated channel, how long the scans get suspended after returning to
the service channel, etc). But basically this is transparent to the
stack. mac80211 should not stop Tx queues or drop Rx packets during a
hardware scan.

This patch resolves the above problem by spliting the current scan
indicator local->sta_scanning into local->sta_sw_scanning and
local->sta_hw_scanning. It then changes the scan related code to be aware
of hardware scan or software scan in various places. With this patch,
iwlwifi performs much better in the scan-while-associated condition and
disable_hw_scan=1 should never be required.

Cc: Mohamed Abbas <mohamed.abbas@intel.com>
Cc: Ben Cahill <ben.m.cahill@intel.com>
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
Acked-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2008-01-28 14:55:27 -08:00
..
aes_ccm.c cleanup asm/scatterlist.h includes 2007-11-02 08:47:06 +01:00
aes_ccm.h [MAC80211]: Add mac80211 wireless stack. 2007-05-05 11:45:53 -07:00
cfg.c [MAC80211]: implement cfg80211's change_interface hook 2007-10-10 16:54:20 -07:00
cfg.h [MAC80211]: rename ieee80211_cfg.h to cfg.h 2007-10-10 16:52:34 -07:00
debugfs_key.c [NET]: Introduce and use print_mac() and DECLARE_MAC_BUF() 2007-10-10 16:51:42 -07:00
debugfs_key.h [MAC80211]: Add debugfs attributes. 2007-05-05 11:46:38 -07:00
debugfs_netdev.c [PATCH] mac80211: validate VLAN interfaces better 2007-10-10 16:52:57 -07:00
debugfs_netdev.h [MAC80211]: Add debugfs attributes. 2007-05-05 11:46:38 -07:00
debugfs_sta.c [MAC80211]: kill vlan_id 2007-10-10 16:52:33 -07:00
debugfs_sta.h [MAC80211]: Add debugfs attributes. 2007-05-05 11:46:38 -07:00
debugfs.c [MAC80211]: remove key threshold stuff 2007-10-10 16:52:29 -07:00
debugfs.h [MAC80211]: Add debugfs attributes. 2007-05-05 11:46:38 -07:00
event.c [NET]: Introduce and use print_mac() and DECLARE_MAC_BUF() 2007-10-10 16:51:42 -07:00
ieee80211_i.h mac80211: hardware scan rework 2008-01-28 14:55:27 -08:00
ieee80211_iface.c [PATCH] ieee80211_if_set_type: make check for master dev more explicit 2007-10-10 16:55:23 -07:00
ieee80211_ioctl.c mac80211: hardware scan rework 2008-01-28 14:55:27 -08:00
ieee80211_key.h [PATCH] mac80211: remove crypto algorithm typedef 2007-10-10 16:53:00 -07:00
ieee80211_led.c [MAC80211]: Add association LED trigger 2007-10-10 16:54:20 -07:00
ieee80211_led.h [MAC80211]: Add association LED trigger 2007-10-10 16:54:20 -07:00
ieee80211_rate.c NET: mac80211: fix inappropriate memory freeing 2007-12-19 16:43:47 -08:00
ieee80211_rate.h mac80211: make simple rate control algorithm built-in 2007-11-10 21:59:23 -08:00
ieee80211_sta.c mac80211: hardware scan rework 2008-01-28 14:55:27 -08:00
ieee80211.c mac80211: hardware scan rework 2008-01-28 14:55:27 -08:00
Kconfig mac80211: fix MAC80211_RCSIMPLE Kconfig 2007-11-10 22:01:42 -08:00
key.c [MAC80211]: remove ALG_NONE 2007-10-10 16:54:18 -07:00
Makefile mac80211: make simple rate control algorithm built-in 2007-11-10 21:59:23 -08:00
michael.c [MAC80211]: Add mac80211 wireless stack. 2007-05-05 11:45:53 -07:00
michael.h [MAC80211]: Add mac80211 wireless stack. 2007-05-05 11:45:53 -07:00
rc80211_simple.c mac80211: make simple rate control algorithm built-in 2007-11-10 21:59:23 -08:00
regdomain.c [MAC80211]: remove turbo modes 2007-10-10 16:49:27 -07:00
rx.c mac80211: hardware scan rework 2008-01-28 14:55:27 -08:00
sta_info.c [NET]: Convert init_timer into setup_timer 2008-01-28 14:53:35 -08:00
sta_info.h [MAC80211]: kill vlan_id 2007-10-10 16:52:33 -07:00
tkip.c [PATCH] mac80211: fix TKIP IV update 2007-10-10 16:53:16 -07:00
tkip.h [PATCH] mac80211: fix TKIP IV update 2007-10-10 16:53:16 -07:00
tx.c mac80211: hardware scan rework 2008-01-28 14:55:27 -08:00
util.c mac80211: provide interface iterator for drivers 2008-01-28 14:54:37 -08:00
wep.c mac80211: rate limit wep decrypt failed messages 2007-11-29 18:08:48 -05:00
wep.h [PATCH] mac80211: remove ieee80211_wep_get_keyidx 2007-10-10 16:53:14 -07:00
wme.c [NET]: Move Qdisc_class_ops and Qdisc_ops in appropriate sections. 2008-01-28 14:53:58 -08:00
wme.h [MAC80211]: move QoS rx handlers into rx.c 2007-10-10 16:47:30 -07:00
wpa.c mac80211: make "decrypt failed" messages conditional upon MAC80211_DEBUG 2007-11-10 22:01:34 -08:00
wpa.h [PATCH] mac80211: consolidate encryption 2007-10-10 16:53:14 -07:00