summaryrefslogtreecommitdiffstats
path: root/mac80211-improve-latency-and-throughput-while-software.patch
diff options
context:
space:
mode:
authorJosh Boyer <jwboyer@redhat.com>2013-02-21 10:08:01 -0500
committerJosh Boyer <jwboyer@redhat.com>2013-02-21 10:08:50 -0500
commit0b030fad7e5b5c451b6bd34ff9b7d37f6687a700 (patch)
treea225e183169fa2da1d0e89de49f3f65dd6520ab8 /mac80211-improve-latency-and-throughput-while-software.patch
parent3704ea2fb1d4e7403882e727b2223c999e78d73a (diff)
downloadkernel-0b030fad7e5b5c451b6bd34ff9b7d37f6687a700.tar.gz
kernel-0b030fad7e5b5c451b6bd34ff9b7d37f6687a700.tar.xz
kernel-0b030fad7e5b5c451b6bd34ff9b7d37f6687a700.zip
Linux v3.8-3040-ga0b1c42
Diffstat (limited to 'mac80211-improve-latency-and-throughput-while-software.patch')
-rw-r--r--mac80211-improve-latency-and-throughput-while-software.patch142
1 files changed, 0 insertions, 142 deletions
diff --git a/mac80211-improve-latency-and-throughput-while-software.patch b/mac80211-improve-latency-and-throughput-while-software.patch
deleted file mode 100644
index 16f839418..000000000
--- a/mac80211-improve-latency-and-throughput-while-software.patch
+++ /dev/null
@@ -1,142 +0,0 @@
-From c790794fcb461842e6ae1d764b7f68e9a789d149 Mon Sep 17 00:00:00 2001
-From: Stanislaw Gruszka <sgruszka@redhat.com>
-Date: Wed, 23 Jan 2013 12:32:45 +0100
-Subject: [PATCH] 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>
----
- net/mac80211/scan.c | 32 +++++---------------------------
- 1 file changed, 5 insertions(+), 27 deletions(-)
-
-diff --git a/net/mac80211/scan.c b/net/mac80211/scan.c
-index bf82e69..e6b2ebc 100644
---- a/net/mac80211/scan.c
-+++ b/net/mac80211/scan.c
-@@ -27,7 +27,7 @@
-
- #define IEEE80211_PROBE_DELAY (HZ / 33)
- #define IEEE80211_CHANNEL_TIME (HZ / 33)
--#define IEEE80211_PASSIVE_CHANNEL_TIME (HZ / 8)
-+#define IEEE80211_PASSIVE_CHANNEL_TIME (HZ / 9)
-
- static void ieee80211_rx_bss_free(struct cfg80211_bss *cbss)
- {
-@@ -547,8 +547,6 @@ static void ieee80211_scan_state_decision(struct ieee80211_local *local,
- bool associated = false;
- bool tx_empty = true;
- bool bad_latency;
-- bool listen_int_exceeded;
-- unsigned long min_beacon_int = 0;
- struct ieee80211_sub_if_data *sdata;
- struct ieee80211_channel *next_chan;
- enum mac80211_scan_state next_scan_state;
-@@ -567,11 +565,6 @@ static void ieee80211_scan_state_decision(struct ieee80211_local *local,
- if (sdata->u.mgd.associated) {
- associated = true;
-
-- if (sdata->vif.bss_conf.beacon_int <
-- min_beacon_int || min_beacon_int == 0)
-- min_beacon_int =
-- sdata->vif.bss_conf.beacon_int;
--
- if (!qdisc_all_tx_empty(sdata->dev)) {
- tx_empty = false;
- break;
-@@ -588,34 +581,19 @@ static void ieee80211_scan_state_decision(struct ieee80211_local *local,
- * see if we can scan another channel without interfering
- * with the current traffic situation.
- *
-- * Since we don't know if the AP has pending frames for us
-- * we can only check for our tx queues and use the current
-- * pm_qos requirements for rx. Hence, if no tx traffic occurs
-- * at all we will scan as many channels in a row as the pm_qos
-- * latency allows us to. Additionally we also check for the
-- * currently negotiated listen interval to prevent losing
-- * frames unnecessarily.
-- *
-- * Otherwise switch back to the operating channel.
-+ * Keep good latency, do not stay off-channel more than 125 ms.
- */
-
- bad_latency = time_after(jiffies +
-- ieee80211_scan_get_channel_time(next_chan),
-- local->leave_oper_channel_time +
-- usecs_to_jiffies(pm_qos_request(PM_QOS_NETWORK_LATENCY)));
--
-- listen_int_exceeded = time_after(jiffies +
-- ieee80211_scan_get_channel_time(next_chan),
-- local->leave_oper_channel_time +
-- usecs_to_jiffies(min_beacon_int * 1024) *
-- local->hw.conf.listen_interval);
-+ ieee80211_scan_get_channel_time(next_chan),
-+ local->leave_oper_channel_time + HZ / 8);
-
- if (associated && !tx_empty) {
- if (local->scan_req->flags & NL80211_SCAN_FLAG_LOW_PRIORITY)
- next_scan_state = SCAN_ABORT;
- else
- next_scan_state = SCAN_SUSPEND;
-- } else if (associated && (bad_latency || listen_int_exceeded)) {
-+ } else if (associated && bad_latency) {
- next_scan_state = SCAN_SUSPEND;
- } else {
- next_scan_state = SCAN_SET_CHANNEL;
---
-1.8.1
-