kernel-fxtec-pro1x/net/mac80211
Stanislaw Gruszka 3f892b61a8 mac80211: improve latency and throughput while software scanning
Patch vastly improve latency while scanning. Slight throughput
improvements were observed as well. Is intended for improve performance
of voice and video applications, when scan is periodically requested by
user space (i.e. default NetworkManager behaviour).

Patch remove latency requirement based on PM_QOS_NETWORK_LATENCY,
this value is 2000 seconds by default (i.e. approximately 0.5 hour !?!).

Also remove listen interval requirement, which based on beaconing and
depending on BSS parameters. It can make we stay off-channel for a
second or more.

Instead try to offer the best latency that we could, i.e. be off-channel
no longer than PASSIVE channel scan time: 125 ms. That mean we will
scan two ACTIVE channels and go back to on-channel, and one PASSIVE
channel, and go back to on-channel.

Patch also decrease PASSIVE channel scan time to about 110 ms.

As drawback patch increase overall scan time. On my tests, when scanning
both 2GHz and 5GHz bands, scanning time increase from 5 seconds up to 10
seconds. Since that increase happen only when we are associated, I think
it can be acceptable. If eventually better scan time is needed for
situations when we lose signal and quickly need to decide to which AP
roam, additional scan flag or parameter can be introduced.

I tested patch by doing:

while true; do iw dev wlan0 scan; sleep 3; done > /dev/null

and

ping -i0.2 -c 1000 HOST

on remote and local machine, results are as below:

* Ping from local periodically scanning machine to AP:
Unpatched: rtt min/avg/max/mdev = 0.928/24.946/182.135/36.873 ms
Patched:   rtt min/avg/max/mdev = 0.928/19.678/150.845/33.130 ms

* Ping from remote machine to periodically scanning machine:
Unpatched: rtt min/avg/max/mdev = 1.637/120.683/709.139/164.337 ms
Patched:   rtt min/avg/max/mdev = 1.807/26.893/201.435/40.284 ms

Throughput measured by scp show following results.

* Upload to periodically scanning machine:
Unpatched: 3.9MB/s   03:15
Patched:   4.3MB/s   02:58

