aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/wireless/ath/ath6kl/init.c3
-rw-r--r--include/linux/nl80211.h15
-rw-r--r--include/net/cfg80211.h6
-rw-r--r--net/wireless/core.c4
-rw-r--r--net/wireless/nl80211.c4
5 files changed, 31 insertions, 1 deletions
diff --git a/drivers/net/wireless/ath/ath6kl/init.c b/drivers/net/wireless/ath/ath6kl/init.c
index c1d2366704b5..81e0031012ca 100644
--- a/drivers/net/wireless/ath/ath6kl/init.c
+++ b/drivers/net/wireless/ath/ath6kl/init.c
@@ -1548,7 +1548,8 @@ static int ath6kl_init(struct net_device *dev)
1548 ar->conf_flags = ATH6KL_CONF_IGNORE_ERP_BARKER | 1548 ar->conf_flags = ATH6KL_CONF_IGNORE_ERP_BARKER |
1549 ATH6KL_CONF_ENABLE_11N | ATH6KL_CONF_ENABLE_TX_BURST; 1549 ATH6KL_CONF_ENABLE_11N | ATH6KL_CONF_ENABLE_TX_BURST;
1550 1550
1551 ar->wdev->wiphy->flags |= WIPHY_FLAG_SUPPORTS_FW_ROAM; 1551 ar->wdev->wiphy->flags |= WIPHY_FLAG_SUPPORTS_FW_ROAM |
1552 WIPHY_FLAG_HAVE_AP_SME;
1552 1553
1553 status = ath6kl_target_config_wlan_params(ar); 1554 status = ath6kl_target_config_wlan_params(ar);
1554 if (!status) 1555 if (!status)
diff --git a/include/linux/nl80211.h b/include/linux/nl80211.h
index 9107adc73e0b..ff39e4b234d4 100644
--- a/include/linux/nl80211.h
+++ b/include/linux/nl80211.h
@@ -1121,6 +1121,11 @@ enum nl80211_commands {
1121 * %NL80211_CMD_TDLS_MGMT. Otherwise %NL80211_CMD_TDLS_OPER should be 1121 * %NL80211_CMD_TDLS_MGMT. Otherwise %NL80211_CMD_TDLS_OPER should be
1122 * used for asking the driver to perform a TDLS operation. 1122 * used for asking the driver to perform a TDLS operation.
1123 * 1123 *
1124 * @NL80211_ATTR_DEVICE_AP_SME: This u32 attribute may be listed for devices
1125 * that have AP support to indicate that they have the AP SME integrated
1126 * with support for the features listed in this attribute, see
1127 * &enum nl80211_ap_sme_features.
1128 *
1124 * @NL80211_ATTR_MAX: highest attribute number currently defined 1129 * @NL80211_ATTR_MAX: highest attribute number currently defined
1125 * @__NL80211_ATTR_AFTER_LAST: internal use 1130 * @__NL80211_ATTR_AFTER_LAST: internal use
1126 */ 1131 */
@@ -1349,6 +1354,8 @@ enum nl80211_attrs {
1349 NL80211_ATTR_TDLS_SUPPORT, 1354 NL80211_ATTR_TDLS_SUPPORT,
1350 NL80211_ATTR_TDLS_EXTERNAL_SETUP, 1355 NL80211_ATTR_TDLS_EXTERNAL_SETUP,
1351 1356
1357 NL80211_ATTR_DEVICE_AP_SME,
1358
1352 /* add attributes here, update the policy in nl80211.c */ 1359 /* add attributes here, update the policy in nl80211.c */
1353 1360
1354 __NL80211_ATTR_AFTER_LAST, 1361 __NL80211_ATTR_AFTER_LAST,
@@ -2662,4 +2669,12 @@ enum nl80211_tdls_operation {
2662 NL80211_TDLS_DISABLE_LINK, 2669 NL80211_TDLS_DISABLE_LINK,
2663}; 2670};
2664 2671
2672/*
2673 * enum nl80211_ap_sme_features - device-integrated AP features
2674 * Reserved for future use, no bits are defined in
2675 * NL80211_ATTR_DEVICE_AP_SME yet.
2676enum nl80211_ap_sme_features {
2677};
2678 */
2679
2665#endif /* __LINUX_NL80211_H */ 2680#endif /* __LINUX_NL80211_H */
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index ef118e452589..86d207da6cce 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -1679,6 +1679,7 @@ struct cfg80211_ops {
1679 * teardown packets should be sent through the @NL80211_CMD_TDLS_MGMT 1679 * teardown packets should be sent through the @NL80211_CMD_TDLS_MGMT
1680 * command. When this flag is not set, @NL80211_CMD_TDLS_OPER should be 1680 * command. When this flag is not set, @NL80211_CMD_TDLS_OPER should be
1681 * used for asking the driver/firmware to perform a TDLS operation. 1681 * used for asking the driver/firmware to perform a TDLS operation.
1682 * @WIPHY_FLAG_HAVE_AP_SME: device integrates AP SME
1682 */ 1683 */
1683enum wiphy_flags { 1684enum wiphy_flags {
1684 WIPHY_FLAG_CUSTOM_REGULATORY = BIT(0), 1685 WIPHY_FLAG_CUSTOM_REGULATORY = BIT(0),
@@ -1697,6 +1698,7 @@ enum wiphy_flags {
1697 WIPHY_FLAG_AP_UAPSD = BIT(14), 1698 WIPHY_FLAG_AP_UAPSD = BIT(14),
1698 WIPHY_FLAG_SUPPORTS_TDLS = BIT(15), 1699 WIPHY_FLAG_SUPPORTS_TDLS = BIT(15),
1699 WIPHY_FLAG_TDLS_EXTERNAL_SETUP = BIT(16), 1700 WIPHY_FLAG_TDLS_EXTERNAL_SETUP = BIT(16),
1701 WIPHY_FLAG_HAVE_AP_SME = BIT(17),
1700}; 1702};
1701 1703
1702/** 1704/**
@@ -1907,6 +1909,8 @@ struct wiphy_wowlan_support {
1907 * may request, if implemented. 1909 * may request, if implemented.
1908 * 1910 *
1909 * @wowlan: WoWLAN support information 1911 * @wowlan: WoWLAN support information
1912 *
1913 * @ap_sme_capa: AP SME capabilities, flags from &enum nl80211_ap_sme_features.
1910 */ 1914 */
1911struct wiphy { 1915struct wiphy {
1912 /* assign these fields before you register the wiphy */ 1916 /* assign these fields before you register the wiphy */
@@ -1930,6 +1934,8 @@ struct wiphy {
1930 1934
1931 u32 flags; 1935 u32 flags;
1932 1936
1937 u32 ap_sme_capa;
1938
1933 enum cfg80211_signal_type signal_type; 1939 enum cfg80211_signal_type signal_type;
1934 1940
1935 int bss_priv_size; 1941 int bss_priv_size;
diff --git a/net/wireless/core.c b/net/wireless/core.c
index 220f3bd176f8..ccdfed897651 100644
--- a/net/wireless/core.c
+++ b/net/wireless/core.c
@@ -492,6 +492,10 @@ int wiphy_register(struct wiphy *wiphy)
492 !(wiphy->wowlan.flags & WIPHY_WOWLAN_SUPPORTS_GTK_REKEY))) 492 !(wiphy->wowlan.flags & WIPHY_WOWLAN_SUPPORTS_GTK_REKEY)))
493 return -EINVAL; 493 return -EINVAL;
494 494
495 if (WARN_ON(wiphy->ap_sme_capa &&
496 !(wiphy->flags & WIPHY_FLAG_HAVE_AP_SME)))
497 return -EINVAL;
498
495 if (WARN_ON(wiphy->addresses && !wiphy->n_addresses)) 499 if (WARN_ON(wiphy->addresses && !wiphy->n_addresses))
496 return -EINVAL; 500 return -EINVAL;
497 501
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index 9910c3cb9a85..2094c8468d78 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -1007,6 +1007,10 @@ static int nl80211_send_wiphy(struct sk_buff *msg, u32 pid, u32 seq, int flags,
1007 if (nl80211_put_iface_combinations(&dev->wiphy, msg)) 1007 if (nl80211_put_iface_combinations(&dev->wiphy, msg))
1008 goto nla_put_failure; 1008 goto nla_put_failure;
1009 1009
1010 if (dev->wiphy.flags & WIPHY_FLAG_HAVE_AP_SME)
1011 NLA_PUT_U32(msg, NL80211_ATTR_DEVICE_AP_SME,
1012 dev->wiphy.ap_sme_capa);
1013
1010 return genlmsg_end(msg, hdr); 1014 return genlmsg_end(msg, hdr);
1011 1015
1012 nla_put_failure: 1016 nla_put_failure: