xref: /wlan-driver/fw-api/hw/wcn6450/v1/rx_msdu_start.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1*5113495bSYour Name 
2*5113495bSYour Name /*
3*5113495bSYour Name  * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
4*5113495bSYour Name  *
5*5113495bSYour Name  * Permission to use, copy, modify, and/or distribute this software for
6*5113495bSYour Name  * any purpose with or without fee is hereby granted, provided that the
7*5113495bSYour Name  * above copyright notice and this permission notice appear in all
8*5113495bSYour Name  * copies.
9*5113495bSYour Name  *
10*5113495bSYour Name  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
11*5113495bSYour Name  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
12*5113495bSYour Name  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
13*5113495bSYour Name  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
14*5113495bSYour Name  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
15*5113495bSYour Name  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
16*5113495bSYour Name  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17*5113495bSYour Name  * PERFORMANCE OF THIS SOFTWARE.
18*5113495bSYour Name  */
19*5113495bSYour Name 
20*5113495bSYour Name 
21*5113495bSYour Name 
22*5113495bSYour Name #ifndef _RX_MSDU_START_H_
23*5113495bSYour Name #define _RX_MSDU_START_H_
24*5113495bSYour Name #if !defined(__ASSEMBLER__)
25*5113495bSYour Name #endif
26*5113495bSYour Name 
27*5113495bSYour Name #define NUM_OF_DWORDS_RX_MSDU_START 9
28*5113495bSYour Name 
29*5113495bSYour Name struct rx_msdu_start {
30*5113495bSYour Name              uint32_t rxpcu_mpdu_filter_in_category   :  2,
31*5113495bSYour Name                       sw_frame_group_id               :  7,
32*5113495bSYour Name                       reserved_0                      :  7,
33*5113495bSYour Name                       phy_ppdu_id                     : 16;
34*5113495bSYour Name              uint32_t msdu_length                     : 14,
35*5113495bSYour Name                       reserved_1a                     :  1,
36*5113495bSYour Name                       ipsec_esp                       :  1,
37*5113495bSYour Name                       l3_offset                       :  7,
38*5113495bSYour Name                       ipsec_ah                        :  1,
39*5113495bSYour Name                       l4_offset                       :  8;
40*5113495bSYour Name              uint32_t msdu_number                     :  8,
41*5113495bSYour Name                       decap_format                    :  2,
42*5113495bSYour Name                       ipv4_proto                      :  1,
43*5113495bSYour Name                       ipv6_proto                      :  1,
44*5113495bSYour Name                       tcp_proto                       :  1,
45*5113495bSYour Name                       udp_proto                       :  1,
46*5113495bSYour Name                       ip_frag                         :  1,
47*5113495bSYour Name                       tcp_only_ack                    :  1,
48*5113495bSYour Name                       da_is_bcast_mcast               :  1,
49*5113495bSYour Name                       toeplitz_hash_sel               :  2,
50*5113495bSYour Name                       ip_fixed_header_valid           :  1,
51*5113495bSYour Name                       ip_extn_header_valid            :  1,
52*5113495bSYour Name                       tcp_udp_header_valid            :  1,
53*5113495bSYour Name                       mesh_control_present            :  1,
54*5113495bSYour Name                       ldpc                            :  1,
55*5113495bSYour Name                       ip4_protocol_ip6_next_header    :  8;
56*5113495bSYour Name              uint32_t toeplitz_hash_2_or_4            : 32;
57*5113495bSYour Name              uint32_t flow_id_toeplitz                : 32;
58*5113495bSYour Name              uint32_t user_rssi                       :  8,
59*5113495bSYour Name                       pkt_type                        :  4,
60*5113495bSYour Name                       stbc                            :  1,
61*5113495bSYour Name                       sgi                             :  2,
62*5113495bSYour Name                       rate_mcs                        :  4,
63*5113495bSYour Name                       receive_bandwidth               :  2,
64*5113495bSYour Name                       reception_type                  :  3,
65*5113495bSYour Name                       mimo_ss_bitmap                  :  8;
66*5113495bSYour Name              uint32_t ppdu_start_timestamp            : 32;
67*5113495bSYour Name              uint32_t sw_phy_meta_data                : 32;
68*5113495bSYour Name              uint32_t vlan_ctag_ci                    : 16,
69*5113495bSYour Name                       vlan_stag_ci                    : 16;
70*5113495bSYour Name };
71*5113495bSYour Name 
72*5113495bSYour Name #define RX_MSDU_START_0_RXPCU_MPDU_FILTER_IN_CATEGORY_OFFSET         0x00000000
73*5113495bSYour Name #define RX_MSDU_START_0_RXPCU_MPDU_FILTER_IN_CATEGORY_LSB            0
74*5113495bSYour Name #define RX_MSDU_START_0_RXPCU_MPDU_FILTER_IN_CATEGORY_MASK           0x00000003
75*5113495bSYour Name 
76*5113495bSYour Name #define RX_MSDU_START_0_SW_FRAME_GROUP_ID_OFFSET                     0x00000000
77*5113495bSYour Name #define RX_MSDU_START_0_SW_FRAME_GROUP_ID_LSB                        2
78*5113495bSYour Name #define RX_MSDU_START_0_SW_FRAME_GROUP_ID_MASK                       0x000001fc
79*5113495bSYour Name 
80*5113495bSYour Name #define RX_MSDU_START_0_RESERVED_0_OFFSET                            0x00000000
81*5113495bSYour Name #define RX_MSDU_START_0_RESERVED_0_LSB                               9
82*5113495bSYour Name #define RX_MSDU_START_0_RESERVED_0_MASK                              0x0000fe00
83*5113495bSYour Name 
84*5113495bSYour Name #define RX_MSDU_START_0_PHY_PPDU_ID_OFFSET                           0x00000000
85*5113495bSYour Name #define RX_MSDU_START_0_PHY_PPDU_ID_LSB                              16
86*5113495bSYour Name #define RX_MSDU_START_0_PHY_PPDU_ID_MASK                             0xffff0000
87*5113495bSYour Name 
88*5113495bSYour Name #define RX_MSDU_START_1_MSDU_LENGTH_OFFSET                           0x00000004
89*5113495bSYour Name #define RX_MSDU_START_1_MSDU_LENGTH_LSB                              0
90*5113495bSYour Name #define RX_MSDU_START_1_MSDU_LENGTH_MASK                             0x00003fff
91*5113495bSYour Name 
92*5113495bSYour Name #define RX_MSDU_START_1_RESERVED_1A_OFFSET                           0x00000004
93*5113495bSYour Name #define RX_MSDU_START_1_RESERVED_1A_LSB                              14
94*5113495bSYour Name #define RX_MSDU_START_1_RESERVED_1A_MASK                             0x00004000
95*5113495bSYour Name 
96*5113495bSYour Name #define RX_MSDU_START_1_IPSEC_ESP_OFFSET                             0x00000004
97*5113495bSYour Name #define RX_MSDU_START_1_IPSEC_ESP_LSB                                15
98*5113495bSYour Name #define RX_MSDU_START_1_IPSEC_ESP_MASK                               0x00008000
99*5113495bSYour Name 
100*5113495bSYour Name #define RX_MSDU_START_1_L3_OFFSET_OFFSET                             0x00000004
101*5113495bSYour Name #define RX_MSDU_START_1_L3_OFFSET_LSB                                16
102*5113495bSYour Name #define RX_MSDU_START_1_L3_OFFSET_MASK                               0x007f0000
103*5113495bSYour Name 
104*5113495bSYour Name #define RX_MSDU_START_1_IPSEC_AH_OFFSET                              0x00000004
105*5113495bSYour Name #define RX_MSDU_START_1_IPSEC_AH_LSB                                 23
106*5113495bSYour Name #define RX_MSDU_START_1_IPSEC_AH_MASK                                0x00800000
107*5113495bSYour Name 
108*5113495bSYour Name #define RX_MSDU_START_1_L4_OFFSET_OFFSET                             0x00000004
109*5113495bSYour Name #define RX_MSDU_START_1_L4_OFFSET_LSB                                24
110*5113495bSYour Name #define RX_MSDU_START_1_L4_OFFSET_MASK                               0xff000000
111*5113495bSYour Name 
112*5113495bSYour Name #define RX_MSDU_START_2_MSDU_NUMBER_OFFSET                           0x00000008
113*5113495bSYour Name #define RX_MSDU_START_2_MSDU_NUMBER_LSB                              0
114*5113495bSYour Name #define RX_MSDU_START_2_MSDU_NUMBER_MASK                             0x000000ff
115*5113495bSYour Name 
116*5113495bSYour Name #define RX_MSDU_START_2_DECAP_FORMAT_OFFSET                          0x00000008
117*5113495bSYour Name #define RX_MSDU_START_2_DECAP_FORMAT_LSB                             8
118*5113495bSYour Name #define RX_MSDU_START_2_DECAP_FORMAT_MASK                            0x00000300
119*5113495bSYour Name 
120*5113495bSYour Name #define RX_MSDU_START_2_IPV4_PROTO_OFFSET                            0x00000008
121*5113495bSYour Name #define RX_MSDU_START_2_IPV4_PROTO_LSB                               10
122*5113495bSYour Name #define RX_MSDU_START_2_IPV4_PROTO_MASK                              0x00000400
123*5113495bSYour Name 
124*5113495bSYour Name #define RX_MSDU_START_2_IPV6_PROTO_OFFSET                            0x00000008
125*5113495bSYour Name #define RX_MSDU_START_2_IPV6_PROTO_LSB                               11
126*5113495bSYour Name #define RX_MSDU_START_2_IPV6_PROTO_MASK                              0x00000800
127*5113495bSYour Name 
128*5113495bSYour Name #define RX_MSDU_START_2_TCP_PROTO_OFFSET                             0x00000008
129*5113495bSYour Name #define RX_MSDU_START_2_TCP_PROTO_LSB                                12
130*5113495bSYour Name #define RX_MSDU_START_2_TCP_PROTO_MASK                               0x00001000
131*5113495bSYour Name 
132*5113495bSYour Name #define RX_MSDU_START_2_UDP_PROTO_OFFSET                             0x00000008
133*5113495bSYour Name #define RX_MSDU_START_2_UDP_PROTO_LSB                                13
134*5113495bSYour Name #define RX_MSDU_START_2_UDP_PROTO_MASK                               0x00002000
135*5113495bSYour Name 
136*5113495bSYour Name #define RX_MSDU_START_2_IP_FRAG_OFFSET                               0x00000008
137*5113495bSYour Name #define RX_MSDU_START_2_IP_FRAG_LSB                                  14
138*5113495bSYour Name #define RX_MSDU_START_2_IP_FRAG_MASK                                 0x00004000
139*5113495bSYour Name 
140*5113495bSYour Name #define RX_MSDU_START_2_TCP_ONLY_ACK_OFFSET                          0x00000008
141*5113495bSYour Name #define RX_MSDU_START_2_TCP_ONLY_ACK_LSB                             15
142*5113495bSYour Name #define RX_MSDU_START_2_TCP_ONLY_ACK_MASK                            0x00008000
143*5113495bSYour Name 
144*5113495bSYour Name #define RX_MSDU_START_2_DA_IS_BCAST_MCAST_OFFSET                     0x00000008
145*5113495bSYour Name #define RX_MSDU_START_2_DA_IS_BCAST_MCAST_LSB                        16
146*5113495bSYour Name #define RX_MSDU_START_2_DA_IS_BCAST_MCAST_MASK                       0x00010000
147*5113495bSYour Name 
148*5113495bSYour Name #define RX_MSDU_START_2_TOEPLITZ_HASH_SEL_OFFSET                     0x00000008
149*5113495bSYour Name #define RX_MSDU_START_2_TOEPLITZ_HASH_SEL_LSB                        17
150*5113495bSYour Name #define RX_MSDU_START_2_TOEPLITZ_HASH_SEL_MASK                       0x00060000
151*5113495bSYour Name 
152*5113495bSYour Name #define RX_MSDU_START_2_IP_FIXED_HEADER_VALID_OFFSET                 0x00000008
153*5113495bSYour Name #define RX_MSDU_START_2_IP_FIXED_HEADER_VALID_LSB                    19
154*5113495bSYour Name #define RX_MSDU_START_2_IP_FIXED_HEADER_VALID_MASK                   0x00080000
155*5113495bSYour Name 
156*5113495bSYour Name #define RX_MSDU_START_2_IP_EXTN_HEADER_VALID_OFFSET                  0x00000008
157*5113495bSYour Name #define RX_MSDU_START_2_IP_EXTN_HEADER_VALID_LSB                     20
158*5113495bSYour Name #define RX_MSDU_START_2_IP_EXTN_HEADER_VALID_MASK                    0x00100000
159*5113495bSYour Name 
160*5113495bSYour Name #define RX_MSDU_START_2_TCP_UDP_HEADER_VALID_OFFSET                  0x00000008
161*5113495bSYour Name #define RX_MSDU_START_2_TCP_UDP_HEADER_VALID_LSB                     21
162*5113495bSYour Name #define RX_MSDU_START_2_TCP_UDP_HEADER_VALID_MASK                    0x00200000
163*5113495bSYour Name 
164*5113495bSYour Name #define RX_MSDU_START_2_MESH_CONTROL_PRESENT_OFFSET                  0x00000008
165*5113495bSYour Name #define RX_MSDU_START_2_MESH_CONTROL_PRESENT_LSB                     22
166*5113495bSYour Name #define RX_MSDU_START_2_MESH_CONTROL_PRESENT_MASK                    0x00400000
167*5113495bSYour Name 
168*5113495bSYour Name #define RX_MSDU_START_2_LDPC_OFFSET                                  0x00000008
169*5113495bSYour Name #define RX_MSDU_START_2_LDPC_LSB                                     23
170*5113495bSYour Name #define RX_MSDU_START_2_LDPC_MASK                                    0x00800000
171*5113495bSYour Name 
172*5113495bSYour Name #define RX_MSDU_START_2_IP4_PROTOCOL_IP6_NEXT_HEADER_OFFSET          0x00000008
173*5113495bSYour Name #define RX_MSDU_START_2_IP4_PROTOCOL_IP6_NEXT_HEADER_LSB             24
174*5113495bSYour Name #define RX_MSDU_START_2_IP4_PROTOCOL_IP6_NEXT_HEADER_MASK            0xff000000
175*5113495bSYour Name 
176*5113495bSYour Name #define RX_MSDU_START_3_TOEPLITZ_HASH_2_OR_4_OFFSET                  0x0000000c
177*5113495bSYour Name #define RX_MSDU_START_3_TOEPLITZ_HASH_2_OR_4_LSB                     0
178*5113495bSYour Name #define RX_MSDU_START_3_TOEPLITZ_HASH_2_OR_4_MASK                    0xffffffff
179*5113495bSYour Name 
180*5113495bSYour Name #define RX_MSDU_START_4_FLOW_ID_TOEPLITZ_OFFSET                      0x00000010
181*5113495bSYour Name #define RX_MSDU_START_4_FLOW_ID_TOEPLITZ_LSB                         0
182*5113495bSYour Name #define RX_MSDU_START_4_FLOW_ID_TOEPLITZ_MASK                        0xffffffff
183*5113495bSYour Name 
184*5113495bSYour Name #define RX_MSDU_START_5_USER_RSSI_OFFSET                             0x00000014
185*5113495bSYour Name #define RX_MSDU_START_5_USER_RSSI_LSB                                0
186*5113495bSYour Name #define RX_MSDU_START_5_USER_RSSI_MASK                               0x000000ff
187*5113495bSYour Name 
188*5113495bSYour Name #define RX_MSDU_START_5_PKT_TYPE_OFFSET                              0x00000014
189*5113495bSYour Name #define RX_MSDU_START_5_PKT_TYPE_LSB                                 8
190*5113495bSYour Name #define RX_MSDU_START_5_PKT_TYPE_MASK                                0x00000f00
191*5113495bSYour Name 
192*5113495bSYour Name #define RX_MSDU_START_5_STBC_OFFSET                                  0x00000014
193*5113495bSYour Name #define RX_MSDU_START_5_STBC_LSB                                     12
194*5113495bSYour Name #define RX_MSDU_START_5_STBC_MASK                                    0x00001000
195*5113495bSYour Name 
196*5113495bSYour Name #define RX_MSDU_START_5_SGI_OFFSET                                   0x00000014
197*5113495bSYour Name #define RX_MSDU_START_5_SGI_LSB                                      13
198*5113495bSYour Name #define RX_MSDU_START_5_SGI_MASK                                     0x00006000
199*5113495bSYour Name 
200*5113495bSYour Name #define RX_MSDU_START_5_RATE_MCS_OFFSET                              0x00000014
201*5113495bSYour Name #define RX_MSDU_START_5_RATE_MCS_LSB                                 15
202*5113495bSYour Name #define RX_MSDU_START_5_RATE_MCS_MASK                                0x00078000
203*5113495bSYour Name 
204*5113495bSYour Name #define RX_MSDU_START_5_RECEIVE_BANDWIDTH_OFFSET                     0x00000014
205*5113495bSYour Name #define RX_MSDU_START_5_RECEIVE_BANDWIDTH_LSB                        19
206*5113495bSYour Name #define RX_MSDU_START_5_RECEIVE_BANDWIDTH_MASK                       0x00180000
207*5113495bSYour Name 
208*5113495bSYour Name #define RX_MSDU_START_5_RECEPTION_TYPE_OFFSET                        0x00000014
209*5113495bSYour Name #define RX_MSDU_START_5_RECEPTION_TYPE_LSB                           21
210*5113495bSYour Name #define RX_MSDU_START_5_RECEPTION_TYPE_MASK                          0x00e00000
211*5113495bSYour Name 
212*5113495bSYour Name #define RX_MSDU_START_5_MIMO_SS_BITMAP_OFFSET                        0x00000014
213*5113495bSYour Name #define RX_MSDU_START_5_MIMO_SS_BITMAP_LSB                           24
214*5113495bSYour Name #define RX_MSDU_START_5_MIMO_SS_BITMAP_MASK                          0xff000000
215*5113495bSYour Name 
216*5113495bSYour Name #define RX_MSDU_START_6_PPDU_START_TIMESTAMP_OFFSET                  0x00000018
217*5113495bSYour Name #define RX_MSDU_START_6_PPDU_START_TIMESTAMP_LSB                     0
218*5113495bSYour Name #define RX_MSDU_START_6_PPDU_START_TIMESTAMP_MASK                    0xffffffff
219*5113495bSYour Name 
220*5113495bSYour Name #define RX_MSDU_START_7_SW_PHY_META_DATA_OFFSET                      0x0000001c
221*5113495bSYour Name #define RX_MSDU_START_7_SW_PHY_META_DATA_LSB                         0
222*5113495bSYour Name #define RX_MSDU_START_7_SW_PHY_META_DATA_MASK                        0xffffffff
223*5113495bSYour Name 
224*5113495bSYour Name #define RX_MSDU_START_8_VLAN_CTAG_CI_OFFSET                          0x00000020
225*5113495bSYour Name #define RX_MSDU_START_8_VLAN_CTAG_CI_LSB                             0
226*5113495bSYour Name #define RX_MSDU_START_8_VLAN_CTAG_CI_MASK                            0x0000ffff
227*5113495bSYour Name 
228*5113495bSYour Name #define RX_MSDU_START_8_VLAN_STAG_CI_OFFSET                          0x00000020
229*5113495bSYour Name #define RX_MSDU_START_8_VLAN_STAG_CI_LSB                             16
230*5113495bSYour Name #define RX_MSDU_START_8_VLAN_STAG_CI_MASK                            0xffff0000
231*5113495bSYour Name 
232*5113495bSYour Name #endif
233