diff options
author | Grant Likely <grant.likely@secretlab.ca> | 2012-07-25 00:31:09 -0400 |
---|---|---|
committer | Grant Likely <grant.likely@secretlab.ca> | 2012-07-25 00:34:40 -0400 |
commit | 6aeea3ecc33b1f36dbc3b80461d15a7052ae424f (patch) | |
tree | bbd273e3e0ca76094aed8e9c77e5adfe2b07f779 /include/linux/nl80211.h | |
parent | 9844a5524ec532aee826c35e3031637c7fc8287b (diff) | |
parent | bdc0077af574800d24318b6945cf2344e8dbb050 (diff) |
Merge remote-tracking branch 'origin' into irqdomain/next
Diffstat (limited to 'include/linux/nl80211.h')
-rw-r--r-- | include/linux/nl80211.h | 234 |
1 files changed, 181 insertions, 53 deletions
diff --git a/include/linux/nl80211.h b/include/linux/nl80211.h index a6959f72745e..2f3878806403 100644 --- a/include/linux/nl80211.h +++ b/include/linux/nl80211.h | |||
@@ -170,6 +170,8 @@ | |||
170 | * %NL80211_ATTR_CIPHER_GROUP, %NL80211_ATTR_WPA_VERSIONS, | 170 | * %NL80211_ATTR_CIPHER_GROUP, %NL80211_ATTR_WPA_VERSIONS, |
171 | * %NL80211_ATTR_AKM_SUITES, %NL80211_ATTR_PRIVACY, | 171 | * %NL80211_ATTR_AKM_SUITES, %NL80211_ATTR_PRIVACY, |
172 | * %NL80211_ATTR_AUTH_TYPE and %NL80211_ATTR_INACTIVITY_TIMEOUT. | 172 | * %NL80211_ATTR_AUTH_TYPE and %NL80211_ATTR_INACTIVITY_TIMEOUT. |
173 | * The channel to use can be set on the interface or be given using the | ||
174 | * %NL80211_ATTR_WIPHY_FREQ and %NL80211_ATTR_WIPHY_CHANNEL_TYPE attrs. | ||
173 | * @NL80211_CMD_NEW_BEACON: old alias for %NL80211_CMD_START_AP | 175 | * @NL80211_CMD_NEW_BEACON: old alias for %NL80211_CMD_START_AP |
174 | * @NL80211_CMD_STOP_AP: Stop AP operation on the given interface | 176 | * @NL80211_CMD_STOP_AP: Stop AP operation on the given interface |
175 | * @NL80211_CMD_DEL_BEACON: old alias for %NL80211_CMD_STOP_AP | 177 | * @NL80211_CMD_DEL_BEACON: old alias for %NL80211_CMD_STOP_AP |
@@ -275,6 +277,12 @@ | |||
275 | * @NL80211_CMD_NEW_SURVEY_RESULTS: survey data notification (as a reply to | 277 | * @NL80211_CMD_NEW_SURVEY_RESULTS: survey data notification (as a reply to |
276 | * NL80211_CMD_GET_SURVEY and on the "scan" multicast group) | 278 | * NL80211_CMD_GET_SURVEY and on the "scan" multicast group) |
277 | * | 279 | * |
280 | * @NL80211_CMD_SET_PMKSA: Add a PMKSA cache entry, using %NL80211_ATTR_MAC | ||
281 | * (for the BSSID) and %NL80211_ATTR_PMKID. | ||
282 | * @NL80211_CMD_DEL_PMKSA: Delete a PMKSA cache entry, using %NL80211_ATTR_MAC | ||
283 | * (for the BSSID) and %NL80211_ATTR_PMKID. | ||
284 | * @NL80211_CMD_FLUSH_PMKSA: Flush all PMKSA cache entries. | ||
285 | * | ||
278 | * @NL80211_CMD_REG_CHANGE: indicates to userspace the regulatory domain | 286 | * @NL80211_CMD_REG_CHANGE: indicates to userspace the regulatory domain |
279 | * has been changed and provides details of the request information | 287 | * has been changed and provides details of the request information |
280 | * that caused the change such as who initiated the regulatory request | 288 | * that caused the change such as who initiated the regulatory request |
@@ -454,6 +462,10 @@ | |||
454 | * the frame. | 462 | * the frame. |
455 | * @NL80211_CMD_ACTION_TX_STATUS: Alias for @NL80211_CMD_FRAME_TX_STATUS for | 463 | * @NL80211_CMD_ACTION_TX_STATUS: Alias for @NL80211_CMD_FRAME_TX_STATUS for |
456 | * backward compatibility. | 464 | * backward compatibility. |
465 | * | ||
466 | * @NL80211_CMD_SET_POWER_SAVE: Set powersave, using %NL80211_ATTR_PS_STATE | ||
467 | * @NL80211_CMD_GET_POWER_SAVE: Get powersave status in %NL80211_ATTR_PS_STATE | ||
468 | * | ||
457 | * @NL80211_CMD_SET_CQM: Connection quality monitor configuration. This command | 469 | * @NL80211_CMD_SET_CQM: Connection quality monitor configuration. This command |
458 | * is used to configure connection quality monitoring notification trigger | 470 | * is used to configure connection quality monitoring notification trigger |
459 | * levels. | 471 | * levels. |
@@ -759,6 +771,9 @@ enum nl80211_commands { | |||
759 | * @NL80211_ATTR_IFNAME: network interface name | 771 | * @NL80211_ATTR_IFNAME: network interface name |
760 | * @NL80211_ATTR_IFTYPE: type of virtual interface, see &enum nl80211_iftype | 772 | * @NL80211_ATTR_IFTYPE: type of virtual interface, see &enum nl80211_iftype |
761 | * | 773 | * |
774 | * @NL80211_ATTR_WDEV: wireless device identifier, used for pseudo-devices | ||
775 | * that don't have a netdev (u64) | ||
776 | * | ||
762 | * @NL80211_ATTR_MAC: MAC address (various uses) | 777 | * @NL80211_ATTR_MAC: MAC address (various uses) |
763 | * | 778 | * |
764 | * @NL80211_ATTR_KEY_DATA: (temporal) key data; for TKIP this consists of | 779 | * @NL80211_ATTR_KEY_DATA: (temporal) key data; for TKIP this consists of |
@@ -769,6 +784,13 @@ enum nl80211_commands { | |||
769 | * section 7.3.2.25.1, e.g. 0x000FAC04) | 784 | * section 7.3.2.25.1, e.g. 0x000FAC04) |
770 | * @NL80211_ATTR_KEY_SEQ: transmit key sequence number (IV/PN) for TKIP and | 785 | * @NL80211_ATTR_KEY_SEQ: transmit key sequence number (IV/PN) for TKIP and |
771 | * CCMP keys, each six bytes in little endian | 786 | * CCMP keys, each six bytes in little endian |
787 | * @NL80211_ATTR_KEY_DEFAULT: Flag attribute indicating the key is default key | ||
788 | * @NL80211_ATTR_KEY_DEFAULT_MGMT: Flag attribute indicating the key is the | ||
789 | * default management key | ||
790 | * @NL80211_ATTR_CIPHER_SUITES_PAIRWISE: For crypto settings for connect or | ||
791 | * other commands, indicates which pairwise cipher suites are used | ||
792 | * @NL80211_ATTR_CIPHER_SUITE_GROUP: For crypto settings for connect or | ||
793 | * other commands, indicates which group cipher suite is used | ||
772 | * | 794 | * |
773 | * @NL80211_ATTR_BEACON_INTERVAL: beacon interval in TU | 795 | * @NL80211_ATTR_BEACON_INTERVAL: beacon interval in TU |
774 | * @NL80211_ATTR_DTIM_PERIOD: DTIM period for beaconing | 796 | * @NL80211_ATTR_DTIM_PERIOD: DTIM period for beaconing |
@@ -1004,6 +1026,8 @@ enum nl80211_commands { | |||
1004 | * @NL80211_ATTR_ACK: Flag attribute indicating that the frame was | 1026 | * @NL80211_ATTR_ACK: Flag attribute indicating that the frame was |
1005 | * acknowledged by the recipient. | 1027 | * acknowledged by the recipient. |
1006 | * | 1028 | * |
1029 | * @NL80211_ATTR_PS_STATE: powersave state, using &enum nl80211_ps_state values. | ||
1030 | * | ||
1007 | * @NL80211_ATTR_CQM: connection quality monitor configuration in a | 1031 | * @NL80211_ATTR_CQM: connection quality monitor configuration in a |
1008 | * nested attribute with %NL80211_ATTR_CQM_* sub-attributes. | 1032 | * nested attribute with %NL80211_ATTR_CQM_* sub-attributes. |
1009 | * | 1033 | * |
@@ -1061,7 +1085,7 @@ enum nl80211_commands { | |||
1061 | * flag isn't set, the frame will be rejected. This is also used as an | 1085 | * flag isn't set, the frame will be rejected. This is also used as an |
1062 | * nl80211 capability flag. | 1086 | * nl80211 capability flag. |
1063 | * | 1087 | * |
1064 | * @NL80211_ATTR_BSS_HTOPMODE: HT operation mode (u16) | 1088 | * @NL80211_ATTR_BSS_HT_OPMODE: HT operation mode (u16) |
1065 | * | 1089 | * |
1066 | * @NL80211_ATTR_KEY_DEFAULT_TYPES: A nested attribute containing flags | 1090 | * @NL80211_ATTR_KEY_DEFAULT_TYPES: A nested attribute containing flags |
1067 | * attributes, specifying what a key should be set as default as. | 1091 | * attributes, specifying what a key should be set as default as. |
@@ -1085,10 +1109,10 @@ enum nl80211_commands { | |||
1085 | * indicate which WoW triggers should be enabled. This is also | 1109 | * indicate which WoW triggers should be enabled. This is also |
1086 | * used by %NL80211_CMD_GET_WOWLAN to get the currently enabled WoWLAN | 1110 | * used by %NL80211_CMD_GET_WOWLAN to get the currently enabled WoWLAN |
1087 | * triggers. | 1111 | * triggers. |
1088 | 1112 | * | |
1089 | * @NL80211_ATTR_SCHED_SCAN_INTERVAL: Interval between scheduled scan | 1113 | * @NL80211_ATTR_SCHED_SCAN_INTERVAL: Interval between scheduled scan |
1090 | * cycles, in msecs. | 1114 | * cycles, in msecs. |
1091 | 1115 | * | |
1092 | * @NL80211_ATTR_SCHED_SCAN_MATCH: Nested attribute with one or more | 1116 | * @NL80211_ATTR_SCHED_SCAN_MATCH: Nested attribute with one or more |
1093 | * sets of attributes to match during scheduled scans. Only BSSs | 1117 | * sets of attributes to match during scheduled scans. Only BSSs |
1094 | * that match any of the sets will be reported. These are | 1118 | * that match any of the sets will be reported. These are |
@@ -1115,7 +1139,7 @@ enum nl80211_commands { | |||
1115 | * are managed in software: interfaces of these types aren't subject to | 1139 | * are managed in software: interfaces of these types aren't subject to |
1116 | * any restrictions in their number or combinations. | 1140 | * any restrictions in their number or combinations. |
1117 | * | 1141 | * |
1118 | * @%NL80211_ATTR_REKEY_DATA: nested attribute containing the information | 1142 | * @NL80211_ATTR_REKEY_DATA: nested attribute containing the information |
1119 | * necessary for GTK rekeying in the device, see &enum nl80211_rekey_data. | 1143 | * necessary for GTK rekeying in the device, see &enum nl80211_rekey_data. |
1120 | * | 1144 | * |
1121 | * @NL80211_ATTR_SCAN_SUPP_RATES: rates per to be advertised as supported in scan, | 1145 | * @NL80211_ATTR_SCAN_SUPP_RATES: rates per to be advertised as supported in scan, |
@@ -1182,7 +1206,6 @@ enum nl80211_commands { | |||
1182 | * @NL80211_ATTR_FEATURE_FLAGS: This u32 attribute contains flags from | 1206 | * @NL80211_ATTR_FEATURE_FLAGS: This u32 attribute contains flags from |
1183 | * &enum nl80211_feature_flags and is advertised in wiphy information. | 1207 | * &enum nl80211_feature_flags and is advertised in wiphy information. |
1184 | * @NL80211_ATTR_PROBE_RESP_OFFLOAD: Indicates that the HW responds to probe | 1208 | * @NL80211_ATTR_PROBE_RESP_OFFLOAD: Indicates that the HW responds to probe |
1185 | * | ||
1186 | * requests while operating in AP-mode. | 1209 | * requests while operating in AP-mode. |
1187 | * This attribute holds a bitmap of the supported protocols for | 1210 | * This attribute holds a bitmap of the supported protocols for |
1188 | * offloading (see &enum nl80211_probe_resp_offload_support_attr). | 1211 | * offloading (see &enum nl80211_probe_resp_offload_support_attr). |
@@ -1222,6 +1245,12 @@ enum nl80211_commands { | |||
1222 | * @NL80211_ATTR_BG_SCAN_PERIOD: Background scan period in seconds | 1245 | * @NL80211_ATTR_BG_SCAN_PERIOD: Background scan period in seconds |
1223 | * or 0 to disable background scan. | 1246 | * or 0 to disable background scan. |
1224 | * | 1247 | * |
1248 | * @NL80211_ATTR_USER_REG_HINT_TYPE: type of regulatory hint passed from | ||
1249 | * userspace. If unset it is assumed the hint comes directly from | ||
1250 | * a user. If set code could specify exactly what type of source | ||
1251 | * was used to provide the hint. For the different types of | ||
1252 | * allowed user regulatory hints see nl80211_user_reg_hint_type. | ||
1253 | * | ||
1225 | * @NL80211_ATTR_MAX: highest attribute number currently defined | 1254 | * @NL80211_ATTR_MAX: highest attribute number currently defined |
1226 | * @__NL80211_ATTR_AFTER_LAST: internal use | 1255 | * @__NL80211_ATTR_AFTER_LAST: internal use |
1227 | */ | 1256 | */ |
@@ -1473,6 +1502,10 @@ enum nl80211_attrs { | |||
1473 | 1502 | ||
1474 | NL80211_ATTR_BG_SCAN_PERIOD, | 1503 | NL80211_ATTR_BG_SCAN_PERIOD, |
1475 | 1504 | ||
1505 | NL80211_ATTR_WDEV, | ||
1506 | |||
1507 | NL80211_ATTR_USER_REG_HINT_TYPE, | ||
1508 | |||
1476 | /* add attributes here, update the policy in nl80211.c */ | 1509 | /* add attributes here, update the policy in nl80211.c */ |
1477 | 1510 | ||
1478 | __NL80211_ATTR_AFTER_LAST, | 1511 | __NL80211_ATTR_AFTER_LAST, |
@@ -1520,6 +1553,13 @@ enum nl80211_attrs { | |||
1520 | #define NL80211_MAX_NR_CIPHER_SUITES 5 | 1553 | #define NL80211_MAX_NR_CIPHER_SUITES 5 |
1521 | #define NL80211_MAX_NR_AKM_SUITES 2 | 1554 | #define NL80211_MAX_NR_AKM_SUITES 2 |
1522 | 1555 | ||
1556 | #define NL80211_MIN_REMAIN_ON_CHANNEL_TIME 10 | ||
1557 | |||
1558 | /* default RSSI threshold for scan results if none specified. */ | ||
1559 | #define NL80211_SCAN_RSSI_THOLD_OFF -300 | ||
1560 | |||
1561 | #define NL80211_CQM_TXE_MAX_INTVL 1800 | ||
1562 | |||
1523 | /** | 1563 | /** |
1524 | * enum nl80211_iftype - (virtual) interface types | 1564 | * enum nl80211_iftype - (virtual) interface types |
1525 | * | 1565 | * |
@@ -1613,12 +1653,20 @@ struct nl80211_sta_flag_update { | |||
1613 | * | 1653 | * |
1614 | * These attribute types are used with %NL80211_STA_INFO_TXRATE | 1654 | * These attribute types are used with %NL80211_STA_INFO_TXRATE |
1615 | * when getting information about the bitrate of a station. | 1655 | * when getting information about the bitrate of a station. |
1656 | * There are 2 attributes for bitrate, a legacy one that represents | ||
1657 | * a 16-bit value, and new one that represents a 32-bit value. | ||
1658 | * If the rate value fits into 16 bit, both attributes are reported | ||
1659 | * with the same value. If the rate is too high to fit into 16 bits | ||
1660 | * (>6.5535Gbps) only 32-bit attribute is included. | ||
1661 | * User space tools encouraged to use the 32-bit attribute and fall | ||
1662 | * back to the 16-bit one for compatibility with older kernels. | ||
1616 | * | 1663 | * |
1617 | * @__NL80211_RATE_INFO_INVALID: attribute number 0 is reserved | 1664 | * @__NL80211_RATE_INFO_INVALID: attribute number 0 is reserved |
1618 | * @NL80211_RATE_INFO_BITRATE: total bitrate (u16, 100kbit/s) | 1665 | * @NL80211_RATE_INFO_BITRATE: total bitrate (u16, 100kbit/s) |
1619 | * @NL80211_RATE_INFO_MCS: mcs index for 802.11n (u8) | 1666 | * @NL80211_RATE_INFO_MCS: mcs index for 802.11n (u8) |
1620 | * @NL80211_RATE_INFO_40_MHZ_WIDTH: 40 Mhz dualchannel bitrate | 1667 | * @NL80211_RATE_INFO_40_MHZ_WIDTH: 40 Mhz dualchannel bitrate |
1621 | * @NL80211_RATE_INFO_SHORT_GI: 400ns guard interval | 1668 | * @NL80211_RATE_INFO_SHORT_GI: 400ns guard interval |
1669 | * @NL80211_RATE_INFO_BITRATE32: total bitrate (u32, 100kbit/s) | ||
1622 | * @NL80211_RATE_INFO_MAX: highest rate_info number currently defined | 1670 | * @NL80211_RATE_INFO_MAX: highest rate_info number currently defined |
1623 | * @__NL80211_RATE_INFO_AFTER_LAST: internal use | 1671 | * @__NL80211_RATE_INFO_AFTER_LAST: internal use |
1624 | */ | 1672 | */ |
@@ -1628,6 +1676,7 @@ enum nl80211_rate_info { | |||
1628 | NL80211_RATE_INFO_MCS, | 1676 | NL80211_RATE_INFO_MCS, |
1629 | NL80211_RATE_INFO_40_MHZ_WIDTH, | 1677 | NL80211_RATE_INFO_40_MHZ_WIDTH, |
1630 | NL80211_RATE_INFO_SHORT_GI, | 1678 | NL80211_RATE_INFO_SHORT_GI, |
1679 | NL80211_RATE_INFO_BITRATE32, | ||
1631 | 1680 | ||
1632 | /* keep last */ | 1681 | /* keep last */ |
1633 | __NL80211_RATE_INFO_AFTER_LAST, | 1682 | __NL80211_RATE_INFO_AFTER_LAST, |
@@ -1788,6 +1837,9 @@ enum nl80211_mpath_info { | |||
1788 | * @NL80211_BAND_ATTR_HT_CAPA: HT capabilities, as in the HT information IE | 1837 | * @NL80211_BAND_ATTR_HT_CAPA: HT capabilities, as in the HT information IE |
1789 | * @NL80211_BAND_ATTR_HT_AMPDU_FACTOR: A-MPDU factor, as in 11n | 1838 | * @NL80211_BAND_ATTR_HT_AMPDU_FACTOR: A-MPDU factor, as in 11n |
1790 | * @NL80211_BAND_ATTR_HT_AMPDU_DENSITY: A-MPDU density, as in 11n | 1839 | * @NL80211_BAND_ATTR_HT_AMPDU_DENSITY: A-MPDU density, as in 11n |
1840 | * @NL80211_BAND_ATTR_VHT_MCS_SET: 32-byte attribute containing the MCS set as | ||
1841 | * defined in 802.11ac | ||
1842 | * @NL80211_BAND_ATTR_VHT_CAPA: VHT capabilities, as in the HT information IE | ||
1791 | * @NL80211_BAND_ATTR_MAX: highest band attribute currently defined | 1843 | * @NL80211_BAND_ATTR_MAX: highest band attribute currently defined |
1792 | * @__NL80211_BAND_ATTR_AFTER_LAST: internal use | 1844 | * @__NL80211_BAND_ATTR_AFTER_LAST: internal use |
1793 | */ | 1845 | */ |
@@ -1801,6 +1853,9 @@ enum nl80211_band_attr { | |||
1801 | NL80211_BAND_ATTR_HT_AMPDU_FACTOR, | 1853 | NL80211_BAND_ATTR_HT_AMPDU_FACTOR, |
1802 | NL80211_BAND_ATTR_HT_AMPDU_DENSITY, | 1854 | NL80211_BAND_ATTR_HT_AMPDU_DENSITY, |
1803 | 1855 | ||
1856 | NL80211_BAND_ATTR_VHT_MCS_SET, | ||
1857 | NL80211_BAND_ATTR_VHT_CAPA, | ||
1858 | |||
1804 | /* keep last */ | 1859 | /* keep last */ |
1805 | __NL80211_BAND_ATTR_AFTER_LAST, | 1860 | __NL80211_BAND_ATTR_AFTER_LAST, |
1806 | NL80211_BAND_ATTR_MAX = __NL80211_BAND_ATTR_AFTER_LAST - 1 | 1861 | NL80211_BAND_ATTR_MAX = __NL80211_BAND_ATTR_AFTER_LAST - 1 |
@@ -1952,6 +2007,8 @@ enum nl80211_reg_rule_attr { | |||
1952 | * @__NL80211_SCHED_SCAN_MATCH_ATTR_INVALID: attribute number 0 is reserved | 2007 | * @__NL80211_SCHED_SCAN_MATCH_ATTR_INVALID: attribute number 0 is reserved |
1953 | * @NL80211_SCHED_SCAN_MATCH_ATTR_SSID: SSID to be used for matching, | 2008 | * @NL80211_SCHED_SCAN_MATCH_ATTR_SSID: SSID to be used for matching, |
1954 | * only report BSS with matching SSID. | 2009 | * only report BSS with matching SSID. |
2010 | * @NL80211_SCHED_SCAN_MATCH_ATTR_RSSI: RSSI threshold (in dBm) for reporting a | ||
2011 | * BSS in scan results. Filtering is turned off if not specified. | ||
1955 | * @NL80211_SCHED_SCAN_MATCH_ATTR_MAX: highest scheduled scan filter | 2012 | * @NL80211_SCHED_SCAN_MATCH_ATTR_MAX: highest scheduled scan filter |
1956 | * attribute number currently defined | 2013 | * attribute number currently defined |
1957 | * @__NL80211_SCHED_SCAN_MATCH_ATTR_AFTER_LAST: internal use | 2014 | * @__NL80211_SCHED_SCAN_MATCH_ATTR_AFTER_LAST: internal use |
@@ -1959,7 +2016,8 @@ enum nl80211_reg_rule_attr { | |||
1959 | enum nl80211_sched_scan_match_attr { | 2016 | enum nl80211_sched_scan_match_attr { |
1960 | __NL80211_SCHED_SCAN_MATCH_ATTR_INVALID, | 2017 | __NL80211_SCHED_SCAN_MATCH_ATTR_INVALID, |
1961 | 2018 | ||
1962 | NL80211_ATTR_SCHED_SCAN_MATCH_SSID, | 2019 | NL80211_SCHED_SCAN_MATCH_ATTR_SSID, |
2020 | NL80211_SCHED_SCAN_MATCH_ATTR_RSSI, | ||
1963 | 2021 | ||
1964 | /* keep last */ | 2022 | /* keep last */ |
1965 | __NL80211_SCHED_SCAN_MATCH_ATTR_AFTER_LAST, | 2023 | __NL80211_SCHED_SCAN_MATCH_ATTR_AFTER_LAST, |
@@ -1967,6 +2025,9 @@ enum nl80211_sched_scan_match_attr { | |||
1967 | __NL80211_SCHED_SCAN_MATCH_ATTR_AFTER_LAST - 1 | 2025 | __NL80211_SCHED_SCAN_MATCH_ATTR_AFTER_LAST - 1 |
1968 | }; | 2026 | }; |
1969 | 2027 | ||
2028 | /* only for backward compatibility */ | ||
2029 | #define NL80211_ATTR_SCHED_SCAN_MATCH_SSID NL80211_SCHED_SCAN_MATCH_ATTR_SSID | ||
2030 | |||
1970 | /** | 2031 | /** |
1971 | * enum nl80211_reg_rule_flags - regulatory rule flags | 2032 | * enum nl80211_reg_rule_flags - regulatory rule flags |
1972 | * | 2033 | * |
@@ -2008,6 +2069,26 @@ enum nl80211_dfs_regions { | |||
2008 | }; | 2069 | }; |
2009 | 2070 | ||
2010 | /** | 2071 | /** |
2072 | * enum nl80211_user_reg_hint_type - type of user regulatory hint | ||
2073 | * | ||
2074 | * @NL80211_USER_REG_HINT_USER: a user sent the hint. This is always | ||
2075 | * assumed if the attribute is not set. | ||
2076 | * @NL80211_USER_REG_HINT_CELL_BASE: the hint comes from a cellular | ||
2077 | * base station. Device drivers that have been tested to work | ||
2078 | * properly to support this type of hint can enable these hints | ||
2079 | * by setting the NL80211_FEATURE_CELL_BASE_REG_HINTS feature | ||
2080 | * capability on the struct wiphy. The wireless core will | ||
2081 | * ignore all cell base station hints until at least one device | ||
2082 | * present has been registered with the wireless core that | ||
2083 | * has listed NL80211_FEATURE_CELL_BASE_REG_HINTS as a | ||
2084 | * supported feature. | ||
2085 | */ | ||
2086 | enum nl80211_user_reg_hint_type { | ||
2087 | NL80211_USER_REG_HINT_USER = 0, | ||
2088 | NL80211_USER_REG_HINT_CELL_BASE = 1, | ||
2089 | }; | ||
2090 | |||
2091 | /** | ||
2011 | * enum nl80211_survey_info - survey information | 2092 | * enum nl80211_survey_info - survey information |
2012 | * | 2093 | * |
2013 | * These attribute types are used with %NL80211_ATTR_SURVEY_INFO | 2094 | * These attribute types are used with %NL80211_ATTR_SURVEY_INFO |
@@ -2086,78 +2167,91 @@ enum nl80211_mntr_flags { | |||
2086 | * @__NL80211_MESHCONF_INVALID: internal use | 2167 | * @__NL80211_MESHCONF_INVALID: internal use |
2087 | * | 2168 | * |
2088 | * @NL80211_MESHCONF_RETRY_TIMEOUT: specifies the initial retry timeout in | 2169 | * @NL80211_MESHCONF_RETRY_TIMEOUT: specifies the initial retry timeout in |
2089 | * millisecond units, used by the Peer Link Open message | 2170 | * millisecond units, used by the Peer Link Open message |
2090 | * | 2171 | * |
2091 | * @NL80211_MESHCONF_CONFIRM_TIMEOUT: specifies the initial confirm timeout, in | 2172 | * @NL80211_MESHCONF_CONFIRM_TIMEOUT: specifies the initial confirm timeout, in |
2092 | * millisecond units, used by the peer link management to close a peer link | 2173 | * millisecond units, used by the peer link management to close a peer link |
2093 | * | 2174 | * |
2094 | * @NL80211_MESHCONF_HOLDING_TIMEOUT: specifies the holding timeout, in | 2175 | * @NL80211_MESHCONF_HOLDING_TIMEOUT: specifies the holding timeout, in |
2095 | * millisecond units | 2176 | * millisecond units |
2096 | * | 2177 | * |
2097 | * @NL80211_MESHCONF_MAX_PEER_LINKS: maximum number of peer links allowed | 2178 | * @NL80211_MESHCONF_MAX_PEER_LINKS: maximum number of peer links allowed |
2098 | * on this mesh interface | 2179 | * on this mesh interface |
2099 | * | 2180 | * |
2100 | * @NL80211_MESHCONF_MAX_RETRIES: specifies the maximum number of peer link | 2181 | * @NL80211_MESHCONF_MAX_RETRIES: specifies the maximum number of peer link |
2101 | * open retries that can be sent to establish a new peer link instance in a | 2182 | * open retries that can be sent to establish a new peer link instance in a |
2102 | * mesh | 2183 | * mesh |
2103 | * | 2184 | * |
2104 | * @NL80211_MESHCONF_TTL: specifies the value of TTL field set at a source mesh | 2185 | * @NL80211_MESHCONF_TTL: specifies the value of TTL field set at a source mesh |
2105 | * point. | 2186 | * point. |
2106 | * | 2187 | * |
2107 | * @NL80211_MESHCONF_AUTO_OPEN_PLINKS: whether we should automatically | 2188 | * @NL80211_MESHCONF_AUTO_OPEN_PLINKS: whether we should automatically |
2108 | * open peer links when we detect compatible mesh peers. | 2189 | * open peer links when we detect compatible mesh peers. |
2109 | * | 2190 | * |
2110 | * @NL80211_MESHCONF_HWMP_MAX_PREQ_RETRIES: the number of action frames | 2191 | * @NL80211_MESHCONF_HWMP_MAX_PREQ_RETRIES: the number of action frames |
2111 | * containing a PREQ that an MP can send to a particular destination (path | 2192 | * containing a PREQ that an MP can send to a particular destination (path |
2112 | * target) | 2193 | * target) |
2113 | * | 2194 | * |
2114 | * @NL80211_MESHCONF_PATH_REFRESH_TIME: how frequently to refresh mesh paths | 2195 | * @NL80211_MESHCONF_PATH_REFRESH_TIME: how frequently to refresh mesh paths |
2115 | * (in milliseconds) | 2196 | * (in milliseconds) |
2116 | * | 2197 | * |
2117 | * @NL80211_MESHCONF_MIN_DISCOVERY_TIMEOUT: minimum length of time to wait | 2198 | * @NL80211_MESHCONF_MIN_DISCOVERY_TIMEOUT: minimum length of time to wait |
2118 | * until giving up on a path discovery (in milliseconds) | 2199 | * until giving up on a path discovery (in milliseconds) |
2119 | * | 2200 | * |
2120 | * @NL80211_MESHCONF_HWMP_ACTIVE_PATH_TIMEOUT: The time (in TUs) for which mesh | 2201 | * @NL80211_MESHCONF_HWMP_ACTIVE_PATH_TIMEOUT: The time (in TUs) for which mesh |
2121 | * points receiving a PREQ shall consider the forwarding information from the | 2202 | * points receiving a PREQ shall consider the forwarding information from |
2122 | * root to be valid. (TU = time unit) | 2203 | * the root to be valid. (TU = time unit) |
2123 | * | 2204 | * |
2124 | * @NL80211_MESHCONF_HWMP_PREQ_MIN_INTERVAL: The minimum interval of time (in | 2205 | * @NL80211_MESHCONF_HWMP_PREQ_MIN_INTERVAL: The minimum interval of time (in |
2125 | * TUs) during which an MP can send only one action frame containing a PREQ | 2206 | * TUs) during which an MP can send only one action frame containing a PREQ |
2126 | * reference element | 2207 | * reference element |
2127 | * | 2208 | * |
2128 | * @NL80211_MESHCONF_HWMP_NET_DIAM_TRVS_TIME: The interval of time (in TUs) | 2209 | * @NL80211_MESHCONF_HWMP_NET_DIAM_TRVS_TIME: The interval of time (in TUs) |
2129 | * that it takes for an HWMP information element to propagate across the mesh | 2210 | * that it takes for an HWMP information element to propagate across the |
2211 | * mesh | ||
2130 | * | 2212 | * |
2131 | * @NL80211_MESHCONF_HWMP_ROOTMODE: whether root mode is enabled or not | 2213 | * @NL80211_MESHCONF_HWMP_ROOTMODE: whether root mode is enabled or not |
2132 | * | 2214 | * |
2133 | * @NL80211_MESHCONF_ELEMENT_TTL: specifies the value of TTL field set at a | 2215 | * @NL80211_MESHCONF_ELEMENT_TTL: specifies the value of TTL field set at a |
2134 | * source mesh point for path selection elements. | 2216 | * source mesh point for path selection elements. |
2135 | * | 2217 | * |
2136 | * @NL80211_MESHCONF_HWMP_RANN_INTERVAL: The interval of time (in TUs) between | 2218 | * @NL80211_MESHCONF_HWMP_RANN_INTERVAL: The interval of time (in TUs) between |
2137 | * root announcements are transmitted. | 2219 | * root announcements are transmitted. |
2138 | * | 2220 | * |
2139 | * @NL80211_MESHCONF_GATE_ANNOUNCEMENTS: Advertise that this mesh station has | 2221 | * @NL80211_MESHCONF_GATE_ANNOUNCEMENTS: Advertise that this mesh station has |
2140 | * access to a broader network beyond the MBSS. This is done via Root | 2222 | * access to a broader network beyond the MBSS. This is done via Root |
2141 | * Announcement frames. | 2223 | * Announcement frames. |
2142 | * | 2224 | * |
2143 | * @NL80211_MESHCONF_HWMP_PERR_MIN_INTERVAL: The minimum interval of time (in | 2225 | * @NL80211_MESHCONF_HWMP_PERR_MIN_INTERVAL: The minimum interval of time (in |
2144 | * TUs) during which a mesh STA can send only one Action frame containing a | 2226 | * TUs) during which a mesh STA can send only one Action frame containing a |
2145 | * PERR element. | 2227 | * PERR element. |
2146 | * | 2228 | * |
2147 | * @NL80211_MESHCONF_FORWARDING: set Mesh STA as forwarding or non-forwarding | 2229 | * @NL80211_MESHCONF_FORWARDING: set Mesh STA as forwarding or non-forwarding |
2148 | * or forwarding entity (default is TRUE - forwarding entity) | 2230 | * or forwarding entity (default is TRUE - forwarding entity) |
2149 | * | 2231 | * |
2150 | * @NL80211_MESHCONF_RSSI_THRESHOLD: RSSI threshold in dBm. This specifies the | 2232 | * @NL80211_MESHCONF_RSSI_THRESHOLD: RSSI threshold in dBm. This specifies the |
2151 | * threshold for average signal strength of candidate station to establish | 2233 | * threshold for average signal strength of candidate station to establish |
2152 | * a peer link. | 2234 | * a peer link. |
2153 | * | ||
2154 | * @NL80211_MESHCONF_ATTR_MAX: highest possible mesh configuration attribute | ||
2155 | * | 2235 | * |
2156 | * @NL80211_MESHCONF_SYNC_OFFSET_MAX_NEIGHBOR: maximum number of neighbors | 2236 | * @NL80211_MESHCONF_SYNC_OFFSET_MAX_NEIGHBOR: maximum number of neighbors |
2157 | * to synchronize to for 11s default synchronization method (see 11C.12.2.2) | 2237 | * to synchronize to for 11s default synchronization method |
2238 | * (see 11C.12.2.2) | ||
2158 | * | 2239 | * |
2159 | * @NL80211_MESHCONF_HT_OPMODE: set mesh HT protection mode. | 2240 | * @NL80211_MESHCONF_HT_OPMODE: set mesh HT protection mode. |
2160 | * | 2241 | * |
2242 | * @NL80211_MESHCONF_ATTR_MAX: highest possible mesh configuration attribute | ||
2243 | * | ||
2244 | * @NL80211_MESHCONF_HWMP_PATH_TO_ROOT_TIMEOUT: The time (in TUs) for | ||
2245 | * which mesh STAs receiving a proactive PREQ shall consider the forwarding | ||
2246 | * information to the root mesh STA to be valid. | ||
2247 | * | ||
2248 | * @NL80211_MESHCONF_HWMP_ROOT_INTERVAL: The interval of time (in TUs) between | ||
2249 | * proactive PREQs are transmitted. | ||
2250 | * | ||
2251 | * @NL80211_MESHCONF_HWMP_CONFIRMATION_INTERVAL: The minimum interval of time | ||
2252 | * (in TUs) during which a mesh STA can send only one Action frame | ||
2253 | * containing a PREQ element for root path confirmation. | ||
2254 | * | ||
2161 | * @__NL80211_MESHCONF_ATTR_AFTER_LAST: internal use | 2255 | * @__NL80211_MESHCONF_ATTR_AFTER_LAST: internal use |
2162 | */ | 2256 | */ |
2163 | enum nl80211_meshconf_params { | 2257 | enum nl80211_meshconf_params { |
@@ -2184,6 +2278,9 @@ enum nl80211_meshconf_params { | |||
2184 | NL80211_MESHCONF_RSSI_THRESHOLD, | 2278 | NL80211_MESHCONF_RSSI_THRESHOLD, |
2185 | NL80211_MESHCONF_SYNC_OFFSET_MAX_NEIGHBOR, | 2279 | NL80211_MESHCONF_SYNC_OFFSET_MAX_NEIGHBOR, |
2186 | NL80211_MESHCONF_HT_OPMODE, | 2280 | NL80211_MESHCONF_HT_OPMODE, |
2281 | NL80211_MESHCONF_HWMP_PATH_TO_ROOT_TIMEOUT, | ||
2282 | NL80211_MESHCONF_HWMP_ROOT_INTERVAL, | ||
2283 | NL80211_MESHCONF_HWMP_CONFIRMATION_INTERVAL, | ||
2187 | 2284 | ||
2188 | /* keep last */ | 2285 | /* keep last */ |
2189 | __NL80211_MESHCONF_ATTR_AFTER_LAST, | 2286 | __NL80211_MESHCONF_ATTR_AFTER_LAST, |
@@ -2199,34 +2296,36 @@ enum nl80211_meshconf_params { | |||
2199 | * @__NL80211_MESH_SETUP_INVALID: Internal use | 2296 | * @__NL80211_MESH_SETUP_INVALID: Internal use |
2200 | * | 2297 | * |
2201 | * @NL80211_MESH_SETUP_ENABLE_VENDOR_PATH_SEL: Enable this option to use a | 2298 | * @NL80211_MESH_SETUP_ENABLE_VENDOR_PATH_SEL: Enable this option to use a |
2202 | * vendor specific path selection algorithm or disable it to use the default | 2299 | * vendor specific path selection algorithm or disable it to use the |
2203 | * HWMP. | 2300 | * default HWMP. |
2204 | * | 2301 | * |
2205 | * @NL80211_MESH_SETUP_ENABLE_VENDOR_METRIC: Enable this option to use a | 2302 | * @NL80211_MESH_SETUP_ENABLE_VENDOR_METRIC: Enable this option to use a |
2206 | * vendor specific path metric or disable it to use the default Airtime | 2303 | * vendor specific path metric or disable it to use the default Airtime |
2207 | * metric. | 2304 | * metric. |
2208 | * | 2305 | * |
2209 | * @NL80211_MESH_SETUP_IE: Information elements for this mesh, for instance, a | 2306 | * @NL80211_MESH_SETUP_IE: Information elements for this mesh, for instance, a |
2210 | * robust security network ie, or a vendor specific information element that | 2307 | * robust security network ie, or a vendor specific information element |
2211 | * vendors will use to identify the path selection methods and metrics in use. | 2308 | * that vendors will use to identify the path selection methods and |
2309 | * metrics in use. | ||
2212 | * | 2310 | * |
2213 | * @NL80211_MESH_SETUP_USERSPACE_AUTH: Enable this option if an authentication | 2311 | * @NL80211_MESH_SETUP_USERSPACE_AUTH: Enable this option if an authentication |
2214 | * daemon will be authenticating mesh candidates. | 2312 | * daemon will be authenticating mesh candidates. |
2215 | * | 2313 | * |
2216 | * @NL80211_MESH_SETUP_USERSPACE_AMPE: Enable this option if an authentication | 2314 | * @NL80211_MESH_SETUP_USERSPACE_AMPE: Enable this option if an authentication |
2217 | * daemon will be securing peer link frames. AMPE is a secured version of Mesh | 2315 | * daemon will be securing peer link frames. AMPE is a secured version of |
2218 | * Peering Management (MPM) and is implemented with the assistance of a | 2316 | * Mesh Peering Management (MPM) and is implemented with the assistance of |
2219 | * userspace daemon. When this flag is set, the kernel will send peer | 2317 | * a userspace daemon. When this flag is set, the kernel will send peer |
2220 | * management frames to a userspace daemon that will implement AMPE | 2318 | * management frames to a userspace daemon that will implement AMPE |
2221 | * functionality (security capabilities selection, key confirmation, and key | 2319 | * functionality (security capabilities selection, key confirmation, and |
2222 | * management). When the flag is unset (default), the kernel can autonomously | 2320 | * key management). When the flag is unset (default), the kernel can |
2223 | * complete (unsecured) mesh peering without the need of a userspace daemon. | 2321 | * autonomously complete (unsecured) mesh peering without the need of a |
2224 | * | 2322 | * userspace daemon. |
2225 | * @NL80211_MESH_SETUP_ATTR_MAX: highest possible mesh setup attribute number | ||
2226 | * | 2323 | * |
2227 | * @NL80211_MESH_SETUP_ENABLE_VENDOR_SYNC: Enable this option to use a | 2324 | * @NL80211_MESH_SETUP_ENABLE_VENDOR_SYNC: Enable this option to use a |
2228 | * vendor specific synchronization method or disable it to use the default | 2325 | * vendor specific synchronization method or disable it to use the default |
2229 | * neighbor offset synchronization | 2326 | * neighbor offset synchronization |
2327 | * | ||
2328 | * @NL80211_MESH_SETUP_ATTR_MAX: highest possible mesh setup attribute number | ||
2230 | * | 2329 | * |
2231 | * @__NL80211_MESH_SETUP_ATTR_AFTER_LAST: Internal use | 2330 | * @__NL80211_MESH_SETUP_ATTR_AFTER_LAST: Internal use |
2232 | */ | 2331 | */ |
@@ -2490,12 +2589,19 @@ enum nl80211_tx_rate_attributes { | |||
2490 | * enum nl80211_band - Frequency band | 2589 | * enum nl80211_band - Frequency band |
2491 | * @NL80211_BAND_2GHZ: 2.4 GHz ISM band | 2590 | * @NL80211_BAND_2GHZ: 2.4 GHz ISM band |
2492 | * @NL80211_BAND_5GHZ: around 5 GHz band (4.9 - 5.7 GHz) | 2591 | * @NL80211_BAND_5GHZ: around 5 GHz band (4.9 - 5.7 GHz) |
2592 | * @NL80211_BAND_60GHZ: around 60 GHz band (58.32 - 64.80 GHz) | ||
2493 | */ | 2593 | */ |
2494 | enum nl80211_band { | 2594 | enum nl80211_band { |
2495 | NL80211_BAND_2GHZ, | 2595 | NL80211_BAND_2GHZ, |
2496 | NL80211_BAND_5GHZ, | 2596 | NL80211_BAND_5GHZ, |
2597 | NL80211_BAND_60GHZ, | ||
2497 | }; | 2598 | }; |
2498 | 2599 | ||
2600 | /** | ||
2601 | * enum nl80211_ps_state - powersave state | ||
2602 | * @NL80211_PS_DISABLED: powersave is disabled | ||
2603 | * @NL80211_PS_ENABLED: powersave is enabled | ||
2604 | */ | ||
2499 | enum nl80211_ps_state { | 2605 | enum nl80211_ps_state { |
2500 | NL80211_PS_DISABLED, | 2606 | NL80211_PS_DISABLED, |
2501 | NL80211_PS_ENABLED, | 2607 | NL80211_PS_ENABLED, |
@@ -2513,6 +2619,17 @@ enum nl80211_ps_state { | |||
2513 | * @NL80211_ATTR_CQM_RSSI_THRESHOLD_EVENT: RSSI threshold event | 2619 | * @NL80211_ATTR_CQM_RSSI_THRESHOLD_EVENT: RSSI threshold event |
2514 | * @NL80211_ATTR_CQM_PKT_LOSS_EVENT: a u32 value indicating that this many | 2620 | * @NL80211_ATTR_CQM_PKT_LOSS_EVENT: a u32 value indicating that this many |
2515 | * consecutive packets were not acknowledged by the peer | 2621 | * consecutive packets were not acknowledged by the peer |
2622 | * @NL80211_ATTR_CQM_TXE_RATE: TX error rate in %. Minimum % of TX failures | ||
2623 | * during the given %NL80211_ATTR_CQM_TXE_INTVL before an | ||
2624 | * %NL80211_CMD_NOTIFY_CQM with reported %NL80211_ATTR_CQM_TXE_RATE and | ||
2625 | * %NL80211_ATTR_CQM_TXE_PKTS is generated. | ||
2626 | * @NL80211_ATTR_CQM_TXE_PKTS: number of attempted packets in a given | ||
2627 | * %NL80211_ATTR_CQM_TXE_INTVL before %NL80211_ATTR_CQM_TXE_RATE is | ||
2628 | * checked. | ||
2629 | * @NL80211_ATTR_CQM_TXE_INTVL: interval in seconds. Specifies the periodic | ||
2630 | * interval in which %NL80211_ATTR_CQM_TXE_PKTS and | ||
2631 | * %NL80211_ATTR_CQM_TXE_RATE must be satisfied before generating an | ||
2632 | * %NL80211_CMD_NOTIFY_CQM. Set to 0 to turn off TX error reporting. | ||
2516 | * @__NL80211_ATTR_CQM_AFTER_LAST: internal | 2633 | * @__NL80211_ATTR_CQM_AFTER_LAST: internal |
2517 | * @NL80211_ATTR_CQM_MAX: highest key attribute | 2634 | * @NL80211_ATTR_CQM_MAX: highest key attribute |
2518 | */ | 2635 | */ |
@@ -2522,6 +2639,9 @@ enum nl80211_attr_cqm { | |||
2522 | NL80211_ATTR_CQM_RSSI_HYST, | 2639 | NL80211_ATTR_CQM_RSSI_HYST, |
2523 | NL80211_ATTR_CQM_RSSI_THRESHOLD_EVENT, | 2640 | NL80211_ATTR_CQM_RSSI_THRESHOLD_EVENT, |
2524 | NL80211_ATTR_CQM_PKT_LOSS_EVENT, | 2641 | NL80211_ATTR_CQM_PKT_LOSS_EVENT, |
2642 | NL80211_ATTR_CQM_TXE_RATE, | ||
2643 | NL80211_ATTR_CQM_TXE_PKTS, | ||
2644 | NL80211_ATTR_CQM_TXE_INTVL, | ||
2525 | 2645 | ||
2526 | /* keep last */ | 2646 | /* keep last */ |
2527 | __NL80211_ATTR_CQM_AFTER_LAST, | 2647 | __NL80211_ATTR_CQM_AFTER_LAST, |
@@ -2534,10 +2654,14 @@ enum nl80211_attr_cqm { | |||
2534 | * configured threshold | 2654 | * configured threshold |
2535 | * @NL80211_CQM_RSSI_THRESHOLD_EVENT_HIGH: The RSSI is higher than the | 2655 | * @NL80211_CQM_RSSI_THRESHOLD_EVENT_HIGH: The RSSI is higher than the |
2536 | * configured threshold | 2656 | * configured threshold |
2657 | * @NL80211_CQM_RSSI_BEACON_LOSS_EVENT: The device experienced beacon loss. | ||
2658 | * (Note that deauth/disassoc will still follow if the AP is not | ||
2659 | * available. This event might get used as roaming event, etc.) | ||
2537 | */ | 2660 | */ |
2538 | enum nl80211_cqm_rssi_threshold_event { | 2661 | enum nl80211_cqm_rssi_threshold_event { |
2539 | NL80211_CQM_RSSI_THRESHOLD_EVENT_LOW, | 2662 | NL80211_CQM_RSSI_THRESHOLD_EVENT_LOW, |
2540 | NL80211_CQM_RSSI_THRESHOLD_EVENT_HIGH, | 2663 | NL80211_CQM_RSSI_THRESHOLD_EVENT_HIGH, |
2664 | NL80211_CQM_RSSI_BEACON_LOSS_EVENT, | ||
2541 | }; | 2665 | }; |
2542 | 2666 | ||
2543 | 2667 | ||
@@ -2867,11 +2991,15 @@ enum nl80211_ap_sme_features { | |||
2867 | * @NL80211_FEATURE_HT_IBSS: This driver supports IBSS with HT datarates. | 2991 | * @NL80211_FEATURE_HT_IBSS: This driver supports IBSS with HT datarates. |
2868 | * @NL80211_FEATURE_INACTIVITY_TIMER: This driver takes care of freeing up | 2992 | * @NL80211_FEATURE_INACTIVITY_TIMER: This driver takes care of freeing up |
2869 | * the connected inactive stations in AP mode. | 2993 | * the connected inactive stations in AP mode. |
2994 | * @NL80211_FEATURE_CELL_BASE_REG_HINTS: This driver has been tested | ||
2995 | * to work properly to suppport receiving regulatory hints from | ||
2996 | * cellular base stations. | ||
2870 | */ | 2997 | */ |
2871 | enum nl80211_feature_flags { | 2998 | enum nl80211_feature_flags { |
2872 | NL80211_FEATURE_SK_TX_STATUS = 1 << 0, | 2999 | NL80211_FEATURE_SK_TX_STATUS = 1 << 0, |
2873 | NL80211_FEATURE_HT_IBSS = 1 << 1, | 3000 | NL80211_FEATURE_HT_IBSS = 1 << 1, |
2874 | NL80211_FEATURE_INACTIVITY_TIMER = 1 << 2, | 3001 | NL80211_FEATURE_INACTIVITY_TIMER = 1 << 2, |
3002 | NL80211_FEATURE_CELL_BASE_REG_HINTS = 1 << 3, | ||
2875 | }; | 3003 | }; |
2876 | 3004 | ||
2877 | /** | 3005 | /** |