xref: /wlan-driver/fw-api/hw/qcn6432/received_trigger_info_details.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 _RECEIVED_TRIGGER_INFO_DETAILS_H_
18 #define _RECEIVED_TRIGGER_INFO_DETAILS_H_
19 #if !defined(__ASSEMBLER__)
20 #endif
21 
22 #define NUM_OF_DWORDS_RECEIVED_TRIGGER_INFO_DETAILS 5
23 
24 
25 struct received_trigger_info_details {
26 #ifndef WIFI_BIT_ORDER_BIG_ENDIAN
27              uint32_t trigger_type                                            :  4, // [3:0]
28                       ax_trigger_source                                       :  1, // [4:4]
29                       ax_trigger_type                                         :  4, // [8:5]
30                       trigger_source_sta_full_aid                             : 13, // [21:9]
31                       frame_control_valid                                     :  1, // [22:22]
32                       qos_control_valid                                       :  1, // [23:23]
33                       he_control_info_valid                                   :  1, // [24:24]
34                       ranging_trigger_subtype                                 :  4, // [28:25]
35                       reserved_0b                                             :  3; // [31:29]
36              uint32_t phy_ppdu_id                                             : 16, // [15:0]
37                       lsig_response_length                                    : 12, // [27:16]
38                       reserved_1a                                             :  4; // [31:28]
39              uint32_t frame_control                                           : 16, // [15:0]
40                       qos_control                                             : 16; // [31:16]
41              uint32_t sw_peer_id                                              : 16, // [15:0]
42                       reserved_3a                                             : 16; // [31:16]
43              uint32_t he_control                                              : 32; // [31:0]
44 #else
45              uint32_t reserved_0b                                             :  3, // [31:29]
46                       ranging_trigger_subtype                                 :  4, // [28:25]
47                       he_control_info_valid                                   :  1, // [24:24]
48                       qos_control_valid                                       :  1, // [23:23]
49                       frame_control_valid                                     :  1, // [22:22]
50                       trigger_source_sta_full_aid                             : 13, // [21:9]
51                       ax_trigger_type                                         :  4, // [8:5]
52                       ax_trigger_source                                       :  1, // [4:4]
53                       trigger_type                                            :  4; // [3:0]
54              uint32_t reserved_1a                                             :  4, // [31:28]
55                       lsig_response_length                                    : 12, // [27:16]
56                       phy_ppdu_id                                             : 16; // [15:0]
57              uint32_t qos_control                                             : 16, // [31:16]
58                       frame_control                                           : 16; // [15:0]
59              uint32_t reserved_3a                                             : 16, // [31:16]
60                       sw_peer_id                                              : 16; // [15:0]
61              uint32_t he_control                                              : 32; // [31:0]
62 #endif
63 };
64 
65 
66 /* Description		TRIGGER_TYPE
67 
68 			This field indicates for what type of trigger has been received
69 
70 
71 			<enum 0 SCH_Qboost_trigger>
72 			<enum 1 SCH_PSPOLL_trigger>
73 			<enum 2 SCH_UAPSD_trigger>
74 			<enum 3 SCH_11ax_trigger>
75 			Field "AX_trigger_type" indicates the ID of the received
76 			 trigger
77 			<enum 7 SCH_EHT_trigger>
78 			Field "AX_trigger_type" indicates the ID of the received
79 			 trigger
80 			<enum 4 SCH_11ax_wildcard_trigger>
81 			Field "AX_trigger_type" indicates the ID of the received
82 			 trigger
83 			<enum 5 SCH_11ax_unassoc_wildcard_trigger>
84 			Field "AX_trigger_type" indicates the ID of the received
85 			 trigger
86 			<enum 6 SCH_11az_ranging_trigger> Field "AX_trigger_type"
87 			indicates the subtype of the received trigger
88 
89 			<legal 0-7>
90 */
91 
92 #define RECEIVED_TRIGGER_INFO_DETAILS_TRIGGER_TYPE_OFFSET                           0x00000000
93 #define RECEIVED_TRIGGER_INFO_DETAILS_TRIGGER_TYPE_LSB                              0
94 #define RECEIVED_TRIGGER_INFO_DETAILS_TRIGGER_TYPE_MSB                              3
95 #define RECEIVED_TRIGGER_INFO_DETAILS_TRIGGER_TYPE_MASK                             0x0000000f
96 
97 
98 /* Description		AX_TRIGGER_SOURCE
99 
100 			Field Only valid when Trigger_type  is an 11ax related trigger
101 
102 
103 			<enum 0 11ax_trigger_frame>
104 			<enum 1 he_control_based_trigger>
105 
106 			<legal all>
107 */
108 
109 #define RECEIVED_TRIGGER_INFO_DETAILS_AX_TRIGGER_SOURCE_OFFSET                      0x00000000
110 #define RECEIVED_TRIGGER_INFO_DETAILS_AX_TRIGGER_SOURCE_LSB                         4
111 #define RECEIVED_TRIGGER_INFO_DETAILS_AX_TRIGGER_SOURCE_MSB                         4
112 #define RECEIVED_TRIGGER_INFO_DETAILS_AX_TRIGGER_SOURCE_MASK                        0x00000010
113 
114 
115 /* Description		AX_TRIGGER_TYPE
116 
117 			Field Only valid when Trigger_type  is an 11ax related trigger
118 
119 
120 			The 11AX trigger type/ trigger number:
121 			It identifies which trigger was received.
122 			<enum 0 ax_trigger_basic>
123 			<enum 1 ax_trigger_brpoll>
124 			<enum 2 ax_trigger_mu_bar>
125 			<enum 3 ax_trigger_mu_rts>
126 			<enum 4 ax_trigger_buffer_size>
127 			<enum 5 ax_trigger_gcr_mu_bar>
128 			<enum 6 ax_trigger_BQRP>
129 			<enum 7 ax_trigger_NDP_fb_report_poll>
130 			<enum 8 ax_tb_ranging_trigger> Indicates the reception of
131 			 Ranging Trigger Frame of subvariant indicated by Ranging_Trigger_Subtype
132 
133 			<enum 9 ax_trigger_reserved_9>
134 			<enum 10 ax_trigger_reserved_10>
135 			<enum 11 ax_trigger_reserved_11>
136 			<enum 12 ax_trigger_reserved_12>
137 			<enum 13 ax_trigger_reserved_13>
138 			<enum 14 ax_trigger_reserved_14>
139 			<enum 15 ax_trigger_reserved_15>
140 
141 			<legal all>
142 */
143 
144 #define RECEIVED_TRIGGER_INFO_DETAILS_AX_TRIGGER_TYPE_OFFSET                        0x00000000
145 #define RECEIVED_TRIGGER_INFO_DETAILS_AX_TRIGGER_TYPE_LSB                           5
146 #define RECEIVED_TRIGGER_INFO_DETAILS_AX_TRIGGER_TYPE_MSB                           8
147 #define RECEIVED_TRIGGER_INFO_DETAILS_AX_TRIGGER_TYPE_MASK                          0x000001e0
148 
149 
150 /* Description		TRIGGER_SOURCE_STA_FULL_AID
151 
152 			The sta_full_aid of the sta/ap that generated the trigger.
153 
154 			Comes from the address_search_entry
155 
156 			<legal all>
157 */
158 
159 #define RECEIVED_TRIGGER_INFO_DETAILS_TRIGGER_SOURCE_STA_FULL_AID_OFFSET            0x00000000
160 #define RECEIVED_TRIGGER_INFO_DETAILS_TRIGGER_SOURCE_STA_FULL_AID_LSB               9
161 #define RECEIVED_TRIGGER_INFO_DETAILS_TRIGGER_SOURCE_STA_FULL_AID_MSB               21
162 #define RECEIVED_TRIGGER_INFO_DETAILS_TRIGGER_SOURCE_STA_FULL_AID_MASK              0x003ffe00
163 
164 
165 /* Description		FRAME_CONTROL_VALID
166 
167 			When set, the 'frame_control' field contains valid info
168 			<legal all>
169 */
170 
171 #define RECEIVED_TRIGGER_INFO_DETAILS_FRAME_CONTROL_VALID_OFFSET                    0x00000000
172 #define RECEIVED_TRIGGER_INFO_DETAILS_FRAME_CONTROL_VALID_LSB                       22
173 #define RECEIVED_TRIGGER_INFO_DETAILS_FRAME_CONTROL_VALID_MSB                       22
174 #define RECEIVED_TRIGGER_INFO_DETAILS_FRAME_CONTROL_VALID_MASK                      0x00400000
175 
176 
177 /* Description		QOS_CONTROL_VALID
178 
179 			When set, the 'QoS_control' field contains valid info
180 			<legal all>
181 */
182 
183 #define RECEIVED_TRIGGER_INFO_DETAILS_QOS_CONTROL_VALID_OFFSET                      0x00000000
184 #define RECEIVED_TRIGGER_INFO_DETAILS_QOS_CONTROL_VALID_LSB                         23
185 #define RECEIVED_TRIGGER_INFO_DETAILS_QOS_CONTROL_VALID_MSB                         23
186 #define RECEIVED_TRIGGER_INFO_DETAILS_QOS_CONTROL_VALID_MASK                        0x00800000
187 
188 
189 /* Description		HE_CONTROL_INFO_VALID
190 
191 			When set, the 'HE control' field contains valid info
192 			<legal all>
193 */
194 
195 #define RECEIVED_TRIGGER_INFO_DETAILS_HE_CONTROL_INFO_VALID_OFFSET                  0x00000000
196 #define RECEIVED_TRIGGER_INFO_DETAILS_HE_CONTROL_INFO_VALID_LSB                     24
197 #define RECEIVED_TRIGGER_INFO_DETAILS_HE_CONTROL_INFO_VALID_MSB                     24
198 #define RECEIVED_TRIGGER_INFO_DETAILS_HE_CONTROL_INFO_VALID_MASK                    0x01000000
199 
200 
201 /* Description		RANGING_TRIGGER_SUBTYPE
202 
203 			Field only valid if  AX_Trigger_type = ax_tb_ranging_trigger
204 
205 
206 			Indicates the Trigger subtype for the current ranging TF
207 
208 
209 			<enum 0 TF_Poll>
210 			<enum 1 TF_Sound>
211 			<enum 2 TF_Secure_Sound>
212 			<enum 3 TF_Report>
213 
214 			<legal 0-3>
215 */
216 
217 #define RECEIVED_TRIGGER_INFO_DETAILS_RANGING_TRIGGER_SUBTYPE_OFFSET                0x00000000
218 #define RECEIVED_TRIGGER_INFO_DETAILS_RANGING_TRIGGER_SUBTYPE_LSB                   25
219 #define RECEIVED_TRIGGER_INFO_DETAILS_RANGING_TRIGGER_SUBTYPE_MSB                   28
220 #define RECEIVED_TRIGGER_INFO_DETAILS_RANGING_TRIGGER_SUBTYPE_MASK                  0x1e000000
221 
222 
223 /* Description		RESERVED_0B
224 
225 			<legal 0>
226 */
227 
228 #define RECEIVED_TRIGGER_INFO_DETAILS_RESERVED_0B_OFFSET                            0x00000000
229 #define RECEIVED_TRIGGER_INFO_DETAILS_RESERVED_0B_LSB                               29
230 #define RECEIVED_TRIGGER_INFO_DETAILS_RESERVED_0B_MSB                               31
231 #define RECEIVED_TRIGGER_INFO_DETAILS_RESERVED_0B_MASK                              0xe0000000
232 
233 
234 /* Description		PHY_PPDU_ID
235 
236 			A ppdu counter value that PHY increments for every PPDU
237 			received. The counter value wraps around
238 			<legal all>
239 */
240 
241 #define RECEIVED_TRIGGER_INFO_DETAILS_PHY_PPDU_ID_OFFSET                            0x00000004
242 #define RECEIVED_TRIGGER_INFO_DETAILS_PHY_PPDU_ID_LSB                               0
243 #define RECEIVED_TRIGGER_INFO_DETAILS_PHY_PPDU_ID_MSB                               15
244 #define RECEIVED_TRIGGER_INFO_DETAILS_PHY_PPDU_ID_MASK                              0x0000ffff
245 
246 
247 /* Description		LSIG_RESPONSE_LENGTH
248 
249 			Field only valid in case of OFDMA trigger
250 
251 			Indicates the value of the L-SIG Length field of the HE
252 			trigger-based PPDU that is the response to the Trigger frame
253 
254 
255 			<legal all>
256 */
257 
258 #define RECEIVED_TRIGGER_INFO_DETAILS_LSIG_RESPONSE_LENGTH_OFFSET                   0x00000004
259 #define RECEIVED_TRIGGER_INFO_DETAILS_LSIG_RESPONSE_LENGTH_LSB                      16
260 #define RECEIVED_TRIGGER_INFO_DETAILS_LSIG_RESPONSE_LENGTH_MSB                      27
261 #define RECEIVED_TRIGGER_INFO_DETAILS_LSIG_RESPONSE_LENGTH_MASK                     0x0fff0000
262 
263 
264 /* Description		RESERVED_1A
265 
266 			<legal 0>
267 */
268 
269 #define RECEIVED_TRIGGER_INFO_DETAILS_RESERVED_1A_OFFSET                            0x00000004
270 #define RECEIVED_TRIGGER_INFO_DETAILS_RESERVED_1A_LSB                               28
271 #define RECEIVED_TRIGGER_INFO_DETAILS_RESERVED_1A_MSB                               31
272 #define RECEIVED_TRIGGER_INFO_DETAILS_RESERVED_1A_MASK                              0xf0000000
273 
274 
275 /* Description		FRAME_CONTROL
276 
277 			frame control field of the received frame
278 			<legal all>
279 */
280 
281 #define RECEIVED_TRIGGER_INFO_DETAILS_FRAME_CONTROL_OFFSET                          0x00000008
282 #define RECEIVED_TRIGGER_INFO_DETAILS_FRAME_CONTROL_LSB                             0
283 #define RECEIVED_TRIGGER_INFO_DETAILS_FRAME_CONTROL_MSB                             15
284 #define RECEIVED_TRIGGER_INFO_DETAILS_FRAME_CONTROL_MASK                            0x0000ffff
285 
286 
287 /* Description		QOS_CONTROL
288 
289 			frame control field of the received frame (if present)
290 			<legal all>
291 */
292 
293 #define RECEIVED_TRIGGER_INFO_DETAILS_QOS_CONTROL_OFFSET                            0x00000008
294 #define RECEIVED_TRIGGER_INFO_DETAILS_QOS_CONTROL_LSB                               16
295 #define RECEIVED_TRIGGER_INFO_DETAILS_QOS_CONTROL_MSB                               31
296 #define RECEIVED_TRIGGER_INFO_DETAILS_QOS_CONTROL_MASK                              0xffff0000
297 
298 
299 /* Description		SW_PEER_ID
300 
301 			A unique identifier for this STA. Extracted from the Address_Search_Entry
302 
303 
304 			Used by the SCH to find linkage between this trigger and
305 			 potentially pre-programmed responses.
306 			<legal all>
307 */
308 
309 #define RECEIVED_TRIGGER_INFO_DETAILS_SW_PEER_ID_OFFSET                             0x0000000c
310 #define RECEIVED_TRIGGER_INFO_DETAILS_SW_PEER_ID_LSB                                0
311 #define RECEIVED_TRIGGER_INFO_DETAILS_SW_PEER_ID_MSB                                15
312 #define RECEIVED_TRIGGER_INFO_DETAILS_SW_PEER_ID_MASK                               0x0000ffff
313 
314 
315 /* Description		RESERVED_3A
316 
317 			<legal 0>
318 */
319 
320 #define RECEIVED_TRIGGER_INFO_DETAILS_RESERVED_3A_OFFSET                            0x0000000c
321 #define RECEIVED_TRIGGER_INFO_DETAILS_RESERVED_3A_LSB                               16
322 #define RECEIVED_TRIGGER_INFO_DETAILS_RESERVED_3A_MSB                               31
323 #define RECEIVED_TRIGGER_INFO_DETAILS_RESERVED_3A_MASK                              0xffff0000
324 
325 
326 /* Description		HE_CONTROL
327 
328 			Field only valid when HE_control_info_valid is set
329 
330 			This is the 'RAW HE_CONTROL field' that was present in the
331 			 frame.
332 			<legal all>
333 */
334 
335 #define RECEIVED_TRIGGER_INFO_DETAILS_HE_CONTROL_OFFSET                             0x00000010
336 #define RECEIVED_TRIGGER_INFO_DETAILS_HE_CONTROL_LSB                                0
337 #define RECEIVED_TRIGGER_INFO_DETAILS_HE_CONTROL_MSB                                31
338 #define RECEIVED_TRIGGER_INFO_DETAILS_HE_CONTROL_MASK                               0xffffffff
339 
340 
341 
342 #endif   // RECEIVED_TRIGGER_INFO_DETAILS
343