diff options
| author | David S. Miller <davem@davemloft.net> | 2017-10-11 13:15:01 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2017-10-11 13:15:01 -0400 |
| commit | df2fd38a08272fcc2c658f2c4d7d6318e8da593e (patch) | |
| tree | 0573548f36917a3af84d571cac557da6f5eab032 /include | |
| parent | b8226962b1c49c784aeddb9d2fafbf53dfdc2190 (diff) | |
| parent | 90a53e4432b12288316efaa5f308adafb8d304b0 (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.h | 1 | ||||
| -rw-r--r-- | include/net/cfg80211.h | 40 | ||||
| -rw-r--r-- | include/net/fq.h | 7 | ||||
| -rw-r--r-- | include/net/fq_impl.h | 72 | ||||
| -rw-r--r-- | include/net/mac80211.h | 8 | ||||
| -rw-r--r-- | include/uapi/linux/nl80211.h | 82 |
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 | */ | ||
| 4358 | int 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 | */ |
| 5448 | struct cfg80211_roam_info { | 5432 | struct 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 | */ | ||
| 5477 | void 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. */ | ||
| 94 | typedef bool fq_skb_filter_t(struct fq *, | ||
| 95 | struct fq_tin *, | ||
| 96 | struct fq_flow *, | ||
| 97 | struct sk_buff *, | ||
| 98 | void *); | ||
| 99 | |||
| 93 | typedef struct fq_flow *fq_flow_get_default_t(struct fq *, | 100 | typedef 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 | ||
| 15 | static struct sk_buff *fq_flow_dequeue(struct fq *fq, | 15 | static 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 | |||
| 28 | static 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 | |||
| 46 | static 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 | ||
| 204 | static 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 | |||
| 227 | static 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 | |||
| 191 | static void fq_flow_reset(struct fq *fq, | 243 | static 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 | */ |
| 5442 | void ieee80211_send_bar(struct ieee80211_vif *vif, u8 *ra, u16 tid, u16 ssn); | 5442 | void 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 | */ | ||
| 5444 | void ieee80211_manage_rx_ba_offl(struct ieee80211_vif *vif, const u8 *addr, | 5450 | void 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 | */ |
| 3951 | enum nl80211_mfp { | 3966 | enum 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 | ||
| 3956 | enum nl80211_wpa_versions { | 3972 | enum 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 | */ |
| 5016 | enum nl80211_scan_flags { | 5060 | enum 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 | /** |
