tx_fes_status_start.h 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334
  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 _TX_FES_STATUS_START_H_
  16. #define _TX_FES_STATUS_START_H_
  17. #if !defined(__ASSEMBLER__)
  18. #endif
  19. #define NUM_OF_DWORDS_TX_FES_STATUS_START 4
  20. #define NUM_OF_QWORDS_TX_FES_STATUS_START 2
  21. struct tx_fes_status_start {
  22. #ifndef WIFI_BIT_ORDER_BIG_ENDIAN
  23. uint32_t schedule_id : 32; // [31:0]
  24. uint32_t reserved_1a : 8, // [7:0]
  25. transmit_start_reason : 3, // [10:8]
  26. disabled_user_bitmap_36_32 : 5, // [15:11]
  27. schedule_cmd_ring_id : 5, // [20:16]
  28. fes_control_mode : 2, // [22:21]
  29. schedule_try : 4, // [26:23]
  30. medium_prot_type : 3, // [29:27]
  31. reserved_1b : 2; // [31:30]
  32. uint32_t optimal_bw_try_count : 4, // [3:0]
  33. number_of_users : 7, // [10:4]
  34. coex_nack_count : 5, // [15:11]
  35. cca_ed0 : 16; // [31:16]
  36. uint32_t disabled_user_bitmap_31_0 : 32; // [31:0]
  37. #else
  38. uint32_t schedule_id : 32; // [31:0]
  39. uint32_t reserved_1b : 2, // [31:30]
  40. medium_prot_type : 3, // [29:27]
  41. schedule_try : 4, // [26:23]
  42. fes_control_mode : 2, // [22:21]
  43. schedule_cmd_ring_id : 5, // [20:16]
  44. disabled_user_bitmap_36_32 : 5, // [15:11]
  45. transmit_start_reason : 3, // [10:8]
  46. reserved_1a : 8; // [7:0]
  47. uint32_t cca_ed0 : 16, // [31:16]
  48. coex_nack_count : 5, // [15:11]
  49. number_of_users : 7, // [10:4]
  50. optimal_bw_try_count : 4; // [3:0]
  51. uint32_t disabled_user_bitmap_31_0 : 32; // [31:0]
  52. #endif
  53. };
  54. /* Description SCHEDULE_ID
  55. A field that SW can use to link this FES status to the schedule
  56. command that originated this transmission.
  57. */
  58. #define TX_FES_STATUS_START_SCHEDULE_ID_OFFSET 0x0000000000000000
  59. #define TX_FES_STATUS_START_SCHEDULE_ID_LSB 0
  60. #define TX_FES_STATUS_START_SCHEDULE_ID_MSB 31
  61. #define TX_FES_STATUS_START_SCHEDULE_ID_MASK 0x00000000ffffffff
  62. /* Description RESERVED_1A
  63. Hamilton v1 used this to report 'cca_ed0' but it was expanded
  64. and moved to word 2.
  65. <legal 0>
  66. */
  67. #define TX_FES_STATUS_START_RESERVED_1A_OFFSET 0x0000000000000000
  68. #define TX_FES_STATUS_START_RESERVED_1A_LSB 32
  69. #define TX_FES_STATUS_START_RESERVED_1A_MSB 39
  70. #define TX_FES_STATUS_START_RESERVED_1A_MASK 0x000000ff00000000
  71. /* Description TRANSMIT_START_REASON
  72. Indicates what the SCH start reason reason was for initiating
  73. this transmission.
  74. <enum 0 BO_based_transmit_start> The transmission of this
  75. PPDU got initiated by the scheduler due to Backoff expiration
  76. <enum 1 Trigger_based_transmit_start> The transmission of
  77. this PPDU got initiated by the scheduler due to reception
  78. (by the SCH) of the TLV RECEIVED_TRIGGER_INFO that RXPCU
  79. generated. Note that this can be an OFDMA trigger frame
  80. based transmission as well as some legacy trigger (PS-POLL,
  81. Qboost, U-APSD, etc.) based transmission
  82. <enum 2 Sifs_continuation_in_ongoing_burst> This transmission
  83. of this PPDU got initiated as part of SIFS continuation.
  84. An earlier PPDU was transmitted due to RBO expiration. Next
  85. command is also expected to be transmitted in SIFS burst.
  86. <enum 3 Sifs_continuation_last_command> This transmission
  87. of this PPDU got initiated as part of SIFS continuation
  88. and this is the last command in the burst. An earlier PPDU
  89. was transmitted due to RBO expiration.
  90. <enum 4 NTBR_response_start> DO NOT USE
  91. <legal 0-4>
  92. */
  93. #define TX_FES_STATUS_START_TRANSMIT_START_REASON_OFFSET 0x0000000000000000
  94. #define TX_FES_STATUS_START_TRANSMIT_START_REASON_LSB 40
  95. #define TX_FES_STATUS_START_TRANSMIT_START_REASON_MSB 42
  96. #define TX_FES_STATUS_START_TRANSMIT_START_REASON_MASK 0x0000070000000000
  97. /* Description DISABLED_USER_BITMAP_36_32
  98. Bitmap of users that are disabled for this transmission,
  99. MSB 5 bits
  100. TXPCU converts disabled_group_bitmap_* in 'PCU_PPDU_SETUP_START'
  101. from groups to users.
  102. <legal all>
  103. */
  104. #define TX_FES_STATUS_START_DISABLED_USER_BITMAP_36_32_OFFSET 0x0000000000000000
  105. #define TX_FES_STATUS_START_DISABLED_USER_BITMAP_36_32_LSB 43
  106. #define TX_FES_STATUS_START_DISABLED_USER_BITMAP_36_32_MSB 47
  107. #define TX_FES_STATUS_START_DISABLED_USER_BITMAP_36_32_MASK 0x0000f80000000000
  108. /* Description SCHEDULE_CMD_RING_ID
  109. The schedule command ring that originated this transmission
  110. <enum 0 sch_cmd_ring_number0>
  111. <enum 1 sch_cmd_ring_number1>
  112. <enum 2 sch_cmd_ring_number2>
  113. <enum 3 sch_cmd_ring_number3>
  114. <enum 4 sch_cmd_ring_number4>
  115. <enum 5 sch_cmd_ring_number5>
  116. <enum 6 sch_cmd_ring_number6>
  117. <enum 7 sch_cmd_ring_number7>
  118. <enum 8 sch_cmd_ring_number8>
  119. <enum 9 sch_cmd_ring_number9>
  120. <enum 10 sch_cmd_ring_number10>
  121. <enum 11 sch_cmd_ring_number11>
  122. <enum 12 sch_cmd_ring_number12>
  123. <enum 13 sch_cmd_ring_number13>
  124. <enum 14 sch_cmd_ring_number14>
  125. <enum 15 sch_cmd_ring_number15>
  126. <enum 16 sch_cmd_ring_number16>
  127. <enum 17 sch_cmd_ring_number17>
  128. <enum 18 sch_cmd_ring_number18>
  129. <enum 19 sch_cmd_ring_number19>
  130. <enum 20 sch_cmd_ring_number20>
  131. <legal 0-20>
  132. */
  133. #define TX_FES_STATUS_START_SCHEDULE_CMD_RING_ID_OFFSET 0x0000000000000000
  134. #define TX_FES_STATUS_START_SCHEDULE_CMD_RING_ID_LSB 48
  135. #define TX_FES_STATUS_START_SCHEDULE_CMD_RING_ID_MSB 52
  136. #define TX_FES_STATUS_START_SCHEDULE_CMD_RING_ID_MASK 0x001f000000000000
  137. /* Description FES_CONTROL_MODE
  138. <enum 0 SW_transmit_mode> No HW generated TLVs
  139. <enum 1 PDG_transmit_mode> PDG is activated to generate
  140. TLVs
  141. Note: Final Bandwidth selection is always performed by TX
  142. PCU.
  143. <legal 0-1>
  144. */
  145. #define TX_FES_STATUS_START_FES_CONTROL_MODE_OFFSET 0x0000000000000000
  146. #define TX_FES_STATUS_START_FES_CONTROL_MODE_LSB 53
  147. #define TX_FES_STATUS_START_FES_CONTROL_MODE_MSB 54
  148. #define TX_FES_STATUS_START_FES_CONTROL_MODE_MASK 0x0060000000000000
  149. /* Description SCHEDULE_TRY
  150. The number of times this scheduler command has been tried
  151. <legal all>
  152. */
  153. #define TX_FES_STATUS_START_SCHEDULE_TRY_OFFSET 0x0000000000000000
  154. #define TX_FES_STATUS_START_SCHEDULE_TRY_LSB 55
  155. #define TX_FES_STATUS_START_SCHEDULE_TRY_MSB 58
  156. #define TX_FES_STATUS_START_SCHEDULE_TRY_MASK 0x0780000000000000
  157. /* Description MEDIUM_PROT_TYPE
  158. Self Gen Medium Prot type used
  159. <enum 0 No_protection>
  160. <enum 1 RTS_legacy>
  161. <enum 2 RTS_11ac_static_bw>
  162. <enum 3 RTS_11ac_dynamic_bw>
  163. <enum 4 CTS2Self>
  164. <enum 5 QoS_Null_no_ack_3addr>
  165. <enum 6 QoS_Null_no_ack_4addr>
  166. <legal 0-6>
  167. Field only valid for user0 FES status.
  168. */
  169. #define TX_FES_STATUS_START_MEDIUM_PROT_TYPE_OFFSET 0x0000000000000000
  170. #define TX_FES_STATUS_START_MEDIUM_PROT_TYPE_LSB 59
  171. #define TX_FES_STATUS_START_MEDIUM_PROT_TYPE_MSB 61
  172. #define TX_FES_STATUS_START_MEDIUM_PROT_TYPE_MASK 0x3800000000000000
  173. /* Description RESERVED_1B
  174. <legal 0>
  175. */
  176. #define TX_FES_STATUS_START_RESERVED_1B_OFFSET 0x0000000000000000
  177. #define TX_FES_STATUS_START_RESERVED_1B_LSB 62
  178. #define TX_FES_STATUS_START_RESERVED_1B_MSB 63
  179. #define TX_FES_STATUS_START_RESERVED_1B_MASK 0xc000000000000000
  180. /* Description OPTIMAL_BW_TRY_COUNT
  181. This field indicates how many times this scheduling command
  182. has been flushed by TXPCU as a result of most desired
  183. BW not being available.
  184. <legal all>
  185. */
  186. #define TX_FES_STATUS_START_OPTIMAL_BW_TRY_COUNT_OFFSET 0x0000000000000008
  187. #define TX_FES_STATUS_START_OPTIMAL_BW_TRY_COUNT_LSB 0
  188. #define TX_FES_STATUS_START_OPTIMAL_BW_TRY_COUNT_MSB 3
  189. #define TX_FES_STATUS_START_OPTIMAL_BW_TRY_COUNT_MASK 0x000000000000000f
  190. /* Description NUMBER_OF_USERS
  191. The number of users in this transmission.
  192. */
  193. #define TX_FES_STATUS_START_NUMBER_OF_USERS_OFFSET 0x0000000000000008
  194. #define TX_FES_STATUS_START_NUMBER_OF_USERS_LSB 4
  195. #define TX_FES_STATUS_START_NUMBER_OF_USERS_MSB 10
  196. #define TX_FES_STATUS_START_NUMBER_OF_USERS_MASK 0x00000000000007f0
  197. /* Description COEX_NACK_COUNT
  198. Consumer: SCH
  199. Producer: TXPCU
  200. The number of times PDG informed the SCHeduler module that
  201. for this scheduling command, the WLAN transmission can
  202. not be initialized due to getting a NACK response from the
  203. Coex engine, or PDG not being able to fit a transmission
  204. within the timing constraints given by Coex.
  205. Note that SCH will (re)set this count to 0 at the start
  206. of reading a new SCH command.
  207. This count is maintained on a per ring basis by the SCHeduler
  208. <legal all>
  209. */
  210. #define TX_FES_STATUS_START_COEX_NACK_COUNT_OFFSET 0x0000000000000008
  211. #define TX_FES_STATUS_START_COEX_NACK_COUNT_LSB 11
  212. #define TX_FES_STATUS_START_COEX_NACK_COUNT_MSB 15
  213. #define TX_FES_STATUS_START_COEX_NACK_COUNT_MASK 0x000000000000f800
  214. /* Description CCA_ED0
  215. Used by TXPCU to report CCA status at time of transmit bandwidth
  216. selection. Each bit is a sample of BUSY/IDLE of ED[0] (as
  217. provided by SCH to TXPCU) for each 20 MHz sub-band. These
  218. stats could potentially be used in future for rate adaptation.
  219. Hamilton v1 used this to report 'current_tx_duration' but
  220. it was unreliable and changed to expand 'cca_ed0' to 16-bit.
  221. <legal all>
  222. */
  223. #define TX_FES_STATUS_START_CCA_ED0_OFFSET 0x0000000000000008
  224. #define TX_FES_STATUS_START_CCA_ED0_LSB 16
  225. #define TX_FES_STATUS_START_CCA_ED0_MSB 31
  226. #define TX_FES_STATUS_START_CCA_ED0_MASK 0x00000000ffff0000
  227. /* Description DISABLED_USER_BITMAP_31_0
  228. Bitmap of users that are disabled for this transmission,
  229. LSB 32 bits
  230. TXPCU converts disabled_group_bitmap_* in 'PCU_PPDU_SETUP_START'
  231. from groups to users.
  232. Hamilton v1 did not include this (and any subsequent) word.
  233. <legal all>
  234. */
  235. #define TX_FES_STATUS_START_DISABLED_USER_BITMAP_31_0_OFFSET 0x0000000000000008
  236. #define TX_FES_STATUS_START_DISABLED_USER_BITMAP_31_0_LSB 32
  237. #define TX_FES_STATUS_START_DISABLED_USER_BITMAP_31_0_MSB 63
  238. #define TX_FES_STATUS_START_DISABLED_USER_BITMAP_31_0_MASK 0xffffffff00000000
  239. #endif // TX_FES_STATUS_START