• Stanislaw Gruszka's avatar
    mac80211: improve latency and throughput while software scanning · 3f892b61
    Stanislaw Gruszka authored
    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: default avatarStanislaw Gruszka <sgruszka@redhat.com>
    Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
    3f892b61
scan.c 25.6 KB