aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorJohn W. Linville <linville@tuxdriver.com>2012-10-19 15:36:53 -0400
committerJohn W. Linville <linville@tuxdriver.com>2012-10-19 15:36:53 -0400
commit3cd17638fdf13d2f7fe76465cf74106e612af5eb (patch)
treea19bff1c69430750894129c99404130f4fec689d /include
parentbc27d5f14363a1065bf9437a5bca5409492b6c06 (diff)
parentd012a605108a482392be80710ea35f1db27c4aa9 (diff)
Merge branch 'for-john' of git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next
Diffstat (limited to 'include')
-rw-r--r--include/linux/ieee80211.h47
-rw-r--r--include/net/cfg80211.h14
-rw-r--r--include/net/mac80211.h101
-rw-r--r--include/uapi/linux/nl80211.h48
4 files changed, 193 insertions, 17 deletions
diff --git a/include/linux/ieee80211.h b/include/linux/ieee80211.h
index 2385119f8bb0..85764a900731 100644
--- a/include/linux/ieee80211.h
+++ b/include/linux/ieee80211.h
@@ -1107,20 +1107,6 @@ struct ieee80211_ht_operation {
1107#define WLAN_HT_SMPS_CONTROL_STATIC 1 1107#define WLAN_HT_SMPS_CONTROL_STATIC 1
1108#define WLAN_HT_SMPS_CONTROL_DYNAMIC 3 1108#define WLAN_HT_SMPS_CONTROL_DYNAMIC 3
1109 1109
1110#define VHT_MCS_SUPPORTED_SET_SIZE 8
1111
1112struct ieee80211_vht_capabilities {
1113 __le32 vht_capabilities_info;
1114 u8 vht_supported_mcs_set[VHT_MCS_SUPPORTED_SET_SIZE];
1115} __packed;
1116
1117struct ieee80211_vht_operation {
1118 u8 vht_op_info_chwidth;
1119 u8 vht_op_info_chan_center_freq_seg1_idx;
1120 u8 vht_op_info_chan_center_freq_seg2_idx;
1121 __le16 vht_basic_mcs_set;
1122} __packed;
1123
1124/** 1110/**
1125 * struct ieee80211_vht_mcs_info - VHT MCS information 1111 * struct ieee80211_vht_mcs_info - VHT MCS information
1126 * @rx_mcs_map: RX MCS map 2 bits for each stream, total 8 streams 1112 * @rx_mcs_map: RX MCS map 2 bits for each stream, total 8 streams
@@ -1141,6 +1127,37 @@ struct ieee80211_vht_mcs_info {
1141 __le16 tx_highest; 1127 __le16 tx_highest;
1142} __packed; 1128} __packed;
1143 1129
1130/**
1131 * struct ieee80211_vht_cap - VHT capabilities
1132 *
1133 * This structure is the "VHT capabilities element" as
1134 * described in 802.11ac D3.0 8.4.2.160
1135 * @vht_cap_info: VHT capability info
1136 * @supp_mcs: VHT MCS supported rates
1137 */
1138struct ieee80211_vht_cap {
1139 __le32 vht_cap_info;
1140 struct ieee80211_vht_mcs_info supp_mcs;
1141} __packed;
1142
1143/**
1144 * struct ieee80211_vht_operation - VHT operation IE
1145 *
1146 * This structure is the "VHT operation element" as
1147 * described in 802.11ac D3.0 8.4.2.161
1148 * @chan_width: Operating channel width
1149 * @center_freq_seg1_idx: center freq segment 1 index
1150 * @center_freq_seg2_idx: center freq segment 2 index
1151 * @basic_mcs_set: VHT Basic MCS rate set
1152 */
1153struct ieee80211_vht_operation {
1154 u8 chan_width;
1155 u8 center_freq_seg1_idx;
1156 u8 center_freq_seg2_idx;
1157 __le16 basic_mcs_set;
1158} __packed;
1159
1160
1144#define IEEE80211_VHT_MCS_ZERO_TO_SEVEN_SUPPORT 0 1161#define IEEE80211_VHT_MCS_ZERO_TO_SEVEN_SUPPORT 0
1145#define IEEE80211_VHT_MCS_ZERO_TO_EIGHT_SUPPORT 1 1162#define IEEE80211_VHT_MCS_ZERO_TO_EIGHT_SUPPORT 1
1146#define IEEE80211_VHT_MCS_ZERO_TO_NINE_SUPPORT 2 1163#define IEEE80211_VHT_MCS_ZERO_TO_NINE_SUPPORT 2
@@ -1440,8 +1457,6 @@ enum ieee80211_eid {
1440 1457
1441 WLAN_EID_RSN = 48, 1458 WLAN_EID_RSN = 48,
1442 WLAN_EID_MMIE = 76, 1459 WLAN_EID_MMIE = 76,
1443 WLAN_EID_WPA = 221,
1444 WLAN_EID_GENERIC = 221,
1445 WLAN_EID_VENDOR_SPECIFIC = 221, 1460 WLAN_EID_VENDOR_SPECIFIC = 221,
1446 WLAN_EID_QOS_PARAMETER = 222, 1461 WLAN_EID_QOS_PARAMETER = 222,
1447 1462
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index 1b4989082244..aa0e4a12308c 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -498,6 +498,7 @@ enum station_parameters_apply_mask {
498 * @plink_action: plink action to take 498 * @plink_action: plink action to take
499 * @plink_state: set the peer link state for a station 499 * @plink_state: set the peer link state for a station
500 * @ht_capa: HT capabilities of station 500 * @ht_capa: HT capabilities of station
501 * @vht_capa: VHT capabilities of station
501 * @uapsd_queues: bitmap of queues configured for uapsd. same format 502 * @uapsd_queues: bitmap of queues configured for uapsd. same format
502 * as the AC bitmap in the QoS info field 503 * as the AC bitmap in the QoS info field
503 * @max_sp: max Service Period. same format as the MAX_SP in the 504 * @max_sp: max Service Period. same format as the MAX_SP in the
@@ -517,6 +518,7 @@ struct station_parameters {
517 u8 plink_action; 518 u8 plink_action;
518 u8 plink_state; 519 u8 plink_state;
519 struct ieee80211_ht_cap *ht_capa; 520 struct ieee80211_ht_cap *ht_capa;
521 struct ieee80211_vht_cap *vht_capa;
520 u8 uapsd_queues; 522 u8 uapsd_queues;
521 u8 max_sp; 523 u8 max_sp;
522}; 524};
@@ -1000,8 +1002,10 @@ struct cfg80211_ssid {
1000 * @n_channels: total number of channels to scan 1002 * @n_channels: total number of channels to scan
1001 * @ie: optional information element(s) to add into Probe Request or %NULL 1003 * @ie: optional information element(s) to add into Probe Request or %NULL
1002 * @ie_len: length of ie in octets 1004 * @ie_len: length of ie in octets
1005 * @flags: bit field of flags controlling operation
1003 * @rates: bitmap of rates to advertise for each band 1006 * @rates: bitmap of rates to advertise for each band
1004 * @wiphy: the wiphy this was for 1007 * @wiphy: the wiphy this was for
1008 * @scan_start: time (in jiffies) when the scan started
1005 * @wdev: the wireless device to scan for 1009 * @wdev: the wireless device to scan for
1006 * @aborted: (internal) scan request was notified as aborted 1010 * @aborted: (internal) scan request was notified as aborted
1007 * @no_cck: used to send probe requests at non CCK rate in 2GHz band 1011 * @no_cck: used to send probe requests at non CCK rate in 2GHz band
@@ -1012,6 +1016,7 @@ struct cfg80211_scan_request {
1012 u32 n_channels; 1016 u32 n_channels;
1013 const u8 *ie; 1017 const u8 *ie;
1014 size_t ie_len; 1018 size_t ie_len;
1019 u32 flags;
1015 1020
1016 u32 rates[IEEE80211_NUM_BANDS]; 1021 u32 rates[IEEE80211_NUM_BANDS];
1017 1022
@@ -1019,6 +1024,7 @@ struct cfg80211_scan_request {
1019 1024
1020 /* internal */ 1025 /* internal */
1021 struct wiphy *wiphy; 1026 struct wiphy *wiphy;
1027 unsigned long scan_start;
1022 bool aborted; 1028 bool aborted;
1023 bool no_cck; 1029 bool no_cck;
1024 1030
@@ -1044,6 +1050,7 @@ struct cfg80211_match_set {
1044 * @interval: interval between each scheduled scan cycle 1050 * @interval: interval between each scheduled scan cycle
1045 * @ie: optional information element(s) to add into Probe Request or %NULL 1051 * @ie: optional information element(s) to add into Probe Request or %NULL
1046 * @ie_len: length of ie in octets 1052 * @ie_len: length of ie in octets
1053 * @flags: bit field of flags controlling operation
1047 * @match_sets: sets of parameters to be matched for a scan result 1054 * @match_sets: sets of parameters to be matched for a scan result
1048 * entry to be considered valid and to be passed to the host 1055 * entry to be considered valid and to be passed to the host
1049 * (others are filtered out). 1056 * (others are filtered out).
@@ -1061,6 +1068,7 @@ struct cfg80211_sched_scan_request {
1061 u32 interval; 1068 u32 interval;
1062 const u8 *ie; 1069 const u8 *ie;
1063 size_t ie_len; 1070 size_t ie_len;
1071 u32 flags;
1064 struct cfg80211_match_set *match_sets; 1072 struct cfg80211_match_set *match_sets;
1065 int n_match_sets; 1073 int n_match_sets;
1066 s32 rssi_thold; 1074 s32 rssi_thold;
@@ -1068,6 +1076,7 @@ struct cfg80211_sched_scan_request {
1068 /* internal */ 1076 /* internal */
1069 struct wiphy *wiphy; 1077 struct wiphy *wiphy;
1070 struct net_device *dev; 1078 struct net_device *dev;
1079 unsigned long scan_start;
1071 1080
1072 /* keep last */ 1081 /* keep last */
1073 struct ieee80211_channel *channels[0]; 1082 struct ieee80211_channel *channels[0];
@@ -1152,6 +1161,9 @@ const u8 *ieee80211_bss_get_ie(struct cfg80211_bss *bss, u8 ie);
1152 * @key_len: length of WEP key for shared key authentication 1161 * @key_len: length of WEP key for shared key authentication
1153 * @key_idx: index of WEP key for shared key authentication 1162 * @key_idx: index of WEP key for shared key authentication
1154 * @key: WEP key for shared key authentication 1163 * @key: WEP key for shared key authentication
1164 * @sae_data: Non-IE data to use with SAE or %NULL. This starts with
1165 * Authentication transaction sequence number field.
1166 * @sae_data_len: Length of sae_data buffer in octets
1155 */ 1167 */
1156struct cfg80211_auth_request { 1168struct cfg80211_auth_request {
1157 struct cfg80211_bss *bss; 1169 struct cfg80211_bss *bss;
@@ -1160,6 +1172,8 @@ struct cfg80211_auth_request {
1160 enum nl80211_auth_type auth_type; 1172 enum nl80211_auth_type auth_type;
1161 const u8 *key; 1173 const u8 *key;
1162 u8 key_len, key_idx; 1174 u8 key_len, key_idx;
1175 const u8 *sae_data;
1176 size_t sae_data_len;
1163}; 1177};
1164 1178
1165/** 1179/**
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index 82558c8decf8..71c2f9c2f5be 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -144,6 +144,41 @@ struct ieee80211_low_level_stats {
144}; 144};
145 145
146/** 146/**
147 * enum ieee80211_chanctx_change - change flag for channel context
148 * @IEEE80211_CHANCTX_CHANGE_CHANNEL_TYPE: The channel type was changed
149 * @IEEE80211_CHANCTX_CHANGE_RX_CHAINS: The number of RX chains changed
150 */
151enum ieee80211_chanctx_change {
152 IEEE80211_CHANCTX_CHANGE_CHANNEL_TYPE = BIT(0),
153 IEEE80211_CHANCTX_CHANGE_RX_CHAINS = BIT(1),
154};
155
156/**
157 * struct ieee80211_chanctx_conf - channel context that vifs may be tuned to
158 *
159 * This is the driver-visible part. The ieee80211_chanctx
160 * that contains it is visible in mac80211 only.
161 *
162 * @channel: the channel to tune to
163 * @channel_type: the channel (HT) type
164 * @rx_chains_static: The number of RX chains that must always be
165 * active on the channel to receive MIMO transmissions
166 * @rx_chains_dynamic: The number of RX chains that must be enabled
167 * after RTS/CTS handshake to receive SMPS MIMO transmissions;
168 * this will always be >= @rx_chains_always.
169 * @drv_priv: data area for driver use, will always be aligned to
170 * sizeof(void *), size is determined in hw information.
171 */
172struct ieee80211_chanctx_conf {
173 struct ieee80211_channel *channel;
174 enum nl80211_channel_type channel_type;
175
176 u8 rx_chains_static, rx_chains_dynamic;
177
178 u8 drv_priv[0] __attribute__((__aligned__(sizeof(void *))));
179};
180
181/**
147 * enum ieee80211_bss_change - BSS change notification flags 182 * enum ieee80211_bss_change - BSS change notification flags
148 * 183 *
149 * These flags are used with the bss_info_changed() callback 184 * These flags are used with the bss_info_changed() callback
@@ -223,6 +258,7 @@ enum ieee80211_rssi_event {
223 * @assoc: association status 258 * @assoc: association status
224 * @ibss_joined: indicates whether this station is part of an IBSS 259 * @ibss_joined: indicates whether this station is part of an IBSS
225 * or not 260 * or not
261 * @ibss_creator: indicates if a new IBSS network is being created
226 * @aid: association ID number, valid only when @assoc is true 262 * @aid: association ID number, valid only when @assoc is true
227 * @use_cts_prot: use CTS protection 263 * @use_cts_prot: use CTS protection
228 * @use_short_preamble: use 802.11b short preamble; 264 * @use_short_preamble: use 802.11b short preamble;
@@ -278,6 +314,7 @@ struct ieee80211_bss_conf {
278 const u8 *bssid; 314 const u8 *bssid;
279 /* association related data */ 315 /* association related data */
280 bool assoc, ibss_joined; 316 bool assoc, ibss_joined;
317 bool ibss_creator;
281 u16 aid; 318 u16 aid;
282 /* erp related data */ 319 /* erp related data */
283 bool use_cts_prot; 320 bool use_cts_prot;
@@ -794,6 +831,8 @@ enum ieee80211_conf_flags {
794 * @IEEE80211_CONF_CHANGE_RETRY_LIMITS: retry limits changed 831 * @IEEE80211_CONF_CHANGE_RETRY_LIMITS: retry limits changed
795 * @IEEE80211_CONF_CHANGE_IDLE: Idle flag changed 832 * @IEEE80211_CONF_CHANGE_IDLE: Idle flag changed
796 * @IEEE80211_CONF_CHANGE_SMPS: Spatial multiplexing powersave mode changed 833 * @IEEE80211_CONF_CHANGE_SMPS: Spatial multiplexing powersave mode changed
834 * Note that this is only valid if channel contexts are not used,
835 * otherwise each channel context has the number of chains listed.
797 */ 836 */
798enum ieee80211_conf_changed { 837enum ieee80211_conf_changed {
799 IEEE80211_CONF_CHANGE_SMPS = BIT(1), 838 IEEE80211_CONF_CHANGE_SMPS = BIT(1),
@@ -859,7 +898,9 @@ enum ieee80211_smps_mode {
859 * 898 *
860 * @smps_mode: spatial multiplexing powersave mode; note that 899 * @smps_mode: spatial multiplexing powersave mode; note that
861 * %IEEE80211_SMPS_STATIC is used when the device is not 900 * %IEEE80211_SMPS_STATIC is used when the device is not
862 * configured for an HT channel 901 * configured for an HT channel.
902 * Note that this is only valid if channel contexts are not used,
903 * otherwise each channel context has the number of chains listed.
863 */ 904 */
864struct ieee80211_conf { 905struct ieee80211_conf {
865 u32 flags; 906 u32 flags;
@@ -931,6 +972,11 @@ enum ieee80211_vif_flags {
931 * at runtime, mac80211 will never touch this field 972 * at runtime, mac80211 will never touch this field
932 * @hw_queue: hardware queue for each AC 973 * @hw_queue: hardware queue for each AC
933 * @cab_queue: content-after-beacon (DTIM beacon really) queue, AP mode only 974 * @cab_queue: content-after-beacon (DTIM beacon really) queue, AP mode only
975 * @chanctx_conf: The channel context this interface is assigned to, or %NULL
976 * when it is not assigned. This pointer is RCU-protected due to the TX
977 * path needing to access it; even though the netdev carrier will always
978 * be off when it is %NULL there can still be races and packets could be
979 * processed after it switches back to %NULL.
934 * @drv_priv: data area for driver use, will always be aligned to 980 * @drv_priv: data area for driver use, will always be aligned to
935 * sizeof(void *). 981 * sizeof(void *).
936 */ 982 */
@@ -943,6 +989,8 @@ struct ieee80211_vif {
943 u8 cab_queue; 989 u8 cab_queue;
944 u8 hw_queue[IEEE80211_NUM_ACS]; 990 u8 hw_queue[IEEE80211_NUM_ACS];
945 991
992 struct ieee80211_chanctx_conf __rcu *chanctx_conf;
993
946 u32 driver_flags; 994 u32 driver_flags;
947 995
948 /* must be last */ 996 /* must be last */
@@ -1076,6 +1124,8 @@ enum ieee80211_sta_state {
1076 * @aid: AID we assigned to the station if we're an AP 1124 * @aid: AID we assigned to the station if we're an AP
1077 * @supp_rates: Bitmap of supported rates (per band) 1125 * @supp_rates: Bitmap of supported rates (per band)
1078 * @ht_cap: HT capabilities of this STA; restricted to our own TX capabilities 1126 * @ht_cap: HT capabilities of this STA; restricted to our own TX capabilities
1127 * @vht_cap: VHT capabilities of this STA; Not restricting any capabilities
1128 * of remote STA. Taking as is.
1079 * @wme: indicates whether the STA supports WME. Only valid during AP-mode. 1129 * @wme: indicates whether the STA supports WME. Only valid during AP-mode.
1080 * @drv_priv: data area for driver use, will always be aligned to 1130 * @drv_priv: data area for driver use, will always be aligned to
1081 * sizeof(void *), size is determined in hw information. 1131 * sizeof(void *), size is determined in hw information.
@@ -1088,6 +1138,7 @@ struct ieee80211_sta {
1088 u8 addr[ETH_ALEN]; 1138 u8 addr[ETH_ALEN];
1089 u16 aid; 1139 u16 aid;
1090 struct ieee80211_sta_ht_cap ht_cap; 1140 struct ieee80211_sta_ht_cap ht_cap;
1141 struct ieee80211_sta_vht_cap vht_cap;
1091 bool wme; 1142 bool wme;
1092 u8 uapsd_queues; 1143 u8 uapsd_queues;
1093 u8 max_sp; 1144 u8 max_sp;
@@ -1325,6 +1376,8 @@ enum ieee80211_hw_flags {
1325 * within &struct ieee80211_vif. 1376 * within &struct ieee80211_vif.
1326 * @sta_data_size: size (in bytes) of the drv_priv data area 1377 * @sta_data_size: size (in bytes) of the drv_priv data area
1327 * within &struct ieee80211_sta. 1378 * within &struct ieee80211_sta.
1379 * @chanctx_data_size: size (in bytes) of the drv_priv data area
1380 * within &struct ieee80211_chanctx_conf.
1328 * 1381 *
1329 * @max_rates: maximum number of alternate rate retry stages the hw 1382 * @max_rates: maximum number of alternate rate retry stages the hw
1330 * can handle. 1383 * can handle.
@@ -1369,6 +1422,7 @@ struct ieee80211_hw {
1369 int channel_change_time; 1422 int channel_change_time;
1370 int vif_data_size; 1423 int vif_data_size;
1371 int sta_data_size; 1424 int sta_data_size;
1425 int chanctx_data_size;
1372 int napi_weight; 1426 int napi_weight;
1373 u16 queues; 1427 u16 queues;
1374 u16 max_listen_interval; 1428 u16 max_listen_interval;
@@ -2317,6 +2371,16 @@ enum ieee80211_rate_control_changed {
2317 * The callback will be called before each transmission and upon return 2371 * The callback will be called before each transmission and upon return
2318 * mac80211 will transmit the frame right away. 2372 * mac80211 will transmit the frame right away.
2319 * The callback is optional and can (should!) sleep. 2373 * The callback is optional and can (should!) sleep.
2374 *
2375 * @add_chanctx: Notifies device driver about new channel context creation.
2376 * @remove_chanctx: Notifies device driver about channel context destruction.
2377 * @change_chanctx: Notifies device driver about channel context changes that
2378 * may happen when combining different virtual interfaces on the same
2379 * channel context with different settings
2380 * @assign_vif_chanctx: Notifies device driver about channel context being bound
2381 * to vif. Possible use is for hw queue remapping.
2382 * @unassign_vif_chanctx: Notifies device driver about channel context being
2383 * unbound from vif.
2320 */ 2384 */
2321struct ieee80211_ops { 2385struct ieee80211_ops {
2322 void (*tx)(struct ieee80211_hw *hw, 2386 void (*tx)(struct ieee80211_hw *hw,
@@ -2461,6 +2525,20 @@ struct ieee80211_ops {
2461 2525
2462 void (*mgd_prepare_tx)(struct ieee80211_hw *hw, 2526 void (*mgd_prepare_tx)(struct ieee80211_hw *hw,
2463 struct ieee80211_vif *vif); 2527 struct ieee80211_vif *vif);
2528
2529 int (*add_chanctx)(struct ieee80211_hw *hw,
2530 struct ieee80211_chanctx_conf *ctx);
2531 void (*remove_chanctx)(struct ieee80211_hw *hw,
2532 struct ieee80211_chanctx_conf *ctx);
2533 void (*change_chanctx)(struct ieee80211_hw *hw,
2534 struct ieee80211_chanctx_conf *ctx,
2535 u32 changed);
2536 int (*assign_vif_chanctx)(struct ieee80211_hw *hw,
2537 struct ieee80211_vif *vif,
2538 struct ieee80211_chanctx_conf *ctx);
2539 void (*unassign_vif_chanctx)(struct ieee80211_hw *hw,
2540 struct ieee80211_vif *vif,
2541 struct ieee80211_chanctx_conf *ctx);
2464}; 2542};
2465 2543
2466/** 2544/**
@@ -3524,6 +3602,27 @@ void ieee80211_iter_keys(struct ieee80211_hw *hw,
3524 void *iter_data); 3602 void *iter_data);
3525 3603
3526/** 3604/**
3605 * ieee80211_iter_chan_contexts_atomic - iterate channel contexts
3606 * @hw: pointre obtained from ieee80211_alloc_hw().
3607 * @iter: iterator function
3608 * @iter_data: data passed to iterator function
3609 *
3610 * Iterate all active channel contexts. This function is atomic and
3611 * doesn't acquire any locks internally that might be held in other
3612 * places while calling into the driver.
3613 *
3614 * The iterator will not find a context that's being added (during
3615 * the driver callback to add it) but will find it while it's being
3616 * removed.
3617 */
3618void ieee80211_iter_chan_contexts_atomic(
3619 struct ieee80211_hw *hw,
3620 void (*iter)(struct ieee80211_hw *hw,
3621 struct ieee80211_chanctx_conf *chanctx_conf,
3622 void *data),
3623 void *iter_data);
3624
3625/**
3527 * ieee80211_ap_probereq_get - retrieve a Probe Request template 3626 * ieee80211_ap_probereq_get - retrieve a Probe Request template
3528 * @hw: pointer obtained from ieee80211_alloc_hw(). 3627 * @hw: pointer obtained from ieee80211_alloc_hw().
3529 * @vif: &struct ieee80211_vif pointer from the add_interface callback. 3628 * @vif: &struct ieee80211_vif pointer from the add_interface callback.
diff --git a/include/uapi/linux/nl80211.h b/include/uapi/linux/nl80211.h
index 7df9b500c804..617d0fbfc96f 100644
--- a/include/uapi/linux/nl80211.h
+++ b/include/uapi/linux/nl80211.h
@@ -1273,6 +1273,14 @@ enum nl80211_commands {
1273 * the connection request from a station. nl80211_connect_failed_reason 1273 * the connection request from a station. nl80211_connect_failed_reason
1274 * enum has different reasons of connection failure. 1274 * enum has different reasons of connection failure.
1275 * 1275 *
1276 * @NL80211_ATTR_SAE_DATA: SAE elements in Authentication frames. This starts
1277 * with the Authentication transaction sequence number field.
1278 *
1279 * @NL80211_ATTR_VHT_CAPABILITY: VHT Capability information element (from
1280 * association request when used with NL80211_CMD_NEW_STATION)
1281 *
1282 * @NL80211_ATTR_SCAN_FLAGS: scan request control flags (u32)
1283 *
1276 * @NL80211_ATTR_MAX: highest attribute number currently defined 1284 * @NL80211_ATTR_MAX: highest attribute number currently defined
1277 * @__NL80211_ATTR_AFTER_LAST: internal use 1285 * @__NL80211_ATTR_AFTER_LAST: internal use
1278 */ 1286 */
@@ -1530,6 +1538,12 @@ enum nl80211_attrs {
1530 1538
1531 NL80211_ATTR_CONN_FAILED_REASON, 1539 NL80211_ATTR_CONN_FAILED_REASON,
1532 1540
1541 NL80211_ATTR_SAE_DATA,
1542
1543 NL80211_ATTR_VHT_CAPABILITY,
1544
1545 NL80211_ATTR_SCAN_FLAGS,
1546
1533 /* add attributes here, update the policy in nl80211.c */ 1547 /* add attributes here, update the policy in nl80211.c */
1534 1548
1535 __NL80211_ATTR_AFTER_LAST, 1549 __NL80211_ATTR_AFTER_LAST,
@@ -1573,6 +1587,7 @@ enum nl80211_attrs {
1573#define NL80211_TKIP_DATA_OFFSET_TX_MIC_KEY 16 1587#define NL80211_TKIP_DATA_OFFSET_TX_MIC_KEY 16
1574#define NL80211_TKIP_DATA_OFFSET_RX_MIC_KEY 24 1588#define NL80211_TKIP_DATA_OFFSET_RX_MIC_KEY 24
1575#define NL80211_HT_CAPABILITY_LEN 26 1589#define NL80211_HT_CAPABILITY_LEN 26
1590#define NL80211_VHT_CAPABILITY_LEN 12
1576 1591
1577#define NL80211_MAX_NR_CIPHER_SUITES 5 1592#define NL80211_MAX_NR_CIPHER_SUITES 5
1578#define NL80211_MAX_NR_AKM_SUITES 2 1593#define NL80211_MAX_NR_AKM_SUITES 2
@@ -2489,6 +2504,7 @@ enum nl80211_bss_status {
2489 * @NL80211_AUTHTYPE_SHARED_KEY: Shared Key authentication (WEP only) 2504 * @NL80211_AUTHTYPE_SHARED_KEY: Shared Key authentication (WEP only)
2490 * @NL80211_AUTHTYPE_FT: Fast BSS Transition (IEEE 802.11r) 2505 * @NL80211_AUTHTYPE_FT: Fast BSS Transition (IEEE 802.11r)
2491 * @NL80211_AUTHTYPE_NETWORK_EAP: Network EAP (some Cisco APs and mainly LEAP) 2506 * @NL80211_AUTHTYPE_NETWORK_EAP: Network EAP (some Cisco APs and mainly LEAP)
2507 * @NL80211_AUTHTYPE_SAE: Simultaneous authentication of equals
2492 * @__NL80211_AUTHTYPE_NUM: internal 2508 * @__NL80211_AUTHTYPE_NUM: internal
2493 * @NL80211_AUTHTYPE_MAX: maximum valid auth algorithm 2509 * @NL80211_AUTHTYPE_MAX: maximum valid auth algorithm
2494 * @NL80211_AUTHTYPE_AUTOMATIC: determine automatically (if necessary by 2510 * @NL80211_AUTHTYPE_AUTOMATIC: determine automatically (if necessary by
@@ -2500,6 +2516,7 @@ enum nl80211_auth_type {
2500 NL80211_AUTHTYPE_SHARED_KEY, 2516 NL80211_AUTHTYPE_SHARED_KEY,
2501 NL80211_AUTHTYPE_FT, 2517 NL80211_AUTHTYPE_FT,
2502 NL80211_AUTHTYPE_NETWORK_EAP, 2518 NL80211_AUTHTYPE_NETWORK_EAP,
2519 NL80211_AUTHTYPE_SAE,
2503 2520
2504 /* keep last */ 2521 /* keep last */
2505 __NL80211_AUTHTYPE_NUM, 2522 __NL80211_AUTHTYPE_NUM,
@@ -3028,6 +3045,12 @@ enum nl80211_ap_sme_features {
3028 * in the interface combinations, even when it's only used for scan 3045 * in the interface combinations, even when it's only used for scan
3029 * and remain-on-channel. This could be due to, for example, the 3046 * and remain-on-channel. This could be due to, for example, the
3030 * remain-on-channel implementation requiring a channel context. 3047 * remain-on-channel implementation requiring a channel context.
3048 * @NL80211_FEATURE_SAE: This driver supports simultaneous authentication of
3049 * equals (SAE) with user space SME (NL80211_CMD_AUTHENTICATE) in station
3050 * mode
3051 * @NL80211_FEATURE_LOW_PRIORITY_SCAN: This driver supports low priority scan
3052 * @NL80211_FEATURE_SCAN_FLUSH: Scan flush is supported
3053 * @NL80211_FEATURE_AP_SCAN: Support scanning using an AP vif
3031 */ 3054 */
3032enum nl80211_feature_flags { 3055enum nl80211_feature_flags {
3033 NL80211_FEATURE_SK_TX_STATUS = 1 << 0, 3056 NL80211_FEATURE_SK_TX_STATUS = 1 << 0,
@@ -3035,6 +3058,10 @@ enum nl80211_feature_flags {
3035 NL80211_FEATURE_INACTIVITY_TIMER = 1 << 2, 3058 NL80211_FEATURE_INACTIVITY_TIMER = 1 << 2,
3036 NL80211_FEATURE_CELL_BASE_REG_HINTS = 1 << 3, 3059 NL80211_FEATURE_CELL_BASE_REG_HINTS = 1 << 3,
3037 NL80211_FEATURE_P2P_DEVICE_NEEDS_CHANNEL = 1 << 4, 3060 NL80211_FEATURE_P2P_DEVICE_NEEDS_CHANNEL = 1 << 4,
3061 NL80211_FEATURE_SAE = 1 << 5,
3062 NL80211_FEATURE_LOW_PRIORITY_SCAN = 1 << 6,
3063 NL80211_FEATURE_SCAN_FLUSH = 1 << 7,
3064 NL80211_FEATURE_AP_SCAN = 1 << 8,
3038}; 3065};
3039 3066
3040/** 3067/**
@@ -3069,4 +3096,25 @@ enum nl80211_connect_failed_reason {
3069 NL80211_CONN_FAIL_BLOCKED_CLIENT, 3096 NL80211_CONN_FAIL_BLOCKED_CLIENT,
3070}; 3097};
3071 3098
3099/**
3100 * enum nl80211_scan_flags - scan request control flags
3101 *
3102 * Scan request control flags are used to control the handling
3103 * of NL80211_CMD_TRIGGER_SCAN and NL80211_CMD_START_SCHED_SCAN
3104 * requests.
3105 *
3106 * @NL80211_SCAN_FLAG_LOW_PRIORITY: scan request has low priority
3107 * @NL80211_SCAN_FLAG_FLUSH: flush cache before scanning
3108 * @NL80211_SCAN_FLAG_AP: force a scan even if the interface is configured
3109 * as AP and the beaconing has already been configured. This attribute is
3110 * dangerous because will destroy stations performance as a lot of frames
3111 * will be lost while scanning off-channel, therefore it must be used only
3112 * when really needed
3113 */
3114enum nl80211_scan_flags {
3115 NL80211_SCAN_FLAG_LOW_PRIORITY = 1<<0,
3116 NL80211_SCAN_FLAG_FLUSH = 1<<1,
3117 NL80211_SCAN_FLAG_AP = 1<<2,
3118};
3119
3072#endif /* __LINUX_NL80211_H */ 3120#endif /* __LINUX_NL80211_H */