aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2011-11-06 08:13:33 -0500
committerJohn W. Linville <linville@tuxdriver.com>2011-11-09 16:14:08 -0500
commit1f074bd8eb7a4a210a5119cd7220f89da6c7a2c3 (patch)
tree336706ad776cf96ce67ae0889f4fb93311c0d29a
parente41215626607f2e9b2227504a8965389a1ba1a25 (diff)
nl80211: advertise socket TX status capability
The new wifi socket TX capability should be supported by wifi drivers, let them advertise whether they do or not. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r--include/linux/nl80211.h18
-rw-r--r--include/net/cfg80211.h3
-rw-r--r--net/wireless/nl80211.c2
3 files changed, 22 insertions, 1 deletions
diff --git a/include/linux/nl80211.h b/include/linux/nl80211.h
index 165e16fc7af..3152ddfb429 100644
--- a/include/linux/nl80211.h
+++ b/include/linux/nl80211.h
@@ -695,6 +695,8 @@ enum nl80211_commands {
695#define NL80211_CMD_DISASSOCIATE NL80211_CMD_DISASSOCIATE 695#define NL80211_CMD_DISASSOCIATE NL80211_CMD_DISASSOCIATE
696#define NL80211_CMD_REG_BEACON_HINT NL80211_CMD_REG_BEACON_HINT 696#define NL80211_CMD_REG_BEACON_HINT NL80211_CMD_REG_BEACON_HINT
697 697
698#define NL80211_ATTR_FEATURE_FLAGS NL80211_ATTR_FEATURE_FLAGS
699
698/* source-level API compatibility */ 700/* source-level API compatibility */
699#define NL80211_CMD_GET_MESH_PARAMS NL80211_CMD_GET_MESH_CONFIG 701#define NL80211_CMD_GET_MESH_PARAMS NL80211_CMD_GET_MESH_CONFIG
700#define NL80211_CMD_SET_MESH_PARAMS NL80211_CMD_SET_MESH_CONFIG 702#define NL80211_CMD_SET_MESH_PARAMS NL80211_CMD_SET_MESH_CONFIG
@@ -1156,6 +1158,9 @@ enum nl80211_commands {
1156 * it will also not give a status callback nor return a cookie. This is 1158 * it will also not give a status callback nor return a cookie. This is
1157 * mostly useful for probe responses to save airtime. 1159 * mostly useful for probe responses to save airtime.
1158 * 1160 *
1161 * @NL80211_ATTR_FEATURE_FLAGS: This u32 attribute contains flags from
1162 * &enum nl80211_feature_flags and is advertised in wiphy information.
1163 *
1159 * @NL80211_ATTR_MAX: highest attribute number currently defined 1164 * @NL80211_ATTR_MAX: highest attribute number currently defined
1160 * @__NL80211_ATTR_AFTER_LAST: internal use 1165 * @__NL80211_ATTR_AFTER_LAST: internal use
1161 */ 1166 */
@@ -1388,6 +1393,8 @@ enum nl80211_attrs {
1388 1393
1389 NL80211_ATTR_DONT_WAIT_FOR_ACK, 1394 NL80211_ATTR_DONT_WAIT_FOR_ACK,
1390 1395
1396 NL80211_ATTR_FEATURE_FLAGS,
1397
1391 /* add attributes here, update the policy in nl80211.c */ 1398 /* add attributes here, update the policy in nl80211.c */
1392 1399
1393 __NL80211_ATTR_AFTER_LAST, 1400 __NL80211_ATTR_AFTER_LAST,
@@ -1422,6 +1429,7 @@ enum nl80211_attrs {
1422#define NL80211_ATTR_AKM_SUITES NL80211_ATTR_AKM_SUITES 1429#define NL80211_ATTR_AKM_SUITES NL80211_ATTR_AKM_SUITES
1423#define NL80211_ATTR_KEY NL80211_ATTR_KEY 1430#define NL80211_ATTR_KEY NL80211_ATTR_KEY
1424#define NL80211_ATTR_KEYS NL80211_ATTR_KEYS 1431#define NL80211_ATTR_KEYS NL80211_ATTR_KEYS
1432#define NL80211_ATTR_FEATURE_FLAGS NL80211_ATTR_FEATURE_FLAGS
1425 1433
1426#define NL80211_MAX_SUPP_RATES 32 1434#define NL80211_MAX_SUPP_RATES 32
1427#define NL80211_MAX_SUPP_REG_RULES 32 1435#define NL80211_MAX_SUPP_REG_RULES 32
@@ -2709,4 +2717,14 @@ enum nl80211_ap_sme_features {
2709}; 2717};
2710 */ 2718 */
2711 2719
2720/**
2721 * enum nl80211_feature_flags - device/driver features
2722 * @NL80211_FEATURE_SK_TX_STATUS: This driver supports reflecting back
2723 * TX status to the socket error queue when requested with the
2724 * socket option.
2725 */
2726enum nl80211_feature_flags {
2727 NL80211_FEATURE_SK_TX_STATUS = 1 << 0,
2728};
2729
2712#endif /* __LINUX_NL80211_H */ 2730#endif /* __LINUX_NL80211_H */
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index 00287bdef91..e1ee1416631 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -1881,6 +1881,7 @@ struct wiphy_wowlan_support {
1881 * @software_iftypes: bitmask of software interface types, these are not 1881 * @software_iftypes: bitmask of software interface types, these are not
1882 * subject to any restrictions since they are purely managed in SW. 1882 * subject to any restrictions since they are purely managed in SW.
1883 * @flags: wiphy flags, see &enum wiphy_flags 1883 * @flags: wiphy flags, see &enum wiphy_flags
1884 * @features: features advertised to nl80211, see &enum nl80211_feature_flags.
1884 * @bss_priv_size: each BSS struct has private data allocated with it, 1885 * @bss_priv_size: each BSS struct has private data allocated with it,
1885 * this variable determines its size 1886 * this variable determines its size
1886 * @max_scan_ssids: maximum number of SSIDs the device can scan for in 1887 * @max_scan_ssids: maximum number of SSIDs the device can scan for in
@@ -1942,7 +1943,7 @@ struct wiphy {
1942 /* Supported interface modes, OR together BIT(NL80211_IFTYPE_...) */ 1943 /* Supported interface modes, OR together BIT(NL80211_IFTYPE_...) */
1943 u16 interface_modes; 1944 u16 interface_modes;
1944 1945
1945 u32 flags; 1946 u32 flags, features;
1946 1947
1947 u32 ap_sme_capa; 1948 u32 ap_sme_capa;
1948 1949
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index 0ef09415c89..864fcb6f217 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -1017,6 +1017,8 @@ static int nl80211_send_wiphy(struct sk_buff *msg, u32 pid, u32 seq, int flags,
1017 NLA_PUT_U32(msg, NL80211_ATTR_DEVICE_AP_SME, 1017 NLA_PUT_U32(msg, NL80211_ATTR_DEVICE_AP_SME,
1018 dev->wiphy.ap_sme_capa); 1018 dev->wiphy.ap_sme_capa);
1019 1019
1020 NLA_PUT_U32(msg, NL80211_ATTR_FEATURE_FLAGS, dev->wiphy.features);
1021
1020 return genlmsg_end(msg, hdr); 1022 return genlmsg_end(msg, hdr);
1021 1023
1022 nla_put_failure: 1024 nla_put_failure: