mactx_user_desc_common.h 52 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305
  1. /*
  2. * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
  3. *
  4. * Permission to use, copy, modify, and/or distribute this software for any
  5. * purpose with or without fee is hereby granted, provided that the above
  6. * copyright notice and this permission notice appear in all copies.
  7. *
  8. * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
  9. * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  10. * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
  11. * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  12. * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  13. * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  14. * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  15. */
  16. #ifndef _MACTX_USER_DESC_COMMON_H_
  17. #define _MACTX_USER_DESC_COMMON_H_
  18. #if !defined(__ASSEMBLER__)
  19. #endif
  20. #include "unallocated_ru_160_info.h"
  21. #include "ru_allocation_160_info.h"
  22. #define NUM_OF_DWORDS_MACTX_USER_DESC_COMMON 16
  23. #define NUM_OF_QWORDS_MACTX_USER_DESC_COMMON 8
  24. struct mactx_user_desc_common {
  25. #ifndef WIFI_BIT_ORDER_BIG_ENDIAN
  26. uint32_t num_users : 6, // [5:0]
  27. reserved_0b : 5, // [10:6]
  28. ltf_size : 2, // [12:11]
  29. reserved_0c : 3, // [15:13]
  30. he_stf_long : 1, // [16:16]
  31. reserved_0d : 7, // [23:17]
  32. num_users_he_sigb_band0 : 8; // [31:24]
  33. uint32_t num_ltf_symbols : 3, // [2:0]
  34. reserved_1a : 5, // [7:3]
  35. num_users_he_sigb_band1 : 8, // [15:8]
  36. reserved_1b : 16; // [31:16]
  37. uint32_t packet_extension_a_factor : 2, // [1:0]
  38. packet_extension_pe_disambiguity : 1, // [2:2]
  39. packet_extension : 3, // [5:3]
  40. reserved : 2, // [7:6]
  41. he_sigb_dcm : 1, // [8:8]
  42. reserved_2b : 7, // [15:9]
  43. he_sigb_compression : 1, // [16:16]
  44. reserved_2c : 15; // [31:17]
  45. uint32_t he_sigb_0_mcs : 3, // [2:0]
  46. reserved_3a : 13, // [15:3]
  47. num_he_sigb_sym : 5, // [20:16]
  48. center_ru_0 : 1, // [21:21]
  49. center_ru_1 : 1, // [22:22]
  50. reserved_3b : 1, // [23:23]
  51. ftm_en : 1, // [24:24]
  52. pe_nss : 3, // [27:25]
  53. pe_ltf_size : 2, // [29:28]
  54. pe_content : 1, // [30:30]
  55. pe_chain_csd_en : 1; // [31:31]
  56. struct ru_allocation_160_info ru_allocation_0123_details;
  57. struct ru_allocation_160_info ru_allocation_4567_details;
  58. struct unallocated_ru_160_info ru_allocation_160_0_details;
  59. struct unallocated_ru_160_info ru_allocation_160_1_details;
  60. uint32_t num_data_symbols : 16, // [15:0]
  61. ndp_ru_tone_set_index : 7, // [22:16]
  62. ndp_feedback_status : 1, // [23:23]
  63. doppler_indication : 1, // [24:24]
  64. reserved_14a : 7; // [31:25]
  65. uint32_t spatial_reuse : 16, // [15:0]
  66. reserved_15a : 16; // [31:16]
  67. #else
  68. uint32_t num_users_he_sigb_band0 : 8, // [31:24]
  69. reserved_0d : 7, // [23:17]
  70. he_stf_long : 1, // [16:16]
  71. reserved_0c : 3, // [15:13]
  72. ltf_size : 2, // [12:11]
  73. reserved_0b : 5, // [10:6]
  74. num_users : 6; // [5:0]
  75. uint32_t reserved_1b : 16, // [31:16]
  76. num_users_he_sigb_band1 : 8, // [15:8]
  77. reserved_1a : 5, // [7:3]
  78. num_ltf_symbols : 3; // [2:0]
  79. uint32_t reserved_2c : 15, // [31:17]
  80. he_sigb_compression : 1, // [16:16]
  81. reserved_2b : 7, // [15:9]
  82. he_sigb_dcm : 1, // [8:8]
  83. reserved : 2, // [7:6]
  84. packet_extension : 3, // [5:3]
  85. packet_extension_pe_disambiguity : 1, // [2:2]
  86. packet_extension_a_factor : 2; // [1:0]
  87. uint32_t pe_chain_csd_en : 1, // [31:31]
  88. pe_content : 1, // [30:30]
  89. pe_ltf_size : 2, // [29:28]
  90. pe_nss : 3, // [27:25]
  91. ftm_en : 1, // [24:24]
  92. reserved_3b : 1, // [23:23]
  93. center_ru_1 : 1, // [22:22]
  94. center_ru_0 : 1, // [21:21]
  95. num_he_sigb_sym : 5, // [20:16]
  96. reserved_3a : 13, // [15:3]
  97. he_sigb_0_mcs : 3; // [2:0]
  98. struct ru_allocation_160_info ru_allocation_0123_details;
  99. struct ru_allocation_160_info ru_allocation_4567_details;
  100. struct unallocated_ru_160_info ru_allocation_160_0_details;
  101. struct unallocated_ru_160_info ru_allocation_160_1_details;
  102. uint32_t reserved_14a : 7, // [31:25]
  103. doppler_indication : 1, // [24:24]
  104. ndp_feedback_status : 1, // [23:23]
  105. ndp_ru_tone_set_index : 7, // [22:16]
  106. num_data_symbols : 16; // [15:0]
  107. uint32_t reserved_15a : 16, // [31:16]
  108. spatial_reuse : 16; // [15:0]
  109. #endif
  110. };
  111. /* Description NUM_USERS
  112. The number of users in this transmission
  113. Use this same field for HE-ranging NDP as well.
  114. <legal 1-37>
  115. */
  116. #define MACTX_USER_DESC_COMMON_NUM_USERS_OFFSET 0x0000000000000000
  117. #define MACTX_USER_DESC_COMMON_NUM_USERS_LSB 0
  118. #define MACTX_USER_DESC_COMMON_NUM_USERS_MSB 5
  119. #define MACTX_USER_DESC_COMMON_NUM_USERS_MASK 0x000000000000003f
  120. /* Description RESERVED_0B
  121. <legal 0>
  122. */
  123. #define MACTX_USER_DESC_COMMON_RESERVED_0B_OFFSET 0x0000000000000000
  124. #define MACTX_USER_DESC_COMMON_RESERVED_0B_LSB 6
  125. #define MACTX_USER_DESC_COMMON_RESERVED_0B_MSB 10
  126. #define MACTX_USER_DESC_COMMON_RESERVED_0B_MASK 0x00000000000007c0
  127. /* Description LTF_SIZE
  128. Ltf size
  129. Specify the right LTF-size for HE-Ranging NDPs (11az)/Short-NDP.
  130. <enum 0 ltf_1x >
  131. <enum 1 ltf_2x >
  132. <enum 2 ltf_4x >
  133. <legal 0 - 2>
  134. */
  135. #define MACTX_USER_DESC_COMMON_LTF_SIZE_OFFSET 0x0000000000000000
  136. #define MACTX_USER_DESC_COMMON_LTF_SIZE_LSB 11
  137. #define MACTX_USER_DESC_COMMON_LTF_SIZE_MSB 12
  138. #define MACTX_USER_DESC_COMMON_LTF_SIZE_MASK 0x0000000000001800
  139. /* Description RESERVED_0C
  140. <legal 0>
  141. */
  142. #define MACTX_USER_DESC_COMMON_RESERVED_0C_OFFSET 0x0000000000000000
  143. #define MACTX_USER_DESC_COMMON_RESERVED_0C_LSB 13
  144. #define MACTX_USER_DESC_COMMON_RESERVED_0C_MSB 15
  145. #define MACTX_USER_DESC_COMMON_RESERVED_0C_MASK 0x000000000000e000
  146. /* Description HE_STF_LONG
  147. 0: Normal HE STF.
  148. 1: Long HE STF
  149. Specify the right STF-size for HE-Ranging NDPs (11az)/Short-NDP.
  150. <legal all>
  151. */
  152. #define MACTX_USER_DESC_COMMON_HE_STF_LONG_OFFSET 0x0000000000000000
  153. #define MACTX_USER_DESC_COMMON_HE_STF_LONG_LSB 16
  154. #define MACTX_USER_DESC_COMMON_HE_STF_LONG_MSB 16
  155. #define MACTX_USER_DESC_COMMON_HE_STF_LONG_MASK 0x0000000000010000
  156. /* Description RESERVED_0D
  157. <legal 0>
  158. */
  159. #define MACTX_USER_DESC_COMMON_RESERVED_0D_OFFSET 0x0000000000000000
  160. #define MACTX_USER_DESC_COMMON_RESERVED_0D_LSB 17
  161. #define MACTX_USER_DESC_COMMON_RESERVED_0D_MSB 23
  162. #define MACTX_USER_DESC_COMMON_RESERVED_0D_MASK 0x0000000000fe0000
  163. /* Description NUM_USERS_HE_SIGB_BAND0
  164. number of users in HE_SIGB_0 or EHT_SIG_0
  165. Note for MAC:
  166. directly from pdg_fes_setup, based on BW
  167. <legal all>
  168. */
  169. #define MACTX_USER_DESC_COMMON_NUM_USERS_HE_SIGB_BAND0_OFFSET 0x0000000000000000
  170. #define MACTX_USER_DESC_COMMON_NUM_USERS_HE_SIGB_BAND0_LSB 24
  171. #define MACTX_USER_DESC_COMMON_NUM_USERS_HE_SIGB_BAND0_MSB 31
  172. #define MACTX_USER_DESC_COMMON_NUM_USERS_HE_SIGB_BAND0_MASK 0x00000000ff000000
  173. /* Description NUM_LTF_SYMBOLS
  174. Indicates the number of HE-LTF symbols
  175. 0: 1 symbol
  176. 1: 2 symbols
  177. 2: 3 symbols
  178. 3: 4 symbols
  179. 4: 5 symbols
  180. 5: 6 symbols
  181. 6: 7 symbols
  182. 7: 8 symbols
  183. NOTE that this encoding is different from what is in "Num_LTF_symbols"
  184. in the HE_SIG_A_MU_DL.
  185. NOTE 2: Not used for HE-Ranging NDPs (11az)
  186. <legal all>
  187. */
  188. #define MACTX_USER_DESC_COMMON_NUM_LTF_SYMBOLS_OFFSET 0x0000000000000000
  189. #define MACTX_USER_DESC_COMMON_NUM_LTF_SYMBOLS_LSB 32
  190. #define MACTX_USER_DESC_COMMON_NUM_LTF_SYMBOLS_MSB 34
  191. #define MACTX_USER_DESC_COMMON_NUM_LTF_SYMBOLS_MASK 0x0000000700000000
  192. /* Description RESERVED_1A
  193. <legal 0>
  194. */
  195. #define MACTX_USER_DESC_COMMON_RESERVED_1A_OFFSET 0x0000000000000000
  196. #define MACTX_USER_DESC_COMMON_RESERVED_1A_LSB 35
  197. #define MACTX_USER_DESC_COMMON_RESERVED_1A_MSB 39
  198. #define MACTX_USER_DESC_COMMON_RESERVED_1A_MASK 0x000000f800000000
  199. /* Description NUM_USERS_HE_SIGB_BAND1
  200. number of users in HE_SIGB_1 or EHT_SIG_1
  201. Note for MAC:
  202. directly from pdg_fes_setup, based on BW
  203. For 20Mhz transmission, this is set to 0
  204. <legal all>
  205. */
  206. #define MACTX_USER_DESC_COMMON_NUM_USERS_HE_SIGB_BAND1_OFFSET 0x0000000000000000
  207. #define MACTX_USER_DESC_COMMON_NUM_USERS_HE_SIGB_BAND1_LSB 40
  208. #define MACTX_USER_DESC_COMMON_NUM_USERS_HE_SIGB_BAND1_MSB 47
  209. #define MACTX_USER_DESC_COMMON_NUM_USERS_HE_SIGB_BAND1_MASK 0x0000ff0000000000
  210. /* Description RESERVED_1B
  211. <legal 0>
  212. */
  213. #define MACTX_USER_DESC_COMMON_RESERVED_1B_OFFSET 0x0000000000000000
  214. #define MACTX_USER_DESC_COMMON_RESERVED_1B_LSB 48
  215. #define MACTX_USER_DESC_COMMON_RESERVED_1B_MSB 63
  216. #define MACTX_USER_DESC_COMMON_RESERVED_1B_MASK 0xffff000000000000
  217. /* Description PACKET_EXTENSION_A_FACTOR
  218. the packet extension duration of the trigger-based PPDU
  219. response with these two bits indicating the "a-factor"
  220. <enum 0 a_factor_4>
  221. <enum 1 a_factor_1>
  222. <enum 2 a_factor_2>
  223. <enum 3 a_factor_3>
  224. <legal all>
  225. */
  226. #define MACTX_USER_DESC_COMMON_PACKET_EXTENSION_A_FACTOR_OFFSET 0x0000000000000008
  227. #define MACTX_USER_DESC_COMMON_PACKET_EXTENSION_A_FACTOR_LSB 0
  228. #define MACTX_USER_DESC_COMMON_PACKET_EXTENSION_A_FACTOR_MSB 1
  229. #define MACTX_USER_DESC_COMMON_PACKET_EXTENSION_A_FACTOR_MASK 0x0000000000000003
  230. /* Description PACKET_EXTENSION_PE_DISAMBIGUITY
  231. the packet extension duration of the trigger-based PPDU
  232. response with this bit indicating the PE-Disambiguity
  233. <legal all>
  234. */
  235. #define MACTX_USER_DESC_COMMON_PACKET_EXTENSION_PE_DISAMBIGUITY_OFFSET 0x0000000000000008
  236. #define MACTX_USER_DESC_COMMON_PACKET_EXTENSION_PE_DISAMBIGUITY_LSB 2
  237. #define MACTX_USER_DESC_COMMON_PACKET_EXTENSION_PE_DISAMBIGUITY_MSB 2
  238. #define MACTX_USER_DESC_COMMON_PACKET_EXTENSION_PE_DISAMBIGUITY_MASK 0x0000000000000004
  239. /* Description PACKET_EXTENSION
  240. Packet extension size
  241. Specify the right packet extension size for HE-Ranging NDPs
  242. (11az)/Short-NDP.
  243. <enum 0 packet_ext_0>
  244. <enum 1 packet_ext_4>
  245. <enum 2 packet_ext_8>
  246. <enum 3 packet_ext_12>
  247. <enum 4 packet_ext_16>
  248. <enum 5 packet_ext_20>
  249. <legal 0 - 5>
  250. */
  251. #define MACTX_USER_DESC_COMMON_PACKET_EXTENSION_OFFSET 0x0000000000000008
  252. #define MACTX_USER_DESC_COMMON_PACKET_EXTENSION_LSB 3
  253. #define MACTX_USER_DESC_COMMON_PACKET_EXTENSION_MSB 5
  254. #define MACTX_USER_DESC_COMMON_PACKET_EXTENSION_MASK 0x0000000000000038
  255. /* Description RESERVED
  256. <legal 0>
  257. */
  258. #define MACTX_USER_DESC_COMMON_RESERVED_OFFSET 0x0000000000000008
  259. #define MACTX_USER_DESC_COMMON_RESERVED_LSB 6
  260. #define MACTX_USER_DESC_COMMON_RESERVED_MSB 7
  261. #define MACTX_USER_DESC_COMMON_RESERVED_MASK 0x00000000000000c0
  262. /* Description HE_SIGB_DCM
  263. Indicates whether dual sub-carrier modulation is applied
  264. to HE-SIG-B or EHT-SIG
  265. <legal all>
  266. */
  267. #define MACTX_USER_DESC_COMMON_HE_SIGB_DCM_OFFSET 0x0000000000000008
  268. #define MACTX_USER_DESC_COMMON_HE_SIGB_DCM_LSB 8
  269. #define MACTX_USER_DESC_COMMON_HE_SIGB_DCM_MSB 8
  270. #define MACTX_USER_DESC_COMMON_HE_SIGB_DCM_MASK 0x0000000000000100
  271. /* Description RESERVED_2B
  272. <legal 0>
  273. */
  274. #define MACTX_USER_DESC_COMMON_RESERVED_2B_OFFSET 0x0000000000000008
  275. #define MACTX_USER_DESC_COMMON_RESERVED_2B_LSB 9
  276. #define MACTX_USER_DESC_COMMON_RESERVED_2B_MSB 15
  277. #define MACTX_USER_DESC_COMMON_RESERVED_2B_MASK 0x000000000000fe00
  278. /* Description HE_SIGB_COMPRESSION
  279. Indicates the compression mode of HE-SIG-B or EHT-SIG
  280. <legal all>
  281. */
  282. #define MACTX_USER_DESC_COMMON_HE_SIGB_COMPRESSION_OFFSET 0x0000000000000008
  283. #define MACTX_USER_DESC_COMMON_HE_SIGB_COMPRESSION_LSB 16
  284. #define MACTX_USER_DESC_COMMON_HE_SIGB_COMPRESSION_MSB 16
  285. #define MACTX_USER_DESC_COMMON_HE_SIGB_COMPRESSION_MASK 0x0000000000010000
  286. /* Description RESERVED_2C
  287. <legal 0>
  288. */
  289. #define MACTX_USER_DESC_COMMON_RESERVED_2C_OFFSET 0x0000000000000008
  290. #define MACTX_USER_DESC_COMMON_RESERVED_2C_LSB 17
  291. #define MACTX_USER_DESC_COMMON_RESERVED_2C_MSB 31
  292. #define MACTX_USER_DESC_COMMON_RESERVED_2C_MASK 0x00000000fffe0000
  293. /* Description HE_SIGB_0_MCS
  294. Note: stbc setting is indicated in the MACTX_PHY_DESC.
  295. Indicates the MCS of HE-SIG-B or EHT-SIG.
  296. For details, refer to MCS_TYPE description
  297. <legal all>
  298. */
  299. #define MACTX_USER_DESC_COMMON_HE_SIGB_0_MCS_OFFSET 0x0000000000000008
  300. #define MACTX_USER_DESC_COMMON_HE_SIGB_0_MCS_LSB 32
  301. #define MACTX_USER_DESC_COMMON_HE_SIGB_0_MCS_MSB 34
  302. #define MACTX_USER_DESC_COMMON_HE_SIGB_0_MCS_MASK 0x0000000700000000
  303. /* Description RESERVED_3A
  304. <legal 0>
  305. */
  306. #define MACTX_USER_DESC_COMMON_RESERVED_3A_OFFSET 0x0000000000000008
  307. #define MACTX_USER_DESC_COMMON_RESERVED_3A_LSB 35
  308. #define MACTX_USER_DESC_COMMON_RESERVED_3A_MSB 47
  309. #define MACTX_USER_DESC_COMMON_RESERVED_3A_MASK 0x0000fff800000000
  310. /* Description NUM_HE_SIGB_SYM
  311. This field is valid only when (MACTX_PHY_DESC.pkt_type==11ax
  312. or MACTX_PHY_DESC.pkt_type == 11be)
  313. Indicates the number of HE-SIG-B or EHT-SIG symbols
  314. This field is 0-based with 0 indicating that 1 he_sigb/eht_sig
  315. symbol needs to be transmitted
  316. <legal all>
  317. */
  318. #define MACTX_USER_DESC_COMMON_NUM_HE_SIGB_SYM_OFFSET 0x0000000000000008
  319. #define MACTX_USER_DESC_COMMON_NUM_HE_SIGB_SYM_LSB 48
  320. #define MACTX_USER_DESC_COMMON_NUM_HE_SIGB_SYM_MSB 52
  321. #define MACTX_USER_DESC_COMMON_NUM_HE_SIGB_SYM_MASK 0x001f000000000000
  322. /* Description CENTER_RU_0
  323. Field only valid for 11ax transmission with a BW of 80Mhz
  324. or 160 Mhz
  325. Indicates whether the Center RU is occupied in the lower
  326. 80 MHz band. This is part of HE_SIGB content channel 1
  327. 0: center RU is NOT used
  328. 1: center RU is used
  329. NOTE: EHT is not expected to use the center RU.
  330. <legal all>
  331. */
  332. #define MACTX_USER_DESC_COMMON_CENTER_RU_0_OFFSET 0x0000000000000008
  333. #define MACTX_USER_DESC_COMMON_CENTER_RU_0_LSB 53
  334. #define MACTX_USER_DESC_COMMON_CENTER_RU_0_MSB 53
  335. #define MACTX_USER_DESC_COMMON_CENTER_RU_0_MASK 0x0020000000000000
  336. /* Description CENTER_RU_1
  337. Field only valid for 11ax transmission with a BW of 160
  338. Mhz (or 80 + 80)
  339. Indicates whether the Center RU is occupied in the upper
  340. 80 MHz band. This is part of HE_SIGB content channel 1
  341. 0: center RU is NOT used
  342. 1: center RU is used
  343. NOTE: EHT is not expected to use the center RU.
  344. <legal all>
  345. */
  346. #define MACTX_USER_DESC_COMMON_CENTER_RU_1_OFFSET 0x0000000000000008
  347. #define MACTX_USER_DESC_COMMON_CENTER_RU_1_LSB 54
  348. #define MACTX_USER_DESC_COMMON_CENTER_RU_1_MSB 54
  349. #define MACTX_USER_DESC_COMMON_CENTER_RU_1_MASK 0x0040000000000000
  350. /* Description RESERVED_3B
  351. <legal 0>
  352. */
  353. #define MACTX_USER_DESC_COMMON_RESERVED_3B_OFFSET 0x0000000000000008
  354. #define MACTX_USER_DESC_COMMON_RESERVED_3B_LSB 55
  355. #define MACTX_USER_DESC_COMMON_RESERVED_3B_MSB 55
  356. #define MACTX_USER_DESC_COMMON_RESERVED_3B_MASK 0x0080000000000000
  357. /* Description FTM_EN
  358. This field is set to 1 if the present packet is either an
  359. FTM_1 or an FTM_2 packet or an HE-Ranging NDP (11az).
  360. 0: non-FTM frame
  361. 1: FTM or HE-Ranging NDP Frame
  362. <legal all>
  363. */
  364. #define MACTX_USER_DESC_COMMON_FTM_EN_OFFSET 0x0000000000000008
  365. #define MACTX_USER_DESC_COMMON_FTM_EN_LSB 56
  366. #define MACTX_USER_DESC_COMMON_FTM_EN_MSB 56
  367. #define MACTX_USER_DESC_COMMON_FTM_EN_MASK 0x0100000000000000
  368. /* Description PE_NSS
  369. Number of active spatial streams during packet extension.
  370. <enum 0 1_spatial_stream>Single spatial stream
  371. <enum 1 2_spatial_streams>2 spatial streams
  372. <enum 2 3_spatial_streams>3 spatial streams
  373. <enum 3 4_spatial_streams>4 spatial streams
  374. <enum 4 5_spatial_streams>5 spatial streams
  375. <enum 5 6_spatial_streams>6 spatial streams
  376. <enum 6 7_spatial_streams>7 spatial streams
  377. <enum 7 8_spatial_streams>8 spatial streams
  378. */
  379. #define MACTX_USER_DESC_COMMON_PE_NSS_OFFSET 0x0000000000000008
  380. #define MACTX_USER_DESC_COMMON_PE_NSS_LSB 57
  381. #define MACTX_USER_DESC_COMMON_PE_NSS_MSB 59
  382. #define MACTX_USER_DESC_COMMON_PE_NSS_MASK 0x0e00000000000000
  383. /* Description PE_LTF_SIZE
  384. LTF size to be used during packet extention. . This field
  385. is valid for both FTM and non-FTM packets.
  386. 0-1x
  387. 1-2x (unsupported un HWK-1)
  388. 2-4x (unsupported un HWK-1)
  389. <legal all>
  390. */
  391. #define MACTX_USER_DESC_COMMON_PE_LTF_SIZE_OFFSET 0x0000000000000008
  392. #define MACTX_USER_DESC_COMMON_PE_LTF_SIZE_LSB 60
  393. #define MACTX_USER_DESC_COMMON_PE_LTF_SIZE_MSB 61
  394. #define MACTX_USER_DESC_COMMON_PE_LTF_SIZE_MASK 0x3000000000000000
  395. /* Description PE_CONTENT
  396. Content of packet extension. Valid for all 11ax packets
  397. having packet extension
  398. 0-he_ltf, 1-last_data_symbol
  399. <legal all>
  400. */
  401. #define MACTX_USER_DESC_COMMON_PE_CONTENT_OFFSET 0x0000000000000008
  402. #define MACTX_USER_DESC_COMMON_PE_CONTENT_LSB 62
  403. #define MACTX_USER_DESC_COMMON_PE_CONTENT_MSB 62
  404. #define MACTX_USER_DESC_COMMON_PE_CONTENT_MASK 0x4000000000000000
  405. /* Description PE_CHAIN_CSD_EN
  406. This field denotes whether to apply CSD on the packet extension
  407. portion of the packet. This field is valid for all 11ax
  408. packets.
  409. 0: disable per-chain csd
  410. 1: enable per-chain csd
  411. <legal all>
  412. */
  413. #define MACTX_USER_DESC_COMMON_PE_CHAIN_CSD_EN_OFFSET 0x0000000000000008
  414. #define MACTX_USER_DESC_COMMON_PE_CHAIN_CSD_EN_LSB 63
  415. #define MACTX_USER_DESC_COMMON_PE_CHAIN_CSD_EN_MSB 63
  416. #define MACTX_USER_DESC_COMMON_PE_CHAIN_CSD_EN_MASK 0x8000000000000000
  417. /* Description RU_ALLOCATION_0123_DETAILS
  418. See detailed description of the STRUCT.
  419. */
  420. /* Description RU_ALLOCATION_BAND0_0
  421. Field not used for MIMO
  422. Indicates RU arrangement in frequency domain. RU allocated
  423. for MU-MIMO, and number of users in the MU-MIMO.
  424. 0 - valid for HE_20/HE_40/HE_80/HE_160/ EHT_20/EHT_40/EHT_80/EHT_160/
  425. EHT_240/EHT_320
  426. 1 - valid for HE_80/HE_160 (80+80)/ EHT_80/EHT_160/EHT_240/EHT_320
  427. 2 - valid for HE_160 (80+80)/ EHT_160/EHT_240/EHT_320
  428. 3 - valid for HE_160 (80+80)/ EHT_160/EHT_240/EHT_320
  429. The four bands are for HE_SIGB0 & B1 respectively or for
  430. EHT_SIG0, EHT_SIG1, EHT_SIG2 & EHT_SIG3 respectively.
  431. valid for HE_20/HE_40/HE_80/HE_160/ EHT_20/EHT_40/EHT_80/EHT_160/
  432. EHT_240/EHT_320 packets and denotes RU-map of the first
  433. 20MHz band of HE_SIGB0 or EHT_SIG0
  434. <legal all>
  435. */
  436. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RU_ALLOCATION_BAND0_0_OFFSET 0x0000000000000010
  437. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RU_ALLOCATION_BAND0_0_LSB 0
  438. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RU_ALLOCATION_BAND0_0_MSB 8
  439. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RU_ALLOCATION_BAND0_0_MASK 0x00000000000001ff
  440. /* Description RU_ALLOCATION_BAND0_1
  441. Field not used for MIMO
  442. See description of ru_allocation_band0_0
  443. valid for HE_80/HE_160/ EHT_80/EHT_160/EHT_240/EHT_320 packets
  444. and denotes RU-map of the second 20MHz band of HE_SIGB0
  445. or EHT_SIG0
  446. */
  447. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RU_ALLOCATION_BAND0_1_OFFSET 0x0000000000000010
  448. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RU_ALLOCATION_BAND0_1_LSB 9
  449. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RU_ALLOCATION_BAND0_1_MSB 17
  450. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RU_ALLOCATION_BAND0_1_MASK 0x000000000003fe00
  451. /* Description RESERVED_0A
  452. <legal 0>
  453. */
  454. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RESERVED_0A_OFFSET 0x0000000000000010
  455. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RESERVED_0A_LSB 18
  456. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RESERVED_0A_MSB 23
  457. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RESERVED_0A_MASK 0x0000000000fc0000
  458. /* Description RU_ALLOCATIONS_01_SUBBAND80_MASK
  459. Field not used for HE
  460. Indicates what 80 MHz subbands 'ru_allocation_band{0, 1}_{0,
  461. 1}' are valid for
  462. Bit 0: lowest 80 MHz
  463. Bit 1: 2nd lowest 80 MHz
  464. Bit 2: 2nd highest 80 MHz
  465. Bit 3: highest 80 MHz
  466. In other 80 MHz subbands PHY microcode should override these
  467. with 'zero-user RU996.'
  468. <legal all>
  469. */
  470. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RU_ALLOCATIONS_01_SUBBAND80_MASK_OFFSET 0x0000000000000010
  471. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RU_ALLOCATIONS_01_SUBBAND80_MASK_LSB 24
  472. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RU_ALLOCATIONS_01_SUBBAND80_MASK_MSB 27
  473. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RU_ALLOCATIONS_01_SUBBAND80_MASK_MASK 0x000000000f000000
  474. /* Description RU_ALLOCATIONS_23_SUBBAND80_MASK
  475. Field not used for HE
  476. Indicates what 80 MHz subbands 'ru_allocation_band{0, 1}_{2,
  477. 3}' are valid for
  478. Bit 0: lowest 80 MHz
  479. Bit 1: 2nd lowest 80 MHz
  480. Bit 2: 2nd highest 80 MHz
  481. Bit 3: highest 80 MHz
  482. In other 80 MHz subbands PHY microcode should override these
  483. with 'zero-user RU996.'
  484. <legal all>
  485. */
  486. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RU_ALLOCATIONS_23_SUBBAND80_MASK_OFFSET 0x0000000000000010
  487. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RU_ALLOCATIONS_23_SUBBAND80_MASK_LSB 28
  488. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RU_ALLOCATIONS_23_SUBBAND80_MASK_MSB 31
  489. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RU_ALLOCATIONS_23_SUBBAND80_MASK_MASK 0x00000000f0000000
  490. /* Description RU_ALLOCATION_BAND0_2
  491. Field not used for MIMO
  492. See description of ru_allocation_band0_0
  493. valid for HE_160/ EHT_160/EHT_240/EHT_320 packets and denotes
  494. RU-map of the third 20MHz band of HE_SIGB0 or EHT_SIG0
  495. */
  496. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RU_ALLOCATION_BAND0_2_OFFSET 0x0000000000000010
  497. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RU_ALLOCATION_BAND0_2_LSB 32
  498. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RU_ALLOCATION_BAND0_2_MSB 40
  499. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RU_ALLOCATION_BAND0_2_MASK 0x000001ff00000000
  500. /* Description RU_ALLOCATION_BAND0_3
  501. Field not used for MIMO
  502. See description of ru_allocation_band0_0
  503. valid for HE_160/ EHT_160/EHT_240/EHT_320 packets and denotes
  504. RU-map of the fourth 20MHz band of HE_SIGB0 or EHT_SIG0
  505. */
  506. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RU_ALLOCATION_BAND0_3_OFFSET 0x0000000000000010
  507. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RU_ALLOCATION_BAND0_3_LSB 41
  508. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RU_ALLOCATION_BAND0_3_MSB 49
  509. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RU_ALLOCATION_BAND0_3_MASK 0x0003fe0000000000
  510. /* Description RESERVED_1A
  511. <legal 0>
  512. */
  513. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RESERVED_1A_OFFSET 0x0000000000000010
  514. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RESERVED_1A_LSB 50
  515. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RESERVED_1A_MSB 63
  516. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RESERVED_1A_MASK 0xfffc000000000000
  517. /* Description RU_ALLOCATION_BAND1_0
  518. Field not used for MIMO
  519. See description of ru_allocation_band0_0
  520. valid for HE_40/HE_80/HE_160/ EHT_40/EHT_80/EHT_160/ EHT_240/EHT_320
  521. packets and denotes RU-map of the first 20MHz band of HE_SIGB1
  522. or EHT_SIG1
  523. */
  524. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RU_ALLOCATION_BAND1_0_OFFSET 0x0000000000000018
  525. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RU_ALLOCATION_BAND1_0_LSB 0
  526. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RU_ALLOCATION_BAND1_0_MSB 8
  527. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RU_ALLOCATION_BAND1_0_MASK 0x00000000000001ff
  528. /* Description RU_ALLOCATION_BAND1_1
  529. Field not used for MIMO
  530. See description of ru_allocation_band0_0
  531. valid for HE_80/HE_160/ EHT_80/EHT_160/EHT_240/EHT_320 packets
  532. and denotes RU-map of the second 20MHz band of HE_SIGB1
  533. or EHT_SIG1
  534. */
  535. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RU_ALLOCATION_BAND1_1_OFFSET 0x0000000000000018
  536. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RU_ALLOCATION_BAND1_1_LSB 9
  537. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RU_ALLOCATION_BAND1_1_MSB 17
  538. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RU_ALLOCATION_BAND1_1_MASK 0x000000000003fe00
  539. /* Description RESERVED_2A
  540. <legal 0>
  541. */
  542. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RESERVED_2A_OFFSET 0x0000000000000018
  543. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RESERVED_2A_LSB 18
  544. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RESERVED_2A_MSB 31
  545. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RESERVED_2A_MASK 0x00000000fffc0000
  546. /* Description RU_ALLOCATION_BAND1_2
  547. Field not used for MIMO
  548. See description of ru_allocation_band0_0
  549. valid for HE_160/ EHT_160/EHT_240/EHT_320 packets and denotes
  550. RU-map of the third 20MHz band of HE_SIGB1 or EHT_SIG1
  551. */
  552. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RU_ALLOCATION_BAND1_2_OFFSET 0x0000000000000018
  553. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RU_ALLOCATION_BAND1_2_LSB 32
  554. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RU_ALLOCATION_BAND1_2_MSB 40
  555. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RU_ALLOCATION_BAND1_2_MASK 0x000001ff00000000
  556. /* Description RU_ALLOCATION_BAND1_3
  557. Field not used for MIMO
  558. See description of ru_allocation_band0_0
  559. valid for HE_160/ EHT_160/EHT_240/EHT_320 packets and denotes
  560. RU-map of the fourth 20MHz band of HE_SIGB1 or EHT_SIG1
  561. */
  562. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RU_ALLOCATION_BAND1_3_OFFSET 0x0000000000000018
  563. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RU_ALLOCATION_BAND1_3_LSB 41
  564. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RU_ALLOCATION_BAND1_3_MSB 49
  565. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RU_ALLOCATION_BAND1_3_MASK 0x0003fe0000000000
  566. /* Description RESERVED_3A
  567. <legal 0>
  568. */
  569. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RESERVED_3A_OFFSET 0x0000000000000018
  570. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RESERVED_3A_LSB 50
  571. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RESERVED_3A_MSB 63
  572. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_0123_DETAILS_RESERVED_3A_MASK 0xfffc000000000000
  573. /* Description RU_ALLOCATION_4567_DETAILS
  574. See detailed description of the STRUCT.
  575. Valid for EHT_240/EHT_320 packets and denotes RU-map of
  576. the fifth/sixth/sevent/eighth 20MHz bands of EHT_SIG0/EHT_SIG1
  577. */
  578. /* Description RU_ALLOCATION_BAND0_0
  579. Field not used for MIMO
  580. Indicates RU arrangement in frequency domain. RU allocated
  581. for MU-MIMO, and number of users in the MU-MIMO.
  582. 0 - valid for HE_20/HE_40/HE_80/HE_160/ EHT_20/EHT_40/EHT_80/EHT_160/
  583. EHT_240/EHT_320
  584. 1 - valid for HE_80/HE_160 (80+80)/ EHT_80/EHT_160/EHT_240/EHT_320
  585. 2 - valid for HE_160 (80+80)/ EHT_160/EHT_240/EHT_320
  586. 3 - valid for HE_160 (80+80)/ EHT_160/EHT_240/EHT_320
  587. The four bands are for HE_SIGB0 & B1 respectively or for
  588. EHT_SIG0, EHT_SIG1, EHT_SIG2 & EHT_SIG3 respectively.
  589. valid for HE_20/HE_40/HE_80/HE_160/ EHT_20/EHT_40/EHT_80/EHT_160/
  590. EHT_240/EHT_320 packets and denotes RU-map of the first
  591. 20MHz band of HE_SIGB0 or EHT_SIG0
  592. <legal all>
  593. */
  594. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RU_ALLOCATION_BAND0_0_OFFSET 0x0000000000000020
  595. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RU_ALLOCATION_BAND0_0_LSB 0
  596. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RU_ALLOCATION_BAND0_0_MSB 8
  597. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RU_ALLOCATION_BAND0_0_MASK 0x00000000000001ff
  598. /* Description RU_ALLOCATION_BAND0_1
  599. Field not used for MIMO
  600. See description of ru_allocation_band0_0
  601. valid for HE_80/HE_160/ EHT_80/EHT_160/EHT_240/EHT_320 packets
  602. and denotes RU-map of the second 20MHz band of HE_SIGB0
  603. or EHT_SIG0
  604. */
  605. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RU_ALLOCATION_BAND0_1_OFFSET 0x0000000000000020
  606. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RU_ALLOCATION_BAND0_1_LSB 9
  607. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RU_ALLOCATION_BAND0_1_MSB 17
  608. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RU_ALLOCATION_BAND0_1_MASK 0x000000000003fe00
  609. /* Description RESERVED_0A
  610. <legal 0>
  611. */
  612. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RESERVED_0A_OFFSET 0x0000000000000020
  613. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RESERVED_0A_LSB 18
  614. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RESERVED_0A_MSB 23
  615. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RESERVED_0A_MASK 0x0000000000fc0000
  616. /* Description RU_ALLOCATIONS_01_SUBBAND80_MASK
  617. Field not used for HE
  618. Indicates what 80 MHz subbands 'ru_allocation_band{0, 1}_{0,
  619. 1}' are valid for
  620. Bit 0: lowest 80 MHz
  621. Bit 1: 2nd lowest 80 MHz
  622. Bit 2: 2nd highest 80 MHz
  623. Bit 3: highest 80 MHz
  624. In other 80 MHz subbands PHY microcode should override these
  625. with 'zero-user RU996.'
  626. <legal all>
  627. */
  628. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RU_ALLOCATIONS_01_SUBBAND80_MASK_OFFSET 0x0000000000000020
  629. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RU_ALLOCATIONS_01_SUBBAND80_MASK_LSB 24
  630. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RU_ALLOCATIONS_01_SUBBAND80_MASK_MSB 27
  631. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RU_ALLOCATIONS_01_SUBBAND80_MASK_MASK 0x000000000f000000
  632. /* Description RU_ALLOCATIONS_23_SUBBAND80_MASK
  633. Field not used for HE
  634. Indicates what 80 MHz subbands 'ru_allocation_band{0, 1}_{2,
  635. 3}' are valid for
  636. Bit 0: lowest 80 MHz
  637. Bit 1: 2nd lowest 80 MHz
  638. Bit 2: 2nd highest 80 MHz
  639. Bit 3: highest 80 MHz
  640. In other 80 MHz subbands PHY microcode should override these
  641. with 'zero-user RU996.'
  642. <legal all>
  643. */
  644. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RU_ALLOCATIONS_23_SUBBAND80_MASK_OFFSET 0x0000000000000020
  645. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RU_ALLOCATIONS_23_SUBBAND80_MASK_LSB 28
  646. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RU_ALLOCATIONS_23_SUBBAND80_MASK_MSB 31
  647. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RU_ALLOCATIONS_23_SUBBAND80_MASK_MASK 0x00000000f0000000
  648. /* Description RU_ALLOCATION_BAND0_2
  649. Field not used for MIMO
  650. See description of ru_allocation_band0_0
  651. valid for HE_160/ EHT_160/EHT_240/EHT_320 packets and denotes
  652. RU-map of the third 20MHz band of HE_SIGB0 or EHT_SIG0
  653. */
  654. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RU_ALLOCATION_BAND0_2_OFFSET 0x0000000000000020
  655. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RU_ALLOCATION_BAND0_2_LSB 32
  656. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RU_ALLOCATION_BAND0_2_MSB 40
  657. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RU_ALLOCATION_BAND0_2_MASK 0x000001ff00000000
  658. /* Description RU_ALLOCATION_BAND0_3
  659. Field not used for MIMO
  660. See description of ru_allocation_band0_0
  661. valid for HE_160/ EHT_160/EHT_240/EHT_320 packets and denotes
  662. RU-map of the fourth 20MHz band of HE_SIGB0 or EHT_SIG0
  663. */
  664. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RU_ALLOCATION_BAND0_3_OFFSET 0x0000000000000020
  665. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RU_ALLOCATION_BAND0_3_LSB 41
  666. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RU_ALLOCATION_BAND0_3_MSB 49
  667. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RU_ALLOCATION_BAND0_3_MASK 0x0003fe0000000000
  668. /* Description RESERVED_1A
  669. <legal 0>
  670. */
  671. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RESERVED_1A_OFFSET 0x0000000000000020
  672. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RESERVED_1A_LSB 50
  673. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RESERVED_1A_MSB 63
  674. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RESERVED_1A_MASK 0xfffc000000000000
  675. /* Description RU_ALLOCATION_BAND1_0
  676. Field not used for MIMO
  677. See description of ru_allocation_band0_0
  678. valid for HE_40/HE_80/HE_160/ EHT_40/EHT_80/EHT_160/ EHT_240/EHT_320
  679. packets and denotes RU-map of the first 20MHz band of HE_SIGB1
  680. or EHT_SIG1
  681. */
  682. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RU_ALLOCATION_BAND1_0_OFFSET 0x0000000000000028
  683. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RU_ALLOCATION_BAND1_0_LSB 0
  684. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RU_ALLOCATION_BAND1_0_MSB 8
  685. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RU_ALLOCATION_BAND1_0_MASK 0x00000000000001ff
  686. /* Description RU_ALLOCATION_BAND1_1
  687. Field not used for MIMO
  688. See description of ru_allocation_band0_0
  689. valid for HE_80/HE_160/ EHT_80/EHT_160/EHT_240/EHT_320 packets
  690. and denotes RU-map of the second 20MHz band of HE_SIGB1
  691. or EHT_SIG1
  692. */
  693. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RU_ALLOCATION_BAND1_1_OFFSET 0x0000000000000028
  694. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RU_ALLOCATION_BAND1_1_LSB 9
  695. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RU_ALLOCATION_BAND1_1_MSB 17
  696. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RU_ALLOCATION_BAND1_1_MASK 0x000000000003fe00
  697. /* Description RESERVED_2A
  698. <legal 0>
  699. */
  700. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RESERVED_2A_OFFSET 0x0000000000000028
  701. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RESERVED_2A_LSB 18
  702. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RESERVED_2A_MSB 31
  703. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RESERVED_2A_MASK 0x00000000fffc0000
  704. /* Description RU_ALLOCATION_BAND1_2
  705. Field not used for MIMO
  706. See description of ru_allocation_band0_0
  707. valid for HE_160/ EHT_160/EHT_240/EHT_320 packets and denotes
  708. RU-map of the third 20MHz band of HE_SIGB1 or EHT_SIG1
  709. */
  710. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RU_ALLOCATION_BAND1_2_OFFSET 0x0000000000000028
  711. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RU_ALLOCATION_BAND1_2_LSB 32
  712. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RU_ALLOCATION_BAND1_2_MSB 40
  713. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RU_ALLOCATION_BAND1_2_MASK 0x000001ff00000000
  714. /* Description RU_ALLOCATION_BAND1_3
  715. Field not used for MIMO
  716. See description of ru_allocation_band0_0
  717. valid for HE_160/ EHT_160/EHT_240/EHT_320 packets and denotes
  718. RU-map of the fourth 20MHz band of HE_SIGB1 or EHT_SIG1
  719. */
  720. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RU_ALLOCATION_BAND1_3_OFFSET 0x0000000000000028
  721. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RU_ALLOCATION_BAND1_3_LSB 41
  722. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RU_ALLOCATION_BAND1_3_MSB 49
  723. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RU_ALLOCATION_BAND1_3_MASK 0x0003fe0000000000
  724. /* Description RESERVED_3A
  725. <legal 0>
  726. */
  727. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RESERVED_3A_OFFSET 0x0000000000000028
  728. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RESERVED_3A_LSB 50
  729. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RESERVED_3A_MSB 63
  730. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_4567_DETAILS_RESERVED_3A_MASK 0xfffc000000000000
  731. /* Description RU_ALLOCATION_160_0_DETAILS
  732. See detailed description of the STRUCT.
  733. */
  734. /* Description SUBBAND80_0_CC0
  735. Number of STA_ID=2046 HE-SIG-B/EHT-SIG user fields microcode
  736. should generate for content channel 0 (HE_SIGB0 or EHT_SIG0)
  737. for the lower 80 MHz
  738. Valid for HE_20/HE_40/HE_80/HE_160/ EHT_20/EHT_40/EHT_80/EHT_160/
  739. EHT_240/EHT_320
  740. <legal all>
  741. */
  742. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_160_0_DETAILS_SUBBAND80_0_CC0_OFFSET 0x0000000000000030
  743. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_160_0_DETAILS_SUBBAND80_0_CC0_LSB 0
  744. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_160_0_DETAILS_SUBBAND80_0_CC0_MSB 7
  745. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_160_0_DETAILS_SUBBAND80_0_CC0_MASK 0x00000000000000ff
  746. /* Description SUBBAND80_0_CC1
  747. Number of STA_ID=2046 HE-SIG-B/EHT-SIG user fields microcode
  748. should generate for content channel 1 (HE_SIGB1 or EHT_SIG1)
  749. for the lower 80 MHz
  750. Valid for HE_40/HE_80/HE_160 (80+80)/ EHT_40/EHT_80/EHT_160/EHT_240/EHT_320
  751. <legal all>
  752. */
  753. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_160_0_DETAILS_SUBBAND80_0_CC1_OFFSET 0x0000000000000030
  754. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_160_0_DETAILS_SUBBAND80_0_CC1_LSB 8
  755. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_160_0_DETAILS_SUBBAND80_0_CC1_MSB 15
  756. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_160_0_DETAILS_SUBBAND80_0_CC1_MASK 0x000000000000ff00
  757. /* Description SUBBAND80_1_CC0
  758. Number of STA_ID=2046 HE-SIG-B/EHT-SIG user fields microcode
  759. should generate for content channel 0 (HE_SIGB0 or EHT_SIG0)
  760. for the higher 80 MHz
  761. Valid for EHT_160/EHT_240/EHT_320
  762. All 80 MHz subbands are identical for HE_160 (80+80).
  763. <legal all>
  764. */
  765. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_160_0_DETAILS_SUBBAND80_1_CC0_OFFSET 0x0000000000000030
  766. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_160_0_DETAILS_SUBBAND80_1_CC0_LSB 16
  767. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_160_0_DETAILS_SUBBAND80_1_CC0_MSB 23
  768. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_160_0_DETAILS_SUBBAND80_1_CC0_MASK 0x0000000000ff0000
  769. /* Description SUBBAND80_1_CC1
  770. Number of STA_ID=2046 HE-SIG-B/EHT-SIG user fields microcode
  771. should generate for content channel 1 (HE_SIGB1 or EHT_SIG1)
  772. for the higher 80 MHz
  773. Valid for EHT_160/EHT_240/EHT_320
  774. All 80 MHz subbands are identical for HE_160 (80+80).
  775. <legal all>
  776. */
  777. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_160_0_DETAILS_SUBBAND80_1_CC1_OFFSET 0x0000000000000030
  778. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_160_0_DETAILS_SUBBAND80_1_CC1_LSB 24
  779. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_160_0_DETAILS_SUBBAND80_1_CC1_MSB 31
  780. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_160_0_DETAILS_SUBBAND80_1_CC1_MASK 0x00000000ff000000
  781. /* Description RU_ALLOCATION_160_1_DETAILS
  782. See detailed description of the STRUCT.
  783. Valid for EHT_240/EHT_320
  784. */
  785. /* Description SUBBAND80_0_CC0
  786. Number of STA_ID=2046 HE-SIG-B/EHT-SIG user fields microcode
  787. should generate for content channel 0 (HE_SIGB0 or EHT_SIG0)
  788. for the lower 80 MHz
  789. Valid for HE_20/HE_40/HE_80/HE_160/ EHT_20/EHT_40/EHT_80/EHT_160/
  790. EHT_240/EHT_320
  791. <legal all>
  792. */
  793. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_160_1_DETAILS_SUBBAND80_0_CC0_OFFSET 0x0000000000000030
  794. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_160_1_DETAILS_SUBBAND80_0_CC0_LSB 32
  795. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_160_1_DETAILS_SUBBAND80_0_CC0_MSB 39
  796. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_160_1_DETAILS_SUBBAND80_0_CC0_MASK 0x000000ff00000000
  797. /* Description SUBBAND80_0_CC1
  798. Number of STA_ID=2046 HE-SIG-B/EHT-SIG user fields microcode
  799. should generate for content channel 1 (HE_SIGB1 or EHT_SIG1)
  800. for the lower 80 MHz
  801. Valid for HE_40/HE_80/HE_160 (80+80)/ EHT_40/EHT_80/EHT_160/EHT_240/EHT_320
  802. <legal all>
  803. */
  804. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_160_1_DETAILS_SUBBAND80_0_CC1_OFFSET 0x0000000000000030
  805. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_160_1_DETAILS_SUBBAND80_0_CC1_LSB 40
  806. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_160_1_DETAILS_SUBBAND80_0_CC1_MSB 47
  807. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_160_1_DETAILS_SUBBAND80_0_CC1_MASK 0x0000ff0000000000
  808. /* Description SUBBAND80_1_CC0
  809. Number of STA_ID=2046 HE-SIG-B/EHT-SIG user fields microcode
  810. should generate for content channel 0 (HE_SIGB0 or EHT_SIG0)
  811. for the higher 80 MHz
  812. Valid for EHT_160/EHT_240/EHT_320
  813. All 80 MHz subbands are identical for HE_160 (80+80).
  814. <legal all>
  815. */
  816. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_160_1_DETAILS_SUBBAND80_1_CC0_OFFSET 0x0000000000000030
  817. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_160_1_DETAILS_SUBBAND80_1_CC0_LSB 48
  818. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_160_1_DETAILS_SUBBAND80_1_CC0_MSB 55
  819. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_160_1_DETAILS_SUBBAND80_1_CC0_MASK 0x00ff000000000000
  820. /* Description SUBBAND80_1_CC1
  821. Number of STA_ID=2046 HE-SIG-B/EHT-SIG user fields microcode
  822. should generate for content channel 1 (HE_SIGB1 or EHT_SIG1)
  823. for the higher 80 MHz
  824. Valid for EHT_160/EHT_240/EHT_320
  825. All 80 MHz subbands are identical for HE_160 (80+80).
  826. <legal all>
  827. */
  828. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_160_1_DETAILS_SUBBAND80_1_CC1_OFFSET 0x0000000000000030
  829. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_160_1_DETAILS_SUBBAND80_1_CC1_LSB 56
  830. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_160_1_DETAILS_SUBBAND80_1_CC1_MSB 63
  831. #define MACTX_USER_DESC_COMMON_RU_ALLOCATION_160_1_DETAILS_SUBBAND80_1_CC1_MASK 0xff00000000000000
  832. /* Description NUM_DATA_SYMBOLS
  833. The number of data symbols in the upcoming transmission.
  834. This does not include PE_LTF. Also for STBC packets this
  835. has to be an even number.
  836. */
  837. #define MACTX_USER_DESC_COMMON_NUM_DATA_SYMBOLS_OFFSET 0x0000000000000038
  838. #define MACTX_USER_DESC_COMMON_NUM_DATA_SYMBOLS_LSB 0
  839. #define MACTX_USER_DESC_COMMON_NUM_DATA_SYMBOLS_MSB 15
  840. #define MACTX_USER_DESC_COMMON_NUM_DATA_SYMBOLS_MASK 0x000000000000ffff
  841. /* Description NDP_RU_TONE_SET_INDEX
  842. Determines the RU tone set (1 - 72) to use for Short-NDP
  843. feedback
  844. Can be set to 0 for frames other than Short-NDP
  845. <legal 0-72>
  846. */
  847. #define MACTX_USER_DESC_COMMON_NDP_RU_TONE_SET_INDEX_OFFSET 0x0000000000000038
  848. #define MACTX_USER_DESC_COMMON_NDP_RU_TONE_SET_INDEX_LSB 16
  849. #define MACTX_USER_DESC_COMMON_NDP_RU_TONE_SET_INDEX_MSB 22
  850. #define MACTX_USER_DESC_COMMON_NDP_RU_TONE_SET_INDEX_MASK 0x00000000007f0000
  851. /* Description NDP_FEEDBACK_STATUS
  852. Determines the feedback value for Short-NDP
  853. <legal 0-1>
  854. */
  855. #define MACTX_USER_DESC_COMMON_NDP_FEEDBACK_STATUS_OFFSET 0x0000000000000038
  856. #define MACTX_USER_DESC_COMMON_NDP_FEEDBACK_STATUS_LSB 23
  857. #define MACTX_USER_DESC_COMMON_NDP_FEEDBACK_STATUS_MSB 23
  858. #define MACTX_USER_DESC_COMMON_NDP_FEEDBACK_STATUS_MASK 0x0000000000800000
  859. /* Description DOPPLER_INDICATION
  860. This field is valid only when (MACTX_PHY_DESC.pkt_type==11ax
  861. or MACTX_PHY_DESC.pkt_type == 11be).
  862. <legal all>
  863. */
  864. #define MACTX_USER_DESC_COMMON_DOPPLER_INDICATION_OFFSET 0x0000000000000038
  865. #define MACTX_USER_DESC_COMMON_DOPPLER_INDICATION_LSB 24
  866. #define MACTX_USER_DESC_COMMON_DOPPLER_INDICATION_MSB 24
  867. #define MACTX_USER_DESC_COMMON_DOPPLER_INDICATION_MASK 0x0000000001000000
  868. /* Description RESERVED_14A
  869. <legal 0>
  870. */
  871. #define MACTX_USER_DESC_COMMON_RESERVED_14A_OFFSET 0x0000000000000038
  872. #define MACTX_USER_DESC_COMMON_RESERVED_14A_LSB 25
  873. #define MACTX_USER_DESC_COMMON_RESERVED_14A_MSB 31
  874. #define MACTX_USER_DESC_COMMON_RESERVED_14A_MASK 0x00000000fe000000
  875. /* Description SPATIAL_REUSE
  876. This field is valid only when (MACTX_PHY_DESC.pkt_type==11ax
  877. or MACTX_PHY_DESC.pkt_type == 11be)
  878. For an HE TB PPDU all 16 bits are valid.
  879. For an EHT TB PPDU LSB 8 bits are valid.
  880. For any other HE/EHT PPDU LSB 4 bits are valid.
  881. <legal all>
  882. */
  883. #define MACTX_USER_DESC_COMMON_SPATIAL_REUSE_OFFSET 0x0000000000000038
  884. #define MACTX_USER_DESC_COMMON_SPATIAL_REUSE_LSB 32
  885. #define MACTX_USER_DESC_COMMON_SPATIAL_REUSE_MSB 47
  886. #define MACTX_USER_DESC_COMMON_SPATIAL_REUSE_MASK 0x0000ffff00000000
  887. /* Description RESERVED_15A
  888. <legal 0>
  889. */
  890. #define MACTX_USER_DESC_COMMON_RESERVED_15A_OFFSET 0x0000000000000038
  891. #define MACTX_USER_DESC_COMMON_RESERVED_15A_LSB 48
  892. #define MACTX_USER_DESC_COMMON_RESERVED_15A_MSB 63
  893. #define MACTX_USER_DESC_COMMON_RESERVED_15A_MASK 0xffff000000000000
  894. #endif // MACTX_USER_DESC_COMMON