-@@ -1549,6 +1699,7 @@ enum nl80211_attrs {
- #define NL80211_TKIP_DATA_OFFSET_TX_MIC_KEY 16
- #define NL80211_TKIP_DATA_OFFSET_RX_MIC_KEY 24
- #define NL80211_HT_CAPABILITY_LEN 26
-+#define NL80211_VHT_CAPABILITY_LEN 12
-
- #define NL80211_MAX_NR_CIPHER_SUITES 5
- #define NL80211_MAX_NR_AKM_SUITES 2
-@@ -1575,6 +1726,10 @@ enum nl80211_attrs {
- * @NL80211_IFTYPE_MESH_POINT: mesh point
- * @NL80211_IFTYPE_P2P_CLIENT: P2P client
- * @NL80211_IFTYPE_P2P_GO: P2P group owner
-+ * @NL80211_IFTYPE_P2P_DEVICE: P2P device interface type, this is not a netdev
-+ * and therefore can't be created in the normal ways, use the
-+ * %NL80211_CMD_START_P2P_DEVICE and %NL80211_CMD_STOP_P2P_DEVICE
-+ * commands to create and destroy one
- * @NL80211_IFTYPE_MAX: highest interface type number currently defined
- * @NUM_NL80211_IFTYPES: number of defined interface types
- *
-@@ -1593,6 +1748,7 @@ enum nl80211_iftype {
- NL80211_IFTYPE_MESH_POINT,
- NL80211_IFTYPE_P2P_CLIENT,
- NL80211_IFTYPE_P2P_GO,
-+ NL80211_IFTYPE_P2P_DEVICE,
-
- /* keep last */
- NUM_NL80211_IFTYPES,
-@@ -1617,6 +1773,9 @@ enum nl80211_iftype {
- * flag can't be changed, it is only valid while adding a station, and
- * attempts to change it will silently be ignored (rather than rejected
- * as errors.)
-+ * @NL80211_STA_FLAG_ASSOCIATED: station is associated; used with drivers
-+ * that support %NL80211_FEATURE_FULL_AP_CLIENT_STATE to transition a
-+ * previously added station into associated state
- * @NL80211_STA_FLAG_MAX: highest station flag number currently defined
- * @__NL80211_STA_FLAG_AFTER_LAST: internal use
- */
-@@ -1628,6 +1787,7 @@ enum nl80211_sta_flags {
- NL80211_STA_FLAG_MFP,
- NL80211_STA_FLAG_AUTHENTICATED,
- NL80211_STA_FLAG_TDLS_PEER,
-+ NL80211_STA_FLAG_ASSOCIATED,
-
- /* keep last */
- __NL80211_STA_FLAG_AFTER_LAST,
-@@ -1664,10 +1824,15 @@ struct nl80211_sta_flag_update {
- * @__NL80211_RATE_INFO_INVALID: attribute number 0 is reserved
- * @NL80211_RATE_INFO_BITRATE: total bitrate (u16, 100kbit/s)
- * @NL80211_RATE_INFO_MCS: mcs index for 802.11n (u8)
-- * @NL80211_RATE_INFO_40_MHZ_WIDTH: 40 Mhz dualchannel bitrate
-+ * @NL80211_RATE_INFO_40_MHZ_WIDTH: 40 MHz dualchannel bitrate
- * @NL80211_RATE_INFO_SHORT_GI: 400ns guard interval
- * @NL80211_RATE_INFO_BITRATE32: total bitrate (u32, 100kbit/s)
- * @NL80211_RATE_INFO_MAX: highest rate_info number currently defined
-+ * @NL80211_RATE_INFO_VHT_MCS: MCS index for VHT (u8)
-+ * @NL80211_RATE_INFO_VHT_NSS: number of streams in VHT (u8)
-+ * @NL80211_RATE_INFO_80_MHZ_WIDTH: 80 MHz VHT rate
-+ * @NL80211_RATE_INFO_80P80_MHZ_WIDTH: 80+80 MHz VHT rate
-+ * @NL80211_RATE_INFO_160_MHZ_WIDTH: 160 MHz VHT rate
- * @__NL80211_RATE_INFO_AFTER_LAST: internal use
- */
- enum nl80211_rate_info {
-@@ -1677,6 +1842,11 @@ enum nl80211_rate_info {
- NL80211_RATE_INFO_40_MHZ_WIDTH,
- NL80211_RATE_INFO_SHORT_GI,
- NL80211_RATE_INFO_BITRATE32,
-+ NL80211_RATE_INFO_VHT_MCS,
-+ NL80211_RATE_INFO_VHT_NSS,
-+ NL80211_RATE_INFO_80_MHZ_WIDTH,
-+ NL80211_RATE_INFO_80P80_MHZ_WIDTH,
-+ NL80211_RATE_INFO_160_MHZ_WIDTH,
-
- /* keep last */
- __NL80211_RATE_INFO_AFTER_LAST,
-@@ -1723,6 +1893,8 @@ enum nl80211_sta_bss_param {
- * @NL80211_STA_INFO_INACTIVE_TIME: time since last activity (u32, msecs)
- * @NL80211_STA_INFO_RX_BYTES: total received bytes (u32, from this station)
- * @NL80211_STA_INFO_TX_BYTES: total transmitted bytes (u32, to this station)
-+ * @NL80211_STA_INFO_RX_BYTES64: total received bytes (u64, from this station)
-+ * @NL80211_STA_INFO_TX_BYTES64: total transmitted bytes (u64, to this station)
- * @NL80211_STA_INFO_SIGNAL: signal strength of last received PPDU (u8, dBm)
- * @NL80211_STA_INFO_TX_BITRATE: current unicast tx rate, nested attribute
- * containing info as possible, see &enum nl80211_rate_info
-@@ -1744,6 +1916,12 @@ enum nl80211_sta_bss_param {
- * @NL80211_STA_INFO_STA_FLAGS: Contains a struct nl80211_sta_flag_update.
- * @NL80211_STA_INFO_BEACON_LOSS: count of times beacon loss was detected (u32)
- * @NL80211_STA_INFO_T_OFFSET: timing offset with respect to this STA (s64)
-+ * @NL80211_STA_INFO_LOCAL_PM: local mesh STA link-specific power mode
-+ * @NL80211_STA_INFO_PEER_PM: peer mesh STA link-specific power mode
-+ * @NL80211_STA_INFO_NONPEER_PM: neighbor mesh STA power save mode towards
-+ * non-peer STA
-+ * @NL80211_STA_INFO_CHAIN_SIGNAL: per-chain signal strength of last PPDU
-+ * @NL80211_STA_INFO_CHAIN_SIGNAL_AVG: per-chain signal strength average
- * @__NL80211_STA_INFO_AFTER_LAST: internal
- * @NL80211_STA_INFO_MAX: highest possible station info attribute
- */
-@@ -1768,6 +1946,13 @@ enum nl80211_sta_info {
- NL80211_STA_INFO_STA_FLAGS,
- NL80211_STA_INFO_BEACON_LOSS,
- NL80211_STA_INFO_T_OFFSET,
-+ NL80211_STA_INFO_LOCAL_PM,
-+ NL80211_STA_INFO_PEER_PM,
-+ NL80211_STA_INFO_NONPEER_PM,
-+ NL80211_STA_INFO_RX_BYTES64,
-+ NL80211_STA_INFO_TX_BYTES64,
-+ NL80211_STA_INFO_CHAIN_SIGNAL,
-+ NL80211_STA_INFO_CHAIN_SIGNAL_AVG,
-
- /* keep last */
- __NL80211_STA_INFO_AFTER_LAST,
-@@ -1877,6 +2062,20 @@ enum nl80211_band_attr {
- * on this channel in current regulatory domain.
- * @NL80211_FREQUENCY_ATTR_MAX_TX_POWER: Maximum transmission power in mBm
- * (100 * dBm).
-+ * @NL80211_FREQUENCY_ATTR_DFS_STATE: current state for DFS
-+ * (enum nl80211_dfs_state)
-+ * @NL80211_FREQUENCY_ATTR_DFS_TIME: time in miliseconds for how long
-+ * this channel is in this DFS state.
-+ * @NL80211_FREQUENCY_ATTR_NO_HT40_MINUS: HT40- isn't possible with this
-+ * channel as the control channel
-+ * @NL80211_FREQUENCY_ATTR_NO_HT40_PLUS: HT40+ isn't possible with this
-+ * channel as the control channel
-+ * @NL80211_FREQUENCY_ATTR_NO_80MHZ: any 80 MHz channel using this channel
-+ * as the primary or any of the secondary channels isn't possible,
-+ * this includes 80+80 channels
-+ * @NL80211_FREQUENCY_ATTR_NO_160MHZ: any 160 MHz (but not 80+80) channel
-+ * using this channel as the primary or any of the secondary channels
-+ * isn't possible
+@@ -2304,9 +2357,35 @@ enum nl80211_band_attr {
+ * @NL80211_FREQUENCY_ATTR_NO_160MHZ: any 160 MHz (but not 80+80) channel
+ * using this channel as the primary or any of the secondary channels
+ * isn't possible
++ * @NL80211_FREQUENCY_ATTR_DFS_CAC_TIME: DFS CAC time in milliseconds.
++ * @NL80211_FREQUENCY_ATTR_INDOOR_ONLY: Only indoor use is permitted on this
++ * channel. A channel that has the INDOOR_ONLY attribute can only be
++ * used when there is a clear assessment that the device is operating in
++ * an indoor surroundings, i.e., it is connected to AC power (and not
++ * through portable DC inverters) or is under the control of a master
++ * that is acting as an AP and is connected to AC power.
++ * @NL80211_FREQUENCY_ATTR_GO_CONCURRENT: GO operation is allowed on this
++ * channel if it's connected concurrently to a BSS on the same channel on
++ * the 2 GHz band or to a channel in the same UNII band (on the 5 GHz
++ * band), and IEEE80211_CHAN_RADAR is not set. Instantiating a GO on a
++ * channel that has the GO_CONCURRENT attribute set can be done when there
++ * is a clear assessment that the device is operating under the guidance of
++ * an authorized master, i.e., setting up a GO while the device is also
++ * connected to an AP with DFS and radar detection on the UNII band (it is
++ * up to user-space, i.e., wpa_supplicant to perform the required
++ * verifications)
++ * @NL80211_FREQUENCY_ATTR_NO_20MHZ: 20 MHz operation is not allowed
++ * on this channel in current regulatory domain.
++ * @NL80211_FREQUENCY_ATTR_NO_10MHZ: 10 MHz operation is not allowed
++ * on this channel in current regulatory domain.