diff options
Diffstat (limited to 'package/network/utils')
-rw-r--r-- | package/network/utils/iw/patches/001-nl80211_h_sync.patch | 377 |
1 files changed, 371 insertions, 6 deletions
diff --git a/package/network/utils/iw/patches/001-nl80211_h_sync.patch b/package/network/utils/iw/patches/001-nl80211_h_sync.patch index 57f05b711a..5084c5d45f 100644 --- a/package/network/utils/iw/patches/001-nl80211_h_sync.patch +++ b/package/network/utils/iw/patches/001-nl80211_h_sync.patch @@ -1,6 +1,15 @@ --- a/nl80211.h +++ b/nl80211.h -@@ -249,6 +249,22 @@ +@@ -11,7 +11,7 @@ + * Copyright 2008 Jouni Malinen <jouni.malinen@atheros.com> + * Copyright 2008 Colin McCabe <colin@cozybit.com> + * Copyright 2015-2017 Intel Deutschland GmbH +- * Copyright (C) 2018-2019 Intel Corporation ++ * Copyright (C) 2018-2020 Intel Corporation + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above +@@ -249,6 +249,45 @@ */ /** @@ -20,10 +29,33 @@ + */ + +/** ++ * DOC: TID configuration ++ * ++ * TID config support can be checked in the %NL80211_ATTR_TID_CONFIG ++ * attribute given in wiphy capabilities. ++ * ++ * The necessary configuration parameters are mentioned in ++ * &enum nl80211_tid_config_attr and it will be passed to the ++ * %NL80211_CMD_SET_TID_CONFIG command in %NL80211_ATTR_TID_CONFIG. ++ * ++ * If the configuration needs to be applied for specific peer then the MAC ++ * address of the peer needs to be passed in %NL80211_ATTR_MAC, otherwise the ++ * configuration will be applied for all the connected peers in the vif except ++ * any peers that have peer specific configuration for the TID by default; if ++ * the %NL80211_TID_CONFIG_ATTR_OVERRIDE flag is set, peer specific values ++ * will be overwritten. ++ * ++ * All this configuration is valid only for STA's current connection ++ * i.e. the configuration will be reset to default when the STA connects back ++ * after disconnection/roaming, and this configuration will be cleared when ++ * the interface goes down. ++ */ ++ ++/** * enum nl80211_commands - supported nl80211 commands * * @NL80211_CMD_UNSPEC: unspecified command to catch errors -@@ -571,6 +587,14 @@ +@@ -571,6 +610,14 @@ * set of BSSID,frequency parameters is used (i.e., either the enforcing * %NL80211_ATTR_MAC,%NL80211_ATTR_WIPHY_FREQ or the less strict * %NL80211_ATTR_MAC_HINT and %NL80211_ATTR_WIPHY_FREQ_HINT). @@ -38,31 +70,231 @@ * %NL80211_ATTR_PREV_BSSID can be used to request a reassociation within * the ESS in case the device is already associated and an association with * a different BSS is desired. -@@ -2373,6 +2397,12 @@ enum nl80211_commands { +@@ -1101,6 +1148,9 @@ + * peer MAC address and %NL80211_ATTR_FRAME is used to specify the frame + * content. The frame is ethernet data. + * ++ * @NL80211_CMD_SET_TID_CONFIG: Data frame TID specific configuration ++ * is passed using %NL80211_ATTR_TID_CONFIG attribute. ++ * + * @NL80211_CMD_MAX: highest used command number + * @__NL80211_CMD_AFTER_LAST: internal use + */ +@@ -1325,6 +1375,8 @@ enum nl80211_commands { + + NL80211_CMD_PROBE_MESH_LINK, + ++ NL80211_CMD_SET_TID_CONFIG, ++ + /* add new commands above here */ + + /* used to define NL80211_CMD_MAX below */ +@@ -1580,7 +1632,8 @@ enum nl80211_commands { + * flag is included, then control port frames are sent over NL80211 instead + * using %CMD_CONTROL_PORT_FRAME. If control port routing over NL80211 is + * to be used then userspace must also use the %NL80211_ATTR_SOCKET_OWNER +- * flag. ++ * flag. When used with %NL80211_ATTR_CONTROL_PORT_NO_PREAUTH, pre-auth ++ * frames are not forwared over the control port. + * + * @NL80211_ATTR_TESTDATA: Testmode data blob, passed through to the driver. + * We recommend using nested, driver-specific attributes within this. +@@ -2373,6 +2426,53 @@ enum nl80211_commands { * the allowed channel bandwidth configurations. (u8 attribute) * Defined by IEEE P802.11ay/D4.0 section 9.4.2.251, Table 13. * + * @NL80211_ATTR_VLAN_ID: VLAN ID (1..4094) for the station and VLAN group key + * (u16). + * ++ * @NL80211_ATTR_HE_BSS_COLOR: nested attribute for BSS Color Settings. ++ * ++ * @NL80211_ATTR_IFTYPE_AKM_SUITES: nested array attribute, with each entry ++ * using attributes from &enum nl80211_iftype_akm_attributes. This ++ * attribute is sent in a response to %NL80211_CMD_GET_WIPHY indicating ++ * supported AKM suites capability per interface. AKMs advertised in ++ * %NL80211_ATTR_AKM_SUITES are default capabilities if AKM suites not ++ * advertised for a specific interface type. ++ * ++ * @NL80211_ATTR_TID_CONFIG: TID specific configuration in a ++ * nested attribute with &enum nl80211_tid_config_attr sub-attributes; ++ * on output (in wiphy attributes) it contains only the feature sub- ++ * attributes. ++ * ++ * @NL80211_ATTR_CONTROL_PORT_NO_PREAUTH: disable preauth frame rx on control ++ * port in order to forward/receive them as ordinary data frames. ++ * ++ * @NL80211_ATTR_PMK_LIFETIME: Maximum lifetime for PMKSA in seconds (u32, ++ * dot11RSNAConfigPMKReauthThreshold; 0 is not a valid value). ++ * An optional parameter configured through %NL80211_CMD_SET_PMKSA. ++ * Drivers that trigger roaming need to know the lifetime of the ++ * configured PMKSA for triggering the full vs. PMKSA caching based ++ * authentication. This timeout helps authentication methods like SAE, ++ * where PMK gets updated only by going through a full (new SAE) ++ * authentication instead of getting updated during an association for EAP ++ * authentication. No new full authentication within the PMK expiry shall ++ * result in a disassociation at the end of the lifetime. ++ * ++ * @NL80211_ATTR_PMK_REAUTH_THRESHOLD: Reauthentication threshold time, in ++ * terms of percentage of %NL80211_ATTR_PMK_LIFETIME ++ * (u8, dot11RSNAConfigPMKReauthThreshold, 1..100). This is an optional ++ * parameter configured through %NL80211_CMD_SET_PMKSA. Requests the ++ * driver to trigger a full authentication roam (without PMKSA caching) ++ * after the reauthentication threshold time, but before the PMK lifetime ++ * has expired. ++ * ++ * Authentication methods like SAE need to be able to generate a new PMKSA ++ * entry without having to force a disconnection after the PMK timeout. If ++ * no roaming occurs between the reauth threshold and PMK expiration, ++ * disassociation is still forced. ++ * + * @NL80211_ATTR_WIPHY_ANTENNA_GAIN: Configured antenna gain. Used to reduce + * transmit power to stay within regulatory limits. u32, dBi. + * * @NUM_NL80211_ATTR: total number of nl80211_attrs available * @NL80211_ATTR_MAX: highest attribute number currently defined * @__NL80211_ATTR_AFTER_LAST: internal use -@@ -2835,6 +2865,10 @@ enum nl80211_attrs { +@@ -2835,6 +2935,21 @@ enum nl80211_attrs { NL80211_ATTR_WIPHY_EDMG_CHANNELS, NL80211_ATTR_WIPHY_EDMG_BW_CONFIG, + NL80211_ATTR_VLAN_ID, + ++ NL80211_ATTR_HE_BSS_COLOR, ++ ++ NL80211_ATTR_IFTYPE_AKM_SUITES, ++ ++ NL80211_ATTR_TID_CONFIG, ++ ++ NL80211_ATTR_CONTROL_PORT_NO_PREAUTH, ++ ++ NL80211_ATTR_PMK_LIFETIME, ++ NL80211_ATTR_PMK_REAUTH_THRESHOLD, ++ + NL80211_ATTR_WIPHY_ANTENNA_GAIN, + /* add attributes here, update the policy in nl80211.c */ __NL80211_ATTR_AFTER_LAST, -@@ -5484,6 +5518,14 @@ enum nl80211_feature_flags { +@@ -3554,6 +3669,8 @@ enum nl80211_wmm_rule { + * @NL80211_FREQUENCY_ATTR_WMM: this channel has wmm limitations. + * This is a nested attribute that contains the wmm limitation per AC. + * (see &enum nl80211_wmm_rule) ++ * @NL80211_FREQUENCY_ATTR_NO_HE: HE operation is not allowed on this channel ++ * in current regulatory domain. + * @NL80211_FREQUENCY_ATTR_MAX: highest frequency attribute number + * currently defined + * @__NL80211_FREQUENCY_ATTR_AFTER_LAST: internal use +@@ -3583,6 +3700,7 @@ enum nl80211_frequency_attr { + NL80211_FREQUENCY_ATTR_NO_20MHZ, + NL80211_FREQUENCY_ATTR_NO_10MHZ, + NL80211_FREQUENCY_ATTR_WMM, ++ NL80211_FREQUENCY_ATTR_NO_HE, + + /* keep last */ + __NL80211_FREQUENCY_ATTR_AFTER_LAST, +@@ -3780,6 +3898,7 @@ enum nl80211_sched_scan_match_attr { + * @NL80211_RRF_NO_HT40PLUS: channels can't be used in HT40+ operation + * @NL80211_RRF_NO_80MHZ: 80MHz operation not allowed + * @NL80211_RRF_NO_160MHZ: 160MHz operation not allowed ++ * @NL80211_RRF_NO_HE: HE operation not allowed + */ + enum nl80211_reg_rule_flags { + NL80211_RRF_NO_OFDM = 1<<0, +@@ -3797,6 +3916,7 @@ enum nl80211_reg_rule_flags { + NL80211_RRF_NO_HT40PLUS = 1<<14, + NL80211_RRF_NO_80MHZ = 1<<15, + NL80211_RRF_NO_160MHZ = 1<<16, ++ NL80211_RRF_NO_HE = 1<<17, + }; + + #define NL80211_RRF_PASSIVE_SCAN NL80211_RRF_NO_IR +@@ -4503,6 +4623,7 @@ enum nl80211_key_default_types { + * See &enum nl80211_key_default_types. + * @NL80211_KEY_MODE: the mode from enum nl80211_key_mode. + * Defaults to @NL80211_KEY_RX_TX. ++ * @NL80211_KEY_DEFAULT_BEACON: flag indicating default Beacon frame key + * + * @__NL80211_KEY_AFTER_LAST: internal + * @NL80211_KEY_MAX: highest key attribute +@@ -4518,6 +4639,7 @@ enum nl80211_key_attributes { + NL80211_KEY_TYPE, + NL80211_KEY_DEFAULT_TYPES, + NL80211_KEY_MODE, ++ NL80211_KEY_DEFAULT_BEACON, + + /* keep last */ + __NL80211_KEY_AFTER_LAST, +@@ -4674,6 +4796,69 @@ enum nl80211_tx_power_setting { + }; + + /** ++ * enum nl80211_tid_config - TID config state ++ * @NL80211_TID_CONFIG_ENABLE: Enable config for the TID ++ * @NL80211_TID_CONFIG_DISABLE: Disable config for the TID ++ */ ++enum nl80211_tid_config { ++ NL80211_TID_CONFIG_ENABLE, ++ NL80211_TID_CONFIG_DISABLE, ++}; ++ ++/* enum nl80211_tid_config_attr - TID specific configuration. ++ * @NL80211_TID_CONFIG_ATTR_PAD: pad attribute for 64-bit values ++ * @NL80211_TID_CONFIG_ATTR_VIF_SUPP: a bitmap (u64) of attributes supported ++ * for per-vif configuration; doesn't list the ones that are generic ++ * (%NL80211_TID_CONFIG_ATTR_TIDS, %NL80211_TID_CONFIG_ATTR_OVERRIDE). ++ * @NL80211_TID_CONFIG_ATTR_PEER_SUPP: same as the previous per-vif one, but ++ * per peer instead. ++ * @NL80211_TID_CONFIG_ATTR_OVERRIDE: flag attribue, if no peer ++ * is selected, if set indicates that the new configuration overrides ++ * all previous peer configurations, otherwise previous peer specific ++ * configurations should be left untouched. If peer is selected then ++ * it will reset particular TID configuration of that peer and it will ++ * not accept other TID config attributes along with peer. ++ * @NL80211_TID_CONFIG_ATTR_TIDS: a bitmask value of TIDs (bit 0 to 7) ++ * Its type is u16. ++ * @NL80211_TID_CONFIG_ATTR_NOACK: Configure ack policy for the TID. ++ * specified in %NL80211_TID_CONFIG_ATTR_TID. see %enum nl80211_tid_config. ++ * Its type is u8. ++ * @NL80211_TID_CONFIG_ATTR_RETRY_SHORT: Number of retries used with data frame ++ * transmission, user-space sets this configuration in ++ * &NL80211_CMD_SET_TID_CONFIG. It is u8 type, min value is 1 and ++ * the max value is advertised by the driver in this attribute on ++ * output in wiphy capabilities. ++ * @NL80211_TID_CONFIG_ATTR_RETRY_LONG: Number of retries used with data frame ++ * transmission, user-space sets this configuration in ++ * &NL80211_CMD_SET_TID_CONFIG. Its type is u8, min value is 1 and ++ * the max value is advertised by the driver in this attribute on ++ * output in wiphy capabilities. ++ * @NL80211_TID_CONFIG_ATTR_AMPDU_CTRL: Enable/Disable aggregation for the TIDs ++ * specified in %NL80211_TID_CONFIG_ATTR_TIDS. Its type is u8, using ++ * the values from &nl80211_tid_config. ++ * @NL80211_TID_CONFIG_ATTR_RTSCTS_CTRL: Enable/Disable RTS_CTS for the TIDs ++ * specified in %NL80211_TID_CONFIG_ATTR_TIDS. It is u8 type, using ++ * the values from &nl80211_tid_config. ++ */ ++enum nl80211_tid_config_attr { ++ __NL80211_TID_CONFIG_ATTR_INVALID, ++ NL80211_TID_CONFIG_ATTR_PAD, ++ NL80211_TID_CONFIG_ATTR_VIF_SUPP, ++ NL80211_TID_CONFIG_ATTR_PEER_SUPP, ++ NL80211_TID_CONFIG_ATTR_OVERRIDE, ++ NL80211_TID_CONFIG_ATTR_TIDS, ++ NL80211_TID_CONFIG_ATTR_NOACK, ++ NL80211_TID_CONFIG_ATTR_RETRY_SHORT, ++ NL80211_TID_CONFIG_ATTR_RETRY_LONG, ++ NL80211_TID_CONFIG_ATTR_AMPDU_CTRL, ++ NL80211_TID_CONFIG_ATTR_RTSCTS_CTRL, ++ ++ /* keep last */ ++ __NL80211_TID_CONFIG_ATTR_AFTER_LAST, ++ NL80211_TID_CONFIG_ATTR_MAX = __NL80211_TID_CONFIG_ATTR_AFTER_LAST - 1 ++}; ++ ++/** + * enum nl80211_packet_pattern_attr - packet pattern attribute + * @__NL80211_PKTPAT_INVALID: invalid number for nested attribute + * @NL80211_PKTPAT_PATTERN: the pattern, values where the mask has +@@ -5484,6 +5669,26 @@ enum nl80211_feature_flags { * @NL80211_EXT_FEATURE_SAE_OFFLOAD: Device wants to do SAE authentication in * station mode (SAE password is passed as part of the connect command). * @@ -74,15 +306,148 @@ + * feature, which prevents bufferbloat by using the expected transmission + * time to limit the amount of data buffered in the hardware. + * ++ * @NL80211_EXT_FEATURE_BEACON_PROTECTION: The driver supports Beacon protection ++ * and can receive key configuration for BIGTK using key indexes 6 and 7. ++ * ++ * @NL80211_EXT_FEATURE_CONTROL_PORT_NO_PREAUTH: The driver can disable the ++ * forwarding of preauth frames over the control port. They are then ++ * handled as ordinary data frames. ++ * ++ * @NL80211_EXT_FEATURE_PROTECTED_TWT: Driver supports protected TWT frames ++ * ++ * @NL80211_EXT_FEATURE_DEL_IBSS_STA: The driver supports removing stations ++ * in IBSS mode, essentially by dropping their state. ++ * * @NUM_NL80211_EXT_FEATURES: number of extended features. * @MAX_NL80211_EXT_FEATURES: highest extended feature index. */ -@@ -5529,6 +5571,8 @@ enum nl80211_ext_feature_index { +@@ -5529,6 +5734,12 @@ enum nl80211_ext_feature_index { NL80211_EXT_FEATURE_EXT_KEY_ID, NL80211_EXT_FEATURE_STA_TX_PWR, NL80211_EXT_FEATURE_SAE_OFFLOAD, + NL80211_EXT_FEATURE_VLAN_OFFLOAD, + NL80211_EXT_FEATURE_AQL, ++ NL80211_EXT_FEATURE_BEACON_PROTECTION, ++ NL80211_EXT_FEATURE_CONTROL_PORT_NO_PREAUTH, ++ NL80211_EXT_FEATURE_PROTECTED_TWT, ++ NL80211_EXT_FEATURE_DEL_IBSS_STA, /* add new features before the definition below */ NUM_NL80211_EXT_FEATURES, +@@ -6151,12 +6362,14 @@ enum nl80211_ftm_responder_stats { + * @NL80211_PREAMBLE_HT: HT preamble + * @NL80211_PREAMBLE_VHT: VHT preamble + * @NL80211_PREAMBLE_DMG: DMG preamble ++ * @NL80211_PREAMBLE_HE: HE preamble + */ + enum nl80211_preamble { + NL80211_PREAMBLE_LEGACY, + NL80211_PREAMBLE_HT, + NL80211_PREAMBLE_VHT, + NL80211_PREAMBLE_DMG, ++ NL80211_PREAMBLE_HE, + }; + + /** +@@ -6349,6 +6562,10 @@ enum nl80211_peer_measurement_attrs { + * is valid) + * @NL80211_PMSR_FTM_CAPA_ATTR_MAX_FTMS_PER_BURST: u32 attribute indicating + * the maximum FTMs per burst (if not present anything is valid) ++ * @NL80211_PMSR_FTM_CAPA_ATTR_TRIGGER_BASED: flag attribute indicating if ++ * trigger based ranging measurement is supported ++ * @NL80211_PMSR_FTM_CAPA_ATTR_NON_TRIGGER_BASED: flag attribute indicating ++ * if non trigger based ranging measurement is supported + * + * @NUM_NL80211_PMSR_FTM_CAPA_ATTR: internal + * @NL80211_PMSR_FTM_CAPA_ATTR_MAX: highest attribute number +@@ -6364,6 +6581,8 @@ enum nl80211_peer_measurement_ftm_capa { + NL80211_PMSR_FTM_CAPA_ATTR_BANDWIDTHS, + NL80211_PMSR_FTM_CAPA_ATTR_MAX_BURSTS_EXPONENT, + NL80211_PMSR_FTM_CAPA_ATTR_MAX_FTMS_PER_BURST, ++ NL80211_PMSR_FTM_CAPA_ATTR_TRIGGER_BASED, ++ NL80211_PMSR_FTM_CAPA_ATTR_NON_TRIGGER_BASED, + + /* keep last */ + NUM_NL80211_PMSR_FTM_CAPA_ATTR, +@@ -6393,6 +6612,20 @@ enum nl80211_peer_measurement_ftm_capa { + * @NL80211_PMSR_FTM_REQ_ATTR_REQUEST_LCI: request LCI data (flag) + * @NL80211_PMSR_FTM_REQ_ATTR_REQUEST_CIVICLOC: request civic location data + * (flag) ++ * @NL80211_PMSR_FTM_REQ_ATTR_TRIGGER_BASED: request trigger based ranging ++ * measurement (flag). ++ * This attribute and %NL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASED are ++ * mutually exclusive. ++ * if neither %NL80211_PMSR_FTM_REQ_ATTR_TRIGGER_BASED nor ++ * %NL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASED is set, EDCA based ++ * ranging will be used. ++ * @NL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASED: request non trigger based ++ * ranging measurement (flag) ++ * This attribute and %NL80211_PMSR_FTM_REQ_ATTR_TRIGGER_BASED are ++ * mutually exclusive. ++ * if neither %NL80211_PMSR_FTM_REQ_ATTR_TRIGGER_BASED nor ++ * %NL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASED is set, EDCA based ++ * ranging will be used. + * + * @NUM_NL80211_PMSR_FTM_REQ_ATTR: internal + * @NL80211_PMSR_FTM_REQ_ATTR_MAX: highest attribute number +@@ -6409,6 +6642,8 @@ enum nl80211_peer_measurement_ftm_req { + NL80211_PMSR_FTM_REQ_ATTR_NUM_FTMR_RETRIES, + NL80211_PMSR_FTM_REQ_ATTR_REQUEST_LCI, + NL80211_PMSR_FTM_REQ_ATTR_REQUEST_CIVICLOC, ++ NL80211_PMSR_FTM_REQ_ATTR_TRIGGER_BASED, ++ NL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASED, + + /* keep last */ + NUM_NL80211_PMSR_FTM_REQ_ATTR, +@@ -6548,5 +6783,51 @@ enum nl80211_obss_pd_attributes { + NL80211_HE_OBSS_PD_ATTR_MAX = __NL80211_HE_OBSS_PD_ATTR_LAST - 1, + }; + ++/** ++ * enum nl80211_bss_color_attributes - BSS Color attributes ++ * @__NL80211_HE_BSS_COLOR_ATTR_INVALID: Invalid ++ * ++ * @NL80211_HE_BSS_COLOR_ATTR_COLOR: the current BSS Color. ++ * @NL80211_HE_BSS_COLOR_ATTR_DISABLED: is BSS coloring disabled. ++ * @NL80211_HE_BSS_COLOR_ATTR_PARTIAL: the AID equation to be used.. ++ * ++ * @__NL80211_HE_BSS_COLOR_ATTR_LAST: Internal ++ * @NL80211_HE_BSS_COLOR_ATTR_MAX: highest BSS Color attribute. ++ */ ++enum nl80211_bss_color_attributes { ++ __NL80211_HE_BSS_COLOR_ATTR_INVALID, ++ ++ NL80211_HE_BSS_COLOR_ATTR_COLOR, ++ NL80211_HE_BSS_COLOR_ATTR_DISABLED, ++ NL80211_HE_BSS_COLOR_ATTR_PARTIAL, ++ ++ /* keep last */ ++ __NL80211_HE_BSS_COLOR_ATTR_LAST, ++ NL80211_HE_BSS_COLOR_ATTR_MAX = __NL80211_HE_BSS_COLOR_ATTR_LAST - 1, ++}; ++ ++/** ++ * enum nl80211_iftype_akm_attributes - interface type AKM attributes ++ * @__NL80211_IFTYPE_AKM_ATTR_INVALID: Invalid ++ * ++ * @NL80211_IFTYPE_AKM_ATTR_IFTYPES: nested attribute containing a flag ++ * attribute for each interface type that supports AKM suites specified in ++ * %NL80211_IFTYPE_AKM_ATTR_SUITES ++ * @NL80211_IFTYPE_AKM_ATTR_SUITES: an array of u32. Used to indicate supported ++ * AKM suites for the specified interface types. ++ * ++ * @__NL80211_IFTYPE_AKM_ATTR_LAST: Internal ++ * @NL80211_IFTYPE_AKM_ATTR_MAX: highest interface type AKM attribute. ++ */ ++enum nl80211_iftype_akm_attributes { ++ __NL80211_IFTYPE_AKM_ATTR_INVALID, ++ ++ NL80211_IFTYPE_AKM_ATTR_IFTYPES, ++ NL80211_IFTYPE_AKM_ATTR_SUITES, ++ ++ /* keep last */ ++ __NL80211_IFTYPE_AKM_ATTR_LAST, ++ NL80211_IFTYPE_AKM_ATTR_MAX = __NL80211_IFTYPE_AKM_ATTR_LAST - 1, ++}; + + #endif /* __LINUX_NL80211_H */ |