diff options
Diffstat (limited to 'include/uapi/linux')
| -rw-r--r-- | include/uapi/linux/nl80211.h | 274 |
1 files changed, 269 insertions, 5 deletions
diff --git a/include/uapi/linux/nl80211.h b/include/uapi/linux/nl80211.h index 5b7dbc1ea966..c46bb016f4e4 100644 --- a/include/uapi/linux/nl80211.h +++ b/include/uapi/linux/nl80211.h | |||
| @@ -513,6 +513,12 @@ | |||
| 513 | * command with the %NL80211_ATTR_WOWLAN_TRIGGERS attribute. For | 513 | * command with the %NL80211_ATTR_WOWLAN_TRIGGERS attribute. For |
| 514 | * more background information, see | 514 | * more background information, see |
| 515 | * http://wireless.kernel.org/en/users/Documentation/WoWLAN. | 515 | * http://wireless.kernel.org/en/users/Documentation/WoWLAN. |
| 516 | * The @NL80211_CMD_SET_WOWLAN command can also be used as a notification | ||
| 517 | * from the driver reporting the wakeup reason. In this case, the | ||
| 518 | * @NL80211_ATTR_WOWLAN_TRIGGERS attribute will contain the reason | ||
| 519 | * for the wakeup, if it was caused by wireless. If it is not present | ||
| 520 | * in the wakeup notification, the wireless device didn't cause the | ||
| 521 | * wakeup but reports that it was woken up. | ||
| 516 | * | 522 | * |
| 517 | * @NL80211_CMD_SET_REKEY_OFFLOAD: This command is used give the driver | 523 | * @NL80211_CMD_SET_REKEY_OFFLOAD: This command is used give the driver |
| 518 | * the necessary information for supporting GTK rekey offload. This | 524 | * the necessary information for supporting GTK rekey offload. This |
| @@ -597,6 +603,14 @@ | |||
| 597 | * command is used in AP/P2P GO mode. Driver has to make sure to clear its | 603 | * command is used in AP/P2P GO mode. Driver has to make sure to clear its |
| 598 | * ACL list during %NL80211_CMD_STOP_AP. | 604 | * ACL list during %NL80211_CMD_STOP_AP. |
| 599 | * | 605 | * |
| 606 | * @NL80211_CMD_RADAR_DETECT: Start a Channel availability check (CAC). Once | ||
| 607 | * a radar is detected or the channel availability scan (CAC) has finished | ||
| 608 | * or was aborted, or a radar was detected, usermode will be notified with | ||
| 609 | * this event. This command is also used to notify userspace about radars | ||
| 610 | * while operating on this channel. | ||
| 611 | * %NL80211_ATTR_RADAR_EVENT is used to inform about the type of the | ||
| 612 | * event. | ||
| 613 | * | ||
| 600 | * @NL80211_CMD_MAX: highest used command number | 614 | * @NL80211_CMD_MAX: highest used command number |
| 601 | * @__NL80211_CMD_AFTER_LAST: internal use | 615 | * @__NL80211_CMD_AFTER_LAST: internal use |
| 602 | */ | 616 | */ |
| @@ -749,6 +763,8 @@ enum nl80211_commands { | |||
| 749 | 763 | ||
| 750 | NL80211_CMD_SET_MAC_ACL, | 764 | NL80211_CMD_SET_MAC_ACL, |
| 751 | 765 | ||
| 766 | NL80211_CMD_RADAR_DETECT, | ||
| 767 | |||
| 752 | /* add new commands above here */ | 768 | /* add new commands above here */ |
| 753 | 769 | ||
| 754 | /* used to define NL80211_CMD_MAX below */ | 770 | /* used to define NL80211_CMD_MAX below */ |
| @@ -1336,6 +1352,22 @@ enum nl80211_commands { | |||
| 1336 | * number of MAC addresses that a device can support for MAC | 1352 | * number of MAC addresses that a device can support for MAC |
| 1337 | * ACL. | 1353 | * ACL. |
| 1338 | * | 1354 | * |
| 1355 | * @NL80211_ATTR_RADAR_EVENT: Type of radar event for notification to userspace, | ||
| 1356 | * contains a value of enum nl80211_radar_event (u32). | ||
| 1357 | * | ||
| 1358 | * @NL80211_ATTR_EXT_CAPA: 802.11 extended capabilities that the kernel driver | ||
| 1359 | * has and handles. The format is the same as the IE contents. See | ||
| 1360 | * 802.11-2012 8.4.2.29 for more information. | ||
| 1361 | * @NL80211_ATTR_EXT_CAPA_MASK: Extended capabilities that the kernel driver | ||
| 1362 | * has set in the %NL80211_ATTR_EXT_CAPA value, for multibit fields. | ||
| 1363 | * | ||
| 1364 | * @NL80211_ATTR_STA_CAPABILITY: Station capabilities (u16) are advertised to | ||
| 1365 | * the driver, e.g., to enable TDLS power save (PU-APSD). | ||
| 1366 | * | ||
| 1367 | * @NL80211_ATTR_STA_EXT_CAPABILITY: Station extended capabilities are | ||
| 1368 | * advertised to the driver, e.g., to enable TDLS off channel operations | ||
| 1369 | * and PU-APSD. | ||
| 1370 | * | ||
| 1339 | * @NL80211_ATTR_MAX: highest attribute number currently defined | 1371 | * @NL80211_ATTR_MAX: highest attribute number currently defined |
| 1340 | * @__NL80211_ATTR_AFTER_LAST: internal use | 1372 | * @__NL80211_ATTR_AFTER_LAST: internal use |
| 1341 | */ | 1373 | */ |
| @@ -1614,6 +1646,14 @@ enum nl80211_attrs { | |||
| 1614 | 1646 | ||
| 1615 | NL80211_ATTR_MAC_ACL_MAX, | 1647 | NL80211_ATTR_MAC_ACL_MAX, |
| 1616 | 1648 | ||
| 1649 | NL80211_ATTR_RADAR_EVENT, | ||
| 1650 | |||
| 1651 | NL80211_ATTR_EXT_CAPA, | ||
| 1652 | NL80211_ATTR_EXT_CAPA_MASK, | ||
| 1653 | |||
| 1654 | NL80211_ATTR_STA_CAPABILITY, | ||
| 1655 | NL80211_ATTR_STA_EXT_CAPABILITY, | ||
| 1656 | |||
| 1617 | /* add attributes here, update the policy in nl80211.c */ | 1657 | /* add attributes here, update the policy in nl80211.c */ |
| 1618 | 1658 | ||
| 1619 | __NL80211_ATTR_AFTER_LAST, | 1659 | __NL80211_ATTR_AFTER_LAST, |
| @@ -1851,6 +1891,8 @@ enum nl80211_sta_bss_param { | |||
| 1851 | * @NL80211_STA_INFO_INACTIVE_TIME: time since last activity (u32, msecs) | 1891 | * @NL80211_STA_INFO_INACTIVE_TIME: time since last activity (u32, msecs) |
| 1852 | * @NL80211_STA_INFO_RX_BYTES: total received bytes (u32, from this station) | 1892 | * @NL80211_STA_INFO_RX_BYTES: total received bytes (u32, from this station) |
| 1853 | * @NL80211_STA_INFO_TX_BYTES: total transmitted bytes (u32, to this station) | 1893 | * @NL80211_STA_INFO_TX_BYTES: total transmitted bytes (u32, to this station) |
| 1894 | * @NL80211_STA_INFO_RX_BYTES64: total received bytes (u64, from this station) | ||
| 1895 | * @NL80211_STA_INFO_TX_BYTES64: total transmitted bytes (u64, to this station) | ||
| 1854 | * @NL80211_STA_INFO_SIGNAL: signal strength of last received PPDU (u8, dBm) | 1896 | * @NL80211_STA_INFO_SIGNAL: signal strength of last received PPDU (u8, dBm) |
| 1855 | * @NL80211_STA_INFO_TX_BITRATE: current unicast tx rate, nested attribute | 1897 | * @NL80211_STA_INFO_TX_BITRATE: current unicast tx rate, nested attribute |
| 1856 | * containing info as possible, see &enum nl80211_rate_info | 1898 | * containing info as possible, see &enum nl80211_rate_info |
| @@ -1903,6 +1945,8 @@ enum nl80211_sta_info { | |||
| 1903 | NL80211_STA_INFO_LOCAL_PM, | 1945 | NL80211_STA_INFO_LOCAL_PM, |
| 1904 | NL80211_STA_INFO_PEER_PM, | 1946 | NL80211_STA_INFO_PEER_PM, |
| 1905 | NL80211_STA_INFO_NONPEER_PM, | 1947 | NL80211_STA_INFO_NONPEER_PM, |
| 1948 | NL80211_STA_INFO_RX_BYTES64, | ||
| 1949 | NL80211_STA_INFO_TX_BYTES64, | ||
| 1906 | 1950 | ||
| 1907 | /* keep last */ | 1951 | /* keep last */ |
| 1908 | __NL80211_STA_INFO_AFTER_LAST, | 1952 | __NL80211_STA_INFO_AFTER_LAST, |
| @@ -2012,6 +2056,20 @@ enum nl80211_band_attr { | |||
| 2012 | * on this channel in current regulatory domain. | 2056 | * on this channel in current regulatory domain. |
| 2013 | * @NL80211_FREQUENCY_ATTR_MAX_TX_POWER: Maximum transmission power in mBm | 2057 | * @NL80211_FREQUENCY_ATTR_MAX_TX_POWER: Maximum transmission power in mBm |
| 2014 | * (100 * dBm). | 2058 | * (100 * dBm). |
| 2059 | * @NL80211_FREQUENCY_ATTR_DFS_STATE: current state for DFS | ||
| 2060 | * (enum nl80211_dfs_state) | ||
| 2061 | * @NL80211_FREQUENCY_ATTR_DFS_TIME: time in miliseconds for how long | ||
| 2062 | * this channel is in this DFS state. | ||
| 2063 | * @NL80211_FREQUENCY_ATTR_NO_HT40_MINUS: HT40- isn't possible with this | ||
| 2064 | * channel as the control channel | ||
| 2065 | * @NL80211_FREQUENCY_ATTR_NO_HT40_PLUS: HT40+ isn't possible with this | ||
| 2066 | * channel as the control channel | ||
| 2067 | * @NL80211_FREQUENCY_ATTR_NO_80MHZ: any 80 MHz channel using this channel | ||
| 2068 | * as the primary or any of the secondary channels isn't possible, | ||
| 2069 | * this includes 80+80 channels | ||
| 2070 | * @NL80211_FREQUENCY_ATTR_NO_160MHZ: any 160 MHz (but not 80+80) channel | ||
| 2071 | * using this channel as the primary or any of the secondary channels | ||
| 2072 | * isn't possible | ||
| 2015 | * @NL80211_FREQUENCY_ATTR_MAX: highest frequency attribute number | 2073 | * @NL80211_FREQUENCY_ATTR_MAX: highest frequency attribute number |
| 2016 | * currently defined | 2074 | * currently defined |
| 2017 | * @__NL80211_FREQUENCY_ATTR_AFTER_LAST: internal use | 2075 | * @__NL80211_FREQUENCY_ATTR_AFTER_LAST: internal use |
| @@ -2024,6 +2082,12 @@ enum nl80211_frequency_attr { | |||
| 2024 | NL80211_FREQUENCY_ATTR_NO_IBSS, | 2082 | NL80211_FREQUENCY_ATTR_NO_IBSS, |
| 2025 | NL80211_FREQUENCY_ATTR_RADAR, | 2083 | NL80211_FREQUENCY_ATTR_RADAR, |
| 2026 | NL80211_FREQUENCY_ATTR_MAX_TX_POWER, | 2084 | NL80211_FREQUENCY_ATTR_MAX_TX_POWER, |
| 2085 | NL80211_FREQUENCY_ATTR_DFS_STATE, | ||
| 2086 | NL80211_FREQUENCY_ATTR_DFS_TIME, | ||
| 2087 | NL80211_FREQUENCY_ATTR_NO_HT40_MINUS, | ||
| 2088 | NL80211_FREQUENCY_ATTR_NO_HT40_PLUS, | ||
| 2089 | NL80211_FREQUENCY_ATTR_NO_80MHZ, | ||
| 2090 | NL80211_FREQUENCY_ATTR_NO_160MHZ, | ||
| 2027 | 2091 | ||
| 2028 | /* keep last */ | 2092 | /* keep last */ |
| 2029 | __NL80211_FREQUENCY_ATTR_AFTER_LAST, | 2093 | __NL80211_FREQUENCY_ATTR_AFTER_LAST, |
| @@ -2896,10 +2960,12 @@ enum nl80211_tx_power_setting { | |||
| 2896 | * corresponds to the lowest-order bit in the second byte of the mask. | 2960 | * corresponds to the lowest-order bit in the second byte of the mask. |
| 2897 | * For example: The match 00:xx:00:00:xx:00:00:00:00:xx:xx:xx (where | 2961 | * For example: The match 00:xx:00:00:xx:00:00:00:00:xx:xx:xx (where |
| 2898 | * xx indicates "don't care") would be represented by a pattern of | 2962 | * xx indicates "don't care") would be represented by a pattern of |
| 2899 | * twelve zero bytes, and a mask of "0xed,0x07". | 2963 | * twelve zero bytes, and a mask of "0xed,0x01". |
| 2900 | * Note that the pattern matching is done as though frames were not | 2964 | * Note that the pattern matching is done as though frames were not |
| 2901 | * 802.11 frames but 802.3 frames, i.e. the frame is fully unpacked | 2965 | * 802.11 frames but 802.3 frames, i.e. the frame is fully unpacked |
| 2902 | * first (including SNAP header unpacking) and then matched. | 2966 | * first (including SNAP header unpacking) and then matched. |
| 2967 | * @NL80211_WOWLAN_PKTPAT_OFFSET: packet offset, pattern is matched after | ||
| 2968 | * these fixed number of bytes of received packet | ||
| 2903 | * @NUM_NL80211_WOWLAN_PKTPAT: number of attributes | 2969 | * @NUM_NL80211_WOWLAN_PKTPAT: number of attributes |
| 2904 | * @MAX_NL80211_WOWLAN_PKTPAT: max attribute number | 2970 | * @MAX_NL80211_WOWLAN_PKTPAT: max attribute number |
| 2905 | */ | 2971 | */ |
| @@ -2907,6 +2973,7 @@ enum nl80211_wowlan_packet_pattern_attr { | |||
| 2907 | __NL80211_WOWLAN_PKTPAT_INVALID, | 2973 | __NL80211_WOWLAN_PKTPAT_INVALID, |
| 2908 | NL80211_WOWLAN_PKTPAT_MASK, | 2974 | NL80211_WOWLAN_PKTPAT_MASK, |
| 2909 | NL80211_WOWLAN_PKTPAT_PATTERN, | 2975 | NL80211_WOWLAN_PKTPAT_PATTERN, |
| 2976 | NL80211_WOWLAN_PKTPAT_OFFSET, | ||
| 2910 | 2977 | ||
| 2911 | NUM_NL80211_WOWLAN_PKTPAT, | 2978 | NUM_NL80211_WOWLAN_PKTPAT, |
| 2912 | MAX_NL80211_WOWLAN_PKTPAT = NUM_NL80211_WOWLAN_PKTPAT - 1, | 2979 | MAX_NL80211_WOWLAN_PKTPAT = NUM_NL80211_WOWLAN_PKTPAT - 1, |
| @@ -2917,6 +2984,7 @@ enum nl80211_wowlan_packet_pattern_attr { | |||
| 2917 | * @max_patterns: maximum number of patterns supported | 2984 | * @max_patterns: maximum number of patterns supported |
| 2918 | * @min_pattern_len: minimum length of each pattern | 2985 | * @min_pattern_len: minimum length of each pattern |
| 2919 | * @max_pattern_len: maximum length of each pattern | 2986 | * @max_pattern_len: maximum length of each pattern |
| 2987 | * @max_pkt_offset: maximum Rx packet offset | ||
| 2920 | * | 2988 | * |
| 2921 | * This struct is carried in %NL80211_WOWLAN_TRIG_PKT_PATTERN when | 2989 | * This struct is carried in %NL80211_WOWLAN_TRIG_PKT_PATTERN when |
| 2922 | * that is part of %NL80211_ATTR_WOWLAN_TRIGGERS_SUPPORTED in the | 2990 | * that is part of %NL80211_ATTR_WOWLAN_TRIGGERS_SUPPORTED in the |
| @@ -2926,6 +2994,7 @@ struct nl80211_wowlan_pattern_support { | |||
| 2926 | __u32 max_patterns; | 2994 | __u32 max_patterns; |
| 2927 | __u32 min_pattern_len; | 2995 | __u32 min_pattern_len; |
| 2928 | __u32 max_pattern_len; | 2996 | __u32 max_pattern_len; |
| 2997 | __u32 max_pkt_offset; | ||
| 2929 | } __attribute__((packed)); | 2998 | } __attribute__((packed)); |
| 2930 | 2999 | ||
| 2931 | /** | 3000 | /** |
| @@ -2941,12 +3010,17 @@ struct nl80211_wowlan_pattern_support { | |||
| 2941 | * @NL80211_WOWLAN_TRIG_PKT_PATTERN: wake up on the specified packet patterns | 3010 | * @NL80211_WOWLAN_TRIG_PKT_PATTERN: wake up on the specified packet patterns |
| 2942 | * which are passed in an array of nested attributes, each nested attribute | 3011 | * which are passed in an array of nested attributes, each nested attribute |
| 2943 | * defining a with attributes from &struct nl80211_wowlan_trig_pkt_pattern. | 3012 | * defining a with attributes from &struct nl80211_wowlan_trig_pkt_pattern. |
| 2944 | * Each pattern defines a wakeup packet. The matching is done on the MSDU, | 3013 | * Each pattern defines a wakeup packet. Packet offset is associated with |
| 2945 | * i.e. as though the packet was an 802.3 packet, so the pattern matching | 3014 | * each pattern which is used while matching the pattern. The matching is |
| 2946 | * is done after the packet is converted to the MSDU. | 3015 | * done on the MSDU, i.e. as though the packet was an 802.3 packet, so the |
| 3016 | * pattern matching is done after the packet is converted to the MSDU. | ||
| 2947 | * | 3017 | * |
| 2948 | * In %NL80211_ATTR_WOWLAN_TRIGGERS_SUPPORTED, it is a binary attribute | 3018 | * In %NL80211_ATTR_WOWLAN_TRIGGERS_SUPPORTED, it is a binary attribute |
| 2949 | * carrying a &struct nl80211_wowlan_pattern_support. | 3019 | * carrying a &struct nl80211_wowlan_pattern_support. |
| 3020 | * | ||
| 3021 | * When reporting wakeup. it is a u32 attribute containing the 0-based | ||
| 3022 | * index of the pattern that caused the wakeup, in the patterns passed | ||
| 3023 | * to the kernel when configuring. | ||
| 2950 | * @NL80211_WOWLAN_TRIG_GTK_REKEY_SUPPORTED: Not a real trigger, and cannot be | 3024 | * @NL80211_WOWLAN_TRIG_GTK_REKEY_SUPPORTED: Not a real trigger, and cannot be |
| 2951 | * used when setting, used only to indicate that GTK rekeying is supported | 3025 | * used when setting, used only to indicate that GTK rekeying is supported |
| 2952 | * by the device (flag) | 3026 | * by the device (flag) |
| @@ -2957,8 +3031,36 @@ struct nl80211_wowlan_pattern_support { | |||
| 2957 | * @NL80211_WOWLAN_TRIG_4WAY_HANDSHAKE: wake up on 4-way handshake (flag) | 3031 | * @NL80211_WOWLAN_TRIG_4WAY_HANDSHAKE: wake up on 4-way handshake (flag) |
| 2958 | * @NL80211_WOWLAN_TRIG_RFKILL_RELEASE: wake up when rfkill is released | 3032 | * @NL80211_WOWLAN_TRIG_RFKILL_RELEASE: wake up when rfkill is released |
| 2959 | * (on devices that have rfkill in the device) (flag) | 3033 | * (on devices that have rfkill in the device) (flag) |
| 3034 | * @NL80211_WOWLAN_TRIG_WAKEUP_PKT_80211: For wakeup reporting only, contains | ||
| 3035 | * the 802.11 packet that caused the wakeup, e.g. a deauth frame. The frame | ||
| 3036 | * may be truncated, the @NL80211_WOWLAN_TRIG_WAKEUP_PKT_80211_LEN | ||
| 3037 | * attribute contains the original length. | ||
| 3038 | * @NL80211_WOWLAN_TRIG_WAKEUP_PKT_80211_LEN: Original length of the 802.11 | ||
| 3039 | * packet, may be bigger than the @NL80211_WOWLAN_TRIG_WAKEUP_PKT_80211 | ||
| 3040 | * attribute if the packet was truncated somewhere. | ||
| 3041 | * @NL80211_WOWLAN_TRIG_WAKEUP_PKT_8023: For wakeup reporting only, contains the | ||
| 3042 | * 802.11 packet that caused the wakeup, e.g. a magic packet. The frame may | ||
| 3043 | * be truncated, the @NL80211_WOWLAN_TRIG_WAKEUP_PKT_8023_LEN attribute | ||
| 3044 | * contains the original length. | ||
| 3045 | * @NL80211_WOWLAN_TRIG_WAKEUP_PKT_8023_LEN: Original length of the 802.3 | ||
| 3046 | * packet, may be bigger than the @NL80211_WOWLAN_TRIG_WAKEUP_PKT_8023 | ||
| 3047 | * attribute if the packet was truncated somewhere. | ||
| 3048 | * @NL80211_WOWLAN_TRIG_TCP_CONNECTION: TCP connection wake, see DOC section | ||
| 3049 | * "TCP connection wakeup" for more details. This is a nested attribute | ||
| 3050 | * containing the exact information for establishing and keeping alive | ||
| 3051 | * the TCP connection. | ||
| 3052 | * @NL80211_WOWLAN_TRIG_TCP_WAKEUP_MATCH: For wakeup reporting only, the | ||
| 3053 | * wakeup packet was received on the TCP connection | ||
| 3054 | * @NL80211_WOWLAN_TRIG_WAKEUP_TCP_CONNLOST: For wakeup reporting only, the | ||
| 3055 | * TCP connection was lost or failed to be established | ||
| 3056 | * @NL80211_WOWLAN_TRIG_WAKEUP_TCP_NOMORETOKENS: For wakeup reporting only, | ||
| 3057 | * the TCP connection ran out of tokens to use for data to send to the | ||
| 3058 | * service | ||
| 2960 | * @NUM_NL80211_WOWLAN_TRIG: number of wake on wireless triggers | 3059 | * @NUM_NL80211_WOWLAN_TRIG: number of wake on wireless triggers |
| 2961 | * @MAX_NL80211_WOWLAN_TRIG: highest wowlan trigger attribute number | 3060 | * @MAX_NL80211_WOWLAN_TRIG: highest wowlan trigger attribute number |
| 3061 | * | ||
| 3062 | * These nested attributes are used to configure the wakeup triggers and | ||
| 3063 | * to report the wakeup reason(s). | ||
| 2962 | */ | 3064 | */ |
| 2963 | enum nl80211_wowlan_triggers { | 3065 | enum nl80211_wowlan_triggers { |
| 2964 | __NL80211_WOWLAN_TRIG_INVALID, | 3066 | __NL80211_WOWLAN_TRIG_INVALID, |
| @@ -2971,6 +3073,14 @@ enum nl80211_wowlan_triggers { | |||
| 2971 | NL80211_WOWLAN_TRIG_EAP_IDENT_REQUEST, | 3073 | NL80211_WOWLAN_TRIG_EAP_IDENT_REQUEST, |
| 2972 | NL80211_WOWLAN_TRIG_4WAY_HANDSHAKE, | 3074 | NL80211_WOWLAN_TRIG_4WAY_HANDSHAKE, |
| 2973 | NL80211_WOWLAN_TRIG_RFKILL_RELEASE, | 3075 | NL80211_WOWLAN_TRIG_RFKILL_RELEASE, |
| 3076 | NL80211_WOWLAN_TRIG_WAKEUP_PKT_80211, | ||
| 3077 | NL80211_WOWLAN_TRIG_WAKEUP_PKT_80211_LEN, | ||
| 3078 | NL80211_WOWLAN_TRIG_WAKEUP_PKT_8023, | ||
| 3079 | NL80211_WOWLAN_TRIG_WAKEUP_PKT_8023_LEN, | ||
| 3080 | NL80211_WOWLAN_TRIG_TCP_CONNECTION, | ||
| 3081 | NL80211_WOWLAN_TRIG_WAKEUP_TCP_MATCH, | ||
| 3082 | NL80211_WOWLAN_TRIG_WAKEUP_TCP_CONNLOST, | ||
| 3083 | NL80211_WOWLAN_TRIG_WAKEUP_TCP_NOMORETOKENS, | ||
| 2974 | 3084 | ||
| 2975 | /* keep last */ | 3085 | /* keep last */ |
| 2976 | NUM_NL80211_WOWLAN_TRIG, | 3086 | NUM_NL80211_WOWLAN_TRIG, |
| @@ -2978,6 +3088,116 @@ enum nl80211_wowlan_triggers { | |||
| 2978 | }; | 3088 | }; |
| 2979 | 3089 | ||
| 2980 | /** | 3090 | /** |
| 3091 | * DOC: TCP connection wakeup | ||
| 3092 | * | ||
| 3093 | * Some devices can establish a TCP connection in order to be woken up by a | ||
| 3094 | * packet coming in from outside their network segment, or behind NAT. If | ||
| 3095 | * configured, the device will establish a TCP connection to the given | ||
| 3096 | * service, and periodically send data to that service. The first data | ||
| 3097 | * packet is usually transmitted after SYN/ACK, also ACKing the SYN/ACK. | ||
| 3098 | * The data packets can optionally include a (little endian) sequence | ||
| 3099 | * number (in the TCP payload!) that is generated by the device, and, also | ||
| 3100 | * optionally, a token from a list of tokens. This serves as a keep-alive | ||
| 3101 | * with the service, and for NATed connections, etc. | ||
| 3102 | * | ||
| 3103 | * During this keep-alive period, the server doesn't send any data to the | ||
| 3104 | * client. When receiving data, it is compared against the wakeup pattern | ||
| 3105 | * (and mask) and if it matches, the host is woken up. Similarly, if the | ||
| 3106 | * connection breaks or cannot be established to start with, the host is | ||
| 3107 | * also woken up. | ||
| 3108 | * | ||
| 3109 | * Developer's note: ARP offload is required for this, otherwise TCP | ||
| 3110 | * response packets might not go through correctly. | ||
| 3111 | */ | ||
| 3112 | |||
| 3113 | /** | ||
| 3114 | * struct nl80211_wowlan_tcp_data_seq - WoWLAN TCP data sequence | ||
| 3115 | * @start: starting value | ||
| 3116 | * @offset: offset of sequence number in packet | ||
| 3117 | * @len: length of the sequence value to write, 1 through 4 | ||
| 3118 | * | ||
| 3119 | * Note: don't confuse with the TCP sequence number(s), this is for the | ||
| 3120 | * keepalive packet payload. The actual value is written into the packet | ||
| 3121 | * in little endian. | ||
| 3122 | */ | ||
| 3123 | struct nl80211_wowlan_tcp_data_seq { | ||
| 3124 | __u32 start, offset, len; | ||
| 3125 | }; | ||
| 3126 | |||
| 3127 | /** | ||
| 3128 | * struct nl80211_wowlan_tcp_data_token - WoWLAN TCP data token config | ||
| 3129 | * @offset: offset of token in packet | ||
| 3130 | * @len: length of each token | ||
| 3131 | * @token_stream: stream of data to be used for the tokens, the length must | ||
| 3132 | * be a multiple of @len for this to make sense | ||
| 3133 | */ | ||
| 3134 | struct nl80211_wowlan_tcp_data_token { | ||
| 3135 | __u32 offset, len; | ||
| 3136 | __u8 token_stream[]; | ||
| 3137 | }; | ||
| 3138 | |||
| 3139 | /** | ||
| 3140 | * struct nl80211_wowlan_tcp_data_token_feature - data token features | ||
| 3141 | * @min_len: minimum token length | ||
| 3142 | * @max_len: maximum token length | ||
| 3143 | * @bufsize: total available token buffer size (max size of @token_stream) | ||
| 3144 | */ | ||
| 3145 | struct nl80211_wowlan_tcp_data_token_feature { | ||
| 3146 | __u32 min_len, max_len, bufsize; | ||
| 3147 | }; | ||
| 3148 | |||
| 3149 | /** | ||
| 3150 | * enum nl80211_wowlan_tcp_attrs - WoWLAN TCP connection parameters | ||
| 3151 | * @__NL80211_WOWLAN_TCP_INVALID: invalid number for nested attributes | ||
| 3152 | * @NL80211_WOWLAN_TCP_SRC_IPV4: source IPv4 address (in network byte order) | ||
| 3153 | * @NL80211_WOWLAN_TCP_DST_IPV4: destination IPv4 address | ||
| 3154 | * (in network byte order) | ||
| 3155 | * @NL80211_WOWLAN_TCP_DST_MAC: destination MAC address, this is given because | ||
| 3156 | * route lookup when configured might be invalid by the time we suspend, | ||
| 3157 | * and doing a route lookup when suspending is no longer possible as it | ||
| 3158 | * might require ARP querying. | ||
| 3159 | * @NL80211_WOWLAN_TCP_SRC_PORT: source port (u16); optional, if not given a | ||
| 3160 | * socket and port will be allocated | ||
| 3161 | * @NL80211_WOWLAN_TCP_DST_PORT: destination port (u16) | ||
| 3162 | * @NL80211_WOWLAN_TCP_DATA_PAYLOAD: data packet payload, at least one byte. | ||
| 3163 | * For feature advertising, a u32 attribute holding the maximum length | ||
| 3164 | * of the data payload. | ||
| 3165 | * @NL80211_WOWLAN_TCP_DATA_PAYLOAD_SEQ: data packet sequence configuration | ||
| 3166 | * (if desired), a &struct nl80211_wowlan_tcp_data_seq. For feature | ||
| 3167 | * advertising it is just a flag | ||
| 3168 | * @NL80211_WOWLAN_TCP_DATA_PAYLOAD_TOKEN: data packet token configuration, | ||
| 3169 | * see &struct nl80211_wowlan_tcp_data_token and for advertising see | ||
| 3170 | * &struct nl80211_wowlan_tcp_data_token_feature. | ||
| 3171 | * @NL80211_WOWLAN_TCP_DATA_INTERVAL: data interval in seconds, maximum | ||
| 3172 | * interval in feature advertising (u32) | ||
| 3173 | * @NL80211_WOWLAN_TCP_WAKE_PAYLOAD: wake packet payload, for advertising a | ||
| 3174 | * u32 attribute holding the maximum length | ||
| 3175 | * @NL80211_WOWLAN_TCP_WAKE_MASK: Wake packet payload mask, not used for | ||
| 3176 | * feature advertising. The mask works like @NL80211_WOWLAN_PKTPAT_MASK | ||
| 3177 | * but on the TCP payload only. | ||
| 3178 | * @NUM_NL80211_WOWLAN_TCP: number of TCP attributes | ||
| 3179 | * @MAX_NL80211_WOWLAN_TCP: highest attribute number | ||
| 3180 | */ | ||
| 3181 | enum nl80211_wowlan_tcp_attrs { | ||
| 3182 | __NL80211_WOWLAN_TCP_INVALID, | ||
| 3183 | NL80211_WOWLAN_TCP_SRC_IPV4, | ||
| 3184 | NL80211_WOWLAN_TCP_DST_IPV4, | ||
| 3185 | NL80211_WOWLAN_TCP_DST_MAC, | ||
| 3186 | NL80211_WOWLAN_TCP_SRC_PORT, | ||
| 3187 | NL80211_WOWLAN_TCP_DST_PORT, | ||
| 3188 | NL80211_WOWLAN_TCP_DATA_PAYLOAD, | ||
| 3189 | NL80211_WOWLAN_TCP_DATA_PAYLOAD_SEQ, | ||
| 3190 | NL80211_WOWLAN_TCP_DATA_PAYLOAD_TOKEN, | ||
| 3191 | NL80211_WOWLAN_TCP_DATA_INTERVAL, | ||
| 3192 | NL80211_WOWLAN_TCP_WAKE_PAYLOAD, | ||
| 3193 | NL80211_WOWLAN_TCP_WAKE_MASK, | ||
| 3194 | |||
| 3195 | /* keep last */ | ||
| 3196 | NUM_NL80211_WOWLAN_TCP, | ||
| 3197 | MAX_NL80211_WOWLAN_TCP = NUM_NL80211_WOWLAN_TCP - 1 | ||
| 3198 | }; | ||
| 3199 | |||
| 3200 | /** | ||
| 2981 | * enum nl80211_iface_limit_attrs - limit attributes | 3201 | * enum nl80211_iface_limit_attrs - limit attributes |
| 2982 | * @NL80211_IFACE_LIMIT_UNSPEC: (reserved) | 3202 | * @NL80211_IFACE_LIMIT_UNSPEC: (reserved) |
| 2983 | * @NL80211_IFACE_LIMIT_MAX: maximum number of interfaces that | 3203 | * @NL80211_IFACE_LIMIT_MAX: maximum number of interfaces that |
| @@ -3234,6 +3454,8 @@ enum nl80211_ap_sme_features { | |||
| 3234 | * Note that even for drivers that support this, the default is to add | 3454 | * Note that even for drivers that support this, the default is to add |
| 3235 | * stations in authenticated/associated state, so to add unauthenticated | 3455 | * stations in authenticated/associated state, so to add unauthenticated |
| 3236 | * stations the authenticated/associated bits have to be set in the mask. | 3456 | * stations the authenticated/associated bits have to be set in the mask. |
| 3457 | * @NL80211_FEATURE_ADVERTISE_CHAN_LIMITS: cfg80211 advertises channel limits | ||
| 3458 | * (HT40, VHT 80/160 MHz) if this flag is set | ||
| 3237 | */ | 3459 | */ |
| 3238 | enum nl80211_feature_flags { | 3460 | enum nl80211_feature_flags { |
| 3239 | NL80211_FEATURE_SK_TX_STATUS = 1 << 0, | 3461 | NL80211_FEATURE_SK_TX_STATUS = 1 << 0, |
| @@ -3249,7 +3471,9 @@ enum nl80211_feature_flags { | |||
| 3249 | NL80211_FEATURE_NEED_OBSS_SCAN = 1 << 10, | 3471 | NL80211_FEATURE_NEED_OBSS_SCAN = 1 << 10, |
| 3250 | NL80211_FEATURE_P2P_GO_CTWIN = 1 << 11, | 3472 | NL80211_FEATURE_P2P_GO_CTWIN = 1 << 11, |
| 3251 | NL80211_FEATURE_P2P_GO_OPPPS = 1 << 12, | 3473 | NL80211_FEATURE_P2P_GO_OPPPS = 1 << 12, |
| 3252 | NL80211_FEATURE_FULL_AP_CLIENT_STATE = 1 << 13, | 3474 | /* bit 13 is reserved */ |
| 3475 | NL80211_FEATURE_ADVERTISE_CHAN_LIMITS = 1 << 14, | ||
| 3476 | NL80211_FEATURE_FULL_AP_CLIENT_STATE = 1 << 15, | ||
| 3253 | }; | 3477 | }; |
| 3254 | 3478 | ||
| 3255 | /** | 3479 | /** |
| @@ -3323,4 +3547,44 @@ enum nl80211_acl_policy { | |||
| 3323 | NL80211_ACL_POLICY_DENY_UNLESS_LISTED, | 3547 | NL80211_ACL_POLICY_DENY_UNLESS_LISTED, |
| 3324 | }; | 3548 | }; |
| 3325 | 3549 | ||
| 3550 | /** | ||
| 3551 | * enum nl80211_radar_event - type of radar event for DFS operation | ||
| 3552 | * | ||
| 3553 | * Type of event to be used with NL80211_ATTR_RADAR_EVENT to inform userspace | ||
| 3554 | * about detected radars or success of the channel available check (CAC) | ||
| 3555 | * | ||
| 3556 | * @NL80211_RADAR_DETECTED: A radar pattern has been detected. The channel is | ||
| 3557 | * now unusable. | ||
| 3558 | * @NL80211_RADAR_CAC_FINISHED: Channel Availability Check has been finished, | ||
| 3559 | * the channel is now available. | ||
| 3560 | * @NL80211_RADAR_CAC_ABORTED: Channel Availability Check has been aborted, no | ||
| 3561 | * change to the channel status. | ||
| 3562 | * @NL80211_RADAR_NOP_FINISHED: The Non-Occupancy Period for this channel is | ||
| 3563 | * over, channel becomes usable. | ||
| 3564 | */ | ||
| 3565 | enum nl80211_radar_event { | ||
| 3566 | NL80211_RADAR_DETECTED, | ||
| 3567 | NL80211_RADAR_CAC_FINISHED, | ||
| 3568 | NL80211_RADAR_CAC_ABORTED, | ||
| 3569 | NL80211_RADAR_NOP_FINISHED, | ||
| 3570 | }; | ||
| 3571 | |||
| 3572 | /** | ||
| 3573 | * enum nl80211_dfs_state - DFS states for channels | ||
| 3574 | * | ||
| 3575 | * Channel states used by the DFS code. | ||
| 3576 | * | ||
| 3577 | * @IEEE80211_DFS_USABLE: The channel can be used, but channel availability | ||
| 3578 | * check (CAC) must be performed before using it for AP or IBSS. | ||
| 3579 | * @IEEE80211_DFS_UNAVAILABLE: A radar has been detected on this channel, it | ||
| 3580 | * is therefore marked as not available. | ||
| 3581 | * @IEEE80211_DFS_AVAILABLE: The channel has been CAC checked and is available. | ||
| 3582 | */ | ||
| 3583 | |||
| 3584 | enum nl80211_dfs_state { | ||
| 3585 | NL80211_DFS_USABLE, | ||
| 3586 | NL80211_DFS_UNAVAILABLE, | ||
| 3587 | NL80211_DFS_AVAILABLE, | ||
| 3588 | }; | ||
| 3589 | |||
| 3326 | #endif /* __LINUX_NL80211_H */ | 3590 | #endif /* __LINUX_NL80211_H */ |
