From: greearb@candelatech.com
To: linux-wireless@vger.kernel.org
Cc: Ben Greear <greearb@candelatech.com>
Subject: [wireless-next PATCH 1/5] mac80211: Support forcing station to disable 11n.
Date: Thu, 27 Oct 2011 22:11:16 -0700 [thread overview]
Message-ID: <1319778680-11405-1-git-send-email-greearb@candelatech.com> (raw)
From: Ben Greear <greearb@candelatech.com>
This allows a user to configure a wifi station interface
to disable 802.11n, even if the AP and NIC supports it.
The additional netlink bits is to allow this patch to work on 3.0
and should not be included in the final patch.
Signed-off-by: Ben Greear <greearb@candelatech.com>
---
:100644 100644 8049bf7... d9c2cdb... M include/linux/nl80211.h
:100644 100644 92cf1c2... 1331a5b... M include/net/cfg80211.h
:100644 100644 e253afa... 8221a3a... M net/mac80211/cfg.c
:100644 100644 4c3d1f5... 72c6726... M net/mac80211/ieee80211_i.h
:100644 100644 0e5d8da... 393b480... M net/mac80211/mlme.c
:100644 100644 48260c2... cb2eb67... M net/wireless/nl80211.c
include/linux/nl80211.h | 4 ++++
include/net/cfg80211.h | 4 +++-
net/mac80211/cfg.c | 3 +++
net/mac80211/ieee80211_i.h | 2 ++
net/mac80211/mlme.c | 3 +++
net/wireless/nl80211.c | 7 +++++++
6 files changed, 22 insertions(+), 1 deletions(-)
diff --git a/include/linux/nl80211.h b/include/linux/nl80211.h
index 8049bf7..d9c2cdb 100644
--- a/include/linux/nl80211.h
+++ b/include/linux/nl80211.h
@@ -1109,6 +1109,9 @@ enum nl80211_commands {
* %NL80211_CMD_TDLS_MGMT. Otherwise %NL80211_CMD_TDLS_OPER should be
* used for asking the driver to perform a TDLS operation.
*
+ * @NL80211_ATTR_DISABLE_80211N: Force /n capable stations to instead
+ * function as /a/b/g stations.
+ *
* @NL80211_ATTR_MAX: highest attribute number currently defined
* @__NL80211_ATTR_AFTER_LAST: internal use
*/
@@ -1337,6 +1340,7 @@ enum nl80211_attrs {
NL80211_ATTR_TDLS_SUPPORT,
NL80211_ATTR_TDLS_EXTERNAL_SETUP,
+ NL80211_ATTR_DISABLE_11N,
/* add attributes here, update the policy in nl80211.c */
__NL80211_ATTR_AFTER_LAST,
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index 92cf1c2..1331a5b 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -254,9 +254,11 @@ struct ieee80211_supported_band {
/**
* struct vif_params - describes virtual interface parameters
* @use_4addr: use 4-address frames
+ * @disable_11n: Don't use 11n features (HT, etc)
*/
struct vif_params {
- int use_4addr;
+ int use_4addr;
+ int disable_11n;
};
/**
diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c
index e253afa..8221a3a 100644
--- a/net/mac80211/cfg.c
+++ b/net/mac80211/cfg.c
@@ -57,6 +57,9 @@ static int ieee80211_change_iface(struct wiphy *wiphy,
struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
int ret;
+ if (params->disable_11n != -1)
+ sdata->cfg_disable_11n = params->disable_11n;
+
ret = ieee80211_if_change_type(sdata, type);
if (ret)
return ret;
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h
index 4c3d1f5..72c6726 100644
--- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h
@@ -595,6 +595,8 @@ struct ieee80211_sub_if_data {
/* to detect idle changes */
bool old_idle;
+ bool cfg_disable_11n; /* configured to disable 11n? */
+
/* Fragment table for host-based reassembly */
struct ieee80211_fragment_entry fragments[IEEE80211_FRAGMENT_MAX];
unsigned int fragment_next;
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
index 0e5d8da..393b480 100644
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -2597,6 +2597,9 @@ int ieee80211_mgd_assoc(struct ieee80211_sub_if_data *sdata,
ifmgd->flags |= IEEE80211_STA_DISABLE_11N;
+ if (sdata->cfg_disable_11n)
+ ifmgd->flags |= IEEE80211_STA_DISABLE_11N;
+
if (req->ie && req->ie_len) {
memcpy(wk->ie, req->ie, req->ie_len);
wk->ie_len = req->ie_len;
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index 48260c2..cb2eb67 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -1641,6 +1641,13 @@ static int nl80211_set_interface(struct sk_buff *skb, struct genl_info *info)
change = true;
}
+ if (info->attrs[NL80211_ATTR_DISABLE_11N]) {
+ params.disable_11n = !!nla_get_u8(info->attrs[NL80211_ATTR_DISABLE_11N]);
+ change = true;
+ } else {
+ params.disable_11n = -1;
+ }
+
if (change)
err = cfg80211_change_iface(rdev, dev, ntype, flags, ¶ms);
else
--
1.7.3.4
next reply other threads:[~2011-10-28 5:11 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-10-28 5:11 greearb [this message]
2011-10-28 5:11 ` [wireless-next PATCH 2/5] wifi: Support disabling ht40 greearb
2011-10-28 8:09 ` Johannes Berg
2011-10-28 16:25 ` Ben Greear
2011-10-28 5:11 ` [wireless-next PATCH 3/5] wifi: Allow overriding some HT information greearb
2011-10-28 8:12 ` Johannes Berg
2011-10-28 16:33 ` Ben Greear
2011-11-02 8:13 ` Johannes Berg
2011-11-02 16:59 ` Ben Greear
2011-11-02 17:49 ` Johannes Berg
2011-11-02 18:03 ` Ben Greear
2011-11-03 8:32 ` Johannes Berg
2011-10-28 5:11 ` [wireless-next PATCH 4/5] wifi: Warn if cannot add station debugfs entries greearb
2011-10-28 8:13 ` Johannes Berg
2011-10-28 16:13 ` Ben Greear
2011-10-28 5:11 ` [wireless-next PATCH 5/5] wifi-debugfs: Fix AMSDU rate printout greearb
2011-10-28 8:13 ` Johannes Berg
2011-11-17 17:49 ` Ben Greear
2011-11-17 18:03 ` John W. Linville
2011-10-28 5:15 ` [wireless-next PATCH 1/5] mac80211: Support forcing station to disable 11n Ben Greear
2011-10-28 8:08 ` Johannes Berg
2011-10-28 16:24 ` Ben Greear
2011-11-02 7:56 ` Johannes Berg
2011-11-02 16:37 ` Ben Greear
2011-10-28 18:55 ` Ben Greear
2011-11-02 7:53 ` Johannes Berg
2011-11-02 16:34 ` Ben Greear
2011-11-02 17:51 ` Johannes Berg
2011-11-03 6:04 ` Ben Greear
2011-11-03 8:30 ` Johannes Berg
2011-11-03 18:17 ` Ben Greear
2011-11-04 14:42 ` Johannes Berg
2011-11-04 16:11 ` Ben Greear
2011-11-04 16:17 ` 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=1319778680-11405-1-git-send-email-greearb@candelatech.com \
--to=greearb@candelatech.com \
--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).