aboutsummaryrefslogtreecommitdiffstats
path: root/package/kernel/mac80211/patches/rt2x00/005-rt2x00-use-different-txstatus-timeouts-when-flushing.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/kernel/mac80211/patches/rt2x00/005-rt2x00-use-different-txstatus-timeouts-when-flushing.patch')
-rw-r--r--package/kernel/mac80211/patches/rt2x00/005-rt2x00-use-different-txstatus-timeouts-when-flushing.patch112
1 files changed, 0 insertions, 112 deletions
diff --git a/package/kernel/mac80211/patches/rt2x00/005-rt2x00-use-different-txstatus-timeouts-when-flushing.patch b/package/kernel/mac80211/patches/rt2x00/005-rt2x00-use-different-txstatus-timeouts-when-flushing.patch
deleted file mode 100644
index 0f29026373..0000000000
--- a/package/kernel/mac80211/patches/rt2x00/005-rt2x00-use-different-txstatus-timeouts-when-flushing.patch
+++ /dev/null
@@ -1,112 +0,0 @@
-From adf26a356f132e35093585521ea3e36cd185af83 Mon Sep 17 00:00:00 2001
-From: Stanislaw Gruszka <sgruszka@redhat.com>
-Date: Wed, 26 Sep 2018 12:24:56 +0200
-Subject: [PATCH 05/28] rt2x00: use different txstatus timeouts when flushing
-
-Use different tx status timeouts for normal operation and when flushing.
-This increase timeout to 2s for normal operation as when there are bad
-radio conditions and frames are reposted many times device can not provide
-the status for quite long. With new timeout we can still get valid status
-on such bad conditions.
-
-Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
-Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
----
- .../net/wireless/ralink/rt2x00/rt2800lib.c | 31 +++++++++++++------
- drivers/net/wireless/ralink/rt2x00/rt2x00.h | 1 +
- .../net/wireless/ralink/rt2x00/rt2x00mac.c | 4 +++
- 3 files changed, 26 insertions(+), 10 deletions(-)
-
---- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
-+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
-@@ -1137,36 +1137,47 @@ void rt2800_txdone(struct rt2x00_dev *rt
- }
- EXPORT_SYMBOL_GPL(rt2800_txdone);
-
--static inline bool rt2800_entry_txstatus_timeout(struct queue_entry *entry)
-+static inline bool rt2800_entry_txstatus_timeout(struct rt2x00_dev *rt2x00dev,
-+ struct queue_entry *entry)
- {
-- bool tout;
-+ bool ret;
-+ unsigned long tout;
-
- if (!test_bit(ENTRY_DATA_STATUS_PENDING, &entry->flags))
- return false;
-
-- tout = time_after(jiffies, entry->last_action + msecs_to_jiffies(500));
-- if (unlikely(tout))
-+ if (test_bit(DEVICE_STATE_FLUSHING, &rt2x00dev->flags))
-+ tout = msecs_to_jiffies(100);
-+ else
-+ tout = msecs_to_jiffies(2000);
-+
-+ ret = time_after(jiffies, entry->last_action + tout);
-+ if (unlikely(ret))
- rt2x00_dbg(entry->queue->rt2x00dev,
- "TX status timeout for entry %d in queue %d\n",
- entry->entry_idx, entry->queue->qid);
-- return tout;
--
-+ return ret;
- }
-
- bool rt2800_txstatus_timeout(struct rt2x00_dev *rt2x00dev)
- {
- struct data_queue *queue;
- struct queue_entry *entry;
-+ unsigned long tout;
-+
-+ if (test_bit(DEVICE_STATE_FLUSHING, &rt2x00dev->flags))
-+ tout = msecs_to_jiffies(50);
-+ else
-+ tout = msecs_to_jiffies(1000);
-
-- if (time_before(jiffies,
-- rt2x00dev->last_nostatus_check + msecs_to_jiffies(500)))
-+ if (time_before(jiffies, rt2x00dev->last_nostatus_check + tout))
- return false;
-
- rt2x00dev->last_nostatus_check = jiffies;
-
- tx_queue_for_each(rt2x00dev, queue) {
- entry = rt2x00queue_get_entry(queue, Q_INDEX_DONE);
-- if (rt2800_entry_txstatus_timeout(entry))
-+ if (rt2800_entry_txstatus_timeout(rt2x00dev, entry))
- return true;
- }
-
-@@ -1195,7 +1206,7 @@ void rt2800_txdone_nostatus(struct rt2x0
- break;
-
- if (test_bit(ENTRY_DATA_IO_FAILED, &entry->flags) ||
-- rt2800_entry_txstatus_timeout(entry))
-+ rt2800_entry_txstatus_timeout(rt2x00dev, entry))
- rt2x00lib_txdone_noinfo(entry, TXDONE_FAILURE);
- else
- break;
---- a/drivers/net/wireless/ralink/rt2x00/rt2x00.h
-+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00.h
-@@ -665,6 +665,7 @@ enum rt2x00_state_flags {
- DEVICE_STATE_STARTED,
- DEVICE_STATE_ENABLED_RADIO,
- DEVICE_STATE_SCANNING,
-+ DEVICE_STATE_FLUSHING,
-
- /*
- * Driver configuration
---- a/drivers/net/wireless/ralink/rt2x00/rt2x00mac.c
-+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00mac.c
-@@ -720,8 +720,12 @@ void rt2x00mac_flush(struct ieee80211_hw
- if (!test_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags))
- return;
-
-+ set_bit(DEVICE_STATE_FLUSHING, &rt2x00dev->flags);
-+
- tx_queue_for_each(rt2x00dev, queue)
- rt2x00queue_flush_queue(queue, drop);
-+
-+ clear_bit(DEVICE_STATE_FLUSHING, &rt2x00dev->flags);
- }
- EXPORT_SYMBOL_GPL(rt2x00mac_flush);
-