aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorBen Greear <greearb@candelatech.com>2011-11-18 14:31:59 -0500
committerJohn W. Linville <linville@tuxdriver.com>2011-11-21 16:22:06 -0500
commit7e7c8926b2f4e3453b8aeb39cd814d2af3fec24f (patch)
treee22df42bf84d6ea3cb67ae0e332d7d7d10cca4b4 /include
parentdd76986b0e398978ca32dd60c1b7dc50ab4e9ae1 (diff)
wireless: Support ht-capabilities over-rides.
This allows users to disable features such as HT, HT40, and to modify the MCS, AMPDU, and AMSDU settings for drivers that support it. The MCS, AMPDU, and AMSDU features that may be disabled are are reported in the phy-info netlink message as a mask. Attemping to disable features that are not supported will take no affect, but will not return errors. This is to aid backwards compatibility in user-space apps that may not be clever enough to deal with parsing the the capabilities mask. This patch only enables the infrastructure. An additional patch will enable the feature in mac80211. Signed-off-by: Ben Greear <greearb@candelatech.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'include')
-rw-r--r--include/linux/nl80211.h14
-rw-r--r--include/net/cfg80211.h27
2 files changed, 41 insertions, 0 deletions
diff --git a/include/linux/nl80211.h b/include/linux/nl80211.h
index 6396819a7e41..97bfebfcce90 100644
--- a/include/linux/nl80211.h
+++ b/include/linux/nl80211.h
@@ -1169,6 +1169,17 @@ enum nl80211_commands {
1169 * @NL80211_ATTR_PROBE_RESP: Probe Response template data. Contains the entire 1169 * @NL80211_ATTR_PROBE_RESP: Probe Response template data. Contains the entire
1170 * probe-response frame. The DA field in the 802.11 header is zero-ed out, 1170 * probe-response frame. The DA field in the 802.11 header is zero-ed out,
1171 * to be filled by the FW. 1171 * to be filled by the FW.
1172 * @NL80211_ATTR_DISABLE_HT: Force HT capable interfaces to disable
1173 * this feature. Currently, only supported in mac80211 drivers.
1174 * @NL80211_ATTR_HT_CAPABILITY_MASK: Specify which bits of the
1175 * ATTR_HT_CAPABILITY to which attention should be paid.
1176 * Currently, only mac80211 NICs support this feature.
1177 * The values that may be configured are:
1178 * MCS rates, MAX-AMSDU, HT-20-40 and HT_CAP_SGI_40
1179 * AMPDU density and AMPDU factor.
1180 * All values are treated as suggestions and may be ignored
1181 * by the driver as required. The actual values may be seen in
1182 * the station debugfs ht_caps file.
1172 * 1183 *
1173 * @NL80211_ATTR_DFS_REGION: region for regulatory rules which this country 1184 * @NL80211_ATTR_DFS_REGION: region for regulatory rules which this country
1174 * abides to when initiating radiation on DFS channels. A country maps 1185 * abides to when initiating radiation on DFS channels. A country maps
@@ -1414,6 +1425,9 @@ enum nl80211_attrs {
1414 1425
1415 NL80211_ATTR_DFS_REGION, 1426 NL80211_ATTR_DFS_REGION,
1416 1427
1428 NL80211_ATTR_DISABLE_HT,
1429 NL80211_ATTR_HT_CAPABILITY_MASK,
1430
1417 /* add attributes here, update the policy in nl80211.c */ 1431 /* add attributes here, update the policy in nl80211.c */
1418 1432
1419 __NL80211_ATTR_AFTER_LAST, 1433 __NL80211_ATTR_AFTER_LAST,
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index 6a1d849c597a..d5e18913f293 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -1044,6 +1044,15 @@ struct cfg80211_auth_request {
1044}; 1044};
1045 1045
1046/** 1046/**
1047 * enum cfg80211_assoc_req_flags - Over-ride default behaviour in association.
1048 *
1049 * @ASSOC_REQ_DISABLE_HT: Disable HT (802.11n)
1050 */
1051enum cfg80211_assoc_req_flags {
1052 ASSOC_REQ_DISABLE_HT = BIT(0),
1053};
1054
1055/**
1047 * struct cfg80211_assoc_request - (Re)Association request data 1056 * struct cfg80211_assoc_request - (Re)Association request data
1048 * 1057 *
1049 * This structure provides information needed to complete IEEE 802.11 1058 * This structure provides information needed to complete IEEE 802.11
@@ -1054,6 +1063,10 @@ struct cfg80211_auth_request {
1054 * @use_mfp: Use management frame protection (IEEE 802.11w) in this association 1063 * @use_mfp: Use management frame protection (IEEE 802.11w) in this association
1055 * @crypto: crypto settings 1064 * @crypto: crypto settings
1056 * @prev_bssid: previous BSSID, if not %NULL use reassociate frame 1065 * @prev_bssid: previous BSSID, if not %NULL use reassociate frame
1066 * @flags: See &enum cfg80211_assoc_req_flags
1067 * @ht_capa: HT Capabilities over-rides. Values set in ht_capa_mask
1068 * will be used in ht_capa. Un-supported values will be ignored.
1069 * @ht_capa_mask: The bits of ht_capa which are to be used.
1057 */ 1070 */
1058struct cfg80211_assoc_request { 1071struct cfg80211_assoc_request {
1059 struct cfg80211_bss *bss; 1072 struct cfg80211_bss *bss;
@@ -1061,6 +1074,9 @@ struct cfg80211_assoc_request {
1061 size_t ie_len; 1074 size_t ie_len;
1062 struct cfg80211_crypto_settings crypto; 1075 struct cfg80211_crypto_settings crypto;
1063 bool use_mfp; 1076 bool use_mfp;
1077 u32 flags;
1078 struct ieee80211_ht_cap ht_capa;
1079 struct ieee80211_ht_cap ht_capa_mask;
1064}; 1080};
1065 1081
1066/** 1082/**
@@ -1159,6 +1175,10 @@ struct cfg80211_ibss_params {
1159 * @key_len: length of WEP key for shared key authentication 1175 * @key_len: length of WEP key for shared key authentication
1160 * @key_idx: index of WEP key for shared key authentication 1176 * @key_idx: index of WEP key for shared key authentication
1161 * @key: WEP key for shared key authentication 1177 * @key: WEP key for shared key authentication
1178 * @flags: See &enum cfg80211_assoc_req_flags
1179 * @ht_capa: HT Capabilities over-rides. Values set in ht_capa_mask
1180 * will be used in ht_capa. Un-supported values will be ignored.
1181 * @ht_capa_mask: The bits of ht_capa which are to be used.
1162 */ 1182 */
1163struct cfg80211_connect_params { 1183struct cfg80211_connect_params {
1164 struct ieee80211_channel *channel; 1184 struct ieee80211_channel *channel;
@@ -1172,6 +1192,9 @@ struct cfg80211_connect_params {
1172 struct cfg80211_crypto_settings crypto; 1192 struct cfg80211_crypto_settings crypto;
1173 const u8 *key; 1193 const u8 *key;
1174 u8 key_len, key_idx; 1194 u8 key_len, key_idx;
1195 u32 flags;
1196 struct ieee80211_ht_cap ht_capa;
1197 struct ieee80211_ht_cap ht_capa_mask;
1175}; 1198};
1176 1199
1177/** 1200/**
@@ -1938,6 +1961,8 @@ struct wiphy_wowlan_support {
1938 * @wowlan: WoWLAN support information 1961 * @wowlan: WoWLAN support information
1939 * 1962 *
1940 * @ap_sme_capa: AP SME capabilities, flags from &enum nl80211_ap_sme_features. 1963 * @ap_sme_capa: AP SME capabilities, flags from &enum nl80211_ap_sme_features.
1964 * @ht_capa_mod_mask: Specify what ht_cap values can be over-ridden.
1965 * If null, then none can be over-ridden.
1941 */ 1966 */
1942struct wiphy { 1967struct wiphy {
1943 /* assign these fields before you register the wiphy */ 1968 /* assign these fields before you register the wiphy */
@@ -2027,6 +2052,8 @@ struct wiphy {
2027 /* dir in debugfs: ieee80211/<wiphyname> */ 2052 /* dir in debugfs: ieee80211/<wiphyname> */
2028 struct dentry *debugfsdir; 2053 struct dentry *debugfsdir;
2029 2054
2055 const struct ieee80211_ht_cap *ht_capa_mod_mask;
2056
2030#ifdef CONFIG_NET_NS 2057#ifdef CONFIG_NET_NS
2031 /* the network namespace this phy lives in currently */ 2058 /* the network namespace this phy lives in currently */
2032 struct net *_net; 2059 struct net *_net;