001-nl80211_h_sync.patch 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259
  1. --- a/nl80211.h
  2. +++ b/nl80211.h
  3. @@ -324,6 +324,17 @@
  4. */
  5. /**
  6. + * DOC: Multi-Link Operation
  7. + *
  8. + * In Multi-Link Operation, a connection between to MLDs utilizes multiple
  9. + * links. To use this in nl80211, various commands and responses now need
  10. + * to or will include the new %NL80211_ATTR_MLO_LINKS attribute.
  11. + * Additionally, various commands that need to operate on a specific link
  12. + * now need to be given the %NL80211_ATTR_MLO_LINK_ID attribute, e.g. to
  13. + * use %NL80211_CMD_START_AP or similar functions.
  14. + */
  15. +
  16. +/**
  17. * enum nl80211_commands - supported nl80211 commands
  18. *
  19. * @NL80211_CMD_UNSPEC: unspecified command to catch errors
  20. @@ -366,14 +377,22 @@
  21. * the non-transmitting interfaces are deleted as well.
  22. *
  23. * @NL80211_CMD_GET_KEY: Get sequence counter information for a key specified
  24. - * by %NL80211_ATTR_KEY_IDX and/or %NL80211_ATTR_MAC.
  25. + * by %NL80211_ATTR_KEY_IDX and/or %NL80211_ATTR_MAC. %NL80211_ATTR_MAC
  26. + * represents peer's MLD address for MLO pairwise key. For MLO group key,
  27. + * the link is identified by %NL80211_ATTR_MLO_LINK_ID.
  28. * @NL80211_CMD_SET_KEY: Set key attributes %NL80211_ATTR_KEY_DEFAULT,
  29. * %NL80211_ATTR_KEY_DEFAULT_MGMT, or %NL80211_ATTR_KEY_THRESHOLD.
  30. + * For MLO connection, the link to set default key is identified by
  31. + * %NL80211_ATTR_MLO_LINK_ID.
  32. * @NL80211_CMD_NEW_KEY: add a key with given %NL80211_ATTR_KEY_DATA,
  33. * %NL80211_ATTR_KEY_IDX, %NL80211_ATTR_MAC, %NL80211_ATTR_KEY_CIPHER,
  34. - * and %NL80211_ATTR_KEY_SEQ attributes.
  35. + * and %NL80211_ATTR_KEY_SEQ attributes. %NL80211_ATTR_MAC represents
  36. + * peer's MLD address for MLO pairwise key. The link to add MLO
  37. + * group key is identified by %NL80211_ATTR_MLO_LINK_ID.
  38. * @NL80211_CMD_DEL_KEY: delete a key identified by %NL80211_ATTR_KEY_IDX
  39. - * or %NL80211_ATTR_MAC.
  40. + * or %NL80211_ATTR_MAC. %NL80211_ATTR_MAC represents peer's MLD address
  41. + * for MLO pairwise key. The link to delete group key is identified by
  42. + * %NL80211_ATTR_MLO_LINK_ID.
  43. *
  44. * @NL80211_CMD_GET_BEACON: (not used)
  45. * @NL80211_CMD_SET_BEACON: change the beacon on an access point interface
  46. @@ -753,6 +772,13 @@
  47. * %NL80211_ATTR_CSA_C_OFFSETS_TX is an array of offsets to CSA
  48. * counters which will be updated to the current value. This attribute
  49. * is used during CSA period.
  50. + * For TX on an MLD, the frequency can be omitted and the link ID be
  51. + * specified, or if transmitting to a known peer MLD (with MLD addresses
  52. + * in the frame) both can be omitted and the link will be selected by
  53. + * lower layers.
  54. + * For RX notification, %NL80211_ATTR_RX_HW_TIMESTAMP may be included to
  55. + * indicate the frame RX timestamp and %NL80211_ATTR_TX_HW_TIMESTAMP may
  56. + * be included to indicate the ack TX timestamp.
  57. * @NL80211_CMD_FRAME_WAIT_CANCEL: When an off-channel TX was requested, this
  58. * command may be used with the corresponding cookie to cancel the wait
  59. * time if it is known that it is no longer necessary. This command is
  60. @@ -763,7 +789,9 @@
  61. * transmitted with %NL80211_CMD_FRAME. %NL80211_ATTR_COOKIE identifies
  62. * the TX command and %NL80211_ATTR_FRAME includes the contents of the
  63. * frame. %NL80211_ATTR_ACK flag is included if the recipient acknowledged
  64. - * the frame.
  65. + * the frame. %NL80211_ATTR_TX_HW_TIMESTAMP may be included to indicate the
  66. + * tx timestamp and %NL80211_ATTR_RX_HW_TIMESTAMP may be included to
  67. + * indicate the ack RX timestamp.
  68. * @NL80211_CMD_ACTION_TX_STATUS: Alias for @NL80211_CMD_FRAME_TX_STATUS for
  69. * backward compatibility.
  70. *
  71. @@ -1108,6 +1136,12 @@
  72. * has been received. %NL80211_ATTR_FRAME is used to specify the
  73. * frame contents. The frame is the raw EAPoL data, without ethernet or
  74. * 802.11 headers.
  75. + * For an MLD transmitter, the %NL80211_ATTR_MLO_LINK_ID may be given and
  76. + * its effect will depend on the destination: If the destination is known
  77. + * to be an MLD, this will be used as a hint to select the link to transmit
  78. + * the frame on. If the destination is not an MLD, this will select both
  79. + * the link to transmit on and the source address will be set to the link
  80. + * address of that link.
  81. * When used as an event indication %NL80211_ATTR_CONTROL_PORT_ETHERTYPE,
  82. * %NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT and %NL80211_ATTR_MAC are added
  83. * indicating the protocol type of the received frame; whether the frame
  84. @@ -1237,6 +1271,16 @@
  85. * to describe the BSSID address of the AP and %NL80211_ATTR_TIMEOUT to
  86. * specify the timeout value.
  87. *
  88. + * @NL80211_CMD_ADD_LINK: Add a new link to an interface. The
  89. + * %NL80211_ATTR_MLO_LINK_ID attribute is used for the new link.
  90. + * @NL80211_CMD_REMOVE_LINK: Remove a link from an interface. This may come
  91. + * without %NL80211_ATTR_MLO_LINK_ID as an easy way to remove all links
  92. + * in preparation for e.g. roaming to a regular (non-MLO) AP.
  93. + *
  94. + * @NL80211_CMD_ADD_LINK_STA: Add a link to an MLD station
  95. + * @NL80211_CMD_MODIFY_LINK_STA: Modify a link of an MLD station
  96. + * @NL80211_CMD_REMOVE_LINK_STA: Remove a link of an MLD station
  97. + *
  98. * @NL80211_CMD_MAX: highest used command number
  99. * @__NL80211_CMD_AFTER_LAST: internal use
  100. */
  101. @@ -1481,6 +1525,13 @@ enum nl80211_commands {
  102. NL80211_CMD_ASSOC_COMEBACK,
  103. + NL80211_CMD_ADD_LINK,
  104. + NL80211_CMD_REMOVE_LINK,
  105. +
  106. + NL80211_CMD_ADD_LINK_STA,
  107. + NL80211_CMD_MODIFY_LINK_STA,
  108. + NL80211_CMD_REMOVE_LINK_STA,
  109. +
  110. /* add new commands above here */
  111. /* used to define NL80211_CMD_MAX below */
  112. @@ -2340,8 +2391,10 @@ enum nl80211_commands {
  113. *
  114. * @NL80211_ATTR_IFTYPE_EXT_CAPA: Nested attribute of the following attributes:
  115. * %NL80211_ATTR_IFTYPE, %NL80211_ATTR_EXT_CAPA,
  116. - * %NL80211_ATTR_EXT_CAPA_MASK, to specify the extended capabilities per
  117. - * interface type.
  118. + * %NL80211_ATTR_EXT_CAPA_MASK, to specify the extended capabilities and
  119. + * other interface-type specific capabilities per interface type. For MLO,
  120. + * %NL80211_ATTR_EML_CAPABILITY and %NL80211_ATTR_MLD_CAPA_AND_OPS are
  121. + * present.
  122. *
  123. * @NL80211_ATTR_MU_MIMO_GROUP_DATA: array of 24 bytes that defines a MU-MIMO
  124. * groupID for monitor mode.
  125. @@ -2663,6 +2716,44 @@ enum nl80211_commands {
  126. * association request when used with NL80211_CMD_NEW_STATION). Can be set
  127. * only if %NL80211_STA_FLAG_WME is set.
  128. *
  129. + * @NL80211_ATTR_MLO_LINK_ID: A (u8) link ID for use with MLO, to be used with
  130. + * various commands that need a link ID to operate.
  131. + * @NL80211_ATTR_MLO_LINKS: A nested array of links, each containing some
  132. + * per-link information and a link ID.
  133. + * @NL80211_ATTR_MLD_ADDR: An MLD address, used with various commands such as
  134. + * authenticate/associate.
  135. + *
  136. + * @NL80211_ATTR_MLO_SUPPORT: Flag attribute to indicate user space supports MLO
  137. + * connection. Used with %NL80211_CMD_CONNECT. If this attribute is not
  138. + * included in NL80211_CMD_CONNECT drivers must not perform MLO connection.
  139. + *
  140. + * @NL80211_ATTR_MAX_NUM_AKM_SUITES: U16 attribute. Indicates maximum number of
  141. + * AKM suites allowed for %NL80211_CMD_CONNECT, %NL80211_CMD_ASSOCIATE and
  142. + * %NL80211_CMD_START_AP in %NL80211_CMD_GET_WIPHY response. If this
  143. + * attribute is not present userspace shall consider maximum number of AKM
  144. + * suites allowed as %NL80211_MAX_NR_AKM_SUITES which is the legacy maximum
  145. + * number prior to the introduction of this attribute.
  146. + *
  147. + * @NL80211_ATTR_EML_CAPABILITY: EML Capability information (u16)
  148. + * @NL80211_ATTR_MLD_CAPA_AND_OPS: MLD Capabilities and Operations (u16)
  149. + *
  150. + * @NL80211_ATTR_TX_HW_TIMESTAMP: Hardware timestamp for TX operation in
  151. + * nanoseconds (u64). This is the device clock timestamp so it will
  152. + * probably reset when the device is stopped or the firmware is reset.
  153. + * When used with %NL80211_CMD_FRAME_TX_STATUS, indicates the frame TX
  154. + * timestamp. When used with %NL80211_CMD_FRAME RX notification, indicates
  155. + * the ack TX timestamp.
  156. + * @NL80211_ATTR_RX_HW_TIMESTAMP: Hardware timestamp for RX operation in
  157. + * nanoseconds (u64). This is the device clock timestamp so it will
  158. + * probably reset when the device is stopped or the firmware is reset.
  159. + * When used with %NL80211_CMD_FRAME_TX_STATUS, indicates the ack RX
  160. + * timestamp. When used with %NL80211_CMD_FRAME RX notification, indicates
  161. + * the incoming frame RX timestamp.
  162. + * @NL80211_ATTR_TD_BITMAP: Transition Disable bitmap, for subsequent
  163. + * (re)associations.
  164. + * @NL80211_ATTR_WIPHY_ANTENNA_GAIN: Configured antenna gain. Used to reduce
  165. + * transmit power to stay within regulatory limits. u32, dBi.
  166. + *
  167. * @NUM_NL80211_ATTR: total number of nl80211_attrs available
  168. * @NL80211_ATTR_MAX: highest attribute number currently defined
  169. * @__NL80211_ATTR_AFTER_LAST: internal use
  170. @@ -3177,6 +3268,23 @@ enum nl80211_attrs {
  171. NL80211_ATTR_DISABLE_EHT,
  172. + NL80211_ATTR_MLO_LINKS,
  173. + NL80211_ATTR_MLO_LINK_ID,
  174. + NL80211_ATTR_MLD_ADDR,
  175. +
  176. + NL80211_ATTR_MLO_SUPPORT,
  177. +
  178. + NL80211_ATTR_MAX_NUM_AKM_SUITES,
  179. +
  180. + NL80211_ATTR_EML_CAPABILITY,
  181. + NL80211_ATTR_MLD_CAPA_AND_OPS,
  182. +
  183. + NL80211_ATTR_TX_HW_TIMESTAMP,
  184. + NL80211_ATTR_RX_HW_TIMESTAMP,
  185. + NL80211_ATTR_TD_BITMAP,
  186. +
  187. + NL80211_ATTR_WIPHY_ANTENNA_GAIN,
  188. +
  189. /* add attributes here, update the policy in nl80211.c */
  190. __NL80211_ATTR_AFTER_LAST,
  191. @@ -3231,6 +3339,11 @@ enum nl80211_attrs {
  192. #define NL80211_HE_MIN_CAPABILITY_LEN 16
  193. #define NL80211_HE_MAX_CAPABILITY_LEN 54
  194. #define NL80211_MAX_NR_CIPHER_SUITES 5
  195. +
  196. +/*
  197. + * NL80211_MAX_NR_AKM_SUITES is obsolete when %NL80211_ATTR_MAX_NUM_AKM_SUITES
  198. + * present in %NL80211_CMD_GET_WIPHY response.
  199. + */
  200. #define NL80211_MAX_NR_AKM_SUITES 2
  201. #define NL80211_EHT_MIN_CAPABILITY_LEN 13
  202. #define NL80211_EHT_MAX_CAPABILITY_LEN 51
  203. @@ -4853,6 +4966,8 @@ enum nl80211_bss_scan_width {
  204. * Contains a nested array of signal strength attributes (u8, dBm),
  205. * using the nesting index as the antenna number.
  206. * @NL80211_BSS_FREQUENCY_OFFSET: frequency offset in KHz
  207. + * @NL80211_BSS_MLO_LINK_ID: MLO link ID of the BSS (u8).
  208. + * @NL80211_BSS_MLD_ADDR: MLD address of this BSS if connected to it.
  209. * @__NL80211_BSS_AFTER_LAST: internal
  210. * @NL80211_BSS_MAX: highest BSS attribute
  211. */
  212. @@ -4878,6 +4993,8 @@ enum nl80211_bss {
  213. NL80211_BSS_PARENT_BSSID,
  214. NL80211_BSS_CHAIN_SIGNAL,
  215. NL80211_BSS_FREQUENCY_OFFSET,
  216. + NL80211_BSS_MLO_LINK_ID,
  217. + NL80211_BSS_MLD_ADDR,
  218. /* keep last */
  219. __NL80211_BSS_AFTER_LAST,
  220. @@ -5874,7 +5991,7 @@ enum nl80211_ap_sme_features {
  221. * @NL80211_FEATURE_INACTIVITY_TIMER: This driver takes care of freeing up
  222. * the connected inactive stations in AP mode.
  223. * @NL80211_FEATURE_CELL_BASE_REG_HINTS: This driver has been tested
  224. - * to work properly to suppport receiving regulatory hints from
  225. + * to work properly to support receiving regulatory hints from
  226. * cellular base stations.
  227. * @NL80211_FEATURE_P2P_DEVICE_NEEDS_CHANNEL: (no longer available, only
  228. * here to reserve the value for API/ABI compatibility)
  229. @@ -6174,6 +6291,14 @@ enum nl80211_feature_flags {
  230. * @NL80211_EXT_FEATURE_RADAR_BACKGROUND: Device supports background radar/CAC
  231. * detection.
  232. *
  233. + * @NL80211_EXT_FEATURE_POWERED_ADDR_CHANGE: Device can perform a MAC address
  234. + * change without having to bring the underlying network device down
  235. + * first. For example, in station mode this can be used to vary the
  236. + * origin MAC address prior to a connection to a new AP for privacy
  237. + * or other reasons. Note that certain driver specific restrictions
  238. + * might apply, e.g. no scans in progress, no offchannel operations
  239. + * in progress, and no active connections.
  240. + *
  241. * @NUM_NL80211_EXT_FEATURES: number of extended features.
  242. * @MAX_NL80211_EXT_FEATURES: highest extended feature index.
  243. */
  244. @@ -6241,6 +6366,7 @@ enum nl80211_ext_feature_index {
  245. NL80211_EXT_FEATURE_BSS_COLOR,
  246. NL80211_EXT_FEATURE_FILS_CRYPTO_OFFLOAD,
  247. NL80211_EXT_FEATURE_RADAR_BACKGROUND,
  248. + NL80211_EXT_FEATURE_POWERED_ADDR_CHANGE,
  249. /* add new features before the definition below */
  250. NUM_NL80211_EXT_FEATURES,