tx_rate_stats_info.h 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273
  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 _TX_RATE_STATS_INFO_H_
  17. #define _TX_RATE_STATS_INFO_H_
  18. #if !defined(__ASSEMBLER__)
  19. #endif
  20. #define NUM_OF_DWORDS_TX_RATE_STATS_INFO 2
  21. struct tx_rate_stats_info {
  22. #ifndef WIFI_BIT_ORDER_BIG_ENDIAN
  23. uint32_t tx_rate_stats_info_valid : 1, // [0:0]
  24. transmit_bw : 3, // [3:1]
  25. transmit_pkt_type : 4, // [7:4]
  26. transmit_stbc : 1, // [8:8]
  27. transmit_ldpc : 1, // [9:9]
  28. transmit_sgi : 2, // [11:10]
  29. transmit_mcs : 4, // [15:12]
  30. ofdma_transmission : 1, // [16:16]
  31. tones_in_ru : 12, // [28:17]
  32. transmit_nss : 3; // [31:29]
  33. uint32_t ppdu_transmission_tsf : 32; // [31:0]
  34. #else
  35. uint32_t transmit_nss : 3, // [31:29]
  36. tones_in_ru : 12, // [28:17]
  37. ofdma_transmission : 1, // [16:16]
  38. transmit_mcs : 4, // [15:12]
  39. transmit_sgi : 2, // [11:10]
  40. transmit_ldpc : 1, // [9:9]
  41. transmit_stbc : 1, // [8:8]
  42. transmit_pkt_type : 4, // [7:4]
  43. transmit_bw : 3, // [3:1]
  44. tx_rate_stats_info_valid : 1; // [0:0]
  45. uint32_t ppdu_transmission_tsf : 32; // [31:0]
  46. #endif
  47. };
  48. /* Description TX_RATE_STATS_INFO_VALID
  49. When set all other fields in this STRUCT contain valid info.
  50. When clear, none of the other fields contain valid info.
  51. <legal all>
  52. */
  53. #define TX_RATE_STATS_INFO_TX_RATE_STATS_INFO_VALID_OFFSET 0x00000000
  54. #define TX_RATE_STATS_INFO_TX_RATE_STATS_INFO_VALID_LSB 0
  55. #define TX_RATE_STATS_INFO_TX_RATE_STATS_INFO_VALID_MSB 0
  56. #define TX_RATE_STATS_INFO_TX_RATE_STATS_INFO_VALID_MASK 0x00000001
  57. /* Description TRANSMIT_BW
  58. Field only valid when Tx_rate_stats_info_valid is set
  59. Indicates the BW of the upcoming transmission that shall
  60. likely start in about 3 -4 us on the medium
  61. <enum 0 20_mhz>20 Mhz BW
  62. <enum 1 40_mhz>40 Mhz BW
  63. <enum 2 80_mhz>80 Mhz BW
  64. <enum 3 160_mhz>160 Mhz BW
  65. <enum 4 320_mhz>320 Mhz BW
  66. <enum 5 240_mhz>240 Mhz BW
  67. */
  68. #define TX_RATE_STATS_INFO_TRANSMIT_BW_OFFSET 0x00000000
  69. #define TX_RATE_STATS_INFO_TRANSMIT_BW_LSB 1
  70. #define TX_RATE_STATS_INFO_TRANSMIT_BW_MSB 3
  71. #define TX_RATE_STATS_INFO_TRANSMIT_BW_MASK 0x0000000e
  72. /* Description TRANSMIT_PKT_TYPE
  73. Field only valid when Tx_rate_stats_info_valid is set
  74. Field filled in by PDG.
  75. Not valid when in SW transmit mode
  76. The packet type
  77. <enum 0 dot11a>802.11a PPDU type
  78. <enum 1 dot11b>802.11b PPDU type
  79. <enum 2 dot11n_mm>802.11n Mixed Mode PPDU type
  80. <enum 3 dot11ac>802.11ac PPDU type
  81. <enum 4 dot11ax>802.11ax PPDU type
  82. <enum 5 dot11ba>802.11ba (WUR) PPDU type
  83. <enum 6 dot11be>802.11be PPDU type
  84. <enum 7 dot11az>802.11az (ranging) PPDU type
  85. <enum 8 dot11n_gf>802.11n Green Field PPDU type (unsupported
  86. & aborted)
  87. */
  88. #define TX_RATE_STATS_INFO_TRANSMIT_PKT_TYPE_OFFSET 0x00000000
  89. #define TX_RATE_STATS_INFO_TRANSMIT_PKT_TYPE_LSB 4
  90. #define TX_RATE_STATS_INFO_TRANSMIT_PKT_TYPE_MSB 7
  91. #define TX_RATE_STATS_INFO_TRANSMIT_PKT_TYPE_MASK 0x000000f0
  92. /* Description TRANSMIT_STBC
  93. Field only valid when Tx_rate_stats_info_valid is set
  94. Field filled in by PDG.
  95. Not valid when in SW transmit mode
  96. When set, STBC transmission rate was used.
  97. */
  98. #define TX_RATE_STATS_INFO_TRANSMIT_STBC_OFFSET 0x00000000
  99. #define TX_RATE_STATS_INFO_TRANSMIT_STBC_LSB 8
  100. #define TX_RATE_STATS_INFO_TRANSMIT_STBC_MSB 8
  101. #define TX_RATE_STATS_INFO_TRANSMIT_STBC_MASK 0x00000100
  102. /* Description TRANSMIT_LDPC
  103. Field only valid when Tx_rate_stats_info_valid is set
  104. Field filled in by PDG.
  105. Not valid when in SW transmit mode
  106. When set, use LDPC transmission rates
  107. */
  108. #define TX_RATE_STATS_INFO_TRANSMIT_LDPC_OFFSET 0x00000000
  109. #define TX_RATE_STATS_INFO_TRANSMIT_LDPC_LSB 9
  110. #define TX_RATE_STATS_INFO_TRANSMIT_LDPC_MSB 9
  111. #define TX_RATE_STATS_INFO_TRANSMIT_LDPC_MASK 0x00000200
  112. /* Description TRANSMIT_SGI
  113. Field only valid when Tx_rate_stats_info_valid is set
  114. Field filled in by PDG.
  115. Not valid when in SW transmit mode
  116. Specify the right GI for HE-Ranging NDPs (11az)/Short NDP.
  117. <enum 0 0_8_us_sgi > Legacy normal GI. Can also be used
  118. for HE
  119. <enum 1 0_4_us_sgi > Legacy short GI. Can also be used
  120. for HE
  121. <enum 2 1_6_us_sgi > HE related GI
  122. <enum 3 3_2_us_sgi > HE related GI
  123. <legal 0 - 3>
  124. */
  125. #define TX_RATE_STATS_INFO_TRANSMIT_SGI_OFFSET 0x00000000
  126. #define TX_RATE_STATS_INFO_TRANSMIT_SGI_LSB 10
  127. #define TX_RATE_STATS_INFO_TRANSMIT_SGI_MSB 11
  128. #define TX_RATE_STATS_INFO_TRANSMIT_SGI_MASK 0x00000c00
  129. /* Description TRANSMIT_MCS
  130. Field only valid when Tx_rate_stats_info_valid is set
  131. Field filled in by PDG.
  132. Not valid when in SW transmit mode
  133. For details, refer to MCS_TYPE description
  134. <legal all>
  135. */
  136. #define TX_RATE_STATS_INFO_TRANSMIT_MCS_OFFSET 0x00000000
  137. #define TX_RATE_STATS_INFO_TRANSMIT_MCS_LSB 12
  138. #define TX_RATE_STATS_INFO_TRANSMIT_MCS_MSB 15
  139. #define TX_RATE_STATS_INFO_TRANSMIT_MCS_MASK 0x0000f000
  140. /* Description OFDMA_TRANSMISSION
  141. Field only valid when Tx_rate_stats_info_valid is set
  142. Field filled in by PDG.
  143. Set when the transmission was an OFDMA transmission (DL
  144. or UL).
  145. <legal all>
  146. */
  147. #define TX_RATE_STATS_INFO_OFDMA_TRANSMISSION_OFFSET 0x00000000
  148. #define TX_RATE_STATS_INFO_OFDMA_TRANSMISSION_LSB 16
  149. #define TX_RATE_STATS_INFO_OFDMA_TRANSMISSION_MSB 16
  150. #define TX_RATE_STATS_INFO_OFDMA_TRANSMISSION_MASK 0x00010000
  151. /* Description TONES_IN_RU
  152. Field only valid when Tx_rate_stats_info_valid is set
  153. Field filled in by PDG.
  154. Not valid when in SW transmit mode
  155. The number of tones in the RU used.
  156. <legal all>
  157. */
  158. #define TX_RATE_STATS_INFO_TONES_IN_RU_OFFSET 0x00000000
  159. #define TX_RATE_STATS_INFO_TONES_IN_RU_LSB 17
  160. #define TX_RATE_STATS_INFO_TONES_IN_RU_MSB 28
  161. #define TX_RATE_STATS_INFO_TONES_IN_RU_MASK 0x1ffe0000
  162. /* Description TRANSMIT_NSS
  163. Field only valid when Tx_rate_stats_info_valid is set
  164. Field filled in by PDG
  165. Not valid when in SW transmit mode
  166. The number of spatial streams used in the transmission
  167. <enum 0 1_spatial_stream>Single spatial stream
  168. <enum 1 2_spatial_streams>2 spatial streams
  169. <enum 2 3_spatial_streams>3 spatial streams
  170. <enum 3 4_spatial_streams>4 spatial streams
  171. <enum 4 5_spatial_streams>5 spatial streams
  172. <enum 5 6_spatial_streams>6 spatial streams
  173. <enum 6 7_spatial_streams>7 spatial streams
  174. <enum 7 8_spatial_streams>8 spatial streams
  175. */
  176. #define TX_RATE_STATS_INFO_TRANSMIT_NSS_OFFSET 0x00000000
  177. #define TX_RATE_STATS_INFO_TRANSMIT_NSS_LSB 29
  178. #define TX_RATE_STATS_INFO_TRANSMIT_NSS_MSB 31
  179. #define TX_RATE_STATS_INFO_TRANSMIT_NSS_MASK 0xe0000000
  180. /* Description PPDU_TRANSMISSION_TSF
  181. Field only valid when Tx_rate_stats_info_valid is set
  182. Based on a HWSCH configuration register setting, this field
  183. either contains:
  184. Lower 32 bits of the TSF, snapshot of this value when transmission
  185. of the PPDU containing the frame finished.
  186. OR
  187. Lower 32 bits of the TSF, snapshot of this value when transmission
  188. of the PPDU containing the frame started
  189. <legal all>
  190. */
  191. #define TX_RATE_STATS_INFO_PPDU_TRANSMISSION_TSF_OFFSET 0x00000004
  192. #define TX_RATE_STATS_INFO_PPDU_TRANSMISSION_TSF_LSB 0
  193. #define TX_RATE_STATS_INFO_PPDU_TRANSMISSION_TSF_MSB 31
  194. #define TX_RATE_STATS_INFO_PPDU_TRANSMISSION_TSF_MASK 0xffffffff
  195. #endif // TX_RATE_STATS_INFO