From: Johannes Berg <johannes@sipsolutions.net>
To: linux-wireless@vger.kernel.org
Subject: [RFC 21/21] mac80211: allow drivers to sleep in ampdu_action
Date: Mon, 07 Jun 2010 13:01:54 +0200 [thread overview]
Message-ID: <20100607110202.980071320@sipsolutions.net> (raw)
In-Reply-To: 20100607110133.472649120@sipsolutions.net
From: Johannes Berg <johannes.berg@intel.com>
Allow drivers to sleep, and indicate this in
the documentation. ath9k has some locking I
don't understand, so keep it safe and disable
BHs in it, all other drivers look fine with
the context change.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
---
drivers/net/wireless/ath/ath9k/main.c | 4 ++++
include/net/mac80211.h | 2 +-
net/mac80211/driver-ops.h | 3 +--
3 files changed, 6 insertions(+), 3 deletions(-)
--- wireless-testing.orig/include/net/mac80211.h 2010-06-07 12:42:24.000000000 +0200
+++ wireless-testing/include/net/mac80211.h 2010-06-07 12:42:35.000000000 +0200
@@ -1640,7 +1640,7 @@ enum ieee80211_ampdu_mlme_action {
* is the first frame we expect to perform the action on. Notice
* that TX/RX_STOP can pass NULL for this parameter.
* Returns a negative error code on failure.
- * The callback must be atomic.
+ * The callback can sleep.
*
* @get_survey: Return per-channel survey information
*
--- wireless-testing.orig/drivers/net/wireless/ath/ath9k/main.c 2010-06-07 12:43:05.000000000 +0200
+++ wireless-testing/drivers/net/wireless/ath/ath9k/main.c 2010-06-07 12:43:55.000000000 +0200
@@ -1769,6 +1769,8 @@ static int ath9k_ampdu_action(struct iee
struct ath_softc *sc = aphy->sc;
int ret = 0;
+ local_bh_disable();
+
switch (action) {
case IEEE80211_AMPDU_RX_START:
if (!(sc->sc_flags & SC_OP_RXAGGR))
@@ -1798,6 +1800,8 @@ static int ath9k_ampdu_action(struct iee
"Unknown AMPDU action\n");
}
+ local_bh_enable();
+
return ret;
}
--- wireless-testing.orig/net/mac80211/driver-ops.h 2010-06-07 12:42:42.000000000 +0200
+++ wireless-testing/net/mac80211/driver-ops.h 2010-06-07 12:42:46.000000000 +0200
@@ -352,11 +352,10 @@ static inline int drv_ampdu_action(struc
might_sleep();
- local_bh_disable();
if (local->ops->ampdu_action)
ret = local->ops->ampdu_action(&local->hw, &sdata->vif, action,
sta, tid, ssn);
- local_bh_enable();
+
trace_drv_ampdu_action(local, sdata, action, sta, tid, ssn, ret);
return ret;
}
prev parent reply other threads:[~2010-06-07 11:03 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-06-07 11:01 [RFC 00/21] sleeping ampdu_action Johannes Berg
2010-06-07 11:01 ` [RFC 01/21] mac80211: simplify station/aggregation code Johannes Berg
2010-06-07 11:01 ` [RFC 02/21] mac80211: use common skb queue Johannes Berg
2010-06-07 11:01 ` [RFC 03/21] mac80211: use common work struct Johannes Berg
2010-06-07 11:01 ` [RFC 04/21] mac80211: use common work function Johannes Berg
2010-06-07 11:01 ` [RFC 05/21] mac80211: common work skb freeing Johannes Berg
2010-06-07 11:01 ` [RFC 06/21] mac80211: pull mgmt frame rx into rx handler Johannes Berg
2010-06-07 11:01 ` [RFC 07/21] mac80211: always process blockack action from workqueue Johannes Berg
2010-06-07 11:01 ` [RFC 08/21] mac80211: move blockack stop due to fragmentation Johannes Berg
2010-06-07 11:01 ` [RFC 09/21] mac80211: move aggregation callback processing Johannes Berg
2010-06-07 11:01 ` [RFC 10/21] mac80211: use RCU for RX aggregation Johannes Berg
2010-06-07 11:01 ` [RFC 11/21] mac80211: use RCU for TX aggregation Johannes Berg
2010-06-07 11:01 ` [RFC 12/21] mac80211: remove non-irqsafe aggregation callbacks Johannes Berg
2010-06-07 11:01 ` [RFC 13/21] mac80211: refcount aggregation queue stop Johannes Berg
2010-06-07 11:01 ` [RFC 14/21] mac80211: make TX aggregation start/stop request async Johannes Berg
2010-06-07 11:01 ` [RFC 15/21] mac80211: move BA session work Johannes Berg
2010-06-07 11:01 ` [RFC 16/21] mac80211: defer RX agg session teardown to work Johannes Berg
2010-06-07 11:01 ` [RFC 17/21] mac80211: fix RX aggregation timer Johannes Berg
2010-06-07 11:01 ` [RFC 18/21] mac80211: change RX aggregation locking Johannes Berg
2010-06-07 11:01 ` [RFC 19/21] mac80211: defer TX agg session teardown to work Johannes Berg
2010-06-07 11:01 ` [RFC 20/21] mac80211: change TX aggregation locking Johannes Berg
2010-06-07 11:01 ` Johannes Berg [this message]
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=20100607110202.980071320@sipsolutions.net \
--to=johannes@sipsolutions.net \
--cc=linux-wireless@vger.kernel.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).