From: Johannes Berg <johannes@sipsolutions.net>
To: John Linville <linville@tuxdriver.com>
Cc: linux-wireless@vger.kernel.org
Subject: [PATCH 11/27] mac80211: restrict aggregation to supported interface modes
Date: Tue, 10 Feb 2009 21:25:47 +0100 [thread overview]
Message-ID: <20090210202554.637032641@sipsolutions.net> (raw)
In-Reply-To: 20090210202536.425266119@sipsolutions.net
We can only support aggregation on AP/STA right now. HT isn't defined
for IBSS, WDS or MESH. In the WDS/MESH cases it's not clear what to
put into the IBSS field, and we don't handle that in the code at all.
Also fix the code to handle VLAN correctly.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
---
v2: do not allow IBSS
net/mac80211/agg-rx.c | 3 ++-
net/mac80211/agg-tx.c | 16 +++++++++++++++-
net/mac80211/ht.c | 3 ++-
net/mac80211/rx.c | 11 +++++++++++
4 files changed, 30 insertions(+), 3 deletions(-)
--- wireless-testing.orig/net/mac80211/agg-tx.c 2009-02-10 20:59:32.000000000 +0100
+++ wireless-testing/net/mac80211/agg-tx.c 2009-02-10 20:59:32.000000000 +0100
@@ -41,7 +41,8 @@ static void ieee80211_send_addba_request
memset(mgmt, 0, 24);
memcpy(mgmt->da, da, ETH_ALEN);
memcpy(mgmt->sa, sdata->dev->dev_addr, ETH_ALEN);
- if (sdata->vif.type == NL80211_IFTYPE_AP)
+ if (sdata->vif.type == NL80211_IFTYPE_AP ||
+ sdata->vif.type == NL80211_IFTYPE_AP_VLAN)
memcpy(mgmt->bssid, sdata->dev->dev_addr, ETH_ALEN);
else
memcpy(mgmt->bssid, ifsta->bssid, ETH_ALEN);
@@ -180,6 +181,19 @@ int ieee80211_start_tx_ba_session(struct
goto exit;
}
+ /*
+ * The aggregation code is not prepared to handle
+ * anything but STA/AP due to the BSSID handling.
+ * IBSS could work in the code but isn't supported
+ * by drivers or the standard.
+ */
+ if (sta->sdata->vif.type != NL80211_IFTYPE_STATION &&
+ sta->sdata->vif.type != NL80211_IFTYPE_AP_VLAN &&
+ sta->sdata->vif.type != NL80211_IFTYPE_AP) {
+ ret = -EINVAL;
+ goto exit;
+ }
+
spin_lock_bh(&sta->lock);
/* we have tried too many times, receiver does not want A-MPDU */
--- wireless-testing.orig/net/mac80211/rx.c 2009-02-10 20:59:32.000000000 +0100
+++ wireless-testing/net/mac80211/rx.c 2009-02-10 20:59:32.000000000 +0100
@@ -1735,6 +1735,17 @@ ieee80211_rx_h_action(struct ieee80211_r
switch (mgmt->u.action.category) {
case WLAN_CATEGORY_BACK:
+ /*
+ * The aggregation code is not prepared to handle
+ * anything but STA/AP due to the BSSID handling;
+ * IBSS could work in the code but isn't supported
+ * by drivers or the standard.
+ */
+ if (sdata->vif.type != NL80211_IFTYPE_STATION &&
+ sdata->vif.type != NL80211_IFTYPE_AP_VLAN &&
+ sdata->vif.type != NL80211_IFTYPE_AP)
+ return RX_DROP_MONITOR;
+
switch (mgmt->u.action.u.addba_req.action_code) {
case WLAN_ACTION_ADDBA_REQ:
if (len < (IEEE80211_MIN_ACTION_SIZE +
--- wireless-testing.orig/net/mac80211/agg-rx.c 2009-02-10 20:59:32.000000000 +0100
+++ wireless-testing/net/mac80211/agg-rx.c 2009-02-10 20:59:32.000000000 +0100
@@ -134,7 +134,8 @@ static void ieee80211_send_addba_resp(st
memset(mgmt, 0, 24);
memcpy(mgmt->da, da, ETH_ALEN);
memcpy(mgmt->sa, sdata->dev->dev_addr, ETH_ALEN);
- if (sdata->vif.type == NL80211_IFTYPE_AP)
+ if (sdata->vif.type == NL80211_IFTYPE_AP ||
+ sdata->vif.type == NL80211_IFTYPE_AP_VLAN)
memcpy(mgmt->bssid, sdata->dev->dev_addr, ETH_ALEN);
else
memcpy(mgmt->bssid, ifsta->bssid, ETH_ALEN);
--- wireless-testing.orig/net/mac80211/ht.c 2009-02-10 20:59:32.000000000 +0100
+++ wireless-testing/net/mac80211/ht.c 2009-02-10 20:59:32.000000000 +0100
@@ -190,7 +190,8 @@ void ieee80211_send_delba(struct ieee802
memset(mgmt, 0, 24);
memcpy(mgmt->da, da, ETH_ALEN);
memcpy(mgmt->sa, sdata->dev->dev_addr, ETH_ALEN);
- if (sdata->vif.type == NL80211_IFTYPE_AP)
+ if (sdata->vif.type == NL80211_IFTYPE_AP ||
+ sdata->vif.type == NL80211_IFTYPE_AP_VLAN)
memcpy(mgmt->bssid, sdata->dev->dev_addr, ETH_ALEN);
else
memcpy(mgmt->bssid, ifsta->bssid, ETH_ALEN);
--
next prev parent reply other threads:[~2009-02-10 20:35 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-02-10 20:25 [PATCH 00/27] mac80211 updates Johannes Berg
2009-02-10 20:25 ` [PATCH 01/27] zd1211rw: do not ratelimit no-ops Johannes Berg
2009-02-10 20:25 ` [PATCH 02/27] mac80211: disable IBSS beacon before join Johannes Berg
2009-02-10 20:25 ` [PATCH 03/27] zd1211rw: honour enable_beacon conf Johannes Berg
2009-02-10 20:25 ` [PATCH 04/27] mac80211: properly validate/translate IW_AUTH_MFP values Johannes Berg
2009-02-10 20:25 ` [PATCH 05/27] mac80211: reject extra IEs for probe request when hw_scan Johannes Berg
2009-02-10 20:25 ` [PATCH 06/27] mac80211: fix beacon enable more Johannes Berg
2009-02-10 20:25 ` [PATCH 07/27] mac80211: remove bssid argument from prepare_for_handlers Johannes Berg
2009-02-10 20:25 ` [PATCH 08/27] mac80211: remove stray aggregation debugfs definition Johannes Berg
2009-02-10 20:25 ` [PATCH 09/27] mac80211: fix RX aggregation timeouts Johannes Berg
2009-02-10 20:25 ` [PATCH 10/27] mac80211: restructure HT code Johannes Berg
2009-02-10 20:25 ` Johannes Berg [this message]
2009-02-10 20:25 ` [PATCH 12/27] mac80211: hardware should not deny going back to legacy Johannes Berg
2009-02-10 20:25 ` [PATCH 13/27] mac80211: document TX aggregation (and small cleanup) Johannes Berg
2009-02-10 20:25 ` [PATCH 14/27] mac80211: fix race in TX aggregation Johannes Berg
2009-02-10 20:25 ` [PATCH 15/27] mac80211: fix aggregation timer lockups Johannes Berg
2009-02-10 20:25 ` [PATCH 16/27] mac80211: clean up BA session teardown Johannes Berg
2009-02-10 20:25 ` [PATCH 17/27] mac80211: RX aggregation: clean up stop session Johannes Berg
2009-02-10 20:25 ` [PATCH 18/27] mac80211: further cleanups to stopping BA sessions Johannes Berg
2009-02-10 20:25 ` [PATCH 19/27] cfg80211/nl80211: scanning (and mac80211 update to use it) Johannes Berg
2009-02-10 20:25 ` [PATCH 20/27] mac80211: dont add BSS when creating IBSS Johannes Berg
2009-02-10 20:25 ` [PATCH 21/27] cfg80211: free_priv for BSS info Johannes Berg
2009-02-10 20:25 ` [PATCH 22/27] cfg80211: allow users to request removing a BSS Johannes Berg
2009-02-10 20:25 ` [PATCH 23/27] cfg80211: add more flexible BSS lookup Johannes Berg
2009-02-10 20:26 ` [PATCH 24/27] mac80211: use cfg80211s BSS infrastructure Johannes Berg
2009-02-10 20:26 ` [PATCH 25/27] mac80211: calculate wstats_flags on the fly Johannes Berg
2009-02-10 20:26 ` [PATCH 26/27] mac80211: fix IBSS auth Johannes Berg
2009-02-10 20:26 ` [PATCH 27/27] mac80211: split managed/ibss code a little more Johannes Berg
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=20090210202554.637032641@sipsolutions.net \
--to=johannes@sipsolutions.net \
--cc=linux-wireless@vger.kernel.org \
--cc=linville@tuxdriver.com \
/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).