tx_rate_stats_info.h 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466
  1. /*
  2. * Copyright (c) 2020, 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 _TX_RATE_STATS_INFO_H_
  17. #define _TX_RATE_STATS_INFO_H_
  18. #if !defined(__ASSEMBLER__)
  19. #endif
  20. // ################ START SUMMARY #################
  21. //
  22. // Dword Fields
  23. // 0 tx_rate_stats_info_valid[0], transmit_bw[2:1], transmit_pkt_type[6:3], transmit_stbc[7], transmit_ldpc[8], transmit_sgi[10:9], transmit_mcs[14:11], ofdma_transmission[15], tones_in_ru[27:16], reserved_0a[31:28]
  24. // 1 ppdu_transmission_tsf[31:0]
  25. //
  26. // ################ END SUMMARY #################
  27. #define NUM_OF_DWORDS_TX_RATE_STATS_INFO 2
  28. struct tx_rate_stats_info {
  29. uint32_t tx_rate_stats_info_valid : 1, //[0]
  30. transmit_bw : 2, //[2:1]
  31. transmit_pkt_type : 4, //[6:3]
  32. transmit_stbc : 1, //[7]
  33. transmit_ldpc : 1, //[8]
  34. transmit_sgi : 2, //[10:9]
  35. transmit_mcs : 4, //[14:11]
  36. ofdma_transmission : 1, //[15]
  37. tones_in_ru : 12, //[27:16]
  38. reserved_0a : 4; //[31:28]
  39. uint32_t ppdu_transmission_tsf : 32; //[31:0]
  40. };
  41. /*
  42. tx_rate_stats_info_valid
  43. When set all other fields in this STRUCT contain valid
  44. info.
  45. <legal all>
  46. transmit_bw
  47. Field only valid when Tx_rate_stats_info_valid is set
  48. Indicates the BW of the upcoming transmission that shall
  49. likely start in about 3 -4 us on the medium
  50. <enum 0 transmit_bw_20_MHz>
  51. <enum 1 transmit_bw_40_MHz>
  52. <enum 2 transmit_bw_80_MHz>
  53. <enum 3 transmit_bw_160_MHz>
  54. <legal all>
  55. transmit_pkt_type
  56. Field only valid when Tx_rate_stats_info_valid is set
  57. Field filled in by PDG.
  58. Not valid when in SW transmit mode
  59. The packet type
  60. <enum 0 dot11a>802.11a PPDU type
  61. <enum 1 dot11b>802.11b PPDU type
  62. <enum 2 dot11n_mm>802.11n Mixed Mode PPDU type
  63. <enum 3 dot11ac>802.11ac PPDU type
  64. <enum 4 dot11ax>802.11ax PPDU type
  65. <enum 5 dot11ba>802.11ba (WUR) PPDU type
  66. transmit_stbc
  67. Field only valid when Tx_rate_stats_info_valid is set
  68. Field filled in by PDG.
  69. Not valid when in SW transmit mode
  70. When set, STBC transmission rate was used.
  71. transmit_ldpc
  72. Field only valid when Tx_rate_stats_info_valid is set
  73. Field filled in by PDG.
  74. Not valid when in SW transmit mode
  75. When set, use LDPC transmission rates
  76. transmit_sgi
  77. Field only valid when Tx_rate_stats_info_valid is set
  78. Field filled in by PDG.
  79. Not valid when in SW transmit mode
  80. <enum 0 0_8_us_sgi > Legacy normal GI. Can also be
  81. used for HE
  82. <enum 1 0_4_us_sgi > Legacy short GI. Can also be
  83. used for HE
  84. <enum 2 1_6_us_sgi > HE related GI
  85. <enum 3 3_2_us_sgi > HE related GI
  86. <legal 0 - 3>
  87. transmit_mcs
  88. Field only valid when Tx_rate_stats_info_valid is set
  89. Field filled in by PDG.
  90. Not valid when in SW transmit mode
  91. For details, refer to MCS_TYPE description
  92. <legal all>
  93. ofdma_transmission
  94. Field only valid when Tx_rate_stats_info_valid is set
  95. Field filled in by PDG.
  96. Set when the transmission was an OFDMA transmission (DL
  97. or UL).
  98. <legal all>
  99. tones_in_ru
  100. Field only valid when Tx_rate_stats_info_valid is set
  101. Field filled in by PDG.
  102. Not valid when in SW transmit mode
  103. The number of tones in the RU used.
  104. <legal all>
  105. reserved_0a
  106. <legal 0>
  107. ppdu_transmission_tsf
  108. Field only valid when Tx_rate_stats_info_valid is set
  109. Based on a HWSCH configuration register setting, this
  110. field either contains:
  111. Lower 32 bits of the TSF, snapshot of this value when
  112. transmission of the PPDU containing the frame finished.
  113. OR
  114. Lower 32 bits of the TSF, snapshot of this value when
  115. transmission of the PPDU containing the frame started
  116. <legal all>
  117. */
  118. /* Description TX_RATE_STATS_INFO_0_TX_RATE_STATS_INFO_VALID
  119. When set all other fields in this STRUCT contain valid
  120. info.
  121. <legal all>
  122. */
  123. #define TX_RATE_STATS_INFO_0_TX_RATE_STATS_INFO_VALID_OFFSET 0x00000000
  124. #define TX_RATE_STATS_INFO_0_TX_RATE_STATS_INFO_VALID_LSB 0
  125. #define TX_RATE_STATS_INFO_0_TX_RATE_STATS_INFO_VALID_MASK 0x00000001
  126. /* Description TX_RATE_STATS_INFO_0_TRANSMIT_BW
  127. Field only valid when Tx_rate_stats_info_valid is set
  128. Indicates the BW of the upcoming transmission that shall
  129. likely start in about 3 -4 us on the medium
  130. <enum 0 transmit_bw_20_MHz>
  131. <enum 1 transmit_bw_40_MHz>
  132. <enum 2 transmit_bw_80_MHz>
  133. <enum 3 transmit_bw_160_MHz>
  134. <legal all>
  135. */
  136. #define TX_RATE_STATS_INFO_0_TRANSMIT_BW_OFFSET 0x00000000
  137. #define TX_RATE_STATS_INFO_0_TRANSMIT_BW_LSB 1
  138. #define TX_RATE_STATS_INFO_0_TRANSMIT_BW_MASK 0x00000006
  139. /* Description TX_RATE_STATS_INFO_0_TRANSMIT_PKT_TYPE
  140. Field only valid when Tx_rate_stats_info_valid is set
  141. Field filled in by PDG.
  142. Not valid when in SW transmit mode
  143. The packet type
  144. <enum 0 dot11a>802.11a PPDU type
  145. <enum 1 dot11b>802.11b PPDU type
  146. <enum 2 dot11n_mm>802.11n Mixed Mode PPDU type
  147. <enum 3 dot11ac>802.11ac PPDU type
  148. <enum 4 dot11ax>802.11ax PPDU type
  149. <enum 5 dot11ba>802.11ba (WUR) PPDU type
  150. */
  151. #define TX_RATE_STATS_INFO_0_TRANSMIT_PKT_TYPE_OFFSET 0x00000000
  152. #define TX_RATE_STATS_INFO_0_TRANSMIT_PKT_TYPE_LSB 3
  153. #define TX_RATE_STATS_INFO_0_TRANSMIT_PKT_TYPE_MASK 0x00000078
  154. /* Description TX_RATE_STATS_INFO_0_TRANSMIT_STBC
  155. Field only valid when Tx_rate_stats_info_valid is set
  156. Field filled in by PDG.
  157. Not valid when in SW transmit mode
  158. When set, STBC transmission rate was used.
  159. */
  160. #define TX_RATE_STATS_INFO_0_TRANSMIT_STBC_OFFSET 0x00000000
  161. #define TX_RATE_STATS_INFO_0_TRANSMIT_STBC_LSB 7
  162. #define TX_RATE_STATS_INFO_0_TRANSMIT_STBC_MASK 0x00000080
  163. /* Description TX_RATE_STATS_INFO_0_TRANSMIT_LDPC
  164. Field only valid when Tx_rate_stats_info_valid is set
  165. Field filled in by PDG.
  166. Not valid when in SW transmit mode
  167. When set, use LDPC transmission rates
  168. */
  169. #define TX_RATE_STATS_INFO_0_TRANSMIT_LDPC_OFFSET 0x00000000
  170. #define TX_RATE_STATS_INFO_0_TRANSMIT_LDPC_LSB 8
  171. #define TX_RATE_STATS_INFO_0_TRANSMIT_LDPC_MASK 0x00000100
  172. /* Description TX_RATE_STATS_INFO_0_TRANSMIT_SGI
  173. Field only valid when Tx_rate_stats_info_valid is set
  174. Field filled in by PDG.
  175. Not valid when in SW transmit mode
  176. <enum 0 0_8_us_sgi > Legacy normal GI. Can also be
  177. used for HE
  178. <enum 1 0_4_us_sgi > Legacy short GI. Can also be
  179. used for HE
  180. <enum 2 1_6_us_sgi > HE related GI
  181. <enum 3 3_2_us_sgi > HE related GI
  182. <legal 0 - 3>
  183. */
  184. #define TX_RATE_STATS_INFO_0_TRANSMIT_SGI_OFFSET 0x00000000
  185. #define TX_RATE_STATS_INFO_0_TRANSMIT_SGI_LSB 9
  186. #define TX_RATE_STATS_INFO_0_TRANSMIT_SGI_MASK 0x00000600
  187. /* Description TX_RATE_STATS_INFO_0_TRANSMIT_MCS
  188. Field only valid when Tx_rate_stats_info_valid is set
  189. Field filled in by PDG.
  190. Not valid when in SW transmit mode
  191. For details, refer to MCS_TYPE description
  192. <legal all>
  193. */
  194. #define TX_RATE_STATS_INFO_0_TRANSMIT_MCS_OFFSET 0x00000000
  195. #define TX_RATE_STATS_INFO_0_TRANSMIT_MCS_LSB 11
  196. #define TX_RATE_STATS_INFO_0_TRANSMIT_MCS_MASK 0x00007800
  197. /* Description TX_RATE_STATS_INFO_0_OFDMA_TRANSMISSION
  198. Field only valid when Tx_rate_stats_info_valid is set
  199. Field filled in by PDG.
  200. Set when the transmission was an OFDMA transmission (DL
  201. or UL).
  202. <legal all>
  203. */
  204. #define TX_RATE_STATS_INFO_0_OFDMA_TRANSMISSION_OFFSET 0x00000000
  205. #define TX_RATE_STATS_INFO_0_OFDMA_TRANSMISSION_LSB 15
  206. #define TX_RATE_STATS_INFO_0_OFDMA_TRANSMISSION_MASK 0x00008000
  207. /* Description TX_RATE_STATS_INFO_0_TONES_IN_RU
  208. Field only valid when Tx_rate_stats_info_valid is set
  209. Field filled in by PDG.
  210. Not valid when in SW transmit mode
  211. The number of tones in the RU used.
  212. <legal all>
  213. */
  214. #define TX_RATE_STATS_INFO_0_TONES_IN_RU_OFFSET 0x00000000
  215. #define TX_RATE_STATS_INFO_0_TONES_IN_RU_LSB 16
  216. #define TX_RATE_STATS_INFO_0_TONES_IN_RU_MASK 0x0fff0000
  217. /* Description TX_RATE_STATS_INFO_0_RESERVED_0A
  218. <legal 0>
  219. */
  220. #define TX_RATE_STATS_INFO_0_RESERVED_0A_OFFSET 0x00000000
  221. #define TX_RATE_STATS_INFO_0_RESERVED_0A_LSB 28
  222. #define TX_RATE_STATS_INFO_0_RESERVED_0A_MASK 0xf0000000
  223. /* Description TX_RATE_STATS_INFO_1_PPDU_TRANSMISSION_TSF
  224. Field only valid when Tx_rate_stats_info_valid is set
  225. Based on a HWSCH configuration register setting, this
  226. field either contains:
  227. Lower 32 bits of the TSF, snapshot of this value when
  228. transmission of the PPDU containing the frame finished.
  229. OR
  230. Lower 32 bits of the TSF, snapshot of this value when
  231. transmission of the PPDU containing the frame started
  232. <legal all>
  233. */
  234. #define TX_RATE_STATS_INFO_1_PPDU_TRANSMISSION_TSF_OFFSET 0x00000004
  235. #define TX_RATE_STATS_INFO_1_PPDU_TRANSMISSION_TSF_LSB 0
  236. #define TX_RATE_STATS_INFO_1_PPDU_TRANSMISSION_TSF_MASK 0xffffffff
  237. #endif // _TX_RATE_STATS_INFO_H_