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