aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2017-10-11 13:15:01 -0400
committerDavid S. Miller <davem@davemloft.net>2017-10-11 13:15:01 -0400
commitdf2fd38a08272fcc2c658f2c4d7d6318e8da593e (patch)
tree0573548f36917a3af84d571cac557da6f5eab032 /include
parentb8226962b1c49c784aeddb9d2fafbf53dfdc2190 (diff)
parent90a53e4432b12288316efaa5f308adafb8d304b0 (diff)
Merge tag 'mac80211-next-for-davem-2017-10-11' of git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next
Johannes Berg says: ==================== Work continues in various areas: * port authorized event for 4-way-HS offload (Avi) * enable MFP optional for such devices (Emmanuel) * Kees's timer setup patch for mac80211 mesh (the part that isn't trivially scripted) * improve VLAN vs. TXQ handling (myself) * load regulatory database as firmware file (myself) * with various other small improvements and cleanups I merged net-next once in the meantime to allow Kees's timer setup patch to go in. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include')
-rw-r--r--include/linux/ieee80211.h1
-rw-r--r--include/net/cfg80211.h40
-rw-r--r--include/net/fq.h7
-rw-r--r--include/net/fq_impl.h72
-rw-r--r--include/net/mac80211.h8
-rw-r--r--include/uapi/linux/nl80211.h82
6 files changed, 163 insertions, 47 deletions
diff --git a/include/linux/ieee80211.h b/include/linux/ieee80211.h
index 55a604ad459f..ee6657a0ed69 100644
--- a/include/linux/ieee80211.h
+++ b/include/linux/ieee80211.h
@@ -2445,6 +2445,7 @@ enum ieee80211_sa_query_action {
2445#define WLAN_OUI_TYPE_MICROSOFT_WPA 1 2445#define WLAN_OUI_TYPE_MICROSOFT_WPA 1
2446#define WLAN_OUI_TYPE_MICROSOFT_WMM 2 2446#define WLAN_OUI_TYPE_MICROSOFT_WMM 2
2447#define WLAN_OUI_TYPE_MICROSOFT_WPS 4 2447#define WLAN_OUI_TYPE_MICROSOFT_WPS 4
2448#define WLAN_OUI_TYPE_MICROSOFT_TPC 8
2448 2449
2449/* 2450/*
2450 * WMM/802.11e Tspec Element 2451 * WMM/802.11e Tspec Element
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index f12fa5245a45..8b8118a7fadb 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -4347,19 +4347,6 @@ static inline int ieee80211_data_to_8023(struct sk_buff *skb, const u8 *addr,
4347} 4347}
4348 4348
4349/** 4349/**
4350 * ieee80211_data_from_8023 - convert an 802.3 frame to 802.11
4351 * @skb: the 802.3 frame
4352 * @addr: the device MAC address
4353 * @iftype: the virtual interface type
4354 * @bssid: the network bssid (used only for iftype STATION and ADHOC)
4355 * @qos: build 802.11 QoS data frame
4356 * Return: 0 on success, or a negative error code.
4357 */
4358int ieee80211_data_from_8023(struct sk_buff *skb, const u8 *addr,
4359 enum nl80211_iftype iftype, const u8 *bssid,
4360 bool qos);
4361
4362/**
4363 * ieee80211_amsdu_to_8023s - decode an IEEE 802.11n A-MSDU frame 4350 * ieee80211_amsdu_to_8023s - decode an IEEE 802.11n A-MSDU frame
4364 * 4351 *
4365 * Decode an IEEE 802.11 A-MSDU and convert it to a list of 802.3 frames. 4352 * Decode an IEEE 802.11 A-MSDU and convert it to a list of 802.3 frames.
@@ -5441,9 +5428,6 @@ cfg80211_connect_timeout(struct net_device *dev, const u8 *bssid,
5441 * @req_ie_len: association request IEs length 5428 * @req_ie_len: association request IEs length
5442 * @resp_ie: association response IEs (may be %NULL) 5429 * @resp_ie: association response IEs (may be %NULL)
5443 * @resp_ie_len: assoc response IEs length 5430 * @resp_ie_len: assoc response IEs length
5444 * @authorized: true if the 802.1X authentication was done by the driver or is
5445 * not needed (e.g., when Fast Transition protocol was used), false
5446 * otherwise. Ignored for networks that don't use 802.1X authentication.
5447 */ 5431 */
5448struct cfg80211_roam_info { 5432struct cfg80211_roam_info {
5449 struct ieee80211_channel *channel; 5433 struct ieee80211_channel *channel;
@@ -5453,7 +5437,6 @@ struct cfg80211_roam_info {
5453 size_t req_ie_len; 5437 size_t req_ie_len;
5454 const u8 *resp_ie; 5438 const u8 *resp_ie;
5455 size_t resp_ie_len; 5439 size_t resp_ie_len;
5456 bool authorized;
5457}; 5440};
5458 5441
5459/** 5442/**
@@ -5478,6 +5461,23 @@ void cfg80211_roamed(struct net_device *dev, struct cfg80211_roam_info *info,
5478 gfp_t gfp); 5461 gfp_t gfp);
5479 5462
5480/** 5463/**
5464 * cfg80211_port_authorized - notify cfg80211 of successful security association
5465 *
5466 * @dev: network device
5467 * @bssid: the BSSID of the AP
5468 * @gfp: allocation flags
5469 *
5470 * This function should be called by a driver that supports 4 way handshake
5471 * offload after a security association was successfully established (i.e.,
5472 * the 4 way handshake was completed successfully). The call to this function
5473 * should be preceded with a call to cfg80211_connect_result(),
5474 * cfg80211_connect_done(), cfg80211_connect_bss() or cfg80211_roamed() to
5475 * indicate the 802.11 association.
5476 */
5477void cfg80211_port_authorized(struct net_device *dev, const u8 *bssid,
5478 gfp_t gfp);
5479
5480/**
5481 * cfg80211_disconnected - notify cfg80211 that connection was dropped 5481 * cfg80211_disconnected - notify cfg80211 that connection was dropped
5482 * 5482 *
5483 * @dev: network device 5483 * @dev: network device
@@ -5934,7 +5934,8 @@ int cfg80211_get_p2p_attr(const u8 *ies, unsigned int len,
5934 * @ies: the IE buffer 5934 * @ies: the IE buffer
5935 * @ielen: the length of the IE buffer 5935 * @ielen: the length of the IE buffer
5936 * @ids: an array with element IDs that are allowed before 5936 * @ids: an array with element IDs that are allowed before
5937 * the split 5937 * the split. A WLAN_EID_EXTENSION value means that the next
5938 * EID in the list is a sub-element of the EXTENSION IE.
5938 * @n_ids: the size of the element ID array 5939 * @n_ids: the size of the element ID array
5939 * @after_ric: array IE types that come after the RIC element 5940 * @after_ric: array IE types that come after the RIC element
5940 * @n_after_ric: size of the @after_ric array 5941 * @n_after_ric: size of the @after_ric array
@@ -5965,7 +5966,8 @@ size_t ieee80211_ie_split_ric(const u8 *ies, size_t ielen,
5965 * @ies: the IE buffer 5966 * @ies: the IE buffer
5966 * @ielen: the length of the IE buffer 5967 * @ielen: the length of the IE buffer
5967 * @ids: an array with element IDs that are allowed before 5968 * @ids: an array with element IDs that are allowed before
5968 * the split 5969 * the split. A WLAN_EID_EXTENSION value means that the next
5970 * EID in the list is a sub-element of the EXTENSION IE.
5969 * @n_ids: the size of the element ID array 5971 * @n_ids: the size of the element ID array
5970 * @offset: offset where to start splitting in the buffer 5972 * @offset: offset where to start splitting in the buffer
5971 * 5973 *
diff --git a/include/net/fq.h b/include/net/fq.h
index 6d8521a30c5c..ac944a686840 100644
--- a/include/net/fq.h
+++ b/include/net/fq.h
@@ -90,6 +90,13 @@ typedef void fq_skb_free_t(struct fq *,
90 struct fq_flow *, 90 struct fq_flow *,
91 struct sk_buff *); 91 struct sk_buff *);
92 92
93/* Return %true to filter (drop) the frame. */
94typedef bool fq_skb_filter_t(struct fq *,
95 struct fq_tin *,
96 struct fq_flow *,
97 struct sk_buff *,
98 void *);
99
93typedef struct fq_flow *fq_flow_get_default_t(struct fq *, 100typedef struct fq_flow *fq_flow_get_default_t(struct fq *,
94 struct fq_tin *, 101 struct fq_tin *,
95 int idx, 102 int idx,
diff --git a/include/net/fq_impl.h b/include/net/fq_impl.h
index 4e6131cd3f43..8b237e4afee6 100644
--- a/include/net/fq_impl.h
+++ b/include/net/fq_impl.h
@@ -12,24 +12,22 @@
12 12
13/* functions that are embedded into includer */ 13/* functions that are embedded into includer */
14 14
15static struct sk_buff *fq_flow_dequeue(struct fq *fq, 15static void fq_adjust_removal(struct fq *fq,
16 struct fq_flow *flow) 16 struct fq_flow *flow,
17 struct sk_buff *skb)
17{ 18{
18 struct fq_tin *tin = flow->tin; 19 struct fq_tin *tin = flow->tin;
19 struct fq_flow *i;
20 struct sk_buff *skb;
21
22 lockdep_assert_held(&fq->lock);
23
24 skb = __skb_dequeue(&flow->queue);
25 if (!skb)
26 return NULL;
27 20
28 tin->backlog_bytes -= skb->len; 21 tin->backlog_bytes -= skb->len;
29 tin->backlog_packets--; 22 tin->backlog_packets--;
30 flow->backlog -= skb->len; 23 flow->backlog -= skb->len;
31 fq->backlog--; 24 fq->backlog--;
32 fq->memory_usage -= skb->truesize; 25 fq->memory_usage -= skb->truesize;
26}
27
28static void fq_rejigger_backlog(struct fq *fq, struct fq_flow *flow)
29{
30 struct fq_flow *i;
33 31
34 if (flow->backlog == 0) { 32 if (flow->backlog == 0) {
35 list_del_init(&flow->backlogchain); 33 list_del_init(&flow->backlogchain);
@@ -43,6 +41,21 @@ static struct sk_buff *fq_flow_dequeue(struct fq *fq,
43 list_move_tail(&flow->backlogchain, 41 list_move_tail(&flow->backlogchain,
44 &i->backlogchain); 42 &i->backlogchain);
45 } 43 }
44}
45
46static struct sk_buff *fq_flow_dequeue(struct fq *fq,
47 struct fq_flow *flow)
48{
49 struct sk_buff *skb;
50
51 lockdep_assert_held(&fq->lock);
52
53 skb = __skb_dequeue(&flow->queue);
54 if (!skb)
55 return NULL;
56
57 fq_adjust_removal(fq, flow, skb);
58 fq_rejigger_backlog(fq, flow);
46 59
47 return skb; 60 return skb;
48} 61}
@@ -188,6 +201,45 @@ static void fq_tin_enqueue(struct fq *fq,
188 } 201 }
189} 202}
190 203
204static void fq_flow_filter(struct fq *fq,
205 struct fq_flow *flow,
206 fq_skb_filter_t filter_func,
207 void *filter_data,
208 fq_skb_free_t free_func)
209{
210 struct fq_tin *tin = flow->tin;
211 struct sk_buff *skb, *tmp;
212
213 lockdep_assert_held(&fq->lock);
214
215 skb_queue_walk_safe(&flow->queue, skb, tmp) {
216 if (!filter_func(fq, tin, flow, skb, filter_data))
217 continue;
218
219 __skb_unlink(skb, &flow->queue);
220 fq_adjust_removal(fq, flow, skb);
221 free_func(fq, tin, flow, skb);
222 }
223
224 fq_rejigger_backlog(fq, flow);
225}
226
227static void fq_tin_filter(struct fq *fq,
228 struct fq_tin *tin,
229 fq_skb_filter_t filter_func,
230 void *filter_data,
231 fq_skb_free_t free_func)
232{
233 struct fq_flow *flow;
234
235 lockdep_assert_held(&fq->lock);
236
237 list_for_each_entry(flow, &tin->new_flows, flowchain)
238 fq_flow_filter(fq, flow, filter_func, filter_data, free_func);
239 list_for_each_entry(flow, &tin->old_flows, flowchain)
240 fq_flow_filter(fq, flow, filter_func, filter_data, free_func);
241}
242
191static void fq_flow_reset(struct fq *fq, 243static void fq_flow_reset(struct fq *fq,
192 struct fq_flow *flow, 244 struct fq_flow *flow,
193 fq_skb_free_t free_func) 245 fq_skb_free_t free_func)
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index 885690fa39c8..cc9073e45be9 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -5441,8 +5441,14 @@ void ieee80211_mark_rx_ba_filtered_frames(struct ieee80211_sta *pubsta, u8 tid,
5441 */ 5441 */
5442void ieee80211_send_bar(struct ieee80211_vif *vif, u8 *ra, u16 tid, u16 ssn); 5442void ieee80211_send_bar(struct ieee80211_vif *vif, u8 *ra, u16 tid, u16 ssn);
5443 5443
5444/**
5445 * ieee80211_manage_rx_ba_offl - helper to queue an RX BA work
5446 * @vif: &struct ieee80211_vif pointer from the add_interface callback
5447 * @addr: station mac address
5448 * @tid: the rx tid
5449 */
5444void ieee80211_manage_rx_ba_offl(struct ieee80211_vif *vif, const u8 *addr, 5450void ieee80211_manage_rx_ba_offl(struct ieee80211_vif *vif, const u8 *addr,
5445 unsigned int bit); 5451 unsigned int tid);
5446 5452
5447/** 5453/**
5448 * ieee80211_start_rx_ba_session_offl - start a Rx BA session 5454 * ieee80211_start_rx_ba_session_offl - start a Rx BA session
diff --git a/include/uapi/linux/nl80211.h b/include/uapi/linux/nl80211.h
index 51626b4175c0..f882fe1f9709 100644
--- a/include/uapi/linux/nl80211.h
+++ b/include/uapi/linux/nl80211.h
@@ -569,13 +569,14 @@
569 * authentication/association or not receiving a response from the AP. 569 * authentication/association or not receiving a response from the AP.
570 * Non-zero %NL80211_ATTR_STATUS_CODE value is indicated in that case as 570 * Non-zero %NL80211_ATTR_STATUS_CODE value is indicated in that case as
571 * well to remain backwards compatible. 571 * well to remain backwards compatible.
572 * @NL80211_CMD_ROAM: notifcation indicating the card/driver roamed by itself. 572 * When establishing a security association, drivers that support 4 way
573 * When the driver roamed in a network that requires 802.1X authentication, 573 * handshake offload should send %NL80211_CMD_PORT_AUTHORIZED event when
574 * %NL80211_ATTR_PORT_AUTHORIZED should be set if the 802.1X authentication 574 * the 4 way handshake is completed successfully.
575 * was done by the driver or if roaming was done using Fast Transition 575 * @NL80211_CMD_ROAM: Notification indicating the card/driver roamed by itself.
576 * protocol (in which case 802.1X authentication is not needed). If 576 * When a security association was established with the new AP (e.g. if
577 * %NL80211_ATTR_PORT_AUTHORIZED is not set, user space is responsible for 577 * the FT protocol was used for roaming or the driver completed the 4 way
578 * the 802.1X authentication. 578 * handshake), this event should be followed by an
579 * %NL80211_CMD_PORT_AUTHORIZED event.
579 * @NL80211_CMD_DISCONNECT: drop a given connection; also used to notify 580 * @NL80211_CMD_DISCONNECT: drop a given connection; also used to notify
580 * userspace that a connection was dropped by the AP or due to other 581 * userspace that a connection was dropped by the AP or due to other
581 * reasons, for this the %NL80211_ATTR_DISCONNECTED_BY_AP and 582 * reasons, for this the %NL80211_ATTR_DISCONNECTED_BY_AP and
@@ -982,6 +983,14 @@
982 * @NL80211_CMD_DEL_PMK: For offloaded 4-Way handshake, delete the previously 983 * @NL80211_CMD_DEL_PMK: For offloaded 4-Way handshake, delete the previously
983 * configured PMK for the authenticator address identified by 984 * configured PMK for the authenticator address identified by
984 * &NL80211_ATTR_MAC. 985 * &NL80211_ATTR_MAC.
986 * @NL80211_CMD_PORT_AUTHORIZED: An event that indicates that the 4 way
987 * handshake was completed successfully by the driver. The BSSID is
988 * specified with &NL80211_ATTR_MAC. Drivers that support 4 way handshake
989 * offload should send this event after indicating 802.11 association with
990 * &NL80211_CMD_CONNECT or &NL80211_CMD_ROAM. If the 4 way handshake failed
991 * &NL80211_CMD_DISCONNECT should be indicated instead.
992 *
993 * @NL80211_CMD_RELOAD_REGDB: Request that the regdb firmware file is reloaded.
985 * 994 *
986 * @NL80211_CMD_MAX: highest used command number 995 * @NL80211_CMD_MAX: highest used command number
987 * @__NL80211_CMD_AFTER_LAST: internal use 996 * @__NL80211_CMD_AFTER_LAST: internal use
@@ -1185,6 +1194,10 @@ enum nl80211_commands {
1185 NL80211_CMD_SET_PMK, 1194 NL80211_CMD_SET_PMK,
1186 NL80211_CMD_DEL_PMK, 1195 NL80211_CMD_DEL_PMK,
1187 1196
1197 NL80211_CMD_PORT_AUTHORIZED,
1198
1199 NL80211_CMD_RELOAD_REGDB,
1200
1188 /* add new commands above here */ 1201 /* add new commands above here */
1189 1202
1190 /* used to define NL80211_CMD_MAX below */ 1203 /* used to define NL80211_CMD_MAX below */
@@ -1407,8 +1420,12 @@ enum nl80211_commands {
1407 * 1420 *
1408 * @NL80211_ATTR_USE_MFP: Whether management frame protection (IEEE 802.11w) is 1421 * @NL80211_ATTR_USE_MFP: Whether management frame protection (IEEE 802.11w) is
1409 * used for the association (&enum nl80211_mfp, represented as a u32); 1422 * used for the association (&enum nl80211_mfp, represented as a u32);
1410 * this attribute can be used 1423 * this attribute can be used with %NL80211_CMD_ASSOCIATE and
1411 * with %NL80211_CMD_ASSOCIATE and %NL80211_CMD_CONNECT requests 1424 * %NL80211_CMD_CONNECT requests. %NL80211_MFP_OPTIONAL is not allowed for
1425 * %NL80211_CMD_ASSOCIATE since user space SME is expected and hence, it
1426 * must have decided whether to use management frame protection or not.
1427 * Setting %NL80211_MFP_OPTIONAL with a %NL80211_CMD_CONNECT request will
1428 * let the driver (or the firmware) decide whether to use MFP or not.
1412 * 1429 *
1413 * @NL80211_ATTR_STA_FLAGS2: Attribute containing a 1430 * @NL80211_ATTR_STA_FLAGS2: Attribute containing a
1414 * &struct nl80211_sta_flag_update. 1431 * &struct nl80211_sta_flag_update.
@@ -2134,10 +2151,7 @@ enum nl80211_commands {
2134 * in %NL80211_CMD_CONNECT to indicate that for 802.1X authentication it 2151 * in %NL80211_CMD_CONNECT to indicate that for 802.1X authentication it
2135 * wants to use the supported offload of the 4-way handshake. 2152 * wants to use the supported offload of the 4-way handshake.
2136 * @NL80211_ATTR_PMKR0_NAME: PMK-R0 Name for offloaded FT. 2153 * @NL80211_ATTR_PMKR0_NAME: PMK-R0 Name for offloaded FT.
2137 * @NL80211_ATTR_PORT_AUTHORIZED: flag attribute used in %NL80211_CMD_ROAMED 2154 * @NL80211_ATTR_PORT_AUTHORIZED: (reserved)
2138 * notification indicating that that 802.1X authentication was done by
2139 * the driver or is not needed (because roaming used the Fast Transition
2140 * protocol).
2141 * 2155 *
2142 * @NUM_NL80211_ATTR: total number of nl80211_attrs available 2156 * @NUM_NL80211_ATTR: total number of nl80211_attrs available
2143 * @NL80211_ATTR_MAX: highest attribute number currently defined 2157 * @NL80211_ATTR_MAX: highest attribute number currently defined
@@ -3947,10 +3961,12 @@ enum nl80211_key_type {
3947 * enum nl80211_mfp - Management frame protection state 3961 * enum nl80211_mfp - Management frame protection state
3948 * @NL80211_MFP_NO: Management frame protection not used 3962 * @NL80211_MFP_NO: Management frame protection not used
3949 * @NL80211_MFP_REQUIRED: Management frame protection required 3963 * @NL80211_MFP_REQUIRED: Management frame protection required
3964 * @NL80211_MFP_OPTIONAL: Management frame protection is optional
3950 */ 3965 */
3951enum nl80211_mfp { 3966enum nl80211_mfp {
3952 NL80211_MFP_NO, 3967 NL80211_MFP_NO,
3953 NL80211_MFP_REQUIRED, 3968 NL80211_MFP_REQUIRED,
3969 NL80211_MFP_OPTIONAL,
3954}; 3970};
3955 3971
3956enum nl80211_wpa_versions { 3972enum nl80211_wpa_versions {
@@ -4914,6 +4930,17 @@ enum nl80211_feature_flags {
4914 * handshake with 802.1X in station mode (will pass EAP frames to the host 4930 * handshake with 802.1X in station mode (will pass EAP frames to the host
4915 * and accept the set_pmk/del_pmk commands), doing it in the host might not 4931 * and accept the set_pmk/del_pmk commands), doing it in the host might not
4916 * be supported. 4932 * be supported.
4933 * @NL80211_EXT_FEATURE_FILS_MAX_CHANNEL_TIME: Driver is capable of overriding
4934 * the max channel attribute in the FILS request params IE with the
4935 * actual dwell time.
4936 * @NL80211_EXT_FEATURE_ACCEPT_BCAST_PROBE_RESP: Driver accepts broadcast probe
4937 * response
4938 * @NL80211_EXT_FEATURE_OCE_PROBE_REQ_HIGH_TX_RATE: Driver supports sending
4939 * the first probe request in each channel at rate of at least 5.5Mbps.
4940 * @NL80211_EXT_FEATURE_OCE_PROBE_REQ_DEFERRAL_SUPPRESSION: Driver supports
4941 * probe request tx deferral and suppression
4942 * @NL80211_EXT_FEATURE_MFP_OPTIONAL: Driver supports the %NL80211_MFP_OPTIONAL
4943 * value in %NL80211_ATTR_USE_MFP.
4917 * 4944 *
4918 * @NUM_NL80211_EXT_FEATURES: number of extended features. 4945 * @NUM_NL80211_EXT_FEATURES: number of extended features.
4919 * @MAX_NL80211_EXT_FEATURES: highest extended feature index. 4946 * @MAX_NL80211_EXT_FEATURES: highest extended feature index.
@@ -4936,6 +4963,11 @@ enum nl80211_ext_feature_index {
4936 NL80211_EXT_FEATURE_FILS_SK_OFFLOAD, 4963 NL80211_EXT_FEATURE_FILS_SK_OFFLOAD,
4937 NL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_PSK, 4964 NL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_PSK,
4938 NL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_1X, 4965 NL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_1X,
4966 NL80211_EXT_FEATURE_FILS_MAX_CHANNEL_TIME,
4967 NL80211_EXT_FEATURE_ACCEPT_BCAST_PROBE_RESP,
4968 NL80211_EXT_FEATURE_OCE_PROBE_REQ_HIGH_TX_RATE,
4969 NL80211_EXT_FEATURE_OCE_PROBE_REQ_DEFERRAL_SUPPRESSION,
4970 NL80211_EXT_FEATURE_MFP_OPTIONAL,
4939 4971
4940 /* add new features before the definition below */ 4972 /* add new features before the definition below */
4941 NUM_NL80211_EXT_FEATURES, 4973 NUM_NL80211_EXT_FEATURES,
@@ -5012,12 +5044,28 @@ enum nl80211_timeout_reason {
5012 * locally administered 1, multicast 0) is assumed. 5044 * locally administered 1, multicast 0) is assumed.
5013 * This flag must not be requested when the feature isn't supported, check 5045 * This flag must not be requested when the feature isn't supported, check
5014 * the nl80211 feature flags for the device. 5046 * the nl80211 feature flags for the device.
5047 * @NL80211_SCAN_FLAG_FILS_MAX_CHANNEL_TIME: fill the dwell time in the FILS
5048 * request parameters IE in the probe request
5049 * @NL80211_SCAN_FLAG_ACCEPT_BCAST_PROBE_RESP: accept broadcast probe responses
5050 * @NL80211_SCAN_FLAG_OCE_PROBE_REQ_HIGH_TX_RATE: send probe request frames at
5051 * rate of at least 5.5M. In case non OCE AP is dicovered in the channel,
5052 * only the first probe req in the channel will be sent in high rate.
5053 * @NL80211_SCAN_FLAG_OCE_PROBE_REQ_DEFERRAL_SUPPRESSION: allow probe request
5054 * tx deferral (dot11FILSProbeDelay shall be set to 15ms)
5055 * and suppression (if it has received a broadcast Probe Response frame,
5056 * Beacon frame or FILS Discovery frame from an AP that the STA considers
5057 * a suitable candidate for (re-)association - suitable in terms of
5058 * SSID and/or RSSI
5015 */ 5059 */
5016enum nl80211_scan_flags { 5060enum nl80211_scan_flags {
5017 NL80211_SCAN_FLAG_LOW_PRIORITY = 1<<0, 5061 NL80211_SCAN_FLAG_LOW_PRIORITY = 1<<0,
5018 NL80211_SCAN_FLAG_FLUSH = 1<<1, 5062 NL80211_SCAN_FLAG_FLUSH = 1<<1,
5019 NL80211_SCAN_FLAG_AP = 1<<2, 5063 NL80211_SCAN_FLAG_AP = 1<<2,
5020 NL80211_SCAN_FLAG_RANDOM_ADDR = 1<<3, 5064 NL80211_SCAN_FLAG_RANDOM_ADDR = 1<<3,
5065 NL80211_SCAN_FLAG_FILS_MAX_CHANNEL_TIME = 1<<4,
5066 NL80211_SCAN_FLAG_ACCEPT_BCAST_PROBE_RESP = 1<<5,
5067 NL80211_SCAN_FLAG_OCE_PROBE_REQ_HIGH_TX_RATE = 1<<6,
5068 NL80211_SCAN_FLAG_OCE_PROBE_REQ_DEFERRAL_SUPPRESSION = 1<<7,
5021}; 5069};
5022 5070
5023/** 5071/**