From: "Toke Høiland-Jørgensen" <toke@redhat.com>
To: linux-wireless@vger.kernel.org
Cc: "Toke Høiland-Jørgensen" <toke@redhat.com>,
"Rajkumar Manoharan" <rmanohar@codeaurora.org>,
ath10k@lists.infradead.org, make-wifi-fast@lists.bufferbloat.net
Subject: [PATCH v7 1/4] mac80211: Expose ieee80211_schedule_txq() function
Date: Tue, 22 Jan 2019 15:20:16 +0100 [thread overview]
Message-ID: <20190122142019.21417-2-toke@redhat.com> (raw)
In-Reply-To: <20190122142019.21417-1-toke@redhat.com>
Since we reworked ieee80211_return_txq() so it assumes that the caller
takes care of logging, we need another function that can be called without
holding any locks. Introduce ieee80211_schedule_txq() which serves this
purpose.
Signed-off-by: Toke Høiland-Jørgensen <toke@redhat.com>
---
include/net/mac80211.h | 13 +++++++++++++
net/mac80211/driver-ops.h | 4 +---
net/mac80211/tx.c | 13 +++++++++++++
3 files changed, 27 insertions(+), 3 deletions(-)
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index a285c2bfd14e..294a8a36012a 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -6209,6 +6209,19 @@ void ieee80211_txq_schedule_start(struct ieee80211_hw *hw, u8 ac)
void ieee80211_txq_schedule_end(struct ieee80211_hw *hw, u8 ac)
__releases(txq_lock);
+/**
+ * ieee80211_schedule_txq - schedule a TXQ for transmission
+ *
+ * @hw: pointer as obtained from ieee80211_alloc_hw()
+ * @txq: pointer obtained from station or virtual interface
+ *
+ * Schedules a TXQ for transmission if it is not already scheduled. Takes a
+ * lock, which means it must *not* be called between
+ * ieee80211_txq_schedule_start() and ieee80211_txq_schedule_end()
+ */
+void ieee80211_schedule_txq(struct ieee80211_hw *hw, struct ieee80211_txq *txq)
+ __acquires(txq_lock) __releases(txq_lock);
+
/**
* ieee80211_txq_may_transmit - check whether TXQ is allowed to transmit
*
diff --git a/net/mac80211/driver-ops.h b/net/mac80211/driver-ops.h
index 1aab1734b26f..ba3c07b10cd0 100644
--- a/net/mac80211/driver-ops.h
+++ b/net/mac80211/driver-ops.h
@@ -1176,9 +1176,7 @@ static inline void drv_wake_tx_queue(struct ieee80211_local *local,
static inline void schedule_and_wake_txq(struct ieee80211_local *local,
struct txq_info *txqi)
{
- spin_lock_bh(&local->active_txq_lock[txqi->txq.ac]);
- ieee80211_return_txq(&local->hw, &txqi->txq);
- spin_unlock_bh(&local->active_txq_lock[txqi->txq.ac]);
+ ieee80211_schedule_txq(&local->hw, &txqi->txq);
drv_wake_tx_queue(local, txqi);
}
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
index f46d8d822f86..17744be84b34 100644
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -3703,6 +3703,19 @@ void ieee80211_return_txq(struct ieee80211_hw *hw,
}
EXPORT_SYMBOL(ieee80211_return_txq);
+void ieee80211_schedule_txq(struct ieee80211_hw *hw,
+ struct ieee80211_txq *txq)
+ __acquires(txq_lock) __releases(txq_lock)
+{
+ struct ieee80211_local *local = hw_to_local(hw);
+ struct txq_info *txqi = to_txq_info(txq);
+
+ spin_lock_bh(&local->active_txq_lock[txq->ac]);
+ ieee80211_return_txq(hw, txq);
+ spin_unlock_bh(&local->active_txq_lock[ac]);
+}
+EXPORT_SYMBOL(ieee80211_schedule_txq);
+
bool ieee80211_txq_may_transmit(struct ieee80211_hw *hw,
struct ieee80211_txq *txq)
{
--
2.20.1
next prev parent reply other threads:[~2019-01-22 14:21 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-01-22 14:20 [PATCH v6 0/4] Switch ath9k and ath10k to mac80211 airtime framework Toke Høiland-Jørgensen
2019-01-22 14:20 ` Toke Høiland-Jørgensen [this message]
2019-01-22 14:23 ` [PATCH v7 1/4] mac80211: Expose ieee80211_schedule_txq() function Toke Høiland-Jørgensen
2019-01-25 13:25 ` Johannes Berg
2019-01-25 13:31 ` Toke Høiland-Jørgensen
2019-01-22 14:20 ` [PATCH v6 2/4] ath9k: Switch to mac80211 TXQ scheduling and airtime APIs Toke Høiland-Jørgensen
2019-02-12 18:45 ` Kalle Valo
2019-01-22 14:20 ` [PATCH v6 3/4] ath10k: migrate to mac80211 txq scheduling Toke Høiland-Jørgensen
2019-01-22 14:20 ` [PATCH v6 4/4] ath10k: reporting estimated tx airtime for fairness Toke Høiland-Jørgensen
2019-01-24 19:28 ` Kan Yan
2019-01-25 8:31 ` Toke Høiland-Jørgensen
2019-02-11 9:24 ` Kalle Valo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190122142019.21417-2-toke@redhat.com \
--to=toke@redhat.com \
--cc=ath10k@lists.infradead.org \
--cc=linux-wireless@vger.kernel.org \
--cc=make-wifi-fast@lists.bufferbloat.net \
--cc=rmanohar@codeaurora.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).