eht_sig_usr_ofdma_info.h 10 KB

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