--- a/nl80211.h
+++ b/nl80211.h
-@@ -295,7 +295,9 @@
- * auth and assoc steps. For this, you need to specify the SSID in a
- * %NL80211_ATTR_SSID attribute, and can optionally specify the association
- * IEs in %NL80211_ATTR_IE, %NL80211_ATTR_AUTH_TYPE, %NL80211_ATTR_MAC,
-- * %NL80211_ATTR_WIPHY_FREQ and %NL80211_ATTR_CONTROL_PORT.
-+ * %NL80211_ATTR_WIPHY_FREQ, %NL80211_ATTR_CONTROL_PORT,
-+ * %NL80211_ATTR_CONTROL_PORT_ETHERTYPE and
-+ * %NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT.
- * It is also sent as an event, with the BSSID and response IEs when the
- * connection is established or failed to be established. This can be
- * determined by the STATUS_CODE attribute.
-@@ -686,6 +688,15 @@ enum nl80211_commands {
- * request, the driver will assume that the port is unauthorized until
- * authorized by user space. Otherwise, port is marked authorized by
- * default in station mode.
-+ * @NL80211_ATTR_CONTROL_PORT_ETHERTYPE: A 16-bit value indicating the
-+ * ethertype that will be used for key negotiation. It can be
-+ * specified with the associate and connect commands. If it is not
-+ * specified, the value defaults to 0x888E (PAE, 802.1X). This
-+ * attribute is also used as a flag in the wiphy information to
-+ * indicate that protocols other than PAE are supported.
-+ * @NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT: When included along with
-+ * %NL80211_ATTR_CONTROL_PORT_ETHERTYPE, indicates that the custom
-+ * ethertype frames used for key negotiation must not be encrypted.
+@@ -148,6 +148,10 @@
+ * @NL80211_CMD_SET_MPATH: Set mesh path attributes for mesh path to
+ * destination %NL80211_ATTR_MAC on the interface identified by
+ * %NL80211_ATTR_IFINDEX.
++ * @NL80211_CMD_NEW_MPATH: Create a new mesh path for the destination given by
++ * %NL80211_ATTR_MAC via %NL80211_ATTR_MPATH_NEXT_HOP.
++ * @NL80211_CMD_DEL_MPATH: Delete a mesh path to the destination given by
++ * %NL80211_ATTR_MAC.
+ * @NL80211_CMD_NEW_PATH: Add a mesh path with given attributes to the
+ * the interface identified by %NL80211_ATTR_IFINDEX.
+ * @NL80211_CMD_DEL_PATH: Remove a mesh path identified by %NL80211_ATTR_MAC
+@@ -612,7 +616,7 @@ enum nl80211_commands {
+ * consisting of a nested array.
*
- * @NL80211_ATTR_TESTDATA: Testmode data blob, passed through to the driver.
- * We recommend using nested, driver-specific attributes within this.
-@@ -951,6 +962,9 @@ enum nl80211_attrs {
- NL80211_ATTR_RX_FRAME_TYPES,
- NL80211_ATTR_FRAME_TYPE,
-
-+ NL80211_ATTR_CONTROL_PORT_ETHERTYPE,
-+ NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT,
-+
- /* add attributes here, update the policy in nl80211.c */
-
- __NL80211_ATTR_AFTER_LAST,
-@@ -1006,6 +1020,8 @@ enum nl80211_attrs {
- * @NL80211_IFTYPE_WDS: wireless distribution interface
- * @NL80211_IFTYPE_MONITOR: monitor interface receiving all frames
- * @NL80211_IFTYPE_MESH_POINT: mesh point
-+ * @NL80211_IFTYPE_P2P_CLIENT: P2P client
-+ * @NL80211_IFTYPE_P2P_GO: P2P group owner
- * @NL80211_IFTYPE_MAX: highest interface type number currently defined
- * @NUM_NL80211_IFTYPES: number of defined interface types
+ * @NL80211_ATTR_MESH_ID: mesh id (1-32 bytes).
+- * @NL80211_ATTR_PLINK_ACTION: action to perform on the mesh peer link.
++ * @NL80211_ATTR_STA_PLINK_ACTION: action to perform on the mesh peer link.
+ * @NL80211_ATTR_MPATH_NEXT_HOP: MAC address of the next hop for a mesh path.
+ * @NL80211_ATTR_MPATH_INFO: information about a mesh_path, part of mesh path
+ * info given for %NL80211_CMD_GET_MPATH, nested attribute described at
+@@ -879,7 +883,9 @@ enum nl80211_commands {
+ * See &enum nl80211_key_default_types.
*
-@@ -1022,6 +1038,8 @@ enum nl80211_iftype {
- NL80211_IFTYPE_WDS,
- NL80211_IFTYPE_MONITOR,
- NL80211_IFTYPE_MESH_POINT,
-+ NL80211_IFTYPE_P2P_CLIENT,
-+ NL80211_IFTYPE_P2P_GO,
-
- /* keep last */
- NUM_NL80211_IFTYPES,
-@@ -1382,6 +1400,7 @@ enum nl80211_reg_rule_flags {
- * @__NL80211_SURVEY_INFO_INVALID: attribute number 0 is reserved
- * @NL80211_SURVEY_INFO_FREQUENCY: center frequency of channel
- * @NL80211_SURVEY_INFO_NOISE: noise level of channel (u8, dBm)
-+ * @NL80211_SURVEY_INFO_IN_USE: channel is currently being used
- * @NL80211_SURVEY_INFO_MAX: highest survey info attribute number
- * currently defined
- * @__NL80211_SURVEY_INFO_AFTER_LAST: internal use
-@@ -1390,6 +1409,7 @@ enum nl80211_survey_info {
- __NL80211_SURVEY_INFO_INVALID,
- NL80211_SURVEY_INFO_FREQUENCY,
- NL80211_SURVEY_INFO_NOISE,
-+ NL80211_SURVEY_INFO_IN_USE,
+ * @NL80211_ATTR_MESH_SETUP: Optional mesh setup parameters. These cannot be
+- * changed once the mesh is active.
++ * changed once the mesh is active.
++ * @NL80211_ATTR_MESH_CONFIG: Mesh configuration parameters, a nested attribute
++ * containing attributes from &enum nl80211_meshconf_params.
+ *
+ * @NL80211_ATTR_MAX: highest attribute number currently defined
+ * @__NL80211_ATTR_AFTER_LAST: internal use
+@@ -1225,8 +1231,6 @@ enum nl80211_rate_info {
+ * @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_AFTER_LAST: internal
+- * @NL80211_STA_INFO_MAX: highest possible station info attribute
+ * @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_sta_info_txrate.
+@@ -1236,6 +1240,13 @@ enum nl80211_rate_info {
+ * @NL80211_STA_INFO_TX_RETRIES: total retries (u32, to this station)
+ * @NL80211_STA_INFO_TX_FAILED: total failed packets (u32, to this station)
+ * @NL80211_STA_INFO_SIGNAL_AVG: signal strength average (u8, dBm)
++ * @NL80211_STA_INFO_LLID: the station's mesh LLID
++ * @NL80211_STA_INFO_PLID: the station's mesh PLID
++ * @NL80211_STA_INFO_PLINK_STATE: peer link state for the station
++ * @NL80211_STA_INFO_RX_BITRATE: last unicast rx rate, nested attribute
++ * containing info as possible, see &enum nl80211_sta_info_txrate.
++ * @__NL80211_STA_INFO_AFTER_LAST: internal
++ * @NL80211_STA_INFO_MAX: highest possible station info attribute
+ */
+ enum nl80211_sta_info {
+ __NL80211_STA_INFO_INVALID,
+@@ -1252,6 +1263,7 @@ enum nl80211_sta_info {
+ NL80211_STA_INFO_TX_RETRIES,
+ NL80211_STA_INFO_TX_FAILED,
+ NL80211_STA_INFO_SIGNAL_AVG,
++ NL80211_STA_INFO_RX_BITRATE,
/* keep last */
- __NL80211_SURVEY_INFO_AFTER_LAST,
+ __NL80211_STA_INFO_AFTER_LAST,
+@@ -1626,7 +1638,7 @@ enum nl80211_mntr_flags {
+ * @NL80211_MESHCONF_HWMP_NET_DIAM_TRVS_TIME: The interval of time (in TUs)
+ * that it takes for an HWMP information element to propagate across the mesh
+ *
+- * @NL80211_MESHCONF_ROOTMODE: whether root mode is enabled or not
++ * @NL80211_MESHCONF_HWMP_ROOTMODE: whether root mode is enabled or not
+ *
+ * @NL80211_MESHCONF_ELEMENT_TTL: specifies the value of TTL field set at a
+ * source mesh point for path selection elements.
+@@ -1678,6 +1690,7 @@ enum nl80211_meshconf_params {
+ * element that vendors will use to identify the path selection methods and
+ * metrics in use.
+ *
++ * @NL80211_MESH_SETUP_ATTR_MAX: highest possible mesh setup attribute number
+ * @__NL80211_MESH_SETUP_ATTR_AFTER_LAST: Internal use
+ */
+ enum nl80211_mesh_setup_params {