eht_sig_usr_ofdma_info.h 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250
  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 _EHT_SIG_USR_OFDMA_INFO_H_
  17. #define _EHT_SIG_USR_OFDMA_INFO_H_
  18. #if !defined(__ASSEMBLER__)
  19. #endif
  20. #define NUM_OF_DWORDS_EHT_SIG_USR_OFDMA_INFO 2
  21. struct eht_sig_usr_ofdma_info {
  22. #ifndef WIFI_BIT_ORDER_BIG_ENDIAN
  23. uint32_t sta_id : 11, // [10:0]
  24. sta_mcs : 4, // [14:11]
  25. validate_0a : 1, // [15:15]
  26. nss : 4, // [19:16]
  27. txbf : 1, // [20:20]
  28. sta_coding : 1, // [21:21]
  29. reserved_0b : 1, // [22:22]
  30. rx_integrity_check_passed : 1, // [23:23]
  31. subband80_cc_mask : 8; // [31:24]
  32. uint32_t user_order_subband80_0 : 8, // [7:0]
  33. user_order_subband80_1 : 8, // [15:8]
  34. user_order_subband80_2 : 8, // [23:16]
  35. user_order_subband80_3 : 8; // [31:24]
  36. #else
  37. uint32_t subband80_cc_mask : 8, // [31:24]
  38. rx_integrity_check_passed : 1, // [23:23]
  39. reserved_0b : 1, // [22:22]
  40. sta_coding : 1, // [21:21]
  41. txbf : 1, // [20:20]
  42. nss : 4, // [19:16]
  43. validate_0a : 1, // [15:15]
  44. sta_mcs : 4, // [14:11]
  45. sta_id : 11; // [10:0]
  46. uint32_t user_order_subband80_3 : 8, // [31:24]
  47. user_order_subband80_2 : 8, // [23:16]
  48. user_order_subband80_1 : 8, // [15:8]
  49. user_order_subband80_0 : 8; // [7:0]
  50. #endif
  51. };
  52. /* Description STA_ID
  53. Identifies the STA that is addressed. Details of STA ID
  54. are TBD
  55. */
  56. #define EHT_SIG_USR_OFDMA_INFO_STA_ID_OFFSET 0x00000000
  57. #define EHT_SIG_USR_OFDMA_INFO_STA_ID_LSB 0
  58. #define EHT_SIG_USR_OFDMA_INFO_STA_ID_MSB 10
  59. #define EHT_SIG_USR_OFDMA_INFO_STA_ID_MASK 0x000007ff
  60. /* Description STA_MCS
  61. Indicates the data MCS
  62. 0 - 13: MCS 0 - 13
  63. 14: validate
  64. 15: MCS 0 with DCM
  65. <legal 0-13, 15>
  66. */
  67. #define EHT_SIG_USR_OFDMA_INFO_STA_MCS_OFFSET 0x00000000
  68. #define EHT_SIG_USR_OFDMA_INFO_STA_MCS_LSB 11
  69. #define EHT_SIG_USR_OFDMA_INFO_STA_MCS_MSB 14
  70. #define EHT_SIG_USR_OFDMA_INFO_STA_MCS_MASK 0x00007800
  71. /* Description VALIDATE_0A
  72. Note: spec indicates this shall be set to 1
  73. <legal 1>
  74. */
  75. #define EHT_SIG_USR_OFDMA_INFO_VALIDATE_0A_OFFSET 0x00000000
  76. #define EHT_SIG_USR_OFDMA_INFO_VALIDATE_0A_LSB 15
  77. #define EHT_SIG_USR_OFDMA_INFO_VALIDATE_0A_MSB 15
  78. #define EHT_SIG_USR_OFDMA_INFO_VALIDATE_0A_MASK 0x00008000
  79. /* Description NSS
  80. Number of spatial streams for this user
  81. The actual number of streams is 1 larger than indicated
  82. in this field.
  83. <legal all>
  84. */
  85. #define EHT_SIG_USR_OFDMA_INFO_NSS_OFFSET 0x00000000
  86. #define EHT_SIG_USR_OFDMA_INFO_NSS_LSB 16
  87. #define EHT_SIG_USR_OFDMA_INFO_NSS_MSB 19
  88. #define EHT_SIG_USR_OFDMA_INFO_NSS_MASK 0x000f0000
  89. /* Description TXBF
  90. Indicates whether beamforming is applied
  91. 0: No beamforming
  92. 1: beamforming
  93. <legal all>
  94. */
  95. #define EHT_SIG_USR_OFDMA_INFO_TXBF_OFFSET 0x00000000
  96. #define EHT_SIG_USR_OFDMA_INFO_TXBF_LSB 20
  97. #define EHT_SIG_USR_OFDMA_INFO_TXBF_MSB 20
  98. #define EHT_SIG_USR_OFDMA_INFO_TXBF_MASK 0x00100000
  99. /* Description STA_CODING
  100. Distinguishes between BCC/LDPC
  101. 0: BCC
  102. 1: LDPC
  103. <legal all>
  104. */
  105. #define EHT_SIG_USR_OFDMA_INFO_STA_CODING_OFFSET 0x00000000
  106. #define EHT_SIG_USR_OFDMA_INFO_STA_CODING_LSB 21
  107. #define EHT_SIG_USR_OFDMA_INFO_STA_CODING_MSB 21
  108. #define EHT_SIG_USR_OFDMA_INFO_STA_CODING_MASK 0x00200000
  109. /* Description RESERVED_0B
  110. <legal 0>
  111. */
  112. #define EHT_SIG_USR_OFDMA_INFO_RESERVED_0B_OFFSET 0x00000000
  113. #define EHT_SIG_USR_OFDMA_INFO_RESERVED_0B_LSB 22
  114. #define EHT_SIG_USR_OFDMA_INFO_RESERVED_0B_MSB 22
  115. #define EHT_SIG_USR_OFDMA_INFO_RESERVED_0B_MASK 0x00400000
  116. /* Description RX_INTEGRITY_CHECK_PASSED
  117. TX side: Set to 0
  118. RX side: Set to 1 if PHY determines the CRC check of the
  119. codeblock containing this EHT-SIG user info has passed,
  120. else set to 0
  121. <legal all>
  122. */
  123. #define EHT_SIG_USR_OFDMA_INFO_RX_INTEGRITY_CHECK_PASSED_OFFSET 0x00000000
  124. #define EHT_SIG_USR_OFDMA_INFO_RX_INTEGRITY_CHECK_PASSED_LSB 23
  125. #define EHT_SIG_USR_OFDMA_INFO_RX_INTEGRITY_CHECK_PASSED_MSB 23
  126. #define EHT_SIG_USR_OFDMA_INFO_RX_INTEGRITY_CHECK_PASSED_MASK 0x00800000
  127. /* Description SUBBAND80_CC_MASK
  128. RX side: Set to 0
  129. TX side: Indicates what content channels of what 80 MHz
  130. subbands this User field can go to
  131. Bit 0: lowest 80 MHz content channel 0
  132. Bit 1: lowest 80 MHz content channel 1
  133. Bit 2: 2nd lowest 80 MHz content channel 0
  134. ...
  135. Bit 7: highest 80 MHz content channel 1
  136. <legal all>
  137. */
  138. #define EHT_SIG_USR_OFDMA_INFO_SUBBAND80_CC_MASK_OFFSET 0x00000000
  139. #define EHT_SIG_USR_OFDMA_INFO_SUBBAND80_CC_MASK_LSB 24
  140. #define EHT_SIG_USR_OFDMA_INFO_SUBBAND80_CC_MASK_MSB 31
  141. #define EHT_SIG_USR_OFDMA_INFO_SUBBAND80_CC_MASK_MASK 0xff000000
  142. /* Description USER_ORDER_SUBBAND80_0
  143. RX side: Set to 0
  144. TX side: Ordering index of the User field within the lowest
  145. 80 MHz
  146. Gaps between the ordering indices of User fields indicate
  147. that the microcode shall generate "unallocated RU" User
  148. fields (STAID=2046) to fill the gaps.
  149. <legal all>
  150. */
  151. #define EHT_SIG_USR_OFDMA_INFO_USER_ORDER_SUBBAND80_0_OFFSET 0x00000004
  152. #define EHT_SIG_USR_OFDMA_INFO_USER_ORDER_SUBBAND80_0_LSB 0
  153. #define EHT_SIG_USR_OFDMA_INFO_USER_ORDER_SUBBAND80_0_MSB 7
  154. #define EHT_SIG_USR_OFDMA_INFO_USER_ORDER_SUBBAND80_0_MASK 0x000000ff
  155. /* Description USER_ORDER_SUBBAND80_1
  156. RX side: Set to 0
  157. TX side: Ordering index of the User field within the 2nd
  158. lowest 80 MHz
  159. See 'user_order_subband80_0.'
  160. <legal all>
  161. */
  162. #define EHT_SIG_USR_OFDMA_INFO_USER_ORDER_SUBBAND80_1_OFFSET 0x00000004
  163. #define EHT_SIG_USR_OFDMA_INFO_USER_ORDER_SUBBAND80_1_LSB 8
  164. #define EHT_SIG_USR_OFDMA_INFO_USER_ORDER_SUBBAND80_1_MSB 15
  165. #define EHT_SIG_USR_OFDMA_INFO_USER_ORDER_SUBBAND80_1_MASK 0x0000ff00
  166. /* Description USER_ORDER_SUBBAND80_2
  167. RX side: Set to 0
  168. TX side: Ordering index of the User field within the 2nd
  169. highest 80 MHz
  170. See 'user_order_subband80_0.'
  171. <legal all>
  172. */
  173. #define EHT_SIG_USR_OFDMA_INFO_USER_ORDER_SUBBAND80_2_OFFSET 0x00000004
  174. #define EHT_SIG_USR_OFDMA_INFO_USER_ORDER_SUBBAND80_2_LSB 16
  175. #define EHT_SIG_USR_OFDMA_INFO_USER_ORDER_SUBBAND80_2_MSB 23
  176. #define EHT_SIG_USR_OFDMA_INFO_USER_ORDER_SUBBAND80_2_MASK 0x00ff0000
  177. /* Description USER_ORDER_SUBBAND80_3
  178. RX side: Set to 0
  179. TX side: Ordering index of the User field within the highest
  180. 80 MHz
  181. See 'user_order_subband80_0.'
  182. <legal all>
  183. */
  184. #define EHT_SIG_USR_OFDMA_INFO_USER_ORDER_SUBBAND80_3_OFFSET 0x00000004
  185. #define EHT_SIG_USR_OFDMA_INFO_USER_ORDER_SUBBAND80_3_LSB 24
  186. #define EHT_SIG_USR_OFDMA_INFO_USER_ORDER_SUBBAND80_3_MSB 31
  187. #define EHT_SIG_USR_OFDMA_INFO_USER_ORDER_SUBBAND80_3_MASK 0xff000000
  188. #endif // EHT_SIG_USR_OFDMA_INFO