* [PATCH 0/2] Change sk_pacing_shift in ieee80211_hw for best tx throughput
@ 2018-07-26 7:16 ` Wen Gong
0 siblings, 0 replies; 8+ messages in thread
From: Wen Gong @ 2018-07-26 7:16 UTC (permalink / raw)
To: ath10k, johannes; +Cc: linux-wireless
From: Wen Gong <wgong@codeaurora.org>
Add a field for ath10k to adjust the sk_pacing_shift, mac80211 set
the default value to 8, and ath10k will change it to 6. Then mac80211
will use the changed value 6 as sk_pacing_shift since 6 is the best
value for tx throughput by test result.
Wen Gong (2):
mac80211: Change sk_pacing_shift saved to ieee80211_hw
ath10k: Set sk_pacing_shift to 6 for 11AC WiFi chips
drivers/net/wireless/ath/ath10k/mac.c | 2 ++
include/net/mac80211.h | 1 +
net/mac80211/main.c | 2 ++
net/mac80211/tx.c | 2 +-
4 files changed, 6 insertions(+), 1 deletion(-)
--
1.9.1
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 0/2] Change sk_pacing_shift in ieee80211_hw for best tx throughput
@ 2018-07-26 7:16 ` Wen Gong
0 siblings, 0 replies; 8+ messages in thread
From: Wen Gong @ 2018-07-26 7:16 UTC (permalink / raw)
To: ath10k, johannes; +Cc: linux-wireless
From: Wen Gong <wgong@codeaurora.org>
Add a field for ath10k to adjust the sk_pacing_shift, mac80211 set
the default value to 8, and ath10k will change it to 6. Then mac80211
will use the changed value 6 as sk_pacing_shift since 6 is the best
value for tx throughput by test result.
Wen Gong (2):
mac80211: Change sk_pacing_shift saved to ieee80211_hw
ath10k: Set sk_pacing_shift to 6 for 11AC WiFi chips
drivers/net/wireless/ath/ath10k/mac.c | 2 ++
include/net/mac80211.h | 1 +
net/mac80211/main.c | 2 ++
net/mac80211/tx.c | 2 +-
4 files changed, 6 insertions(+), 1 deletion(-)
--
1.9.1
_______________________________________________
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 1/2] mac80211: Save sk_pacing_shift to ieee80211_hw
2018-07-26 7:16 ` Wen Gong
@ 2018-07-26 7:16 ` Wen Gong
-1 siblings, 0 replies; 8+ messages in thread
From: Wen Gong @ 2018-07-26 7:16 UTC (permalink / raw)
To: ath10k, johannes; +Cc: linux-wireless
From: Wen Gong <wgong@codeaurora.org>
Add the skb_pacing_shirt adjustment, but this change make it
configurable for other driver. If no other driver set it, then
mac8011 will use the default value.
Signed-off-by: Wen Gong <wgong@codeaurora.org>
---
include/net/mac80211.h | 1 +
net/mac80211/main.c | 2 ++
net/mac80211/tx.c | 2 +-
3 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index 851a5e1..f600d08 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -2279,6 +2279,7 @@ struct ieee80211_hw {
u8 n_cipher_schemes;
const struct ieee80211_cipher_scheme *cipher_schemes;
u8 max_nan_de_entries;
+ u8 tx_sk_pacing_shift;
};
static inline bool _ieee80211_hw_check(struct ieee80211_hw *hw,
diff --git a/net/mac80211/main.c b/net/mac80211/main.c
index fb73451..72dce49 100644
--- a/net/mac80211/main.c
+++ b/net/mac80211/main.c
@@ -584,6 +584,8 @@ struct ieee80211_hw *ieee80211_alloc_hw_nm(size_t priv_data_len,
local->ops = ops;
local->use_chanctx = use_chanctx;
+ local->hw.tx_sk_pacing_shift = 8;
+
/* set up some defaults */
local->hw.queues = 1;
local->hw.max_rates = 1;
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
index 44b5dfe..a2d61b9 100644
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -3596,7 +3596,7 @@ void __ieee80211_subif_start_xmit(struct sk_buff *skb,
* second, so 8 is ~4ms of queued data. Only affects local TCP
* sockets.
*/
- sk_pacing_shift_update(skb->sk, 8);
+ sk_pacing_shift_update(skb->sk, sdata->local->hw.tx_sk_pacing_shift);
fast_tx = rcu_dereference(sta->fast_tx);
--
1.9.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 1/2] mac80211: Save sk_pacing_shift to ieee80211_hw
@ 2018-07-26 7:16 ` Wen Gong
0 siblings, 0 replies; 8+ messages in thread
From: Wen Gong @ 2018-07-26 7:16 UTC (permalink / raw)
To: ath10k, johannes; +Cc: linux-wireless
From: Wen Gong <wgong@codeaurora.org>
Add the skb_pacing_shirt adjustment, but this change make it
configurable for other driver. If no other driver set it, then
mac8011 will use the default value.
Signed-off-by: Wen Gong <wgong@codeaurora.org>
---
include/net/mac80211.h | 1 +
net/mac80211/main.c | 2 ++
net/mac80211/tx.c | 2 +-
3 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index 851a5e1..f600d08 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -2279,6 +2279,7 @@ struct ieee80211_hw {
u8 n_cipher_schemes;
const struct ieee80211_cipher_scheme *cipher_schemes;
u8 max_nan_de_entries;
+ u8 tx_sk_pacing_shift;
};
static inline bool _ieee80211_hw_check(struct ieee80211_hw *hw,
diff --git a/net/mac80211/main.c b/net/mac80211/main.c
index fb73451..72dce49 100644
--- a/net/mac80211/main.c
+++ b/net/mac80211/main.c
@@ -584,6 +584,8 @@ struct ieee80211_hw *ieee80211_alloc_hw_nm(size_t priv_data_len,
local->ops = ops;
local->use_chanctx = use_chanctx;
+ local->hw.tx_sk_pacing_shift = 8;
+
/* set up some defaults */
local->hw.queues = 1;
local->hw.max_rates = 1;
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
index 44b5dfe..a2d61b9 100644
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -3596,7 +3596,7 @@ void __ieee80211_subif_start_xmit(struct sk_buff *skb,
* second, so 8 is ~4ms of queued data. Only affects local TCP
* sockets.
*/
- sk_pacing_shift_update(skb->sk, 8);
+ sk_pacing_shift_update(skb->sk, sdata->local->hw.tx_sk_pacing_shift);
fast_tx = rcu_dereference(sta->fast_tx);
--
1.9.1
_______________________________________________
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 2/2] ath10k: Set sk_pacing_shift to 6 for 11AC WiFi chips
2018-07-26 7:16 ` Wen Gong
@ 2018-07-26 7:16 ` Wen Gong
-1 siblings, 0 replies; 8+ messages in thread
From: Wen Gong @ 2018-07-26 7:16 UTC (permalink / raw)
To: ath10k, johannes; +Cc: linux-wireless
From: Wen Gong <wgong@codeaurora.org>
Upstream kernel has an interface to help adjust sk_pacing_shift to help
improve TCP UL throughput.
The sk_pacing_shift is 8 in mac80211, this is based on test with 11N
WiFi chips with ath9k. For QCA6174/QCA9377 PCI 11AC chips, the 11AC
VHT80 TCP UL throughput testing result shows 6 is the optimal.
Overwrite the sk_pacing_shift to 6 in ath10k driver.
Tested with QCA6174 PCI with firmware
WLAN.RM.4.4.1-00109-QCARMSWPZ-1, but this will also affect QCA9377 PCI.
It's not a regression with new firmware releases.
There have 2 test result of different settings:
ARM CPU based device with QCA6174A PCI with different
sk_pacing_shift:
sk_pacing_shift throughput(Mbps) CPU utilization
6 500(-P5) ~75% idle, Focus on CPU1: ~14%idle
7 454(-P5) ~80% idle, Focus on CPU1: ~4%idle
8 288 ~90% idle, Focus on CPU1: ~35%idle
9 ~200 ~92% idle, Focus on CPU1: ~50%idle
5G TCP UL VTH80 on X86 platform with QCA6174A PCI with sk_packing_shift
set to 6:
tcp_limit_output_bytes throughput(Mbps)
default(262144)+1 Stream 336
default(262144)+2 Streams 558
default(262144)+3 Streams 584
default(262144)+4 Streams 602
default(262144)+5 Streams 598
changed(2621440)+1 Stream 598
changed(2621440)+2 Streams 601
Signed-off-by: Wen Gong <wgong@codeaurora.org>
---
drivers/net/wireless/ath/ath10k/mac.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c
index f31ae3b..40d24c1 100644
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
@@ -8348,6 +8348,8 @@ int ath10k_mac_register(struct ath10k *ar)
ar->hw->wiphy->max_scan_ssids = WLAN_SCAN_PARAMS_MAX_SSID;
ar->hw->wiphy->max_scan_ie_len = WLAN_SCAN_PARAMS_MAX_IE_LEN;
+ ar->hw->tx_sk_pacing_shift = 6;
+
ar->hw->vif_data_size = sizeof(struct ath10k_vif);
ar->hw->sta_data_size = sizeof(struct ath10k_sta);
ar->hw->txq_data_size = sizeof(struct ath10k_txq);
--
1.9.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 2/2] ath10k: Set sk_pacing_shift to 6 for 11AC WiFi chips
@ 2018-07-26 7:16 ` Wen Gong
0 siblings, 0 replies; 8+ messages in thread
From: Wen Gong @ 2018-07-26 7:16 UTC (permalink / raw)
To: ath10k, johannes; +Cc: linux-wireless
From: Wen Gong <wgong@codeaurora.org>
Upstream kernel has an interface to help adjust sk_pacing_shift to help
improve TCP UL throughput.
The sk_pacing_shift is 8 in mac80211, this is based on test with 11N
WiFi chips with ath9k. For QCA6174/QCA9377 PCI 11AC chips, the 11AC
VHT80 TCP UL throughput testing result shows 6 is the optimal.
Overwrite the sk_pacing_shift to 6 in ath10k driver.
Tested with QCA6174 PCI with firmware
WLAN.RM.4.4.1-00109-QCARMSWPZ-1, but this will also affect QCA9377 PCI.
It's not a regression with new firmware releases.
There have 2 test result of different settings:
ARM CPU based device with QCA6174A PCI with different
sk_pacing_shift:
sk_pacing_shift throughput(Mbps) CPU utilization
6 500(-P5) ~75% idle, Focus on CPU1: ~14%idle
7 454(-P5) ~80% idle, Focus on CPU1: ~4%idle
8 288 ~90% idle, Focus on CPU1: ~35%idle
9 ~200 ~92% idle, Focus on CPU1: ~50%idle
5G TCP UL VTH80 on X86 platform with QCA6174A PCI with sk_packing_shift
set to 6:
tcp_limit_output_bytes throughput(Mbps)
default(262144)+1 Stream 336
default(262144)+2 Streams 558
default(262144)+3 Streams 584
default(262144)+4 Streams 602
default(262144)+5 Streams 598
changed(2621440)+1 Stream 598
changed(2621440)+2 Streams 601
Signed-off-by: Wen Gong <wgong@codeaurora.org>
---
drivers/net/wireless/ath/ath10k/mac.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c
index f31ae3b..40d24c1 100644
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
@@ -8348,6 +8348,8 @@ int ath10k_mac_register(struct ath10k *ar)
ar->hw->wiphy->max_scan_ssids = WLAN_SCAN_PARAMS_MAX_SSID;
ar->hw->wiphy->max_scan_ie_len = WLAN_SCAN_PARAMS_MAX_IE_LEN;
+ ar->hw->tx_sk_pacing_shift = 6;
+
ar->hw->vif_data_size = sizeof(struct ath10k_vif);
ar->hw->sta_data_size = sizeof(struct ath10k_sta);
ar->hw->txq_data_size = sizeof(struct ath10k_txq);
--
1.9.1
_______________________________________________
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 0/2] Change sk_pacing_shift in ieee80211_hw for best tx throughput
@ 2018-07-26 7:21 ` Wen Gong
0 siblings, 0 replies; 8+ messages in thread
From: Wen Gong @ 2018-07-26 7:21 UTC (permalink / raw)
To: ath10k, johannes; +Cc: linux-wireless
Add a field for ath10k to adjust the sk_pacing_shift, mac80211 set
the default value to 8, and ath10k will change it to 6. Then mac80211
will use the changed value 6 as sk_pacing_shift since 6 is the best
value for tx throughput by test result.
Wen Gong (2):
mac80211: Change sk_pacing_shift saved to ieee80211_hw
ath10k: Set sk_pacing_shift to 6 for 11AC WiFi chips
drivers/net/wireless/ath/ath10k/mac.c | 2 ++
include/net/mac80211.h | 1 +
net/mac80211/main.c | 2 ++
net/mac80211/tx.c | 2 +-
4 files changed, 6 insertions(+), 1 deletion(-)
--
1.9.1
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 0/2] Change sk_pacing_shift in ieee80211_hw for best tx throughput
@ 2018-07-26 7:21 ` Wen Gong
0 siblings, 0 replies; 8+ messages in thread
From: Wen Gong @ 2018-07-26 7:21 UTC (permalink / raw)
To: ath10k, johannes; +Cc: linux-wireless
Add a field for ath10k to adjust the sk_pacing_shift, mac80211 set
the default value to 8, and ath10k will change it to 6. Then mac80211
will use the changed value 6 as sk_pacing_shift since 6 is the best
value for tx throughput by test result.
Wen Gong (2):
mac80211: Change sk_pacing_shift saved to ieee80211_hw
ath10k: Set sk_pacing_shift to 6 for 11AC WiFi chips
drivers/net/wireless/ath/ath10k/mac.c | 2 ++
include/net/mac80211.h | 1 +
net/mac80211/main.c | 2 ++
net/mac80211/tx.c | 2 +-
4 files changed, 6 insertions(+), 1 deletion(-)
--
1.9.1
_______________________________________________
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2018-07-26 8:36 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-07-26 7:16 [PATCH 0/2] Change sk_pacing_shift in ieee80211_hw for best tx throughput Wen Gong
2018-07-26 7:16 ` Wen Gong
2018-07-26 7:16 ` [PATCH 1/2] mac80211: Save sk_pacing_shift to ieee80211_hw Wen Gong
2018-07-26 7:16 ` Wen Gong
2018-07-26 7:16 ` [PATCH 2/2] ath10k: Set sk_pacing_shift to 6 for 11AC WiFi chips Wen Gong
2018-07-26 7:16 ` Wen Gong
2018-07-26 7:21 [PATCH 0/2] Change sk_pacing_shift in ieee80211_hw for best tx throughput Wen Gong
2018-07-26 7:21 ` Wen Gong
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.