* Download from periodically scanning machine:
Unpatched: 5.5MB/s   02:17
Patched:   6.2MB/s   02:02

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
2013-01-31 16:45:05 +01:00
..
aes_ccm.c mac80211: use AES_BLOCK_SIZE 2011-07-08 11:11:24 -04:00
aes_ccm.h mac80211: use AES_BLOCK_SIZE 2011-07-08 11:11:24 -04:00
aes_cmac.c mac80211: include export.h in aes_cmac 2012-11-07 18:01:54 +01:00
aes_cmac.h mac80211: fix CMAC races 2011-07-08 11:11:20 -04:00
agg-rx.c mac80211: improve aggregation debug messages 2013-01-18 21:55:15 +01:00
agg-tx.c mac80211: fix aggregation state with current drivers 2013-01-24 15:43:51 +01:00
cfg.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless 2013-01-28 13:54:03 -05:00
cfg.h
chan.c mac80211: fix channel context iteration 2013-01-03 13:01:35 +01:00
debug.h mac80211: trace debug messages 2012-06-24 11:33:18 +02:00
debugfs.c mac80211: inform the driver about update of dtim_period 2013-01-31 14:05:38 +01:00
debugfs.h mac80211: use __printf attribute in debugfs 2012-10-18 09:01:57 +02:00
debugfs_key.c mac80211: add debug file for mic failure 2012-12-05 09:44:41 +01:00
debugfs_key.h mac80211: support separate default keys 2010-12-13 15:23:29 -05:00
debugfs_netdev.c mac80211: convert to channel definition struct 2012-11-26 12:42:59 +01:00
debugfs_netdev.h
debugfs_sta.c net: remove obsolete simple_strto<foo> 2012-12-11 12:49:53 -05:00
debugfs_sta.h
driver-ops.h mac80211: support mesh rate updates 2013-01-24 16:03:52 +01:00
event.c
ht.c mac80211: unset peer's HT 40 MHz support if not usable 2013-01-03 13:01:45 +01:00
ibss.c mac80211: start auth/assoc timeout on frame status 2013-01-31 14:28:43 +01:00
ieee80211_i.h mac80211: start auth/assoc timeout on frame status 2013-01-31 14:28:43 +01:00
iface.c mac80211: remove ARP filter enable/disable logic 2013-01-18 21:20:34 +01:00
Kconfig mac80211: fix copy-paste typo in Kconfig 2012-10-18 09:10:28 +02:00
key.c mac80211: add op to configure default key id 2013-01-18 13:30:21 +01:00
key.h mac80211: add debug file for mic failure 2012-12-05 09:44:41 +01:00
led.c leds: Rename led_brightness_set() to led_set_brightness() 2012-07-24 07:52:34 +08:00
led.h mac80211: selective throughput LED trigger active 2010-12-22 14:33:37 -05:00
main.c mac80211: allow drivers to access IPv6 information 2013-01-18 21:55:38 +01:00
Makefile mac80211: VHT peer STA caps 2012-10-17 11:02:14 +02:00
mesh.c mac80211: dynamic short slot time for MBSSs 2013-01-29 20:45:31 +01:00
mesh.h {cfg,nl,mac}80211: set beacon interval and DTIM period on mesh join 2013-01-16 22:44:04 +01:00
mesh_hwmp.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless 2013-01-28 13:54:03 -05:00
mesh_pathtbl.c mac80211: clean up mpath_move_to_queue() 2012-08-20 13:25:05 +02:00
mesh_plink.c mac80211: dynamic short slot time for MBSSs 2013-01-29 20:45:31 +01:00
mesh_sync.c mac80211: fix for mesh sync to indicate TBTT adjustment 2012-11-30 12:41:46 +01:00
michael.c
michael.h
mlme.c mac80211: start auth/assoc timeout on frame status 2013-01-31 14:28:43 +01:00
offchannel.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless 2013-01-28 13:54:03 -05:00
pm.c cfg80211/mac80211: support reporting wakeup reason 2013-01-31 14:00:21 +01:00
rate.c mac80211: convert to channel definition struct 2012-11-26 12:42:59 +01:00
rate.h mac80211: convert to channel definition struct 2012-11-26 12:42:59 +01:00
rc80211_minstrel.c minstrel: update stats after processing status 2012-12-10 22:51:50 +01:00
rc80211_minstrel.h minstrel_ht: fixed rate mode through debugfs 2011-06-01 15:12:29 -04:00
rc80211_minstrel_debugfs.c net: Add export.h for EXPORT_SYMBOL/THIS_MODULE to non-modules 2011-10-31 19:30:30 -04:00
rc80211_minstrel_ht.c mac80211: simplify loop in minstrel_ht 2012-11-30 13:45:38 +01:00
rc80211_minstrel_ht.h
rc80211_minstrel_ht_debugfs.c net: Add export.h for EXPORT_SYMBOL/THIS_MODULE to non-modules 2011-10-31 19:30:30 -04:00
rc80211_pid.h Fix common misspellings 2011-03-31 11:26:23 -03:00
rc80211_pid_algo.c net: fix assignment of 0/1 to bool variables. 2011-12-19 22:27:29 -05:00
rc80211_pid_debugfs.c net: Add export.h for EXPORT_SYMBOL/THIS_MODULE to non-modules 2011-10-31 19:30:30 -04:00
rx.c mac80211: support HT notify channel width action 2013-01-03 13:01:44 +01:00
scan.c mac80211: improve latency and throughput while software scanning 2013-01-31 16:45:05 +01:00
spectmgmt.c mac80211: Remove unnecessary OOM logging messages 2011-09-13 15:45:02 -04:00
sta_info.c mac80211: clean up mesh sta allocation warning 2013-01-24 16:03:34 +01:00
sta_info.h mac80211: split aggregation stop by reason 2013-01-03 13:01:41 +01:00
status.c mac80211: start auth/assoc timeout on frame status 2013-01-31 14:28:43 +01:00
tkip.c mac80211: remove TKIP debug 2012-06-22 11:26:58 +02:00
tkip.h mac80211: fix TKIP races, make API easier to use 2011-07-08 11:11:19 -04:00
trace.c mac80211: trace debug messages 2012-06-24 11:33:18 +02:00
trace.h mac80211: provide the vif in rssi_callback 2013-01-24 15:41:29 +01:00
tx.c Merge remote-tracking branch 'wireless-next/master' into HEAD 2013-01-29 12:16:22 +01:00
util.c mac80211: start auth/assoc timeout on frame status 2013-01-31 14:28:43 +01:00
vht.c mac80211: VHT peer STA caps 2012-10-17 11:02:14 +02:00
wep.c mac80211: fix network header location when adding encryption headers 2012-05-16 12:47:43 -04:00
wep.h mac80211: move RX WEP weak IV counting 2012-03-13 14:54:16 -04:00
wme.c mac80211: refactor ieee80211_set_qos_hdr 2012-11-26 11:36:02 +01:00
wme.h mac80211: save wmm_acm per sdata 2012-06-20 17:35:22 +02:00
wpa.c mac80211: add debug file for mic failure 2012-12-05 09:44:41 +01:00
wpa.h mac80211: fix tx->skb NULL pointer dereference 2012-01-16 15:01:16 -05:00