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