ath10k: Re-enable intermediate softqueues for all devices

The upstream ath10k driver disables the intermediate softqueues for some
devices. This patch reverts that behaviour and always enables the
softqueues (and associated bufferbloat fixes). We have had reports of people
running this with good results:
https://lists.bufferbloat.net/pipermail/make-wifi-fast/2017-September/001497.html

This also refreshes mac80211 patches.

Signed-off-by: Toke Høiland-Jørgensen <toke@toke.dk>
This commit is contained in:
Toke Høiland-Jørgensen 2017-09-06 14:53:19 +02:00 committed by John Crispin
parent b30ba14e2a
commit 76c3a033f6
2 changed files with 29 additions and 2 deletions

View file

@ -0,0 +1,27 @@
From 59f8c22bf1749c4a2b5947bfaebc677c259a1ad6 Mon Sep 17 00:00:00 2001
From: dave taht <dave@taht.net>
Date: Wed, 5 Oct 2016 20:09:15 -0700
Subject: [PATCH 5/7] Revert "ath10k: disable wake_tx_queue for older devices"
This reverts commit 4ca1807815aa6801aaced7fdefa9edacc2521767
in the hope that we've fixed all the performance problems now.
---
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
@@ -8219,15 +8219,6 @@ int ath10k_mac_register(struct ath10k *a
ath10k_warn(ar, "failed to initialise DFS pattern detector\n");
}
- /* Current wake_tx_queue implementation imposes a significant
- * performance penalty in some setups. The tx scheduling code needs
- * more work anyway so disable the wake_tx_queue unless firmware
- * supports the pull-push mechanism.
- */
- if (!test_bit(ATH10K_FW_FEATURE_PEER_FLOW_CONTROL,
- ar->running_fw->fw_file.fw_features))
- ar->ops->wake_tx_queue = NULL;
-
ret = ath10k_mac_init_rd(ar);
if (ret) {
ath10k_err(ar, "failed to derive regdom: %d\n", ret);

View file

@ -1,6 +1,6 @@
--- a/drivers/net/wireless/ath/ath10k/mac.c --- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c +++ b/drivers/net/wireless/ath/ath10k/mac.c
@@ -8003,6 +8003,21 @@ static int ath10k_mac_init_rd(struct ath @@ -8007,6 +8007,21 @@ static int ath10k_mac_init_rd(struct ath
return 0; return 0;
} }
@ -22,7 +22,7 @@
int ath10k_mac_register(struct ath10k *ar) int ath10k_mac_register(struct ath10k *ar)
{ {
static const u32 cipher_suites[] = { static const u32 cipher_suites[] = {
@@ -8248,6 +8263,12 @@ int ath10k_mac_register(struct ath10k *a @@ -8244,6 +8259,12 @@ int ath10k_mac_register(struct ath10k *a
ar->hw->wiphy->cipher_suites = cipher_suites; ar->hw->wiphy->cipher_suites = cipher_suites;
ar->hw->wiphy->n_cipher_suites = ARRAY_SIZE(cipher_suites); ar->hw->wiphy->n_cipher_suites = ARRAY_SIZE(cipher_suites);