diff options
author | John W. Linville <linville@tuxdriver.com> | 2012-12-06 14:58:41 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2012-12-06 14:58:41 -0500 |
commit | 403e16731ffddc097eae89f53f9a7b0f0c9769c4 (patch) | |
tree | 228d17985ad8ea22a7763457bf9641eb44781568 /include | |
parent | 55cb0797fa779e36f62876a8aa44cbf3984e8d59 (diff) | |
parent | da29d2a5780d80857773d7776b7603a449b0b6e0 (diff) |
Merge branch 'for-john' of git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next
Conflicts:
drivers/net/wireless/mwifiex/sta_ioctl.c
net/mac80211/scan.c
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/ieee80211.h | 15 | ||||
-rw-r--r-- | include/net/cfg80211.h | 69 | ||||
-rw-r--r-- | include/net/ieee80211_radiotap.h | 24 | ||||
-rw-r--r-- | include/net/mac80211.h | 12 | ||||
-rw-r--r-- | include/uapi/linux/nl80211.h | 16 |
5 files changed, 115 insertions, 21 deletions
diff --git a/include/linux/ieee80211.h b/include/linux/ieee80211.h index f9c5a787d350..8f690e53dd89 100644 --- a/include/linux/ieee80211.h +++ b/include/linux/ieee80211.h | |||
@@ -1213,6 +1213,21 @@ struct ieee80211_vht_cap { | |||
1213 | } __packed; | 1213 | } __packed; |
1214 | 1214 | ||
1215 | /** | 1215 | /** |
1216 | * enum ieee80211_vht_chanwidth - VHT channel width | ||
1217 | * @IEEE80211_VHT_CHANWIDTH_USE_HT: use the HT operation IE to | ||
1218 | * determine the channel width (20 or 40 MHz) | ||
1219 | * @IEEE80211_VHT_CHANWIDTH_80MHZ: 80 MHz bandwidth | ||
1220 | * @IEEE80211_VHT_CHANWIDTH_160MHZ: 160 MHz bandwidth | ||
1221 | * @IEEE80211_VHT_CHANWIDTH_80P80MHZ: 80+80 MHz bandwidth | ||
1222 | */ | ||
1223 | enum ieee80211_vht_chanwidth { | ||
1224 | IEEE80211_VHT_CHANWIDTH_USE_HT = 0, | ||
1225 | IEEE80211_VHT_CHANWIDTH_80MHZ = 1, | ||
1226 | IEEE80211_VHT_CHANWIDTH_160MHZ = 2, | ||
1227 | IEEE80211_VHT_CHANWIDTH_80P80MHZ = 3, | ||
1228 | }; | ||
1229 | |||
1230 | /** | ||
1216 | * struct ieee80211_vht_operation - VHT operation IE | 1231 | * struct ieee80211_vht_operation - VHT operation IE |
1217 | * | 1232 | * |
1218 | * This structure is the "VHT operation element" as | 1233 | * This structure is the "VHT operation element" as |
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h index e78db2cf3d1b..8e6a6b73b9c9 100644 --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h | |||
@@ -58,6 +58,8 @@ | |||
58 | * structures here describe these capabilities in detail. | 58 | * structures here describe these capabilities in detail. |
59 | */ | 59 | */ |
60 | 60 | ||
61 | struct wiphy; | ||
62 | |||
61 | /* | 63 | /* |
62 | * wireless hardware capability structures | 64 | * wireless hardware capability structures |
63 | */ | 65 | */ |
@@ -388,6 +390,22 @@ cfg80211_chandef_compatible(const struct cfg80211_chan_def *chandef1, | |||
388 | const struct cfg80211_chan_def *chandef2); | 390 | const struct cfg80211_chan_def *chandef2); |
389 | 391 | ||
390 | /** | 392 | /** |
393 | * cfg80211_chandef_valid - check if a channel definition is valid | ||
394 | * @chandef: the channel definition to check | ||
395 | */ | ||
396 | bool cfg80211_chandef_valid(const struct cfg80211_chan_def *chandef); | ||
397 | |||
398 | /** | ||
399 | * cfg80211_chandef_usable - check if secondary channels can be used | ||
400 | * @wiphy: the wiphy to validate against | ||
401 | * @chandef: the channel definition to check | ||
402 | * @prohibited_flags: the regulatory chanenl flags that must not be set | ||
403 | */ | ||
404 | bool cfg80211_chandef_usable(struct wiphy *wiphy, | ||
405 | const struct cfg80211_chan_def *chandef, | ||
406 | u32 prohibited_flags); | ||
407 | |||
408 | /** | ||
391 | * enum survey_info_flags - survey information flags | 409 | * enum survey_info_flags - survey information flags |
392 | * | 410 | * |
393 | * @SURVEY_INFO_NOISE_DBM: noise (in dBm) was filled in | 411 | * @SURVEY_INFO_NOISE_DBM: noise (in dBm) was filled in |
@@ -520,6 +538,8 @@ struct cfg80211_beacon_data { | |||
520 | * @privacy: the BSS uses privacy | 538 | * @privacy: the BSS uses privacy |
521 | * @auth_type: Authentication type (algorithm) | 539 | * @auth_type: Authentication type (algorithm) |
522 | * @inactivity_timeout: time in seconds to determine station's inactivity. | 540 | * @inactivity_timeout: time in seconds to determine station's inactivity. |
541 | * @p2p_ctwindow: P2P CT Window | ||
542 | * @p2p_opp_ps: P2P opportunistic PS | ||
523 | */ | 543 | */ |
524 | struct cfg80211_ap_settings { | 544 | struct cfg80211_ap_settings { |
525 | struct cfg80211_chan_def chandef; | 545 | struct cfg80211_chan_def chandef; |
@@ -534,6 +554,8 @@ struct cfg80211_ap_settings { | |||
534 | bool privacy; | 554 | bool privacy; |
535 | enum nl80211_auth_type auth_type; | 555 | enum nl80211_auth_type auth_type; |
536 | int inactivity_timeout; | 556 | int inactivity_timeout; |
557 | u8 p2p_ctwindow; | ||
558 | bool p2p_opp_ps; | ||
537 | }; | 559 | }; |
538 | 560 | ||
539 | /** | 561 | /** |
@@ -895,6 +917,8 @@ struct mpath_info { | |||
895 | * @ap_isolate: do not forward packets between connected stations | 917 | * @ap_isolate: do not forward packets between connected stations |
896 | * @ht_opmode: HT Operation mode | 918 | * @ht_opmode: HT Operation mode |
897 | * (u16 = opmode, -1 = do not change) | 919 | * (u16 = opmode, -1 = do not change) |
920 | * @p2p_ctwindow: P2P CT Window (-1 = no change) | ||
921 | * @p2p_opp_ps: P2P opportunistic PS (-1 = no change) | ||
898 | */ | 922 | */ |
899 | struct bss_parameters { | 923 | struct bss_parameters { |
900 | int use_cts_prot; | 924 | int use_cts_prot; |
@@ -904,6 +928,7 @@ struct bss_parameters { | |||
904 | u8 basic_rates_len; | 928 | u8 basic_rates_len; |
905 | int ap_isolate; | 929 | int ap_isolate; |
906 | int ht_opmode; | 930 | int ht_opmode; |
931 | s8 p2p_ctwindow, p2p_opp_ps; | ||
907 | }; | 932 | }; |
908 | 933 | ||
909 | /** | 934 | /** |
@@ -1045,9 +1070,6 @@ struct ieee80211_txq_params { | |||
1045 | u8 aifs; | 1070 | u8 aifs; |
1046 | }; | 1071 | }; |
1047 | 1072 | ||
1048 | /* from net/wireless.h */ | ||
1049 | struct wiphy; | ||
1050 | |||
1051 | /** | 1073 | /** |
1052 | * DOC: Scanning and BSS list handling | 1074 | * DOC: Scanning and BSS list handling |
1053 | * | 1075 | * |
@@ -1184,6 +1206,18 @@ enum cfg80211_signal_type { | |||
1184 | }; | 1206 | }; |
1185 | 1207 | ||
1186 | /** | 1208 | /** |
1209 | * struct cfg80211_bss_ie_data - BSS entry IE data | ||
1210 | * @rcu_head: internal use, for freeing | ||
1211 | * @len: length of the IEs | ||
1212 | * @data: IE data | ||
1213 | */ | ||
1214 | struct cfg80211_bss_ies { | ||
1215 | struct rcu_head rcu_head; | ||
1216 | int len; | ||
1217 | u8 data[]; | ||
1218 | }; | ||
1219 | |||
1220 | /** | ||
1187 | * struct cfg80211_bss - BSS description | 1221 | * struct cfg80211_bss - BSS description |
1188 | * | 1222 | * |
1189 | * This structure describes a BSS (which may also be a mesh network) | 1223 | * This structure describes a BSS (which may also be a mesh network) |
@@ -1194,36 +1228,34 @@ enum cfg80211_signal_type { | |||
1194 | * @tsf: timestamp of last received update | 1228 | * @tsf: timestamp of last received update |
1195 | * @beacon_interval: the beacon interval as from the frame | 1229 | * @beacon_interval: the beacon interval as from the frame |
1196 | * @capability: the capability field in host byte order | 1230 | * @capability: the capability field in host byte order |
1197 | * @information_elements: the information elements (Note that there | 1231 | * @ies: the information elements (Note that there |
1198 | * is no guarantee that these are well-formed!); this is a pointer to | 1232 | * is no guarantee that these are well-formed!); this is a pointer to |
1199 | * either the beacon_ies or proberesp_ies depending on whether Probe | 1233 | * either the beacon_ies or proberesp_ies depending on whether Probe |
1200 | * Response frame has been received | 1234 | * Response frame has been received |
1201 | * @len_information_elements: total length of the information elements | ||
1202 | * @beacon_ies: the information elements from the last Beacon frame | 1235 | * @beacon_ies: the information elements from the last Beacon frame |
1203 | * @len_beacon_ies: total length of the beacon_ies | ||
1204 | * @proberesp_ies: the information elements from the last Probe Response frame | 1236 | * @proberesp_ies: the information elements from the last Probe Response frame |
1205 | * @len_proberesp_ies: total length of the proberesp_ies | ||
1206 | * @signal: signal strength value (type depends on the wiphy's signal_type) | 1237 | * @signal: signal strength value (type depends on the wiphy's signal_type) |
1207 | * @free_priv: function pointer to free private data | 1238 | * @free_priv: function pointer to free private data |
1208 | * @priv: private area for driver use, has at least wiphy->bss_priv_size bytes | 1239 | * @priv: private area for driver use, has at least wiphy->bss_priv_size bytes |
1209 | */ | 1240 | */ |
1210 | struct cfg80211_bss { | 1241 | struct cfg80211_bss { |
1242 | u64 tsf; | ||
1243 | |||
1211 | struct ieee80211_channel *channel; | 1244 | struct ieee80211_channel *channel; |
1212 | 1245 | ||
1213 | u8 bssid[ETH_ALEN]; | 1246 | const struct cfg80211_bss_ies __rcu *ies; |
1214 | u64 tsf; | 1247 | const struct cfg80211_bss_ies __rcu *beacon_ies; |
1248 | const struct cfg80211_bss_ies __rcu *proberesp_ies; | ||
1249 | |||
1250 | void (*free_priv)(struct cfg80211_bss *bss); | ||
1251 | |||
1252 | s32 signal; | ||
1253 | |||
1215 | u16 beacon_interval; | 1254 | u16 beacon_interval; |
1216 | u16 capability; | 1255 | u16 capability; |
1217 | u8 *information_elements; | ||
1218 | size_t len_information_elements; | ||
1219 | u8 *beacon_ies; | ||
1220 | size_t len_beacon_ies; | ||
1221 | u8 *proberesp_ies; | ||
1222 | size_t len_proberesp_ies; | ||
1223 | 1256 | ||
1224 | s32 signal; | 1257 | u8 bssid[ETH_ALEN]; |
1225 | 1258 | ||
1226 | void (*free_priv)(struct cfg80211_bss *bss); | ||
1227 | u8 priv[0] __attribute__((__aligned__(sizeof(void *)))); | 1259 | u8 priv[0] __attribute__((__aligned__(sizeof(void *)))); |
1228 | }; | 1260 | }; |
1229 | 1261 | ||
@@ -1231,6 +1263,9 @@ struct cfg80211_bss { | |||
1231 | * ieee80211_bss_get_ie - find IE with given ID | 1263 | * ieee80211_bss_get_ie - find IE with given ID |
1232 | * @bss: the bss to search | 1264 | * @bss: the bss to search |
1233 | * @ie: the IE ID | 1265 | * @ie: the IE ID |
1266 | * | ||
1267 | * Note that the return value is an RCU-protected pointer, so | ||
1268 | * rcu_read_lock() must be held when calling this function. | ||
1234 | * Returns %NULL if not found. | 1269 | * Returns %NULL if not found. |
1235 | */ | 1270 | */ |
1236 | const u8 *ieee80211_bss_get_ie(struct cfg80211_bss *bss, u8 ie); | 1271 | const u8 *ieee80211_bss_get_ie(struct cfg80211_bss *bss, u8 ie); |
diff --git a/include/net/ieee80211_radiotap.h b/include/net/ieee80211_radiotap.h index 7f0df133d119..c3999632e616 100644 --- a/include/net/ieee80211_radiotap.h +++ b/include/net/ieee80211_radiotap.h | |||
@@ -186,6 +186,10 @@ struct ieee80211_radiotap_header { | |||
186 | * IEEE80211_RADIOTAP_AMPDU_STATUS u32, u16, u8, u8 unitless | 186 | * IEEE80211_RADIOTAP_AMPDU_STATUS u32, u16, u8, u8 unitless |
187 | * | 187 | * |
188 | * Contains the AMPDU information for the subframe. | 188 | * Contains the AMPDU information for the subframe. |
189 | * | ||
190 | * IEEE80211_RADIOTAP_VHT u16, u8, u8, u8[4], u8, u8, u16 | ||
191 | * | ||
192 | * Contains VHT information about this frame. | ||
189 | */ | 193 | */ |
190 | enum ieee80211_radiotap_type { | 194 | enum ieee80211_radiotap_type { |
191 | IEEE80211_RADIOTAP_TSFT = 0, | 195 | IEEE80211_RADIOTAP_TSFT = 0, |
@@ -209,6 +213,7 @@ enum ieee80211_radiotap_type { | |||
209 | 213 | ||
210 | IEEE80211_RADIOTAP_MCS = 19, | 214 | IEEE80211_RADIOTAP_MCS = 19, |
211 | IEEE80211_RADIOTAP_AMPDU_STATUS = 20, | 215 | IEEE80211_RADIOTAP_AMPDU_STATUS = 20, |
216 | IEEE80211_RADIOTAP_VHT = 21, | ||
212 | 217 | ||
213 | /* valid in every it_present bitmap, even vendor namespaces */ | 218 | /* valid in every it_present bitmap, even vendor namespaces */ |
214 | IEEE80211_RADIOTAP_RADIOTAP_NAMESPACE = 29, | 219 | IEEE80211_RADIOTAP_RADIOTAP_NAMESPACE = 29, |
@@ -282,6 +287,25 @@ enum ieee80211_radiotap_type { | |||
282 | #define IEEE80211_RADIOTAP_AMPDU_DELIM_CRC_ERR 0x0010 | 287 | #define IEEE80211_RADIOTAP_AMPDU_DELIM_CRC_ERR 0x0010 |
283 | #define IEEE80211_RADIOTAP_AMPDU_DELIM_CRC_KNOWN 0x0020 | 288 | #define IEEE80211_RADIOTAP_AMPDU_DELIM_CRC_KNOWN 0x0020 |
284 | 289 | ||
290 | /* For IEEE80211_RADIOTAP_VHT */ | ||
291 | #define IEEE80211_RADIOTAP_VHT_KNOWN_STBC 0x0001 | ||
292 | #define IEEE80211_RADIOTAP_VHT_KNOWN_TXOP_PS_NA 0x0002 | ||
293 | #define IEEE80211_RADIOTAP_VHT_KNOWN_GI 0x0004 | ||
294 | #define IEEE80211_RADIOTAP_VHT_KNOWN_SGI_NSYM_DIS 0x0008 | ||
295 | #define IEEE80211_RADIOTAP_VHT_KNOWN_LDPC_EXTRA_OFDM_SYM 0x0010 | ||
296 | #define IEEE80211_RADIOTAP_VHT_KNOWN_BEAMFORMED 0x0020 | ||
297 | #define IEEE80211_RADIOTAP_VHT_KNOWN_BANDWIDTH 0x0040 | ||
298 | #define IEEE80211_RADIOTAP_VHT_KNOWN_GROUP_ID 0x0080 | ||
299 | #define IEEE80211_RADIOTAP_VHT_KNOWN_PARTIAL_AID 0x0100 | ||
300 | |||
301 | #define IEEE80211_RADIOTAP_VHT_FLAG_STBC 0x01 | ||
302 | #define IEEE80211_RADIOTAP_VHT_FLAG_TXOP_PS_NA 0x02 | ||
303 | #define IEEE80211_RADIOTAP_VHT_FLAG_SGI 0x04 | ||
304 | #define IEEE80211_RADIOTAP_VHT_FLAG_SGI_NSYM_M10_9 0x08 | ||
305 | #define IEEE80211_RADIOTAP_VHT_FLAG_LDPC_EXTRA_OFDM_SYM 0x10 | ||
306 | #define IEEE80211_RADIOTAP_VHT_FLAG_BEAMFORMED 0x20 | ||
307 | |||
308 | |||
285 | /* helpers */ | 309 | /* helpers */ |
286 | static inline int ieee80211_get_radiotap_len(unsigned char *data) | 310 | static inline int ieee80211_get_radiotap_len(unsigned char *data) |
287 | { | 311 | { |
diff --git a/include/net/mac80211.h b/include/net/mac80211.h index db7680acd0da..1c02fb3b3817 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h | |||
@@ -164,7 +164,7 @@ enum ieee80211_chanctx_change { | |||
164 | * active on the channel to receive MIMO transmissions | 164 | * active on the channel to receive MIMO transmissions |
165 | * @rx_chains_dynamic: The number of RX chains that must be enabled | 165 | * @rx_chains_dynamic: The number of RX chains that must be enabled |
166 | * after RTS/CTS handshake to receive SMPS MIMO transmissions; | 166 | * after RTS/CTS handshake to receive SMPS MIMO transmissions; |
167 | * this will always be >= @rx_chains_always. | 167 | * this will always be >= @rx_chains_static. |
168 | * @drv_priv: data area for driver use, will always be aligned to | 168 | * @drv_priv: data area for driver use, will always be aligned to |
169 | * sizeof(void *), size is determined in hw information. | 169 | * sizeof(void *), size is determined in hw information. |
170 | */ | 170 | */ |
@@ -1473,6 +1473,10 @@ enum ieee80211_hw_flags { | |||
1473 | * include _FMT. Use %IEEE80211_RADIOTAP_MCS_HAVE_* values, only | 1473 | * include _FMT. Use %IEEE80211_RADIOTAP_MCS_HAVE_* values, only |
1474 | * adding _BW is supported today. | 1474 | * adding _BW is supported today. |
1475 | * | 1475 | * |
1476 | * @radiotap_vht_details: lists which VHT MCS information the HW reports, | ||
1477 | * the default is _GI | _BANDWIDTH. | ||
1478 | * Use the %IEEE80211_RADIOTAP_VHT_KNOWN_* values. | ||
1479 | * | ||
1476 | * @netdev_features: netdev features to be set in each netdev created | 1480 | * @netdev_features: netdev features to be set in each netdev created |
1477 | * from this HW. Note only HW checksum features are currently | 1481 | * from this HW. Note only HW checksum features are currently |
1478 | * compatible with mac80211. Other feature bits will be rejected. | 1482 | * compatible with mac80211. Other feature bits will be rejected. |
@@ -1499,6 +1503,7 @@ struct ieee80211_hw { | |||
1499 | u8 max_tx_aggregation_subframes; | 1503 | u8 max_tx_aggregation_subframes; |
1500 | u8 offchannel_tx_hw_queue; | 1504 | u8 offchannel_tx_hw_queue; |
1501 | u8 radiotap_mcs_details; | 1505 | u8 radiotap_mcs_details; |
1506 | u16 radiotap_vht_details; | ||
1502 | netdev_features_t netdev_features; | 1507 | netdev_features_t netdev_features; |
1503 | }; | 1508 | }; |
1504 | 1509 | ||
@@ -3139,8 +3144,7 @@ struct sk_buff *ieee80211_nullfunc_get(struct ieee80211_hw *hw, | |||
3139 | * @vif: &struct ieee80211_vif pointer from the add_interface callback. | 3144 | * @vif: &struct ieee80211_vif pointer from the add_interface callback. |
3140 | * @ssid: SSID buffer | 3145 | * @ssid: SSID buffer |
3141 | * @ssid_len: length of SSID | 3146 | * @ssid_len: length of SSID |
3142 | * @ie: buffer containing all IEs except SSID for the template | 3147 | * @tailroom: tailroom to reserve at end of SKB for IEs |
3143 | * @ie_len: length of the IE buffer | ||
3144 | * | 3148 | * |
3145 | * Creates a Probe Request template which can, for example, be uploaded to | 3149 | * Creates a Probe Request template which can, for example, be uploaded to |
3146 | * hardware. | 3150 | * hardware. |
@@ -3148,7 +3152,7 @@ struct sk_buff *ieee80211_nullfunc_get(struct ieee80211_hw *hw, | |||
3148 | struct sk_buff *ieee80211_probereq_get(struct ieee80211_hw *hw, | 3152 | struct sk_buff *ieee80211_probereq_get(struct ieee80211_hw *hw, |
3149 | struct ieee80211_vif *vif, | 3153 | struct ieee80211_vif *vif, |
3150 | const u8 *ssid, size_t ssid_len, | 3154 | const u8 *ssid, size_t ssid_len, |
3151 | const u8 *ie, size_t ie_len); | 3155 | size_t tailroom); |
3152 | 3156 | ||
3153 | /** | 3157 | /** |
3154 | * ieee80211_rts_get - RTS frame generation function | 3158 | * ieee80211_rts_get - RTS frame generation function |
diff --git a/include/uapi/linux/nl80211.h b/include/uapi/linux/nl80211.h index 33a417481ad8..e3e19f8b16f2 100644 --- a/include/uapi/linux/nl80211.h +++ b/include/uapi/linux/nl80211.h | |||
@@ -1303,6 +1303,13 @@ enum nl80211_commands { | |||
1303 | * | 1303 | * |
1304 | * @NL80211_ATTR_SCAN_FLAGS: scan request control flags (u32) | 1304 | * @NL80211_ATTR_SCAN_FLAGS: scan request control flags (u32) |
1305 | * | 1305 | * |
1306 | * @NL80211_ATTR_P2P_CTWINDOW: P2P GO Client Traffic Window (u8), used with | ||
1307 | * the START_AP and SET_BSS commands | ||
1308 | * @NL80211_ATTR_P2P_OPPPS: P2P GO opportunistic PS (u8), used with the | ||
1309 | * START_AP and SET_BSS commands. This can have the values 0 or 1; | ||
1310 | * if not given in START_AP 0 is assumed, if not given in SET_BSS | ||
1311 | * no change is made. | ||
1312 | * | ||
1306 | * @NL80211_ATTR_MAX: highest attribute number currently defined | 1313 | * @NL80211_ATTR_MAX: highest attribute number currently defined |
1307 | * @__NL80211_ATTR_AFTER_LAST: internal use | 1314 | * @__NL80211_ATTR_AFTER_LAST: internal use |
1308 | */ | 1315 | */ |
@@ -1570,6 +1577,9 @@ enum nl80211_attrs { | |||
1570 | NL80211_ATTR_CENTER_FREQ1, | 1577 | NL80211_ATTR_CENTER_FREQ1, |
1571 | NL80211_ATTR_CENTER_FREQ2, | 1578 | NL80211_ATTR_CENTER_FREQ2, |
1572 | 1579 | ||
1580 | NL80211_ATTR_P2P_CTWINDOW, | ||
1581 | NL80211_ATTR_P2P_OPPPS, | ||
1582 | |||
1573 | /* add attributes here, update the policy in nl80211.c */ | 1583 | /* add attributes here, update the policy in nl80211.c */ |
1574 | 1584 | ||
1575 | __NL80211_ATTR_AFTER_LAST, | 1585 | __NL80211_ATTR_AFTER_LAST, |
@@ -3126,6 +3136,10 @@ enum nl80211_ap_sme_features { | |||
3126 | * @NL80211_FEATURE_NEED_OBSS_SCAN: The driver expects userspace to perform | 3136 | * @NL80211_FEATURE_NEED_OBSS_SCAN: The driver expects userspace to perform |
3127 | * OBSS scans and generate 20/40 BSS coex reports. This flag is used only | 3137 | * OBSS scans and generate 20/40 BSS coex reports. This flag is used only |
3128 | * for drivers implementing the CONNECT API, for AUTH/ASSOC it is implied. | 3138 | * for drivers implementing the CONNECT API, for AUTH/ASSOC it is implied. |
3139 | * @NL80211_FEATURE_P2P_GO_CTWIN: P2P GO implementation supports CT Window | ||
3140 | * setting | ||
3141 | * @NL80211_FEATURE_P2P_GO_OPPPS: P2P GO implementation supports opportunistic | ||
3142 | * powersave | ||
3129 | */ | 3143 | */ |
3130 | enum nl80211_feature_flags { | 3144 | enum nl80211_feature_flags { |
3131 | NL80211_FEATURE_SK_TX_STATUS = 1 << 0, | 3145 | NL80211_FEATURE_SK_TX_STATUS = 1 << 0, |
@@ -3139,6 +3153,8 @@ enum nl80211_feature_flags { | |||
3139 | NL80211_FEATURE_AP_SCAN = 1 << 8, | 3153 | NL80211_FEATURE_AP_SCAN = 1 << 8, |
3140 | NL80211_FEATURE_VIF_TXPOWER = 1 << 9, | 3154 | NL80211_FEATURE_VIF_TXPOWER = 1 << 9, |
3141 | NL80211_FEATURE_NEED_OBSS_SCAN = 1 << 10, | 3155 | NL80211_FEATURE_NEED_OBSS_SCAN = 1 << 10, |
3156 | NL80211_FEATURE_P2P_GO_CTWIN = 1 << 11, | ||
3157 | NL80211_FEATURE_P2P_GO_OPPPS = 1 << 12, | ||
3142 | }; | 3158 | }; |
3143 | 3159 | ||
3144 | /** | 3160 | /** |