mactx_user_desc_common.h 53 KB

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