1 
2 /*
3  * Copyright (c) 2024, Qualcomm Innovation Center, Inc. All rights reserved.
4  * SPDX-License-Identifier: ISC
5  */
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 #ifndef _RX_MSDU_START_H_
20 #define _RX_MSDU_START_H_
21 #if !defined(__ASSEMBLER__)
22 #endif
23 
24 #define NUM_OF_DWORDS_RX_MSDU_START 10
25 
26 #define NUM_OF_QWORDS_RX_MSDU_START 5
27 
28 
29 struct rx_msdu_start {
30 #ifndef WIFI_BIT_ORDER_BIG_ENDIAN
31              uint32_t rxpcu_mpdu_filter_in_category                           :  2,
32                       sw_frame_group_id                                       :  7,
33                       reserved_0                                              :  7,
34                       phy_ppdu_id                                             : 16;
35              uint32_t msdu_length                                             : 14,
36                       stbc                                                    :  1,
37                       ipsec_esp                                               :  1,
38                       l3_offset                                               :  7,
39                       ipsec_ah                                                :  1,
40                       l4_offset                                               :  8;
41              uint32_t msdu_number                                             :  8,
42                       decap_format                                            :  2,
43                       ipv4_proto                                              :  1,
44                       ipv6_proto                                              :  1,
45                       tcp_proto                                               :  1,
46                       udp_proto                                               :  1,
47                       ip_frag                                                 :  1,
48                       tcp_only_ack                                            :  1,
49                       da_is_bcast_mcast                                       :  1,
50                       toeplitz_hash_sel                                       :  2,
51                       ip_fixed_header_valid                                   :  1,
52                       ip_extn_header_valid                                    :  1,
53                       tcp_udp_header_valid                                    :  1,
54                       mesh_control_present                                    :  1,
55                       ldpc                                                    :  1,
56                       ip4_protocol_ip6_next_header                            :  8;
57              uint32_t toeplitz_hash_2_or_4                                    : 32;
58              uint32_t flow_id_toeplitz                                        : 32;
59              uint32_t user_rssi                                               :  8,
60                       pkt_type                                                :  4,
61                       sgi                                                     :  2,
62                       rate_mcs                                                :  4,
63                       receive_bandwidth                                       :  3,
64                       reception_type                                          :  3,
65                       mimo_ss_bitmap                                          :  8;
66              uint32_t ppdu_start_timestamp_31_0                               : 32;
67              uint32_t ppdu_start_timestamp_63_32                              : 32;
68              uint32_t sw_phy_meta_data                                        : 32;
69              uint32_t vlan_ctag_ci                                            : 16,
70                       vlan_stag_ci                                            : 16;
71 #else
72              uint32_t phy_ppdu_id                                             : 16,
73                       reserved_0                                              :  7,
74                       sw_frame_group_id                                       :  7,
75                       rxpcu_mpdu_filter_in_category                           :  2;
76              uint32_t l4_offset                                               :  8,
77                       ipsec_ah                                                :  1,
78                       l3_offset                                               :  7,
79                       ipsec_esp                                               :  1,
80                       stbc                                                    :  1,
81                       msdu_length                                             : 14;
82              uint32_t ip4_protocol_ip6_next_header                            :  8,
83                       ldpc                                                    :  1,
84                       mesh_control_present                                    :  1,
85                       tcp_udp_header_valid                                    :  1,
86                       ip_extn_header_valid                                    :  1,
87                       ip_fixed_header_valid                                   :  1,
88                       toeplitz_hash_sel                                       :  2,
89                       da_is_bcast_mcast                                       :  1,
90                       tcp_only_ack                                            :  1,
91                       ip_frag                                                 :  1,
92                       udp_proto                                               :  1,
93                       tcp_proto                                               :  1,
94                       ipv6_proto                                              :  1,
95                       ipv4_proto                                              :  1,
96                       decap_format                                            :  2,
97                       msdu_number                                             :  8;
98              uint32_t toeplitz_hash_2_or_4                                    : 32;
99              uint32_t flow_id_toeplitz                                        : 32;
100              uint32_t mimo_ss_bitmap                                          :  8,
101                       reception_type                                          :  3,
102                       receive_bandwidth                                       :  3,
103                       rate_mcs                                                :  4,
104                       sgi                                                     :  2,
105                       pkt_type                                                :  4,
106                       user_rssi                                               :  8;
107              uint32_t ppdu_start_timestamp_31_0                               : 32;
108              uint32_t ppdu_start_timestamp_63_32                              : 32;
109              uint32_t sw_phy_meta_data                                        : 32;
110              uint32_t vlan_stag_ci                                            : 16,
111                       vlan_ctag_ci                                            : 16;
112 #endif
113 };
114 
115 
116 
117 
118 #define RX_MSDU_START_RXPCU_MPDU_FILTER_IN_CATEGORY_OFFSET                          0x0000000000000000
119 #define RX_MSDU_START_RXPCU_MPDU_FILTER_IN_CATEGORY_LSB                             0
120 #define RX_MSDU_START_RXPCU_MPDU_FILTER_IN_CATEGORY_MSB                             1
121 #define RX_MSDU_START_RXPCU_MPDU_FILTER_IN_CATEGORY_MASK                            0x0000000000000003
122 
123 
124 
125 
126 #define RX_MSDU_START_SW_FRAME_GROUP_ID_OFFSET                                      0x0000000000000000
127 #define RX_MSDU_START_SW_FRAME_GROUP_ID_LSB                                         2
128 #define RX_MSDU_START_SW_FRAME_GROUP_ID_MSB                                         8
129 #define RX_MSDU_START_SW_FRAME_GROUP_ID_MASK                                        0x00000000000001fc
130 
131 
132 
133 
134 #define RX_MSDU_START_RESERVED_0_OFFSET                                             0x0000000000000000
135 #define RX_MSDU_START_RESERVED_0_LSB                                                9
136 #define RX_MSDU_START_RESERVED_0_MSB                                                15
137 #define RX_MSDU_START_RESERVED_0_MASK                                               0x000000000000fe00
138 
139 
140 
141 
142 #define RX_MSDU_START_PHY_PPDU_ID_OFFSET                                            0x0000000000000000
143 #define RX_MSDU_START_PHY_PPDU_ID_LSB                                               16
144 #define RX_MSDU_START_PHY_PPDU_ID_MSB                                               31
145 #define RX_MSDU_START_PHY_PPDU_ID_MASK                                              0x00000000ffff0000
146 
147 
148 
149 
150 #define RX_MSDU_START_MSDU_LENGTH_OFFSET                                            0x0000000000000000
151 #define RX_MSDU_START_MSDU_LENGTH_LSB                                               32
152 #define RX_MSDU_START_MSDU_LENGTH_MSB                                               45
153 #define RX_MSDU_START_MSDU_LENGTH_MASK                                              0x00003fff00000000
154 
155 
156 
157 
158 #define RX_MSDU_START_STBC_OFFSET                                                   0x0000000000000000
159 #define RX_MSDU_START_STBC_LSB                                                      46
160 #define RX_MSDU_START_STBC_MSB                                                      46
161 #define RX_MSDU_START_STBC_MASK                                                     0x0000400000000000
162 
163 
164 
165 
166 #define RX_MSDU_START_IPSEC_ESP_OFFSET                                              0x0000000000000000
167 #define RX_MSDU_START_IPSEC_ESP_LSB                                                 47
168 #define RX_MSDU_START_IPSEC_ESP_MSB                                                 47
169 #define RX_MSDU_START_IPSEC_ESP_MASK                                                0x0000800000000000
170 
171 
172 
173 
174 #define RX_MSDU_START_L3_OFFSET_OFFSET                                              0x0000000000000000
175 #define RX_MSDU_START_L3_OFFSET_LSB                                                 48
176 #define RX_MSDU_START_L3_OFFSET_MSB                                                 54
177 #define RX_MSDU_START_L3_OFFSET_MASK                                                0x007f000000000000
178 
179 
180 
181 
182 #define RX_MSDU_START_IPSEC_AH_OFFSET                                               0x0000000000000000
183 #define RX_MSDU_START_IPSEC_AH_LSB                                                  55
184 #define RX_MSDU_START_IPSEC_AH_MSB                                                  55
185 #define RX_MSDU_START_IPSEC_AH_MASK                                                 0x0080000000000000
186 
187 
188 
189 
190 #define RX_MSDU_START_L4_OFFSET_OFFSET                                              0x0000000000000000
191 #define RX_MSDU_START_L4_OFFSET_LSB                                                 56
192 #define RX_MSDU_START_L4_OFFSET_MSB                                                 63
193 #define RX_MSDU_START_L4_OFFSET_MASK                                                0xff00000000000000
194 
195 
196 
197 
198 #define RX_MSDU_START_MSDU_NUMBER_OFFSET                                            0x0000000000000008
199 #define RX_MSDU_START_MSDU_NUMBER_LSB                                               0
200 #define RX_MSDU_START_MSDU_NUMBER_MSB                                               7
201 #define RX_MSDU_START_MSDU_NUMBER_MASK                                              0x00000000000000ff
202 
203 
204 
205 
206 #define RX_MSDU_START_DECAP_FORMAT_OFFSET                                           0x0000000000000008
207 #define RX_MSDU_START_DECAP_FORMAT_LSB                                              8
208 #define RX_MSDU_START_DECAP_FORMAT_MSB                                              9
209 #define RX_MSDU_START_DECAP_FORMAT_MASK                                             0x0000000000000300
210 
211 
212 
213 
214 #define RX_MSDU_START_IPV4_PROTO_OFFSET                                             0x0000000000000008
215 #define RX_MSDU_START_IPV4_PROTO_LSB                                                10
216 #define RX_MSDU_START_IPV4_PROTO_MSB                                                10
217 #define RX_MSDU_START_IPV4_PROTO_MASK                                               0x0000000000000400
218 
219 
220 
221 
222 #define RX_MSDU_START_IPV6_PROTO_OFFSET                                             0x0000000000000008
223 #define RX_MSDU_START_IPV6_PROTO_LSB                                                11
224 #define RX_MSDU_START_IPV6_PROTO_MSB                                                11
225 #define RX_MSDU_START_IPV6_PROTO_MASK                                               0x0000000000000800
226 
227 
228 
229 
230 #define RX_MSDU_START_TCP_PROTO_OFFSET                                              0x0000000000000008
231 #define RX_MSDU_START_TCP_PROTO_LSB                                                 12
232 #define RX_MSDU_START_TCP_PROTO_MSB                                                 12
233 #define RX_MSDU_START_TCP_PROTO_MASK                                                0x0000000000001000
234 
235 
236 
237 
238 #define RX_MSDU_START_UDP_PROTO_OFFSET                                              0x0000000000000008
239 #define RX_MSDU_START_UDP_PROTO_LSB                                                 13
240 #define RX_MSDU_START_UDP_PROTO_MSB                                                 13
241 #define RX_MSDU_START_UDP_PROTO_MASK                                                0x0000000000002000
242 
243 
244 
245 
246 #define RX_MSDU_START_IP_FRAG_OFFSET                                                0x0000000000000008
247 #define RX_MSDU_START_IP_FRAG_LSB                                                   14
248 #define RX_MSDU_START_IP_FRAG_MSB                                                   14
249 #define RX_MSDU_START_IP_FRAG_MASK                                                  0x0000000000004000
250 
251 
252 
253 
254 #define RX_MSDU_START_TCP_ONLY_ACK_OFFSET                                           0x0000000000000008
255 #define RX_MSDU_START_TCP_ONLY_ACK_LSB                                              15
256 #define RX_MSDU_START_TCP_ONLY_ACK_MSB                                              15
257 #define RX_MSDU_START_TCP_ONLY_ACK_MASK                                             0x0000000000008000
258 
259 
260 
261 
262 #define RX_MSDU_START_DA_IS_BCAST_MCAST_OFFSET                                      0x0000000000000008
263 #define RX_MSDU_START_DA_IS_BCAST_MCAST_LSB                                         16
264 #define RX_MSDU_START_DA_IS_BCAST_MCAST_MSB                                         16
265 #define RX_MSDU_START_DA_IS_BCAST_MCAST_MASK                                        0x0000000000010000
266 
267 
268 
269 
270 #define RX_MSDU_START_TOEPLITZ_HASH_SEL_OFFSET                                      0x0000000000000008
271 #define RX_MSDU_START_TOEPLITZ_HASH_SEL_LSB                                         17
272 #define RX_MSDU_START_TOEPLITZ_HASH_SEL_MSB                                         18
273 #define RX_MSDU_START_TOEPLITZ_HASH_SEL_MASK                                        0x0000000000060000
274 
275 
276 
277 
278 #define RX_MSDU_START_IP_FIXED_HEADER_VALID_OFFSET                                  0x0000000000000008
279 #define RX_MSDU_START_IP_FIXED_HEADER_VALID_LSB                                     19
280 #define RX_MSDU_START_IP_FIXED_HEADER_VALID_MSB                                     19
281 #define RX_MSDU_START_IP_FIXED_HEADER_VALID_MASK                                    0x0000000000080000
282 
283 
284 
285 
286 #define RX_MSDU_START_IP_EXTN_HEADER_VALID_OFFSET                                   0x0000000000000008
287 #define RX_MSDU_START_IP_EXTN_HEADER_VALID_LSB                                      20
288 #define RX_MSDU_START_IP_EXTN_HEADER_VALID_MSB                                      20
289 #define RX_MSDU_START_IP_EXTN_HEADER_VALID_MASK                                     0x0000000000100000
290 
291 
292 
293 
294 #define RX_MSDU_START_TCP_UDP_HEADER_VALID_OFFSET                                   0x0000000000000008
295 #define RX_MSDU_START_TCP_UDP_HEADER_VALID_LSB                                      21
296 #define RX_MSDU_START_TCP_UDP_HEADER_VALID_MSB                                      21
297 #define RX_MSDU_START_TCP_UDP_HEADER_VALID_MASK                                     0x0000000000200000
298 
299 
300 
301 
302 #define RX_MSDU_START_MESH_CONTROL_PRESENT_OFFSET                                   0x0000000000000008
303 #define RX_MSDU_START_MESH_CONTROL_PRESENT_LSB                                      22
304 #define RX_MSDU_START_MESH_CONTROL_PRESENT_MSB                                      22
305 #define RX_MSDU_START_MESH_CONTROL_PRESENT_MASK                                     0x0000000000400000
306 
307 
308 
309 
310 #define RX_MSDU_START_LDPC_OFFSET                                                   0x0000000000000008
311 #define RX_MSDU_START_LDPC_LSB                                                      23
312 #define RX_MSDU_START_LDPC_MSB                                                      23
313 #define RX_MSDU_START_LDPC_MASK                                                     0x0000000000800000
314 
315 
316 
317 
318 #define RX_MSDU_START_IP4_PROTOCOL_IP6_NEXT_HEADER_OFFSET                           0x0000000000000008
319 #define RX_MSDU_START_IP4_PROTOCOL_IP6_NEXT_HEADER_LSB                              24
320 #define RX_MSDU_START_IP4_PROTOCOL_IP6_NEXT_HEADER_MSB                              31
321 #define RX_MSDU_START_IP4_PROTOCOL_IP6_NEXT_HEADER_MASK                             0x00000000ff000000
322 
323 
324 
325 
326 #define RX_MSDU_START_TOEPLITZ_HASH_2_OR_4_OFFSET                                   0x0000000000000008
327 #define RX_MSDU_START_TOEPLITZ_HASH_2_OR_4_LSB                                      32
328 #define RX_MSDU_START_TOEPLITZ_HASH_2_OR_4_MSB                                      63
329 #define RX_MSDU_START_TOEPLITZ_HASH_2_OR_4_MASK                                     0xffffffff00000000
330 
331 
332 
333 
334 #define RX_MSDU_START_FLOW_ID_TOEPLITZ_OFFSET                                       0x0000000000000010
335 #define RX_MSDU_START_FLOW_ID_TOEPLITZ_LSB                                          0
336 #define RX_MSDU_START_FLOW_ID_TOEPLITZ_MSB                                          31
337 #define RX_MSDU_START_FLOW_ID_TOEPLITZ_MASK                                         0x00000000ffffffff
338 
339 
340 
341 
342 #define RX_MSDU_START_USER_RSSI_OFFSET                                              0x0000000000000010
343 #define RX_MSDU_START_USER_RSSI_LSB                                                 32
344 #define RX_MSDU_START_USER_RSSI_MSB                                                 39
345 #define RX_MSDU_START_USER_RSSI_MASK                                                0x000000ff00000000
346 
347 
348 
349 
350 #define RX_MSDU_START_PKT_TYPE_OFFSET                                               0x0000000000000010
351 #define RX_MSDU_START_PKT_TYPE_LSB                                                  40
352 #define RX_MSDU_START_PKT_TYPE_MSB                                                  43
353 #define RX_MSDU_START_PKT_TYPE_MASK                                                 0x00000f0000000000
354 
355 
356 
357 
358 #define RX_MSDU_START_SGI_OFFSET                                                    0x0000000000000010
359 #define RX_MSDU_START_SGI_LSB                                                       44
360 #define RX_MSDU_START_SGI_MSB                                                       45
361 #define RX_MSDU_START_SGI_MASK                                                      0x0000300000000000
362 
363 
364 
365 
366 #define RX_MSDU_START_RATE_MCS_OFFSET                                               0x0000000000000010
367 #define RX_MSDU_START_RATE_MCS_LSB                                                  46
368 #define RX_MSDU_START_RATE_MCS_MSB                                                  49
369 #define RX_MSDU_START_RATE_MCS_MASK                                                 0x0003c00000000000
370 
371 
372 
373 
374 #define RX_MSDU_START_RECEIVE_BANDWIDTH_OFFSET                                      0x0000000000000010
375 #define RX_MSDU_START_RECEIVE_BANDWIDTH_LSB                                         50
376 #define RX_MSDU_START_RECEIVE_BANDWIDTH_MSB                                         52
377 #define RX_MSDU_START_RECEIVE_BANDWIDTH_MASK                                        0x001c000000000000
378 
379 
380 
381 
382 #define RX_MSDU_START_RECEPTION_TYPE_OFFSET                                         0x0000000000000010
383 #define RX_MSDU_START_RECEPTION_TYPE_LSB                                            53
384 #define RX_MSDU_START_RECEPTION_TYPE_MSB                                            55
385 #define RX_MSDU_START_RECEPTION_TYPE_MASK                                           0x00e0000000000000
386 
387 
388 
389 
390 #define RX_MSDU_START_MIMO_SS_BITMAP_OFFSET                                         0x0000000000000010
391 #define RX_MSDU_START_MIMO_SS_BITMAP_LSB                                            56
392 #define RX_MSDU_START_MIMO_SS_BITMAP_MSB                                            63
393 #define RX_MSDU_START_MIMO_SS_BITMAP_MASK                                           0xff00000000000000
394 
395 
396 
397 
398 #define RX_MSDU_START_PPDU_START_TIMESTAMP_31_0_OFFSET                              0x0000000000000018
399 #define RX_MSDU_START_PPDU_START_TIMESTAMP_31_0_LSB                                 0
400 #define RX_MSDU_START_PPDU_START_TIMESTAMP_31_0_MSB                                 31
401 #define RX_MSDU_START_PPDU_START_TIMESTAMP_31_0_MASK                                0x00000000ffffffff
402 
403 
404 
405 
406 #define RX_MSDU_START_PPDU_START_TIMESTAMP_63_32_OFFSET                             0x0000000000000018
407 #define RX_MSDU_START_PPDU_START_TIMESTAMP_63_32_LSB                                32
408 #define RX_MSDU_START_PPDU_START_TIMESTAMP_63_32_MSB                                63
409 #define RX_MSDU_START_PPDU_START_TIMESTAMP_63_32_MASK                               0xffffffff00000000
410 
411 
412 
413 
414 #define RX_MSDU_START_SW_PHY_META_DATA_OFFSET                                       0x0000000000000020
415 #define RX_MSDU_START_SW_PHY_META_DATA_LSB                                          0
416 #define RX_MSDU_START_SW_PHY_META_DATA_MSB                                          31
417 #define RX_MSDU_START_SW_PHY_META_DATA_MASK                                         0x00000000ffffffff
418 
419 
420 
421 
422 #define RX_MSDU_START_VLAN_CTAG_CI_OFFSET                                           0x0000000000000020
423 #define RX_MSDU_START_VLAN_CTAG_CI_LSB                                              32
424 #define RX_MSDU_START_VLAN_CTAG_CI_MSB                                              47
425 #define RX_MSDU_START_VLAN_CTAG_CI_MASK                                             0x0000ffff00000000
426 
427 
428 
429 
430 #define RX_MSDU_START_VLAN_STAG_CI_OFFSET                                           0x0000000000000020
431 #define RX_MSDU_START_VLAN_STAG_CI_LSB                                              48
432 #define RX_MSDU_START_VLAN_STAG_CI_MSB                                              63
433 #define RX_MSDU_START_VLAN_STAG_CI_MASK                                             0xffff000000000000
434 
435 
436 
437 #endif
438