From: Johannes Berg <johannes@sipsolutions.net>
To: linux-wireless@vger.kernel.org
Subject: [RFC v2 05/12] nl80211: advertise device AP SME
Date: Fri, 21 Oct 2011 16:23:27 +0200 [thread overview]
Message-ID: <20111021142428.470831999@sipsolutions.net> (raw)
In-Reply-To: 20111021142322.229128720@sipsolutions.net
From: Johannes Berg <johannes.berg@intel.com>
Add the ability to advertise that the device
contains the AP SME and what features it can
support.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
---
drivers/net/wireless/ath/ath6kl/init.c | 4 +++-
include/linux/nl80211.h | 20 ++++++++++++++++++++
include/net/cfg80211.h | 6 ++++++
net/wireless/core.c | 4 ++++
net/wireless/nl80211.c | 4 ++++
5 files changed, 37 insertions(+), 1 deletion(-)
--- a/include/linux/nl80211.h 2011-10-21 12:07:39.000000000 +0200
+++ b/include/linux/nl80211.h 2011-10-21 12:07:41.000000000 +0200
@@ -1122,6 +1122,11 @@ 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_DEVICE_AP_SME: This u32 attribute may be listed for devices
+ * that have AP support to indicate that the have the AP SME integrated
+ * with support for the features listed in this attribute, see
+ * &enum nl80211_ap_sme_features.
+ *
* @NL80211_ATTR_MAX: highest attribute number currently defined
* @__NL80211_ATTR_AFTER_LAST: internal use
*/
@@ -1350,6 +1355,8 @@ enum nl80211_attrs {
NL80211_ATTR_TDLS_SUPPORT,
NL80211_ATTR_TDLS_EXTERNAL_SETUP,
+ NL80211_ATTR_DEVICE_AP_MLME,
+
/* add attributes here, update the policy in nl80211.c */
__NL80211_ATTR_AFTER_LAST,
@@ -2663,4 +2670,17 @@ enum nl80211_tdls_operation {
NL80211_TDLS_DISABLE_LINK,
};
+/**
+ * enum nl80211_ap_sme_features - device-integrated AP features
+ * @NL80211_AP_SME_WSC: The driver is capable of indicating received probe
+ * request frames to userspace via management frame subscription events
+ * if the payload includes the WSC IE. The driver is capable of adding
+ * the WSC IE as configured from userspace into beacons, probe responses
+ * and (re)association reponse frame and allows userspace to update them
+ * during the lifetime of the BSS.
+ */
+enum nl80211_ap_sme_features {
+ NL80211_AP_SME_WSC = 1 << 0,
+};
+
#endif /* __LINUX_NL80211_H */
--- a/include/net/cfg80211.h 2011-10-21 12:07:39.000000000 +0200
+++ b/include/net/cfg80211.h 2011-10-21 12:07:41.000000000 +0200
@@ -1675,6 +1675,7 @@ struct cfg80211_ops {
* teardown packets should be sent through the @NL80211_CMD_TDLS_MGMT
* command. When this flag is not set, @NL80211_CMD_TDLS_OPER should be
* used for asking the driver/firmware to perform a TDLS operation.
+ * @WIPHY_FLAG_HAVE_AP_SME: device integrates AP SME
*/
enum wiphy_flags {
WIPHY_FLAG_CUSTOM_REGULATORY = BIT(0),
@@ -1693,6 +1694,7 @@ enum wiphy_flags {
WIPHY_FLAG_AP_UAPSD = BIT(14),
WIPHY_FLAG_SUPPORTS_TDLS = BIT(15),
WIPHY_FLAG_TDLS_EXTERNAL_SETUP = BIT(16),
+ WIPHY_FLAG_HAVE_AP_SME = BIT(17),
};
/**
@@ -1903,6 +1905,8 @@ struct wiphy_wowlan_support {
* may request, if implemented.
*
* @wowlan: WoWLAN support information
+ *
+ * @ap_sme_capa: AP SME capabilities, flags from &enum nl80211_ap_sme_features.
*/
struct wiphy {
/* assign these fields before you register the wiphy */
@@ -1926,6 +1930,8 @@ struct wiphy {
u32 flags;
+ u32 ap_sme_capa;
+
enum cfg80211_signal_type signal_type;
int bss_priv_size;
--- a/net/wireless/core.c 2011-10-21 10:20:41.000000000 +0200
+++ b/net/wireless/core.c 2011-10-21 12:07:41.000000000 +0200
@@ -492,6 +492,10 @@ int wiphy_register(struct wiphy *wiphy)
!(wiphy->wowlan.flags & WIPHY_WOWLAN_SUPPORTS_GTK_REKEY)))
return -EINVAL;
+ if (WARN_ON(wiphy->ap_sme_capa &&
+ !(wiphy->flags & WIPHY_FLAG_HAVE_AP_SME)))
+ return -EINVAL;
+
if (WARN_ON(wiphy->addresses && !wiphy->n_addresses))
return -EINVAL;
--- a/net/wireless/nl80211.c 2011-10-21 12:07:39.000000000 +0200
+++ b/net/wireless/nl80211.c 2011-10-21 12:07:41.000000000 +0200
@@ -1008,6 +1008,10 @@ static int nl80211_send_wiphy(struct sk_
if (nl80211_put_iface_combinations(&dev->wiphy, msg))
goto nla_put_failure;
+ if (dev->wiphy.flags & WIPHY_FLAG_HAVE_AP_SME)
+ NLA_PUT_U32(msg, NL80211_ATTR_DEVICE_AP_MLME,
+ dev->wiphy.ap_sme_capa);
+
return genlmsg_end(msg, hdr);
nla_put_failure:
--- a/drivers/net/wireless/ath/ath6kl/init.c 2011-10-21 10:20:41.000000000 +0200
+++ b/drivers/net/wireless/ath/ath6kl/init.c 2011-10-21 12:07:41.000000000 +0200
@@ -1548,7 +1548,9 @@ static int ath6kl_init(struct net_device
ar->conf_flags = ATH6KL_CONF_IGNORE_ERP_BARKER |
ATH6KL_CONF_ENABLE_11N | ATH6KL_CONF_ENABLE_TX_BURST;
- ar->wdev->wiphy->flags |= WIPHY_FLAG_SUPPORTS_FW_ROAM;
+ ar->wdev->wiphy->flags |= WIPHY_FLAG_SUPPORTS_FW_ROAM |
+ WIPHY_FLAG_HAVE_AP_SME;
+ ar->wdev->wiphy->ap_sme_capa = NL80211_AP_SME_WSC;
status = ath6kl_target_config_wlan_params(ar);
if (!status)
next prev parent reply other threads:[~2011-10-21 14:25 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-10-21 14:23 [RFC v2 00/12] get rid of AP mode monitor interfaces Johannes Berg
2011-10-21 14:23 ` [RFC v2 01/12] mac80211: add helper to free TX skb Johannes Berg
2011-10-21 14:23 ` [RFC v2 02/12] mac80211: add support for control port protocol in AP mode Johannes Berg
2011-10-21 14:23 ` [RFC v2 03/12] nl80211: allow subscribing to unexpected class3 frames Johannes Berg
2011-10-21 14:23 ` [RFC v2 04/12] mac80211: support spurious class3 event Johannes Berg
2011-10-21 14:23 ` Johannes Berg [this message]
2011-10-25 10:13 ` [RFC v2 05/12] nl80211: advertise device AP SME Eliad Peller
2011-10-21 14:23 ` [RFC v2 06/12] nl80211: add API to probe a client Johannes Berg
2011-10-21 14:23 ` [RFC v2 07/12] mac80211: support client probe Johannes Berg
2011-10-21 14:23 ` [RFC v2 08/12] net: add wireless TX status socket option Johannes Berg
2011-10-25 10:40 ` Eliad Peller
2011-10-21 14:23 ` [RFC v2 09/12] nl80211: advertise socket TX status capability Johannes Berg
2011-10-21 14:23 ` [RFC v2 10/12] mac80211: implement wifi TX status Johannes Berg
2011-10-21 14:23 ` [RFC v2 11/12] cfg80211: allow registering to beacons Johannes Berg
2011-10-21 14:23 ` [RFC v2 12/12] mac80211: report OBSS beacons Johannes Berg
2011-10-27 19:32 ` [RFC v2 13/12] cfg80211/mac80211: allow management TX to not wait for ACK Johannes Berg
2011-10-27 22:44 ` Eliad Peller
2011-10-28 8:02 ` Johannes Berg
2011-10-28 6:09 ` Helmut Schaa
2011-10-28 7:34 ` Johannes Berg
2011-10-28 7:48 ` Arend Van Spriel
2011-10-28 7:52 ` Helmut Schaa
2011-10-28 9:07 ` Arend Van Spriel
2011-10-28 9:15 ` Johannes Berg
2011-10-28 8:01 ` Johannes Berg
2011-10-28 9:10 ` Arend Van Spriel
2011-10-28 9:28 ` Helmut Schaa
2011-10-28 13:34 ` Kalle Valo
2011-10-29 12:01 ` Helmut Schaa
2011-10-28 17:22 ` Arend van Spriel
2011-10-28 9:18 ` [RFC v3 " 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=20111021142428.470831999@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.