aboutsummaryrefslogtreecommitdiffstats
path: root/package/kernel/mac80211/patches/311-ath10k-disable-wake_tx_queue-for-older-devices.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/kernel/mac80211/patches/311-ath10k-disable-wake_tx_queue-for-older-devices.patch')
-rw-r--r--package/kernel/mac80211/patches/311-ath10k-disable-wake_tx_queue-for-older-devices.patch73
1 files changed, 0 insertions, 73 deletions
diff --git a/package/kernel/mac80211/patches/311-ath10k-disable-wake_tx_queue-for-older-devices.patch b/package/kernel/mac80211/patches/311-ath10k-disable-wake_tx_queue-for-older-devices.patch
deleted file mode 100644
index 4cf26a631f..0000000000
--- a/package/kernel/mac80211/patches/311-ath10k-disable-wake_tx_queue-for-older-devices.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-From: Michal Kazior <michal.kazior@tieto.com>
-Date: Tue, 17 May 2016 14:47:01 +0200
-Subject: [PATCH] ath10k: disable wake_tx_queue for older devices
-
-Some setups suffer performance regressions with
-current wake_tx_queue implementation.
-
-Signed-off-by: Michal Kazior <michal.kazior@tieto.com>
----
-
---- a/drivers/net/wireless/ath/ath10k/core.h
-+++ b/drivers/net/wireless/ath/ath10k/core.h
-@@ -667,6 +667,7 @@ struct ath10k_fw_components {
- struct ath10k {
- struct ath_common ath_common;
- struct ieee80211_hw *hw;
-+ struct ieee80211_ops *ops;
- struct device *dev;
- u8 mac_addr[ETH_ALEN];
-
---- a/drivers/net/wireless/ath/ath10k/mac.c
-+++ b/drivers/net/wireless/ath/ath10k/mac.c
-@@ -7497,21 +7497,32 @@ static const struct ieee80211_channel at
- struct ath10k *ath10k_mac_create(size_t priv_size)
- {
- struct ieee80211_hw *hw;
-+ struct ieee80211_ops *ops;
- struct ath10k *ar;
-
-- hw = ieee80211_alloc_hw(sizeof(struct ath10k) + priv_size, &ath10k_ops);
-- if (!hw)
-+ ops = kmemdup(&ath10k_ops, sizeof(ath10k_ops), GFP_KERNEL);
-+ if (!ops)
-+ return NULL;
-+
-+ hw = ieee80211_alloc_hw(sizeof(struct ath10k) + priv_size, ops);
-+ if (!hw) {
-+ kfree(ops);
- return NULL;
-+ }
-
- ar = hw->priv;
- ar->hw = hw;
-+ ar->ops = ops;
-
- return ar;
- }
-
- void ath10k_mac_destroy(struct ath10k *ar)
- {
-+ struct ieee80211_ops *ops = ar->ops;
-+
- ieee80211_free_hw(ar->hw);
-+ kfree(ops);
- }
-
- static const struct ieee80211_iface_limit ath10k_if_limits[] = {
-@@ -7945,6 +7956,15 @@ 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 = ath_regd_init(&ar->ath_common.regulatory, ar->hw->wiphy,
- ath10k_reg_notifier);
- if (ret) {