rx_ppdu_start_user_info.h 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326
  1. /*
  2. * Copyright (c) 2019, The Linux Foundation. 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 _RX_PPDU_START_USER_INFO_H_
  17. #define _RX_PPDU_START_USER_INFO_H_
  18. #if !defined(__ASSEMBLER__)
  19. #endif
  20. #include "receive_user_info.h"
  21. // ################ START SUMMARY #################
  22. //
  23. // Dword Fields
  24. // 0-2 struct receive_user_info receive_user_info_details;
  25. //
  26. // ################ END SUMMARY #################
  27. #define NUM_OF_DWORDS_RX_PPDU_START_USER_INFO 3
  28. struct rx_ppdu_start_user_info {
  29. struct receive_user_info receive_user_info_details;
  30. };
  31. /*
  32. struct receive_user_info receive_user_info_details
  33. Overview of receive parameters that the MAC needs to
  34. prepend to every received MSDU/MPDU.
  35. */
  36. /* EXTERNAL REFERENCE : struct receive_user_info receive_user_info_details */
  37. /* Description RX_PPDU_START_USER_INFO_0_RECEIVE_USER_INFO_DETAILS_PHY_PPDU_ID
  38. A ppdu counter value that PHY increments for every PPDU
  39. received. The counter value wraps around
  40. <legal all>
  41. */
  42. #define RX_PPDU_START_USER_INFO_0_RECEIVE_USER_INFO_DETAILS_PHY_PPDU_ID_OFFSET 0x00000000
  43. #define RX_PPDU_START_USER_INFO_0_RECEIVE_USER_INFO_DETAILS_PHY_PPDU_ID_LSB 0
  44. #define RX_PPDU_START_USER_INFO_0_RECEIVE_USER_INFO_DETAILS_PHY_PPDU_ID_MASK 0x0000ffff
  45. /* Description RX_PPDU_START_USER_INFO_0_RECEIVE_USER_INFO_DETAILS_USER_RSSI
  46. RSSI for this user
  47. Frequency domain RSSI measurement for this user. Based
  48. on the channel estimate.
  49. <legal all>
  50. */
  51. #define RX_PPDU_START_USER_INFO_0_RECEIVE_USER_INFO_DETAILS_USER_RSSI_OFFSET 0x00000000
  52. #define RX_PPDU_START_USER_INFO_0_RECEIVE_USER_INFO_DETAILS_USER_RSSI_LSB 16
  53. #define RX_PPDU_START_USER_INFO_0_RECEIVE_USER_INFO_DETAILS_USER_RSSI_MASK 0x00ff0000
  54. /* Description RX_PPDU_START_USER_INFO_0_RECEIVE_USER_INFO_DETAILS_PKT_TYPE
  55. Packet type:
  56. <enum 0 dot11a>802.11a PPDU type
  57. <enum 1 dot11b>802.11b PPDU type
  58. <enum 2 dot11n_mm>802.11n Mixed Mode PPDU type
  59. <enum 3 dot11ac>802.11ac PPDU type
  60. <enum 4 dot11ax>802.11ax PPDU type
  61. <enum 5 dot11ba>802.11ba (WUR) PPDU type
  62. */
  63. #define RX_PPDU_START_USER_INFO_0_RECEIVE_USER_INFO_DETAILS_PKT_TYPE_OFFSET 0x00000000
  64. #define RX_PPDU_START_USER_INFO_0_RECEIVE_USER_INFO_DETAILS_PKT_TYPE_LSB 24
  65. #define RX_PPDU_START_USER_INFO_0_RECEIVE_USER_INFO_DETAILS_PKT_TYPE_MASK 0x0f000000
  66. /* Description RX_PPDU_START_USER_INFO_0_RECEIVE_USER_INFO_DETAILS_STBC
  67. When set, use STBC transmission rates
  68. */
  69. #define RX_PPDU_START_USER_INFO_0_RECEIVE_USER_INFO_DETAILS_STBC_OFFSET 0x00000000
  70. #define RX_PPDU_START_USER_INFO_0_RECEIVE_USER_INFO_DETAILS_STBC_LSB 28
  71. #define RX_PPDU_START_USER_INFO_0_RECEIVE_USER_INFO_DETAILS_STBC_MASK 0x10000000
  72. /* Description RX_PPDU_START_USER_INFO_0_RECEIVE_USER_INFO_DETAILS_RECEPTION_TYPE
  73. Indicates what type of reception this is.
  74. <enum 0 reception_type_SU > Basic SU reception (not
  75. part of OFDMA or MU-MIMO)
  76. <enum 1 reception_type_MU_MIMO > This is related to
  77. DL type of reception
  78. <enum 2 reception_type_MU_OFDMA > This is related
  79. to DL type of reception
  80. <enum 3 reception_type_MU_OFDMA_MIMO > This is
  81. related to DL type of reception
  82. <enum 4 reception_type_UL_MU_MIMO > This is related
  83. to UL type of reception
  84. <enum 5 reception_type_UL_MU_OFDMA > This is
  85. related to UL type of reception
  86. <enum 6 reception_type_UL_MU_OFDMA_MIMO > This is
  87. related to UL type of reception
  88. <legal 0-6>
  89. */
  90. #define RX_PPDU_START_USER_INFO_0_RECEIVE_USER_INFO_DETAILS_RECEPTION_TYPE_OFFSET 0x00000000
  91. #define RX_PPDU_START_USER_INFO_0_RECEIVE_USER_INFO_DETAILS_RECEPTION_TYPE_LSB 29
  92. #define RX_PPDU_START_USER_INFO_0_RECEIVE_USER_INFO_DETAILS_RECEPTION_TYPE_MASK 0xe0000000
  93. /* Description RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_RATE_MCS
  94. For details, refer to MCS_TYPE description
  95. <legal all>
  96. */
  97. #define RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_RATE_MCS_OFFSET 0x00000004
  98. #define RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_RATE_MCS_LSB 0
  99. #define RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_RATE_MCS_MASK 0x0000000f
  100. /* Description RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_SGI
  101. Field only valid when pkt type is HT, VHT or HE.
  102. <enum 0 gi_0_8_us > Legacy normal GI. Can also be
  103. used for HE
  104. <enum 1 gi_0_4_us > Legacy short GI. Can also be
  105. used for HE
  106. <enum 2 gi_1_6_us > HE related GI
  107. <enum 3 gi_3_2_us > HE related GI
  108. <legal 0 - 3>
  109. */
  110. #define RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_SGI_OFFSET 0x00000004
  111. #define RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_SGI_LSB 4
  112. #define RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_SGI_MASK 0x00000030
  113. /* Description RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_RECEIVE_BANDWIDTH
  114. Full receive Bandwidth
  115. <enum 0 full_rx_bw_20_mhz>
  116. <enum 1 full_rx_bw_40_mhz>
  117. <enum 2 full_rx_bw_80_mhz>
  118. <enum 3 full_rx_bw_160_mhz>
  119. <legal 0-3>
  120. */
  121. #define RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_RECEIVE_BANDWIDTH_OFFSET 0x00000004
  122. #define RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_RECEIVE_BANDWIDTH_LSB 6
  123. #define RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_RECEIVE_BANDWIDTH_MASK 0x000000c0
  124. /* Description RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_MIMO_SS_BITMAP
  125. Bitmap, with each bit indicating if the related spatial
  126. stream is used for this STA
  127. LSB related to SS 0
  128. 0: spatial stream not used for this reception
  129. 1: spatial stream used for this reception
  130. <legal all>
  131. */
  132. #define RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_MIMO_SS_BITMAP_OFFSET 0x00000004
  133. #define RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_MIMO_SS_BITMAP_LSB 8
  134. #define RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_MIMO_SS_BITMAP_MASK 0x0000ff00
  135. /* Description RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_OFDMA_RU_ALLOCATION
  136. Field only valid in case of OFDMA type receptions (DL
  137. and UL)
  138. Indicates the RU number associated with this user.
  139. In case of reception where the transmission was DL MU
  140. OFDMA, this field provides the RU pattern. Note that fields
  141. ofdma_user_index and ofdma_content_channel are needed to
  142. determine which RU (within a 40 MHz channel) was actually
  143. assigned to this user, but this does not give info on which
  144. 40 MHz channel was assigned to this user. Please refer
  145. DL_ofdma_ru_* in PHYRX_PKT_END_INFO for complete RU info for
  146. this user.
  147. In case of reception where the transmission was UL MU
  148. OFDMA, PHY is recommended to insert the RU start index in
  149. this field. Note that PHY may insert the RU width in
  150. Reserved_2a[6:0].
  151. <legal all>
  152. */
  153. #define RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_OFDMA_RU_ALLOCATION_OFFSET 0x00000004
  154. #define RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_OFDMA_RU_ALLOCATION_LSB 16
  155. #define RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_OFDMA_RU_ALLOCATION_MASK 0x00ff0000
  156. /* Description RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_OFDMA_USER_INDEX
  157. Field only valid in the of DL MU OFDMA reception
  158. The user number within the RU_allocation.
  159. This is needed for SW to determine the exact RU position
  160. within the reception.
  161. <legal all>
  162. */
  163. #define RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_OFDMA_USER_INDEX_OFFSET 0x00000004
  164. #define RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_OFDMA_USER_INDEX_LSB 24
  165. #define RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_OFDMA_USER_INDEX_MASK 0x7f000000
  166. /* Description RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_OFDMA_CONTENT_CHANNEL
  167. Field only valid in the of DL MU OFDMA/MIMO reception
  168. In case of DL MU reception, this field indicates the
  169. content channel number where PHY found the RU information
  170. for this user
  171. This is needed for SW to determine the exact RU position
  172. within the reception.
  173. <enum 0 content_channel_1>
  174. <enum 1 content_channel_2>
  175. <legal all>
  176. */
  177. #define RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_OFDMA_CONTENT_CHANNEL_OFFSET 0x00000004
  178. #define RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_OFDMA_CONTENT_CHANNEL_LSB 31
  179. #define RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_OFDMA_CONTENT_CHANNEL_MASK 0x80000000
  180. /* Description RX_PPDU_START_USER_INFO_2_RECEIVE_USER_INFO_DETAILS_LDPC
  181. When set, use LDPC transmission rates were used.
  182. <legal all>
  183. */
  184. #define RX_PPDU_START_USER_INFO_2_RECEIVE_USER_INFO_DETAILS_LDPC_OFFSET 0x00000008
  185. #define RX_PPDU_START_USER_INFO_2_RECEIVE_USER_INFO_DETAILS_LDPC_LSB 0
  186. #define RX_PPDU_START_USER_INFO_2_RECEIVE_USER_INFO_DETAILS_LDPC_MASK 0x00000001
  187. /* Description RX_PPDU_START_USER_INFO_2_RECEIVE_USER_INFO_DETAILS_RU_WIDTH
  188. In case of UL OFDMA reception, PHY is recommended to
  189. insert the RU width
  190. In Hastings80: was using Reserved_2a[6:0].
  191. <legal 1 - 74>
  192. */
  193. #define RX_PPDU_START_USER_INFO_2_RECEIVE_USER_INFO_DETAILS_RU_WIDTH_OFFSET 0x00000008
  194. #define RX_PPDU_START_USER_INFO_2_RECEIVE_USER_INFO_DETAILS_RU_WIDTH_LSB 1
  195. #define RX_PPDU_START_USER_INFO_2_RECEIVE_USER_INFO_DETAILS_RU_WIDTH_MASK 0x000000fe
  196. /* Description RX_PPDU_START_USER_INFO_2_RECEIVE_USER_INFO_DETAILS_RESERVED_2A
  197. <legal 0>
  198. */
  199. #define RX_PPDU_START_USER_INFO_2_RECEIVE_USER_INFO_DETAILS_RESERVED_2A_OFFSET 0x00000008
  200. #define RX_PPDU_START_USER_INFO_2_RECEIVE_USER_INFO_DETAILS_RESERVED_2A_LSB 8
  201. #define RX_PPDU_START_USER_INFO_2_RECEIVE_USER_INFO_DETAILS_RESERVED_2A_MASK 0xffffff00
  202. #endif // _RX_PPDU_START_USER_INFO_H_