xref: /wlan-driver/fw-api/hw/qcn6432/rx_msdu_end.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1*5113495bSYour Name /*
2*5113495bSYour Name  * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
3*5113495bSYour Name  *
4*5113495bSYour Name  * Permission to use, copy, modify, and/or distribute this software for any
5*5113495bSYour Name  * purpose with or without fee is hereby granted, provided that the above
6*5113495bSYour Name  * copyright notice and this permission notice appear in all copies.
7*5113495bSYour Name  *
8*5113495bSYour Name  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9*5113495bSYour Name  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10*5113495bSYour Name  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11*5113495bSYour Name  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12*5113495bSYour Name  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13*5113495bSYour Name  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14*5113495bSYour Name  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15*5113495bSYour Name  */
16*5113495bSYour Name 
17*5113495bSYour Name #ifndef _RX_MSDU_END_H_
18*5113495bSYour Name #define _RX_MSDU_END_H_
19*5113495bSYour Name #if !defined(__ASSEMBLER__)
20*5113495bSYour Name #endif
21*5113495bSYour Name 
22*5113495bSYour Name #define NUM_OF_DWORDS_RX_MSDU_END 32
23*5113495bSYour Name 
24*5113495bSYour Name #define NUM_OF_QWORDS_RX_MSDU_END 16
25*5113495bSYour Name 
26*5113495bSYour Name 
27*5113495bSYour Name struct rx_msdu_end {
28*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN
29*5113495bSYour Name              uint32_t rxpcu_mpdu_filter_in_category                           :  2, // [1:0]
30*5113495bSYour Name                       sw_frame_group_id                                       :  7, // [8:2]
31*5113495bSYour Name                       reserved_0                                              :  7, // [15:9]
32*5113495bSYour Name                       phy_ppdu_id                                             : 16; // [31:16]
33*5113495bSYour Name              uint32_t ip_hdr_chksum                                           : 16, // [15:0]
34*5113495bSYour Name                       reported_mpdu_length                                    : 14, // [29:16]
35*5113495bSYour Name                       reserved_1a                                             :  2; // [31:30]
36*5113495bSYour Name              uint32_t reserved_2a                                             :  8, // [7:0]
37*5113495bSYour Name                       cce_super_rule                                          :  6, // [13:8]
38*5113495bSYour Name                       cce_classify_not_done_truncate                          :  1, // [14:14]
39*5113495bSYour Name                       cce_classify_not_done_cce_dis                           :  1, // [15:15]
40*5113495bSYour Name                       cumulative_l3_checksum                                  : 16; // [31:16]
41*5113495bSYour Name              uint32_t rule_indication_31_0                                    : 32; // [31:0]
42*5113495bSYour Name              uint32_t ipv6_options_crc                                        : 32; // [31:0]
43*5113495bSYour Name              uint32_t da_offset                                               :  6, // [5:0]
44*5113495bSYour Name                       sa_offset                                               :  6, // [11:6]
45*5113495bSYour Name                       da_offset_valid                                         :  1, // [12:12]
46*5113495bSYour Name                       sa_offset_valid                                         :  1, // [13:13]
47*5113495bSYour Name                       reserved_5a                                             :  2, // [15:14]
48*5113495bSYour Name                       l3_type                                                 : 16; // [31:16]
49*5113495bSYour Name              uint32_t rule_indication_63_32                                   : 32; // [31:0]
50*5113495bSYour Name              uint32_t tcp_seq_number                                          : 32; // [31:0]
51*5113495bSYour Name              uint32_t tcp_ack_number                                          : 32; // [31:0]
52*5113495bSYour Name              uint32_t tcp_flag                                                :  9, // [8:0]
53*5113495bSYour Name                       lro_eligible                                            :  1, // [9:9]
54*5113495bSYour Name                       reserved_9a                                             :  6, // [15:10]
55*5113495bSYour Name                       window_size                                             : 16; // [31:16]
56*5113495bSYour Name              uint32_t sa_sw_peer_id                                           : 16, // [15:0]
57*5113495bSYour Name                       sa_idx_timeout                                          :  1, // [16:16]
58*5113495bSYour Name                       da_idx_timeout                                          :  1, // [17:17]
59*5113495bSYour Name                       to_ds                                                   :  1, // [18:18]
60*5113495bSYour Name                       tid                                                     :  4, // [22:19]
61*5113495bSYour Name                       sa_is_valid                                             :  1, // [23:23]
62*5113495bSYour Name                       da_is_valid                                             :  1, // [24:24]
63*5113495bSYour Name                       da_is_mcbc                                              :  1, // [25:25]
64*5113495bSYour Name                       l3_header_padding                                       :  2, // [27:26]
65*5113495bSYour Name                       first_msdu                                              :  1, // [28:28]
66*5113495bSYour Name                       last_msdu                                               :  1, // [29:29]
67*5113495bSYour Name                       fr_ds                                                   :  1, // [30:30]
68*5113495bSYour Name                       ip_chksum_fail_copy                                     :  1; // [31:31]
69*5113495bSYour Name              uint32_t sa_idx                                                  : 16, // [15:0]
70*5113495bSYour Name                       da_idx_or_sw_peer_id                                    : 16; // [31:16]
71*5113495bSYour Name              uint32_t msdu_drop                                               :  1, // [0:0]
72*5113495bSYour Name                       reo_destination_indication                              :  5, // [5:1]
73*5113495bSYour Name                       flow_idx                                                : 20, // [25:6]
74*5113495bSYour Name                       use_ppe                                                 :  1, // [26:26]
75*5113495bSYour Name                       mesh_sta                                                :  2, // [28:27]
76*5113495bSYour Name                       vlan_ctag_stripped                                      :  1, // [29:29]
77*5113495bSYour Name                       vlan_stag_stripped                                      :  1, // [30:30]
78*5113495bSYour Name                       fragment_flag                                           :  1; // [31:31]
79*5113495bSYour Name              uint32_t fse_metadata                                            : 32; // [31:0]
80*5113495bSYour Name              uint32_t cce_metadata                                            : 16, // [15:0]
81*5113495bSYour Name                       tcp_udp_chksum                                          : 16; // [31:16]
82*5113495bSYour Name              uint32_t aggregation_count                                       :  8, // [7:0]
83*5113495bSYour Name                       flow_aggregation_continuation                           :  1, // [8:8]
84*5113495bSYour Name                       fisa_timeout                                            :  1, // [9:9]
85*5113495bSYour Name                       tcp_udp_chksum_fail_copy                                :  1, // [10:10]
86*5113495bSYour Name                       msdu_limit_error                                        :  1, // [11:11]
87*5113495bSYour Name                       flow_idx_timeout                                        :  1, // [12:12]
88*5113495bSYour Name                       flow_idx_invalid                                        :  1, // [13:13]
89*5113495bSYour Name                       cce_match                                               :  1, // [14:14]
90*5113495bSYour Name                       amsdu_parser_error                                      :  1, // [15:15]
91*5113495bSYour Name                       cumulative_ip_length                                    : 16; // [31:16]
92*5113495bSYour Name              uint32_t key_id_octet                                            :  8, // [7:0]
93*5113495bSYour Name                       reserved_16a                                            : 24; // [31:8]
94*5113495bSYour Name              uint32_t reserved_17a                                            :  6, // [5:0]
95*5113495bSYour Name                       service_code                                            :  9, // [14:6]
96*5113495bSYour Name                       priority_valid                                          :  1, // [15:15]
97*5113495bSYour Name                       intra_bss                                               :  1, // [16:16]
98*5113495bSYour Name                       dest_chip_id                                            :  2, // [18:17]
99*5113495bSYour Name                       multicast_echo                                          :  1, // [19:19]
100*5113495bSYour Name                       wds_learning_event                                      :  1, // [20:20]
101*5113495bSYour Name                       wds_roaming_event                                       :  1, // [21:21]
102*5113495bSYour Name                       wds_keep_alive_event                                    :  1, // [22:22]
103*5113495bSYour Name                       dest_chip_pmac_id                                       :  1, // [23:23]
104*5113495bSYour Name                       reserved_17b                                            :  8; // [31:24]
105*5113495bSYour Name              uint32_t msdu_length                                             : 14, // [13:0]
106*5113495bSYour Name                       stbc                                                    :  1, // [14:14]
107*5113495bSYour Name                       ipsec_esp                                               :  1, // [15:15]
108*5113495bSYour Name                       l3_offset                                               :  7, // [22:16]
109*5113495bSYour Name                       ipsec_ah                                                :  1, // [23:23]
110*5113495bSYour Name                       l4_offset                                               :  8; // [31:24]
111*5113495bSYour Name              uint32_t msdu_number                                             :  8, // [7:0]
112*5113495bSYour Name                       decap_format                                            :  2, // [9:8]
113*5113495bSYour Name                       ipv4_proto                                              :  1, // [10:10]
114*5113495bSYour Name                       ipv6_proto                                              :  1, // [11:11]
115*5113495bSYour Name                       tcp_proto                                               :  1, // [12:12]
116*5113495bSYour Name                       udp_proto                                               :  1, // [13:13]
117*5113495bSYour Name                       ip_frag                                                 :  1, // [14:14]
118*5113495bSYour Name                       tcp_only_ack                                            :  1, // [15:15]
119*5113495bSYour Name                       da_is_bcast_mcast                                       :  1, // [16:16]
120*5113495bSYour Name                       toeplitz_hash_sel                                       :  2, // [18:17]
121*5113495bSYour Name                       ip_fixed_header_valid                                   :  1, // [19:19]
122*5113495bSYour Name                       ip_extn_header_valid                                    :  1, // [20:20]
123*5113495bSYour Name                       tcp_udp_header_valid                                    :  1, // [21:21]
124*5113495bSYour Name                       mesh_control_present                                    :  1, // [22:22]
125*5113495bSYour Name                       ldpc                                                    :  1, // [23:23]
126*5113495bSYour Name                       ip4_protocol_ip6_next_header                            :  8; // [31:24]
127*5113495bSYour Name              uint32_t vlan_ctag_ci                                            : 16, // [15:0]
128*5113495bSYour Name                       vlan_stag_ci                                            : 16; // [31:16]
129*5113495bSYour Name              uint32_t peer_meta_data                                          : 32; // [31:0]
130*5113495bSYour Name              uint32_t user_rssi                                               :  8, // [7:0]
131*5113495bSYour Name                       pkt_type                                                :  4, // [11:8]
132*5113495bSYour Name                       sgi                                                     :  2, // [13:12]
133*5113495bSYour Name                       rate_mcs                                                :  4, // [17:14]
134*5113495bSYour Name                       receive_bandwidth                                       :  3, // [20:18]
135*5113495bSYour Name                       reception_type                                          :  3, // [23:21]
136*5113495bSYour Name                       mimo_ss_bitmap                                          :  7, // [30:24]
137*5113495bSYour Name                       msdu_done_copy                                          :  1; // [31:31]
138*5113495bSYour Name              uint32_t flow_id_toeplitz                                        : 32; // [31:0]
139*5113495bSYour Name              uint32_t ppdu_start_timestamp_63_32                              : 32; // [31:0]
140*5113495bSYour Name              uint32_t sw_phy_meta_data                                        : 32; // [31:0]
141*5113495bSYour Name              uint32_t ppdu_start_timestamp_31_0                               : 32; // [31:0]
142*5113495bSYour Name              uint32_t toeplitz_hash_2_or_4                                    : 32; // [31:0]
143*5113495bSYour Name              uint32_t reserved_28a                                            : 16, // [15:0]
144*5113495bSYour Name                       sa_15_0                                                 : 16; // [31:16]
145*5113495bSYour Name              uint32_t sa_47_16                                                : 32; // [31:0]
146*5113495bSYour Name              uint32_t first_mpdu                                              :  1, // [0:0]
147*5113495bSYour Name                       reserved_30a                                            :  1, // [1:1]
148*5113495bSYour Name                       mcast_bcast                                             :  1, // [2:2]
149*5113495bSYour Name                       ast_index_not_found                                     :  1, // [3:3]
150*5113495bSYour Name                       ast_index_timeout                                       :  1, // [4:4]
151*5113495bSYour Name                       power_mgmt                                              :  1, // [5:5]
152*5113495bSYour Name                       non_qos                                                 :  1, // [6:6]
153*5113495bSYour Name                       null_data                                               :  1, // [7:7]
154*5113495bSYour Name                       mgmt_type                                               :  1, // [8:8]
155*5113495bSYour Name                       ctrl_type                                               :  1, // [9:9]
156*5113495bSYour Name                       more_data                                               :  1, // [10:10]
157*5113495bSYour Name                       eosp                                                    :  1, // [11:11]
158*5113495bSYour Name                       a_msdu_error                                            :  1, // [12:12]
159*5113495bSYour Name                       reserved_30b                                            :  1, // [13:13]
160*5113495bSYour Name                       order                                                   :  1, // [14:14]
161*5113495bSYour Name                       wifi_parser_error                                       :  1, // [15:15]
162*5113495bSYour Name                       overflow_err                                            :  1, // [16:16]
163*5113495bSYour Name                       msdu_length_err                                         :  1, // [17:17]
164*5113495bSYour Name                       tcp_udp_chksum_fail                                     :  1, // [18:18]
165*5113495bSYour Name                       ip_chksum_fail                                          :  1, // [19:19]
166*5113495bSYour Name                       sa_idx_invalid                                          :  1, // [20:20]
167*5113495bSYour Name                       da_idx_invalid                                          :  1, // [21:21]
168*5113495bSYour Name                       amsdu_addr_mismatch                                     :  1, // [22:22]
169*5113495bSYour Name                       rx_in_tx_decrypt_byp                                    :  1, // [23:23]
170*5113495bSYour Name                       encrypt_required                                        :  1, // [24:24]
171*5113495bSYour Name                       directed                                                :  1, // [25:25]
172*5113495bSYour Name                       buffer_fragment                                         :  1, // [26:26]
173*5113495bSYour Name                       mpdu_length_err                                         :  1, // [27:27]
174*5113495bSYour Name                       tkip_mic_err                                            :  1, // [28:28]
175*5113495bSYour Name                       decrypt_err                                             :  1, // [29:29]
176*5113495bSYour Name                       unencrypted_frame_err                                   :  1, // [30:30]
177*5113495bSYour Name                       fcs_err                                                 :  1; // [31:31]
178*5113495bSYour Name              uint32_t reserved_31a                                            : 10, // [9:0]
179*5113495bSYour Name                       decrypt_status_code                                     :  3, // [12:10]
180*5113495bSYour Name                       rx_bitmap_not_updated                                   :  1, // [13:13]
181*5113495bSYour Name                       reserved_31b                                            : 17, // [30:14]
182*5113495bSYour Name                       msdu_done                                               :  1; // [31:31]
183*5113495bSYour Name #else
184*5113495bSYour Name              uint32_t phy_ppdu_id                                             : 16, // [31:16]
185*5113495bSYour Name                       reserved_0                                              :  7, // [15:9]
186*5113495bSYour Name                       sw_frame_group_id                                       :  7, // [8:2]
187*5113495bSYour Name                       rxpcu_mpdu_filter_in_category                           :  2; // [1:0]
188*5113495bSYour Name              uint32_t reserved_1a                                             :  2, // [31:30]
189*5113495bSYour Name                       reported_mpdu_length                                    : 14, // [29:16]
190*5113495bSYour Name                       ip_hdr_chksum                                           : 16; // [15:0]
191*5113495bSYour Name              uint32_t cumulative_l3_checksum                                  : 16, // [31:16]
192*5113495bSYour Name                       cce_classify_not_done_cce_dis                           :  1, // [15:15]
193*5113495bSYour Name                       cce_classify_not_done_truncate                          :  1, // [14:14]
194*5113495bSYour Name                       cce_super_rule                                          :  6, // [13:8]
195*5113495bSYour Name                       reserved_2a                                             :  8; // [7:0]
196*5113495bSYour Name              uint32_t rule_indication_31_0                                    : 32; // [31:0]
197*5113495bSYour Name              uint32_t ipv6_options_crc                                        : 32; // [31:0]
198*5113495bSYour Name              uint32_t l3_type                                                 : 16, // [31:16]
199*5113495bSYour Name                       reserved_5a                                             :  2, // [15:14]
200*5113495bSYour Name                       sa_offset_valid                                         :  1, // [13:13]
201*5113495bSYour Name                       da_offset_valid                                         :  1, // [12:12]
202*5113495bSYour Name                       sa_offset                                               :  6, // [11:6]
203*5113495bSYour Name                       da_offset                                               :  6; // [5:0]
204*5113495bSYour Name              uint32_t rule_indication_63_32                                   : 32; // [31:0]
205*5113495bSYour Name              uint32_t tcp_seq_number                                          : 32; // [31:0]
206*5113495bSYour Name              uint32_t tcp_ack_number                                          : 32; // [31:0]
207*5113495bSYour Name              uint32_t window_size                                             : 16, // [31:16]
208*5113495bSYour Name                       reserved_9a                                             :  6, // [15:10]
209*5113495bSYour Name                       lro_eligible                                            :  1, // [9:9]
210*5113495bSYour Name                       tcp_flag                                                :  9; // [8:0]
211*5113495bSYour Name              uint32_t ip_chksum_fail_copy                                     :  1, // [31:31]
212*5113495bSYour Name                       fr_ds                                                   :  1, // [30:30]
213*5113495bSYour Name                       last_msdu                                               :  1, // [29:29]
214*5113495bSYour Name                       first_msdu                                              :  1, // [28:28]
215*5113495bSYour Name                       l3_header_padding                                       :  2, // [27:26]
216*5113495bSYour Name                       da_is_mcbc                                              :  1, // [25:25]
217*5113495bSYour Name                       da_is_valid                                             :  1, // [24:24]
218*5113495bSYour Name                       sa_is_valid                                             :  1, // [23:23]
219*5113495bSYour Name                       tid                                                     :  4, // [22:19]
220*5113495bSYour Name                       to_ds                                                   :  1, // [18:18]
221*5113495bSYour Name                       da_idx_timeout                                          :  1, // [17:17]
222*5113495bSYour Name                       sa_idx_timeout                                          :  1, // [16:16]
223*5113495bSYour Name                       sa_sw_peer_id                                           : 16; // [15:0]
224*5113495bSYour Name              uint32_t da_idx_or_sw_peer_id                                    : 16, // [31:16]
225*5113495bSYour Name                       sa_idx                                                  : 16; // [15:0]
226*5113495bSYour Name              uint32_t fragment_flag                                           :  1, // [31:31]
227*5113495bSYour Name                       vlan_stag_stripped                                      :  1, // [30:30]
228*5113495bSYour Name                       vlan_ctag_stripped                                      :  1, // [29:29]
229*5113495bSYour Name                       mesh_sta                                                :  2, // [28:27]
230*5113495bSYour Name                       use_ppe                                                 :  1, // [26:26]
231*5113495bSYour Name                       flow_idx                                                : 20, // [25:6]
232*5113495bSYour Name                       reo_destination_indication                              :  5, // [5:1]
233*5113495bSYour Name                       msdu_drop                                               :  1; // [0:0]
234*5113495bSYour Name              uint32_t fse_metadata                                            : 32; // [31:0]
235*5113495bSYour Name              uint32_t tcp_udp_chksum                                          : 16, // [31:16]
236*5113495bSYour Name                       cce_metadata                                            : 16; // [15:0]
237*5113495bSYour Name              uint32_t cumulative_ip_length                                    : 16, // [31:16]
238*5113495bSYour Name                       amsdu_parser_error                                      :  1, // [15:15]
239*5113495bSYour Name                       cce_match                                               :  1, // [14:14]
240*5113495bSYour Name                       flow_idx_invalid                                        :  1, // [13:13]
241*5113495bSYour Name                       flow_idx_timeout                                        :  1, // [12:12]
242*5113495bSYour Name                       msdu_limit_error                                        :  1, // [11:11]
243*5113495bSYour Name                       tcp_udp_chksum_fail_copy                                :  1, // [10:10]
244*5113495bSYour Name                       fisa_timeout                                            :  1, // [9:9]
245*5113495bSYour Name                       flow_aggregation_continuation                           :  1, // [8:8]
246*5113495bSYour Name                       aggregation_count                                       :  8; // [7:0]
247*5113495bSYour Name              uint32_t reserved_16a                                            : 24, // [31:8]
248*5113495bSYour Name                       key_id_octet                                            :  8; // [7:0]
249*5113495bSYour Name              uint32_t reserved_17b                                            :  8, // [31:24]
250*5113495bSYour Name                       dest_chip_pmac_id                                       :  1, // [23:23]
251*5113495bSYour Name                       wds_keep_alive_event                                    :  1, // [22:22]
252*5113495bSYour Name                       wds_roaming_event                                       :  1, // [21:21]
253*5113495bSYour Name                       wds_learning_event                                      :  1, // [20:20]
254*5113495bSYour Name                       multicast_echo                                          :  1, // [19:19]
255*5113495bSYour Name                       dest_chip_id                                            :  2, // [18:17]
256*5113495bSYour Name                       intra_bss                                               :  1, // [16:16]
257*5113495bSYour Name                       priority_valid                                          :  1, // [15:15]
258*5113495bSYour Name                       service_code                                            :  9, // [14:6]
259*5113495bSYour Name                       reserved_17a                                            :  6; // [5:0]
260*5113495bSYour Name              uint32_t l4_offset                                               :  8, // [31:24]
261*5113495bSYour Name                       ipsec_ah                                                :  1, // [23:23]
262*5113495bSYour Name                       l3_offset                                               :  7, // [22:16]
263*5113495bSYour Name                       ipsec_esp                                               :  1, // [15:15]
264*5113495bSYour Name                       stbc                                                    :  1, // [14:14]
265*5113495bSYour Name                       msdu_length                                             : 14; // [13:0]
266*5113495bSYour Name              uint32_t ip4_protocol_ip6_next_header                            :  8, // [31:24]
267*5113495bSYour Name                       ldpc                                                    :  1, // [23:23]
268*5113495bSYour Name                       mesh_control_present                                    :  1, // [22:22]
269*5113495bSYour Name                       tcp_udp_header_valid                                    :  1, // [21:21]
270*5113495bSYour Name                       ip_extn_header_valid                                    :  1, // [20:20]
271*5113495bSYour Name                       ip_fixed_header_valid                                   :  1, // [19:19]
272*5113495bSYour Name                       toeplitz_hash_sel                                       :  2, // [18:17]
273*5113495bSYour Name                       da_is_bcast_mcast                                       :  1, // [16:16]
274*5113495bSYour Name                       tcp_only_ack                                            :  1, // [15:15]
275*5113495bSYour Name                       ip_frag                                                 :  1, // [14:14]
276*5113495bSYour Name                       udp_proto                                               :  1, // [13:13]
277*5113495bSYour Name                       tcp_proto                                               :  1, // [12:12]
278*5113495bSYour Name                       ipv6_proto                                              :  1, // [11:11]
279*5113495bSYour Name                       ipv4_proto                                              :  1, // [10:10]
280*5113495bSYour Name                       decap_format                                            :  2, // [9:8]
281*5113495bSYour Name                       msdu_number                                             :  8; // [7:0]
282*5113495bSYour Name              uint32_t vlan_stag_ci                                            : 16, // [31:16]
283*5113495bSYour Name                       vlan_ctag_ci                                            : 16; // [15:0]
284*5113495bSYour Name              uint32_t peer_meta_data                                          : 32; // [31:0]
285*5113495bSYour Name              uint32_t msdu_done_copy                                          :  1, // [31:31]
286*5113495bSYour Name                       mimo_ss_bitmap                                          :  7, // [30:24]
287*5113495bSYour Name                       reception_type                                          :  3, // [23:21]
288*5113495bSYour Name                       receive_bandwidth                                       :  3, // [20:18]
289*5113495bSYour Name                       rate_mcs                                                :  4, // [17:14]
290*5113495bSYour Name                       sgi                                                     :  2, // [13:12]
291*5113495bSYour Name                       pkt_type                                                :  4, // [11:8]
292*5113495bSYour Name                       user_rssi                                               :  8; // [7:0]
293*5113495bSYour Name              uint32_t flow_id_toeplitz                                        : 32; // [31:0]
294*5113495bSYour Name              uint32_t ppdu_start_timestamp_63_32                              : 32; // [31:0]
295*5113495bSYour Name              uint32_t sw_phy_meta_data                                        : 32; // [31:0]
296*5113495bSYour Name              uint32_t ppdu_start_timestamp_31_0                               : 32; // [31:0]
297*5113495bSYour Name              uint32_t toeplitz_hash_2_or_4                                    : 32; // [31:0]
298*5113495bSYour Name              uint32_t sa_15_0                                                 : 16, // [31:16]
299*5113495bSYour Name                       reserved_28a                                            : 16; // [15:0]
300*5113495bSYour Name              uint32_t sa_47_16                                                : 32; // [31:0]
301*5113495bSYour Name              uint32_t fcs_err                                                 :  1, // [31:31]
302*5113495bSYour Name                       unencrypted_frame_err                                   :  1, // [30:30]
303*5113495bSYour Name                       decrypt_err                                             :  1, // [29:29]
304*5113495bSYour Name                       tkip_mic_err                                            :  1, // [28:28]
305*5113495bSYour Name                       mpdu_length_err                                         :  1, // [27:27]
306*5113495bSYour Name                       buffer_fragment                                         :  1, // [26:26]
307*5113495bSYour Name                       directed                                                :  1, // [25:25]
308*5113495bSYour Name                       encrypt_required                                        :  1, // [24:24]
309*5113495bSYour Name                       rx_in_tx_decrypt_byp                                    :  1, // [23:23]
310*5113495bSYour Name                       amsdu_addr_mismatch                                     :  1, // [22:22]
311*5113495bSYour Name                       da_idx_invalid                                          :  1, // [21:21]
312*5113495bSYour Name                       sa_idx_invalid                                          :  1, // [20:20]
313*5113495bSYour Name                       ip_chksum_fail                                          :  1, // [19:19]
314*5113495bSYour Name                       tcp_udp_chksum_fail                                     :  1, // [18:18]
315*5113495bSYour Name                       msdu_length_err                                         :  1, // [17:17]
316*5113495bSYour Name                       overflow_err                                            :  1, // [16:16]
317*5113495bSYour Name                       wifi_parser_error                                       :  1, // [15:15]
318*5113495bSYour Name                       order                                                   :  1, // [14:14]
319*5113495bSYour Name                       reserved_30b                                            :  1, // [13:13]
320*5113495bSYour Name                       a_msdu_error                                            :  1, // [12:12]
321*5113495bSYour Name                       eosp                                                    :  1, // [11:11]
322*5113495bSYour Name                       more_data                                               :  1, // [10:10]
323*5113495bSYour Name                       ctrl_type                                               :  1, // [9:9]
324*5113495bSYour Name                       mgmt_type                                               :  1, // [8:8]
325*5113495bSYour Name                       null_data                                               :  1, // [7:7]
326*5113495bSYour Name                       non_qos                                                 :  1, // [6:6]
327*5113495bSYour Name                       power_mgmt                                              :  1, // [5:5]
328*5113495bSYour Name                       ast_index_timeout                                       :  1, // [4:4]
329*5113495bSYour Name                       ast_index_not_found                                     :  1, // [3:3]
330*5113495bSYour Name                       mcast_bcast                                             :  1, // [2:2]
331*5113495bSYour Name                       reserved_30a                                            :  1, // [1:1]
332*5113495bSYour Name                       first_mpdu                                              :  1; // [0:0]
333*5113495bSYour Name              uint32_t msdu_done                                               :  1, // [31:31]
334*5113495bSYour Name                       reserved_31b                                            : 17, // [30:14]
335*5113495bSYour Name                       rx_bitmap_not_updated                                   :  1, // [13:13]
336*5113495bSYour Name                       decrypt_status_code                                     :  3, // [12:10]
337*5113495bSYour Name                       reserved_31a                                            : 10; // [9:0]
338*5113495bSYour Name #endif
339*5113495bSYour Name };
340*5113495bSYour Name 
341*5113495bSYour Name 
342*5113495bSYour Name /* Description		RXPCU_MPDU_FILTER_IN_CATEGORY
343*5113495bSYour Name 
344*5113495bSYour Name 			Field indicates what the reason was that this MPDU frame
345*5113495bSYour Name 			 was allowed to come into the receive path by RXPCU
346*5113495bSYour Name 			<enum 0 rxpcu_filter_pass> This MPDU passed the normal frame
347*5113495bSYour Name 			 filter programming of rxpcu
348*5113495bSYour Name 			<enum 1 rxpcu_monitor_client> This MPDU did NOT pass the
349*5113495bSYour Name 			 regular frame filter and would have been dropped, were
350*5113495bSYour Name 			it not for the frame fitting into the 'monitor_client' category.
351*5113495bSYour Name 
352*5113495bSYour Name 			<enum 2 rxpcu_monitor_other> This MPDU did NOT pass the
353*5113495bSYour Name 			regular frame filter and also did not pass the rxpcu_monitor_client
354*5113495bSYour Name 			 filter. It would have been dropped accept that it did pass
355*5113495bSYour Name 			 the 'monitor_other' category.
356*5113495bSYour Name 			<enum 3 rxpcu_filter_pass_monitor_ovrd> This MPDU passed
357*5113495bSYour Name 			 the normal frame filter programming of RXPCU but additionally
358*5113495bSYour Name 			 fit into the 'monitor_override_client' category.
359*5113495bSYour Name 			<legal 0-3>
360*5113495bSYour Name */
361*5113495bSYour Name 
362*5113495bSYour Name #define RX_MSDU_END_RXPCU_MPDU_FILTER_IN_CATEGORY_OFFSET                            0x0000000000000000
363*5113495bSYour Name #define RX_MSDU_END_RXPCU_MPDU_FILTER_IN_CATEGORY_LSB                               0
364*5113495bSYour Name #define RX_MSDU_END_RXPCU_MPDU_FILTER_IN_CATEGORY_MSB                               1
365*5113495bSYour Name #define RX_MSDU_END_RXPCU_MPDU_FILTER_IN_CATEGORY_MASK                              0x0000000000000003
366*5113495bSYour Name 
367*5113495bSYour Name 
368*5113495bSYour Name 
369*5113495bSYour Name #define RX_MSDU_END_SW_FRAME_GROUP_ID_OFFSET                                        0x0000000000000000
370*5113495bSYour Name #define RX_MSDU_END_SW_FRAME_GROUP_ID_LSB                                           2
371*5113495bSYour Name #define RX_MSDU_END_SW_FRAME_GROUP_ID_MSB                                           8
372*5113495bSYour Name #define RX_MSDU_END_SW_FRAME_GROUP_ID_MASK                                          0x00000000000001fc
373*5113495bSYour Name 
374*5113495bSYour Name 
375*5113495bSYour Name /* Description		RESERVED_0
376*5113495bSYour Name 
377*5113495bSYour Name 			<legal 0>
378*5113495bSYour Name */
379*5113495bSYour Name 
380*5113495bSYour Name #define RX_MSDU_END_RESERVED_0_OFFSET                                               0x0000000000000000
381*5113495bSYour Name #define RX_MSDU_END_RESERVED_0_LSB                                                  9
382*5113495bSYour Name #define RX_MSDU_END_RESERVED_0_MSB                                                  15
383*5113495bSYour Name #define RX_MSDU_END_RESERVED_0_MASK                                                 0x000000000000fe00
384*5113495bSYour Name 
385*5113495bSYour Name 
386*5113495bSYour Name /* Description		PHY_PPDU_ID
387*5113495bSYour Name 
388*5113495bSYour Name 			A ppdu counter value that PHY increments for every PPDU
389*5113495bSYour Name 			received. The counter value wraps around
390*5113495bSYour Name 			<legal all>
391*5113495bSYour Name */
392*5113495bSYour Name 
393*5113495bSYour Name #define RX_MSDU_END_PHY_PPDU_ID_OFFSET                                              0x0000000000000000
394*5113495bSYour Name #define RX_MSDU_END_PHY_PPDU_ID_LSB                                                 16
395*5113495bSYour Name #define RX_MSDU_END_PHY_PPDU_ID_MSB                                                 31
396*5113495bSYour Name #define RX_MSDU_END_PHY_PPDU_ID_MASK                                                0x00000000ffff0000
397*5113495bSYour Name 
398*5113495bSYour Name 
399*5113495bSYour Name /* Description		IP_HDR_CHKSUM
400*5113495bSYour Name 
401*5113495bSYour Name 			This can include the IP header checksum or the pseudo header
402*5113495bSYour Name 			 checksum used by TCP/UDP checksum.
403*5113495bSYour Name 			(with the first byte in the MSB and the second byte in the
404*5113495bSYour Name 			 LSB, i.e. requiring a byte-swap for little-endian FW/SW
405*5113495bSYour Name 			 w.r.t. the byte order in a packet)
406*5113495bSYour Name */
407*5113495bSYour Name 
408*5113495bSYour Name #define RX_MSDU_END_IP_HDR_CHKSUM_OFFSET                                            0x0000000000000000
409*5113495bSYour Name #define RX_MSDU_END_IP_HDR_CHKSUM_LSB                                               32
410*5113495bSYour Name #define RX_MSDU_END_IP_HDR_CHKSUM_MSB                                               47
411*5113495bSYour Name #define RX_MSDU_END_IP_HDR_CHKSUM_MASK                                              0x0000ffff00000000
412*5113495bSYour Name 
413*5113495bSYour Name 
414*5113495bSYour Name /* Description		REPORTED_MPDU_LENGTH
415*5113495bSYour Name 
416*5113495bSYour Name 			MPDU length before decapsulation.  Only valid when first_msdu
417*5113495bSYour Name 			 is set.  This field is taken directly from the length field
418*5113495bSYour Name 			 of the A-MPDU delimiter or the preamble length field for
419*5113495bSYour Name 			 non-A-MPDU frames.
420*5113495bSYour Name */
421*5113495bSYour Name 
422*5113495bSYour Name #define RX_MSDU_END_REPORTED_MPDU_LENGTH_OFFSET                                     0x0000000000000000
423*5113495bSYour Name #define RX_MSDU_END_REPORTED_MPDU_LENGTH_LSB                                        48
424*5113495bSYour Name #define RX_MSDU_END_REPORTED_MPDU_LENGTH_MSB                                        61
425*5113495bSYour Name #define RX_MSDU_END_REPORTED_MPDU_LENGTH_MASK                                       0x3fff000000000000
426*5113495bSYour Name 
427*5113495bSYour Name 
428*5113495bSYour Name /* Description		RESERVED_1A
429*5113495bSYour Name 
430*5113495bSYour Name 			<legal 0>
431*5113495bSYour Name */
432*5113495bSYour Name 
433*5113495bSYour Name #define RX_MSDU_END_RESERVED_1A_OFFSET                                              0x0000000000000000
434*5113495bSYour Name #define RX_MSDU_END_RESERVED_1A_LSB                                                 62
435*5113495bSYour Name #define RX_MSDU_END_RESERVED_1A_MSB                                                 63
436*5113495bSYour Name #define RX_MSDU_END_RESERVED_1A_MASK                                                0xc000000000000000
437*5113495bSYour Name 
438*5113495bSYour Name 
439*5113495bSYour Name #define RX_MSDU_END_RESERVED_2A_OFFSET                                              0x0000000000000008
440*5113495bSYour Name #define RX_MSDU_END_RESERVED_2A_LSB                                                 0
441*5113495bSYour Name #define RX_MSDU_END_RESERVED_2A_MSB                                                 7
442*5113495bSYour Name #define RX_MSDU_END_RESERVED_2A_MASK                                                0x00000000000000ff
443*5113495bSYour Name 
444*5113495bSYour Name 
445*5113495bSYour Name /* Description		CCE_SUPER_RULE
446*5113495bSYour Name 
447*5113495bSYour Name 			Indicates the super filter rule
448*5113495bSYour Name */
449*5113495bSYour Name 
450*5113495bSYour Name #define RX_MSDU_END_CCE_SUPER_RULE_OFFSET                                           0x0000000000000008
451*5113495bSYour Name #define RX_MSDU_END_CCE_SUPER_RULE_LSB                                              8
452*5113495bSYour Name #define RX_MSDU_END_CCE_SUPER_RULE_MSB                                              13
453*5113495bSYour Name #define RX_MSDU_END_CCE_SUPER_RULE_MASK                                             0x0000000000003f00
454*5113495bSYour Name 
455*5113495bSYour Name 
456*5113495bSYour Name /* Description		CCE_CLASSIFY_NOT_DONE_TRUNCATE
457*5113495bSYour Name 
458*5113495bSYour Name 			Classification failed due to truncated frame
459*5113495bSYour Name */
460*5113495bSYour Name 
461*5113495bSYour Name #define RX_MSDU_END_CCE_CLASSIFY_NOT_DONE_TRUNCATE_OFFSET                           0x0000000000000008
462*5113495bSYour Name #define RX_MSDU_END_CCE_CLASSIFY_NOT_DONE_TRUNCATE_LSB                              14
463*5113495bSYour Name #define RX_MSDU_END_CCE_CLASSIFY_NOT_DONE_TRUNCATE_MSB                              14
464*5113495bSYour Name #define RX_MSDU_END_CCE_CLASSIFY_NOT_DONE_TRUNCATE_MASK                             0x0000000000004000
465*5113495bSYour Name 
466*5113495bSYour Name 
467*5113495bSYour Name /* Description		CCE_CLASSIFY_NOT_DONE_CCE_DIS
468*5113495bSYour Name 
469*5113495bSYour Name 			Classification failed due to CCE global disable
470*5113495bSYour Name */
471*5113495bSYour Name 
472*5113495bSYour Name #define RX_MSDU_END_CCE_CLASSIFY_NOT_DONE_CCE_DIS_OFFSET                            0x0000000000000008
473*5113495bSYour Name #define RX_MSDU_END_CCE_CLASSIFY_NOT_DONE_CCE_DIS_LSB                               15
474*5113495bSYour Name #define RX_MSDU_END_CCE_CLASSIFY_NOT_DONE_CCE_DIS_MSB                               15
475*5113495bSYour Name #define RX_MSDU_END_CCE_CLASSIFY_NOT_DONE_CCE_DIS_MASK                              0x0000000000008000
476*5113495bSYour Name 
477*5113495bSYour Name 
478*5113495bSYour Name /* Description		CUMULATIVE_L3_CHECKSUM
479*5113495bSYour Name 
480*5113495bSYour Name 			FISA: IP header checksum including the total MSDU length
481*5113495bSYour Name 			 that is part of this flow aggregated so far, reported if
482*5113495bSYour Name 			 'RXOLE_R0_FISA_CTRL. CHKSUM_CUM_IP_LEN_EN' is set
483*5113495bSYour Name 
484*5113495bSYour Name 			Set to zero in chips not supporting FISA
485*5113495bSYour Name 			<legal all>
486*5113495bSYour Name */
487*5113495bSYour Name 
488*5113495bSYour Name #define RX_MSDU_END_CUMULATIVE_L3_CHECKSUM_OFFSET                                   0x0000000000000008
489*5113495bSYour Name #define RX_MSDU_END_CUMULATIVE_L3_CHECKSUM_LSB                                      16
490*5113495bSYour Name #define RX_MSDU_END_CUMULATIVE_L3_CHECKSUM_MSB                                      31
491*5113495bSYour Name #define RX_MSDU_END_CUMULATIVE_L3_CHECKSUM_MASK                                     0x00000000ffff0000
492*5113495bSYour Name 
493*5113495bSYour Name 
494*5113495bSYour Name /* Description		RULE_INDICATION_31_0
495*5113495bSYour Name 
496*5113495bSYour Name 			Bitmap indicating which of rules 31-0 have matched
497*5113495bSYour Name 
498*5113495bSYour Name 			In chips with more than 64 CCE rules, RXOLE
499*5113495bSYour Name 			 shall have a configuration to report any two rule_indication_*
500*5113495bSYour Name 			in 'RX_MSDU_END.'
501*5113495bSYour Name */
502*5113495bSYour Name 
503*5113495bSYour Name #define RX_MSDU_END_RULE_INDICATION_31_0_OFFSET                                     0x0000000000000008
504*5113495bSYour Name #define RX_MSDU_END_RULE_INDICATION_31_0_LSB                                        32
505*5113495bSYour Name #define RX_MSDU_END_RULE_INDICATION_31_0_MSB                                        63
506*5113495bSYour Name #define RX_MSDU_END_RULE_INDICATION_31_0_MASK                                       0xffffffff00000000
507*5113495bSYour Name 
508*5113495bSYour Name 
509*5113495bSYour Name #define RX_MSDU_END_IPV6_OPTIONS_CRC_OFFSET                                         0x0000000000000010
510*5113495bSYour Name #define RX_MSDU_END_IPV6_OPTIONS_CRC_LSB                                            0
511*5113495bSYour Name #define RX_MSDU_END_IPV6_OPTIONS_CRC_MSB                                            31
512*5113495bSYour Name #define RX_MSDU_END_IPV6_OPTIONS_CRC_MASK                                           0x00000000ffffffff
513*5113495bSYour Name 
514*5113495bSYour Name 
515*5113495bSYour Name /* Description		DA_OFFSET
516*5113495bSYour Name 
517*5113495bSYour Name 			Offset into MSDU buffer for DA
518*5113495bSYour Name */
519*5113495bSYour Name 
520*5113495bSYour Name #define RX_MSDU_END_DA_OFFSET_OFFSET                                                0x0000000000000010
521*5113495bSYour Name #define RX_MSDU_END_DA_OFFSET_LSB                                                   32
522*5113495bSYour Name #define RX_MSDU_END_DA_OFFSET_MSB                                                   37
523*5113495bSYour Name #define RX_MSDU_END_DA_OFFSET_MASK                                                  0x0000003f00000000
524*5113495bSYour Name 
525*5113495bSYour Name 
526*5113495bSYour Name /* Description		SA_OFFSET
527*5113495bSYour Name 
528*5113495bSYour Name 			Offset into MSDU buffer for SA
529*5113495bSYour Name */
530*5113495bSYour Name 
531*5113495bSYour Name #define RX_MSDU_END_SA_OFFSET_OFFSET                                                0x0000000000000010
532*5113495bSYour Name #define RX_MSDU_END_SA_OFFSET_LSB                                                   38
533*5113495bSYour Name #define RX_MSDU_END_SA_OFFSET_MSB                                                   43
534*5113495bSYour Name #define RX_MSDU_END_SA_OFFSET_MASK                                                  0x00000fc000000000
535*5113495bSYour Name 
536*5113495bSYour Name 
537*5113495bSYour Name /* Description		DA_OFFSET_VALID
538*5113495bSYour Name 
539*5113495bSYour Name 			da_offset field is valid. This will be set to 0 in case
540*5113495bSYour Name 			of a dynamic A-MSDU when DA is compressed
541*5113495bSYour Name */
542*5113495bSYour Name 
543*5113495bSYour Name #define RX_MSDU_END_DA_OFFSET_VALID_OFFSET                                          0x0000000000000010
544*5113495bSYour Name #define RX_MSDU_END_DA_OFFSET_VALID_LSB                                             44
545*5113495bSYour Name #define RX_MSDU_END_DA_OFFSET_VALID_MSB                                             44
546*5113495bSYour Name #define RX_MSDU_END_DA_OFFSET_VALID_MASK                                            0x0000100000000000
547*5113495bSYour Name 
548*5113495bSYour Name 
549*5113495bSYour Name /* Description		SA_OFFSET_VALID
550*5113495bSYour Name 
551*5113495bSYour Name 			sa_offset field is valid. This will be set to 0 in case
552*5113495bSYour Name 			of a dynamic A-MSDU when SA is compressed
553*5113495bSYour Name */
554*5113495bSYour Name 
555*5113495bSYour Name #define RX_MSDU_END_SA_OFFSET_VALID_OFFSET                                          0x0000000000000010
556*5113495bSYour Name #define RX_MSDU_END_SA_OFFSET_VALID_LSB                                             45
557*5113495bSYour Name #define RX_MSDU_END_SA_OFFSET_VALID_MSB                                             45
558*5113495bSYour Name #define RX_MSDU_END_SA_OFFSET_VALID_MASK                                            0x0000200000000000
559*5113495bSYour Name 
560*5113495bSYour Name 
561*5113495bSYour Name /* Description		RESERVED_5A
562*5113495bSYour Name 
563*5113495bSYour Name 			<legal 0>
564*5113495bSYour Name */
565*5113495bSYour Name 
566*5113495bSYour Name #define RX_MSDU_END_RESERVED_5A_OFFSET                                              0x0000000000000010
567*5113495bSYour Name #define RX_MSDU_END_RESERVED_5A_LSB                                                 46
568*5113495bSYour Name #define RX_MSDU_END_RESERVED_5A_MSB                                                 47
569*5113495bSYour Name #define RX_MSDU_END_RESERVED_5A_MASK                                                0x0000c00000000000
570*5113495bSYour Name 
571*5113495bSYour Name 
572*5113495bSYour Name /* Description		L3_TYPE
573*5113495bSYour Name 
574*5113495bSYour Name 			The 16-bit type value indicating the type of L3 later extracted
575*5113495bSYour Name 			 from LLC/SNAP, set to zero if SNAP is not available
576*5113495bSYour Name */
577*5113495bSYour Name 
578*5113495bSYour Name #define RX_MSDU_END_L3_TYPE_OFFSET                                                  0x0000000000000010
579*5113495bSYour Name #define RX_MSDU_END_L3_TYPE_LSB                                                     48
580*5113495bSYour Name #define RX_MSDU_END_L3_TYPE_MSB                                                     63
581*5113495bSYour Name #define RX_MSDU_END_L3_TYPE_MASK                                                    0xffff000000000000
582*5113495bSYour Name 
583*5113495bSYour Name 
584*5113495bSYour Name /* Description		RULE_INDICATION_63_32
585*5113495bSYour Name 
586*5113495bSYour Name 			Bitmap indicating which of rules 63-32 have matched
587*5113495bSYour Name 
588*5113495bSYour Name 			In chips with more than 64 CCE rules, RXOLE
589*5113495bSYour Name 			 shall have a configuration to report any two rule_indication_*
590*5113495bSYour Name 			in 'RX_MSDU_END.'
591*5113495bSYour Name 
592*5113495bSYour Name */
593*5113495bSYour Name 
594*5113495bSYour Name #define RX_MSDU_END_RULE_INDICATION_63_32_OFFSET                                    0x0000000000000018
595*5113495bSYour Name #define RX_MSDU_END_RULE_INDICATION_63_32_LSB                                       0
596*5113495bSYour Name #define RX_MSDU_END_RULE_INDICATION_63_32_MSB                                       31
597*5113495bSYour Name #define RX_MSDU_END_RULE_INDICATION_63_32_MASK                                      0x00000000ffffffff
598*5113495bSYour Name 
599*5113495bSYour Name 
600*5113495bSYour Name /* Description		TCP_SEQ_NUMBER
601*5113495bSYour Name 
602*5113495bSYour Name 			TCP sequence number (as a number assembled from a TCP packet
603*5113495bSYour Name 			 in big-endian order, i.e. requiring a byte-swap for little-endian
604*5113495bSYour Name 			 FW/SW w.r.t. the byte order in a packet)
605*5113495bSYour Name 
606*5113495bSYour Name 			If 'RXOLE_R0_MISC_CONFIG. OVERRIDE_MSDU_END_FIELDS'
607*5113495bSYour Name 			is set, toeplitz_hash_2_or_4 from 'RX_MSDU_START' will be
608*5113495bSYour Name 			 reported here:
609*5113495bSYour Name 			Controlled by multiple RxOLE registers for TCP/UDP over
610*5113495bSYour Name 			IPv4/IPv6 - Either Toeplitz hash computed over 2-tuple IPv4
611*5113495bSYour Name 			 or IPv6 src/dest addresses is reported; or, Toeplitz hash
612*5113495bSYour Name 			 computed over 4-tuple IPv4 or IPv6 src/dest addresses and
613*5113495bSYour Name 			 src/dest ports is reported. The Flow_id_toeplitz hash can
614*5113495bSYour Name 			 also be reported here. Usually the hash reported here is
615*5113495bSYour Name 			 the one used for hash-based REO routing (see use_flow_id_toeplitz_clfy
616*5113495bSYour Name 			 in 'RXPT_CLASSIFY_INFO'). Optionally the 3-tuple Toeplitz
617*5113495bSYour Name 			 hash over IPv4 or IPv6 src/dest addresses and L4 protocol
618*5113495bSYour Name 			 can be reported here.
619*5113495bSYour Name */
620*5113495bSYour Name 
621*5113495bSYour Name #define RX_MSDU_END_TCP_SEQ_NUMBER_OFFSET                                           0x0000000000000018
622*5113495bSYour Name #define RX_MSDU_END_TCP_SEQ_NUMBER_LSB                                              32
623*5113495bSYour Name #define RX_MSDU_END_TCP_SEQ_NUMBER_MSB                                              63
624*5113495bSYour Name #define RX_MSDU_END_TCP_SEQ_NUMBER_MASK                                             0xffffffff00000000
625*5113495bSYour Name 
626*5113495bSYour Name 
627*5113495bSYour Name /* Description		TCP_ACK_NUMBER
628*5113495bSYour Name 
629*5113495bSYour Name 			TCP acknowledge number (as a number assembled from a TCP
630*5113495bSYour Name 			 packet in big-endian order, i.e. requiring a byte-swap
631*5113495bSYour Name 			for little-endian FW/SW w.r.t. the byte order in a packet)
632*5113495bSYour Name 
633*5113495bSYour Name 
634*5113495bSYour Name 			If 'RXOLE_R0_MISC_CONFIG. OVERRIDE_MSDU_END_FIELDS'
635*5113495bSYour Name 			is set, flow_id_toeplitz from 'RX_MSDU_START' will be reported
636*5113495bSYour Name 			 here:
637*5113495bSYour Name 			Toeplitz hash of 5-tuple {IP source address, IP destination
638*5113495bSYour Name 			 address, IP source port, IP destination port, L4 protocol}
639*5113495bSYour Name 			 in case of non-IPSec. In case of IPSec - Toeplitz hash
640*5113495bSYour Name 			of 4-tuple {IP source address, IP destination address, SPI,
641*5113495bSYour Name 			L4 protocol}. Optionally the 3-tuple Toeplitz hash over
642*5113495bSYour Name 			IPv4 or IPv6 src/dest addresses and L4 protocol can be reported
643*5113495bSYour Name 			 here.
644*5113495bSYour Name 			The relevant Toeplitz key registers are provided in RxOLE's
645*5113495bSYour Name 			 instance of common parser module. These registers are separate
646*5113495bSYour Name 			 from the Toeplitz keys used by ASE/FSE modules inside RxOLE.
647*5113495bSYour Name 			The actual value will be passed on from common parser module
648*5113495bSYour Name 			 to RxOLE in one of the WHO_* TLVs.
649*5113495bSYour Name */
650*5113495bSYour Name 
651*5113495bSYour Name #define RX_MSDU_END_TCP_ACK_NUMBER_OFFSET                                           0x0000000000000020
652*5113495bSYour Name #define RX_MSDU_END_TCP_ACK_NUMBER_LSB                                              0
653*5113495bSYour Name #define RX_MSDU_END_TCP_ACK_NUMBER_MSB                                              31
654*5113495bSYour Name #define RX_MSDU_END_TCP_ACK_NUMBER_MASK                                             0x00000000ffffffff
655*5113495bSYour Name 
656*5113495bSYour Name 
657*5113495bSYour Name /* Description		TCP_FLAG
658*5113495bSYour Name 
659*5113495bSYour Name 			TCP flags
660*5113495bSYour Name 			{NS,CWR,ECE,URG,ACK,PSH, RST ,SYN,FIN}(with the NS bit in
661*5113495bSYour Name 			 bit 8 and the FIN bit in bit 0, i.e. in big-endian order,
662*5113495bSYour Name 			i.e. requiring a byte-swap for little-endian FW/SW w.r.t.
663*5113495bSYour Name 			the byte order in a packet)
664*5113495bSYour Name */
665*5113495bSYour Name 
666*5113495bSYour Name #define RX_MSDU_END_TCP_FLAG_OFFSET                                                 0x0000000000000020
667*5113495bSYour Name #define RX_MSDU_END_TCP_FLAG_LSB                                                    32
668*5113495bSYour Name #define RX_MSDU_END_TCP_FLAG_MSB                                                    40
669*5113495bSYour Name #define RX_MSDU_END_TCP_FLAG_MASK                                                   0x000001ff00000000
670*5113495bSYour Name 
671*5113495bSYour Name 
672*5113495bSYour Name /* Description		LRO_ELIGIBLE
673*5113495bSYour Name 
674*5113495bSYour Name 			Computed out of TCP and IP fields to indicate that this
675*5113495bSYour Name 			MSDU is eligible for  LRO
676*5113495bSYour Name */
677*5113495bSYour Name 
678*5113495bSYour Name #define RX_MSDU_END_LRO_ELIGIBLE_OFFSET                                             0x0000000000000020
679*5113495bSYour Name #define RX_MSDU_END_LRO_ELIGIBLE_LSB                                                41
680*5113495bSYour Name #define RX_MSDU_END_LRO_ELIGIBLE_MSB                                                41
681*5113495bSYour Name #define RX_MSDU_END_LRO_ELIGIBLE_MASK                                               0x0000020000000000
682*5113495bSYour Name 
683*5113495bSYour Name 
684*5113495bSYour Name /* Description		RESERVED_9A
685*5113495bSYour Name 
686*5113495bSYour Name 			NOTE: DO not assign a field... Internally used in RXOLE..
687*5113495bSYour Name 
688*5113495bSYour Name 			<legal 0>
689*5113495bSYour Name */
690*5113495bSYour Name 
691*5113495bSYour Name #define RX_MSDU_END_RESERVED_9A_OFFSET                                              0x0000000000000020
692*5113495bSYour Name #define RX_MSDU_END_RESERVED_9A_LSB                                                 42
693*5113495bSYour Name #define RX_MSDU_END_RESERVED_9A_MSB                                                 47
694*5113495bSYour Name #define RX_MSDU_END_RESERVED_9A_MASK                                                0x0000fc0000000000
695*5113495bSYour Name 
696*5113495bSYour Name 
697*5113495bSYour Name /* Description		WINDOW_SIZE
698*5113495bSYour Name 
699*5113495bSYour Name 			TCP receive window size (as a number assembled from a TCP
700*5113495bSYour Name 			 packet in big-endian order, i.e. requiring a byte-swap
701*5113495bSYour Name 			for little-endian FW/SW w.r.t. the byte order in a packet)
702*5113495bSYour Name 
703*5113495bSYour Name 
704*5113495bSYour Name 			If 'RXOLE_R0_MISC_CONFIG. OVERRIDE_MSDU_END_FIELDS'
705*5113495bSYour Name 			is set, msdu_length from 'RX_MSDU_START' will be reported
706*5113495bSYour Name 			 in the 14 LSBs here:
707*5113495bSYour Name 			MSDU length in bytes after decapsulation. This field is
708*5113495bSYour Name 			still valid for MPDU frames without A-MSDU.  It still represents
709*5113495bSYour Name 			 MSDU length after decapsulation.
710*5113495bSYour Name */
711*5113495bSYour Name 
712*5113495bSYour Name #define RX_MSDU_END_WINDOW_SIZE_OFFSET                                              0x0000000000000020
713*5113495bSYour Name #define RX_MSDU_END_WINDOW_SIZE_LSB                                                 48
714*5113495bSYour Name #define RX_MSDU_END_WINDOW_SIZE_MSB                                                 63
715*5113495bSYour Name #define RX_MSDU_END_WINDOW_SIZE_MASK                                                0xffff000000000000
716*5113495bSYour Name 
717*5113495bSYour Name 
718*5113495bSYour Name /* Description		SA_SW_PEER_ID
719*5113495bSYour Name 
720*5113495bSYour Name 			sw_peer_id from the address search entry corresponding to
721*5113495bSYour Name 			 the source address of the MSDU
722*5113495bSYour Name 
723*5113495bSYour Name 			<legal all>
724*5113495bSYour Name */
725*5113495bSYour Name 
726*5113495bSYour Name #define RX_MSDU_END_SA_SW_PEER_ID_OFFSET                                            0x0000000000000028
727*5113495bSYour Name #define RX_MSDU_END_SA_SW_PEER_ID_LSB                                               0
728*5113495bSYour Name #define RX_MSDU_END_SA_SW_PEER_ID_MSB                                               15
729*5113495bSYour Name #define RX_MSDU_END_SA_SW_PEER_ID_MASK                                              0x000000000000ffff
730*5113495bSYour Name 
731*5113495bSYour Name 
732*5113495bSYour Name /* Description		SA_IDX_TIMEOUT
733*5113495bSYour Name 
734*5113495bSYour Name 			Indicates an unsuccessful MAC source address search due
735*5113495bSYour Name 			to the expiring of the search timer.
736*5113495bSYour Name */
737*5113495bSYour Name 
738*5113495bSYour Name #define RX_MSDU_END_SA_IDX_TIMEOUT_OFFSET                                           0x0000000000000028
739*5113495bSYour Name #define RX_MSDU_END_SA_IDX_TIMEOUT_LSB                                              16
740*5113495bSYour Name #define RX_MSDU_END_SA_IDX_TIMEOUT_MSB                                              16
741*5113495bSYour Name #define RX_MSDU_END_SA_IDX_TIMEOUT_MASK                                             0x0000000000010000
742*5113495bSYour Name 
743*5113495bSYour Name 
744*5113495bSYour Name /* Description		DA_IDX_TIMEOUT
745*5113495bSYour Name 
746*5113495bSYour Name 			Indicates an unsuccessful MAC destination address search
747*5113495bSYour Name 			 due to the expiring of the search timer.
748*5113495bSYour Name */
749*5113495bSYour Name 
750*5113495bSYour Name #define RX_MSDU_END_DA_IDX_TIMEOUT_OFFSET                                           0x0000000000000028
751*5113495bSYour Name #define RX_MSDU_END_DA_IDX_TIMEOUT_LSB                                              17
752*5113495bSYour Name #define RX_MSDU_END_DA_IDX_TIMEOUT_MSB                                              17
753*5113495bSYour Name #define RX_MSDU_END_DA_IDX_TIMEOUT_MASK                                             0x0000000000020000
754*5113495bSYour Name 
755*5113495bSYour Name 
756*5113495bSYour Name /* Description		TO_DS
757*5113495bSYour Name 
758*5113495bSYour Name 			Set if the to DS bit is set in the frame control.
759*5113495bSYour Name 
760*5113495bSYour Name 			RXOLE copies this from the 'Struct RX_MPDU_INFO' in 'RX_MPDU_PCU_START.'
761*5113495bSYour Name 
762*5113495bSYour Name 
763*5113495bSYour Name 			<legal all>
764*5113495bSYour Name */
765*5113495bSYour Name 
766*5113495bSYour Name #define RX_MSDU_END_TO_DS_OFFSET                                                    0x0000000000000028
767*5113495bSYour Name #define RX_MSDU_END_TO_DS_LSB                                                       18
768*5113495bSYour Name #define RX_MSDU_END_TO_DS_MSB                                                       18
769*5113495bSYour Name #define RX_MSDU_END_TO_DS_MASK                                                      0x0000000000040000
770*5113495bSYour Name 
771*5113495bSYour Name 
772*5113495bSYour Name 
773*5113495bSYour Name #define RX_MSDU_END_TID_OFFSET                                                      0x0000000000000028
774*5113495bSYour Name #define RX_MSDU_END_TID_LSB                                                         19
775*5113495bSYour Name #define RX_MSDU_END_TID_MSB                                                         22
776*5113495bSYour Name #define RX_MSDU_END_TID_MASK                                                        0x0000000000780000
777*5113495bSYour Name 
778*5113495bSYour Name 
779*5113495bSYour Name /* Description		SA_IS_VALID
780*5113495bSYour Name 
781*5113495bSYour Name 			Indicates that OLE found a valid SA entry
782*5113495bSYour Name */
783*5113495bSYour Name 
784*5113495bSYour Name #define RX_MSDU_END_SA_IS_VALID_OFFSET                                              0x0000000000000028
785*5113495bSYour Name #define RX_MSDU_END_SA_IS_VALID_LSB                                                 23
786*5113495bSYour Name #define RX_MSDU_END_SA_IS_VALID_MSB                                                 23
787*5113495bSYour Name #define RX_MSDU_END_SA_IS_VALID_MASK                                                0x0000000000800000
788*5113495bSYour Name 
789*5113495bSYour Name 
790*5113495bSYour Name /* Description		DA_IS_VALID
791*5113495bSYour Name 
792*5113495bSYour Name 			Indicates that OLE found a valid DA entry
793*5113495bSYour Name */
794*5113495bSYour Name 
795*5113495bSYour Name #define RX_MSDU_END_DA_IS_VALID_OFFSET                                              0x0000000000000028
796*5113495bSYour Name #define RX_MSDU_END_DA_IS_VALID_LSB                                                 24
797*5113495bSYour Name #define RX_MSDU_END_DA_IS_VALID_MSB                                                 24
798*5113495bSYour Name #define RX_MSDU_END_DA_IS_VALID_MASK                                                0x0000000001000000
799*5113495bSYour Name 
800*5113495bSYour Name 
801*5113495bSYour Name /* Description		DA_IS_MCBC
802*5113495bSYour Name 
803*5113495bSYour Name 			Field Only valid if "da_is_valid" is set
804*5113495bSYour Name 
805*5113495bSYour Name 			Indicates the DA address was a Multicast of Broadcast address.
806*5113495bSYour Name 
807*5113495bSYour Name */
808*5113495bSYour Name 
809*5113495bSYour Name #define RX_MSDU_END_DA_IS_MCBC_OFFSET                                               0x0000000000000028
810*5113495bSYour Name #define RX_MSDU_END_DA_IS_MCBC_LSB                                                  25
811*5113495bSYour Name #define RX_MSDU_END_DA_IS_MCBC_MSB                                                  25
812*5113495bSYour Name #define RX_MSDU_END_DA_IS_MCBC_MASK                                                 0x0000000002000000
813*5113495bSYour Name 
814*5113495bSYour Name 
815*5113495bSYour Name /* Description		L3_HEADER_PADDING
816*5113495bSYour Name 
817*5113495bSYour Name 			Number of bytes padded  to make sure that the L3 header
818*5113495bSYour Name 			will always start of a Dword   boundary
819*5113495bSYour Name */
820*5113495bSYour Name 
821*5113495bSYour Name #define RX_MSDU_END_L3_HEADER_PADDING_OFFSET                                        0x0000000000000028
822*5113495bSYour Name #define RX_MSDU_END_L3_HEADER_PADDING_LSB                                           26
823*5113495bSYour Name #define RX_MSDU_END_L3_HEADER_PADDING_MSB                                           27
824*5113495bSYour Name #define RX_MSDU_END_L3_HEADER_PADDING_MASK                                          0x000000000c000000
825*5113495bSYour Name 
826*5113495bSYour Name 
827*5113495bSYour Name /* Description		FIRST_MSDU
828*5113495bSYour Name 
829*5113495bSYour Name 			Indicates the first MSDU of A-MSDU.  If both first_msdu
830*5113495bSYour Name 			and last_msdu are set in the MSDU then this is a non-aggregated
831*5113495bSYour Name 			 MSDU frame: normal MPDU.  Interior MSDU in an A-MSDU shall
832*5113495bSYour Name 			 have both first_mpdu and last_mpdu bits set to 0.
833*5113495bSYour Name */
834*5113495bSYour Name 
835*5113495bSYour Name #define RX_MSDU_END_FIRST_MSDU_OFFSET                                               0x0000000000000028
836*5113495bSYour Name #define RX_MSDU_END_FIRST_MSDU_LSB                                                  28
837*5113495bSYour Name #define RX_MSDU_END_FIRST_MSDU_MSB                                                  28
838*5113495bSYour Name #define RX_MSDU_END_FIRST_MSDU_MASK                                                 0x0000000010000000
839*5113495bSYour Name 
840*5113495bSYour Name 
841*5113495bSYour Name /* Description		LAST_MSDU
842*5113495bSYour Name 
843*5113495bSYour Name 			Indicates the last MSDU of the A-MSDU.  MPDU end status
844*5113495bSYour Name 			is only valid when last_msdu is set.
845*5113495bSYour Name */
846*5113495bSYour Name 
847*5113495bSYour Name #define RX_MSDU_END_LAST_MSDU_OFFSET                                                0x0000000000000028
848*5113495bSYour Name #define RX_MSDU_END_LAST_MSDU_LSB                                                   29
849*5113495bSYour Name #define RX_MSDU_END_LAST_MSDU_MSB                                                   29
850*5113495bSYour Name #define RX_MSDU_END_LAST_MSDU_MASK                                                  0x0000000020000000
851*5113495bSYour Name 
852*5113495bSYour Name 
853*5113495bSYour Name /* Description		FR_DS
854*5113495bSYour Name 
855*5113495bSYour Name 			Set if the from DS bit is set in the frame control.
856*5113495bSYour Name 
857*5113495bSYour Name 			RXOLE copies this from the 'Struct RX_MPDU_INFO' in 'RX_MPDU_PCU_START.'
858*5113495bSYour Name 
859*5113495bSYour Name 			<legal all>
860*5113495bSYour Name */
861*5113495bSYour Name 
862*5113495bSYour Name #define RX_MSDU_END_FR_DS_OFFSET                                                    0x0000000000000028
863*5113495bSYour Name #define RX_MSDU_END_FR_DS_LSB                                                       30
864*5113495bSYour Name #define RX_MSDU_END_FR_DS_MSB                                                       30
865*5113495bSYour Name #define RX_MSDU_END_FR_DS_MASK                                                      0x0000000040000000
866*5113495bSYour Name 
867*5113495bSYour Name 
868*5113495bSYour Name /* Description		IP_CHKSUM_FAIL_COPY
869*5113495bSYour Name 
870*5113495bSYour Name 			If 'RXOLE_R0_MISC_CONFIG. OVERRIDE_MSDU_END_FIELDS' is set,
871*5113495bSYour Name 			ip_chksum_fail from 'RX_ATTENTION' will be reported in the
872*5113495bSYour Name 			 MSB here:
873*5113495bSYour Name 			Indicates that the computed checksum (ip_hdr_chksum) did
874*5113495bSYour Name 			 not match the checksum in the IP header.
875*5113495bSYour Name */
876*5113495bSYour Name 
877*5113495bSYour Name #define RX_MSDU_END_IP_CHKSUM_FAIL_COPY_OFFSET                                      0x0000000000000028
878*5113495bSYour Name #define RX_MSDU_END_IP_CHKSUM_FAIL_COPY_LSB                                         31
879*5113495bSYour Name #define RX_MSDU_END_IP_CHKSUM_FAIL_COPY_MSB                                         31
880*5113495bSYour Name #define RX_MSDU_END_IP_CHKSUM_FAIL_COPY_MASK                                        0x0000000080000000
881*5113495bSYour Name 
882*5113495bSYour Name 
883*5113495bSYour Name /* Description		SA_IDX
884*5113495bSYour Name 
885*5113495bSYour Name 			The offset in the address table which matches the MAC source
886*5113495bSYour Name 			 address.
887*5113495bSYour Name */
888*5113495bSYour Name 
889*5113495bSYour Name #define RX_MSDU_END_SA_IDX_OFFSET                                                   0x0000000000000028
890*5113495bSYour Name #define RX_MSDU_END_SA_IDX_LSB                                                      32
891*5113495bSYour Name #define RX_MSDU_END_SA_IDX_MSB                                                      47
892*5113495bSYour Name #define RX_MSDU_END_SA_IDX_MASK                                                     0x0000ffff00000000
893*5113495bSYour Name 
894*5113495bSYour Name 
895*5113495bSYour Name /* Description		DA_IDX_OR_SW_PEER_ID
896*5113495bSYour Name 
897*5113495bSYour Name 			Based on a register configuration in RXOLE, this field will
898*5113495bSYour Name 			 contain:
899*5113495bSYour Name 			The offset in the address table which matches the MAC destination
900*5113495bSYour Name 			 address
901*5113495bSYour Name 			OR:
902*5113495bSYour Name 			sw_peer_id from the address search entry corresponding to
903*5113495bSYour Name 			 the destination address of the MSDU
904*5113495bSYour Name */
905*5113495bSYour Name 
906*5113495bSYour Name #define RX_MSDU_END_DA_IDX_OR_SW_PEER_ID_OFFSET                                     0x0000000000000028
907*5113495bSYour Name #define RX_MSDU_END_DA_IDX_OR_SW_PEER_ID_LSB                                        48
908*5113495bSYour Name #define RX_MSDU_END_DA_IDX_OR_SW_PEER_ID_MSB                                        63
909*5113495bSYour Name #define RX_MSDU_END_DA_IDX_OR_SW_PEER_ID_MASK                                       0xffff000000000000
910*5113495bSYour Name 
911*5113495bSYour Name 
912*5113495bSYour Name /* Description		MSDU_DROP
913*5113495bSYour Name 
914*5113495bSYour Name 			When set, REO shall drop this MSDU and not forward it to
915*5113495bSYour Name 			 any other ring...
916*5113495bSYour Name 			<legal all>
917*5113495bSYour Name */
918*5113495bSYour Name 
919*5113495bSYour Name #define RX_MSDU_END_MSDU_DROP_OFFSET                                                0x0000000000000030
920*5113495bSYour Name #define RX_MSDU_END_MSDU_DROP_LSB                                                   0
921*5113495bSYour Name #define RX_MSDU_END_MSDU_DROP_MSB                                                   0
922*5113495bSYour Name #define RX_MSDU_END_MSDU_DROP_MASK                                                  0x0000000000000001
923*5113495bSYour Name 
924*5113495bSYour Name 
925*5113495bSYour Name /* Description		REO_DESTINATION_INDICATION
926*5113495bSYour Name 
927*5113495bSYour Name 			The ID of the REO exit ring where the MSDU frame shall push
928*5113495bSYour Name 			 after (MPDU level) reordering has finished.
929*5113495bSYour Name 
930*5113495bSYour Name 			<enum 0 reo_destination_sw0> Reo will push the frame into
931*5113495bSYour Name 			 the REO2SW0 ring
932*5113495bSYour Name 			<enum 1 reo_destination_sw1> Reo will push the frame into
933*5113495bSYour Name 			 the REO2SW1 ring
934*5113495bSYour Name 			<enum 2 reo_destination_sw2> Reo will push the frame into
935*5113495bSYour Name 			 the REO2SW2 ring
936*5113495bSYour Name 			<enum 3 reo_destination_sw3> Reo will push the frame into
937*5113495bSYour Name 			 the REO2SW3 ring
938*5113495bSYour Name 			<enum 4 reo_destination_sw4> Reo will push the frame into
939*5113495bSYour Name 			 the REO2SW4 ring
940*5113495bSYour Name 			<enum 5 reo_destination_release> Reo will push the frame
941*5113495bSYour Name 			 into the REO_release ring
942*5113495bSYour Name 			<enum 6 reo_destination_fw> Reo will push the frame into
943*5113495bSYour Name 			 the REO2FW ring
944*5113495bSYour Name 			<enum 7 reo_destination_sw5> Reo will push the frame into
945*5113495bSYour Name 			 the REO2SW5 ring (REO remaps this in chips without REO2SW5
946*5113495bSYour Name 			 ring)
947*5113495bSYour Name 			<enum 8 reo_destination_sw6> Reo will push the frame into
948*5113495bSYour Name 			 the REO2SW6 ring (REO remaps this in chips without REO2SW6
949*5113495bSYour Name 			 ring)
950*5113495bSYour Name 			<enum 9 reo_destination_sw7> Reo will push the frame into
951*5113495bSYour Name 			 the REO2SW7 ring (REO remaps this in chips without REO2SW7
952*5113495bSYour Name 			 ring)
953*5113495bSYour Name 			<enum 10 reo_destination_sw8> Reo will push the frame into
954*5113495bSYour Name 			 the REO2SW8 ring (REO remaps this in chips without REO2SW8
955*5113495bSYour Name 			 ring)
956*5113495bSYour Name 			<enum 11 reo_destination_11> REO remaps this
957*5113495bSYour Name 			<enum 12 reo_destination_12> REO remaps this <enum 13 reo_destination_13>
958*5113495bSYour Name 			REO remaps this
959*5113495bSYour Name 			<enum 14 reo_destination_14> REO remaps this
960*5113495bSYour Name 			<enum 15 reo_destination_15> REO remaps this
961*5113495bSYour Name 			<enum 16 reo_destination_16> REO remaps this
962*5113495bSYour Name 			<enum 17 reo_destination_17> REO remaps this
963*5113495bSYour Name 			<enum 18 reo_destination_18> REO remaps this
964*5113495bSYour Name 			<enum 19 reo_destination_19> REO remaps this
965*5113495bSYour Name 			<enum 20 reo_destination_20> REO remaps this
966*5113495bSYour Name 			<enum 21 reo_destination_21> REO remaps this
967*5113495bSYour Name 			<enum 22 reo_destination_22> REO remaps this
968*5113495bSYour Name 			<enum 23 reo_destination_23> REO remaps this
969*5113495bSYour Name 			<enum 24 reo_destination_24> REO remaps this
970*5113495bSYour Name 			<enum 25 reo_destination_25> REO remaps this
971*5113495bSYour Name 			<enum 26 reo_destination_26> REO remaps this
972*5113495bSYour Name 			<enum 27 reo_destination_27> REO remaps this
973*5113495bSYour Name 			<enum 28 reo_destination_28> REO remaps this
974*5113495bSYour Name 			<enum 29 reo_destination_29> REO remaps this
975*5113495bSYour Name 			<enum 30 reo_destination_30> REO remaps this
976*5113495bSYour Name 			<enum 31 reo_destination_31> REO remaps this
977*5113495bSYour Name 
978*5113495bSYour Name 			<legal all>
979*5113495bSYour Name */
980*5113495bSYour Name 
981*5113495bSYour Name #define RX_MSDU_END_REO_DESTINATION_INDICATION_OFFSET                               0x0000000000000030
982*5113495bSYour Name #define RX_MSDU_END_REO_DESTINATION_INDICATION_LSB                                  1
983*5113495bSYour Name #define RX_MSDU_END_REO_DESTINATION_INDICATION_MSB                                  5
984*5113495bSYour Name #define RX_MSDU_END_REO_DESTINATION_INDICATION_MASK                                 0x000000000000003e
985*5113495bSYour Name 
986*5113495bSYour Name 
987*5113495bSYour Name /* Description		FLOW_IDX
988*5113495bSYour Name 
989*5113495bSYour Name 			Flow table index
990*5113495bSYour Name 			<legal all>
991*5113495bSYour Name */
992*5113495bSYour Name 
993*5113495bSYour Name #define RX_MSDU_END_FLOW_IDX_OFFSET                                                 0x0000000000000030
994*5113495bSYour Name #define RX_MSDU_END_FLOW_IDX_LSB                                                    6
995*5113495bSYour Name #define RX_MSDU_END_FLOW_IDX_MSB                                                    25
996*5113495bSYour Name #define RX_MSDU_END_FLOW_IDX_MASK                                                   0x0000000003ffffc0
997*5113495bSYour Name 
998*5113495bSYour Name 
999*5113495bSYour Name /* Description		USE_PPE
1000*5113495bSYour Name 
1001*5113495bSYour Name 			Indicates to RXDMA to ignore the REO_destination_indication
1002*5113495bSYour Name 			 and use a programmed value corresponding to the REO2PPE
1003*5113495bSYour Name 			 ring
1004*5113495bSYour Name 
1005*5113495bSYour Name 			This override to REO2PPE for packets requiring multiple
1006*5113495bSYour Name 			buffers shall be disabled based on an RXDMA configuration,
1007*5113495bSYour Name 			as PPE may not support such packets.
1008*5113495bSYour Name 			<legal all>
1009*5113495bSYour Name */
1010*5113495bSYour Name 
1011*5113495bSYour Name #define RX_MSDU_END_USE_PPE_OFFSET                                                  0x0000000000000030
1012*5113495bSYour Name #define RX_MSDU_END_USE_PPE_LSB                                                     26
1013*5113495bSYour Name #define RX_MSDU_END_USE_PPE_MSB                                                     26
1014*5113495bSYour Name #define RX_MSDU_END_USE_PPE_MASK                                                    0x0000000004000000
1015*5113495bSYour Name 
1016*5113495bSYour Name 
1017*5113495bSYour Name /* Description		MESH_STA
1018*5113495bSYour Name 
1019*5113495bSYour Name 			When set, this is a Mesh (11s) STA.
1020*5113495bSYour Name 
1021*5113495bSYour Name 			The interpretation of the A-MSDU 'Length' field in the MPDU
1022*5113495bSYour Name 			 (if any) is decided by the e-numerations below.
1023*5113495bSYour Name 
1024*5113495bSYour Name 			<enum 0 MESH_DISABLE>
1025*5113495bSYour Name 			<enum 1 MESH_Q2Q> A-MSDU 'Length' is big endian and includes
1026*5113495bSYour Name 			 the length of Mesh Control.
1027*5113495bSYour Name 			<enum 2 MESH_11S_BE> A-MSDU 'Length' is big endian and excludes
1028*5113495bSYour Name 			 the length of Mesh Control.
1029*5113495bSYour Name 			<enum 3 MESH_11S_LE> A-MSDU 'Length' is little endian and
1030*5113495bSYour Name 			 excludes the length of Mesh Control. This is 802.11s-compliant.
1031*5113495bSYour Name 
1032*5113495bSYour Name 			<legal all>
1033*5113495bSYour Name */
1034*5113495bSYour Name 
1035*5113495bSYour Name #define RX_MSDU_END_MESH_STA_OFFSET                                                 0x0000000000000030
1036*5113495bSYour Name #define RX_MSDU_END_MESH_STA_LSB                                                    27
1037*5113495bSYour Name #define RX_MSDU_END_MESH_STA_MSB                                                    28
1038*5113495bSYour Name #define RX_MSDU_END_MESH_STA_MASK                                                   0x0000000018000000
1039*5113495bSYour Name 
1040*5113495bSYour Name 
1041*5113495bSYour Name /* Description		VLAN_CTAG_STRIPPED
1042*5113495bSYour Name 
1043*5113495bSYour Name 			Set by RXOLE if it stripped 4-bytes of C-VLAN Tag from the
1044*5113495bSYour Name 			 packet
1045*5113495bSYour Name 			<legal all>
1046*5113495bSYour Name */
1047*5113495bSYour Name 
1048*5113495bSYour Name #define RX_MSDU_END_VLAN_CTAG_STRIPPED_OFFSET                                       0x0000000000000030
1049*5113495bSYour Name #define RX_MSDU_END_VLAN_CTAG_STRIPPED_LSB                                          29
1050*5113495bSYour Name #define RX_MSDU_END_VLAN_CTAG_STRIPPED_MSB                                          29
1051*5113495bSYour Name #define RX_MSDU_END_VLAN_CTAG_STRIPPED_MASK                                         0x0000000020000000
1052*5113495bSYour Name 
1053*5113495bSYour Name 
1054*5113495bSYour Name /* Description		VLAN_STAG_STRIPPED
1055*5113495bSYour Name 
1056*5113495bSYour Name 			Set by RXOLE if it stripped 4-bytes of S-VLAN Tag from the
1057*5113495bSYour Name 			 packet
1058*5113495bSYour Name 			<legal all>
1059*5113495bSYour Name */
1060*5113495bSYour Name 
1061*5113495bSYour Name #define RX_MSDU_END_VLAN_STAG_STRIPPED_OFFSET                                       0x0000000000000030
1062*5113495bSYour Name #define RX_MSDU_END_VLAN_STAG_STRIPPED_LSB                                          30
1063*5113495bSYour Name #define RX_MSDU_END_VLAN_STAG_STRIPPED_MSB                                          30
1064*5113495bSYour Name #define RX_MSDU_END_VLAN_STAG_STRIPPED_MASK                                         0x0000000040000000
1065*5113495bSYour Name 
1066*5113495bSYour Name 
1067*5113495bSYour Name /* Description		FRAGMENT_FLAG
1068*5113495bSYour Name 
1069*5113495bSYour Name 			Indicates that this is an 802.11 fragment frame.  This is
1070*5113495bSYour Name 			 set when either the more_frag bit is set in the frame control
1071*5113495bSYour Name 			 or the fragment number is not zero.  Only set when first_msdu
1072*5113495bSYour Name 			 is set.
1073*5113495bSYour Name */
1074*5113495bSYour Name 
1075*5113495bSYour Name #define RX_MSDU_END_FRAGMENT_FLAG_OFFSET                                            0x0000000000000030
1076*5113495bSYour Name #define RX_MSDU_END_FRAGMENT_FLAG_LSB                                               31
1077*5113495bSYour Name #define RX_MSDU_END_FRAGMENT_FLAG_MSB                                               31
1078*5113495bSYour Name #define RX_MSDU_END_FRAGMENT_FLAG_MASK                                              0x0000000080000000
1079*5113495bSYour Name 
1080*5113495bSYour Name 
1081*5113495bSYour Name /* Description		FSE_METADATA
1082*5113495bSYour Name 
1083*5113495bSYour Name 			FSE related meta data:
1084*5113495bSYour Name 			<legal all>
1085*5113495bSYour Name */
1086*5113495bSYour Name 
1087*5113495bSYour Name #define RX_MSDU_END_FSE_METADATA_OFFSET                                             0x0000000000000030
1088*5113495bSYour Name #define RX_MSDU_END_FSE_METADATA_LSB                                                32
1089*5113495bSYour Name #define RX_MSDU_END_FSE_METADATA_MSB                                                63
1090*5113495bSYour Name #define RX_MSDU_END_FSE_METADATA_MASK                                               0xffffffff00000000
1091*5113495bSYour Name 
1092*5113495bSYour Name 
1093*5113495bSYour Name /* Description		CCE_METADATA
1094*5113495bSYour Name 
1095*5113495bSYour Name 			CCE related meta data:
1096*5113495bSYour Name 			<legal all>
1097*5113495bSYour Name */
1098*5113495bSYour Name 
1099*5113495bSYour Name #define RX_MSDU_END_CCE_METADATA_OFFSET                                             0x0000000000000038
1100*5113495bSYour Name #define RX_MSDU_END_CCE_METADATA_LSB                                                0
1101*5113495bSYour Name #define RX_MSDU_END_CCE_METADATA_MSB                                                15
1102*5113495bSYour Name #define RX_MSDU_END_CCE_METADATA_MASK                                               0x000000000000ffff
1103*5113495bSYour Name 
1104*5113495bSYour Name 
1105*5113495bSYour Name 
1106*5113495bSYour Name #define RX_MSDU_END_TCP_UDP_CHKSUM_OFFSET                                           0x0000000000000038
1107*5113495bSYour Name #define RX_MSDU_END_TCP_UDP_CHKSUM_LSB                                              16
1108*5113495bSYour Name #define RX_MSDU_END_TCP_UDP_CHKSUM_MSB                                              31
1109*5113495bSYour Name #define RX_MSDU_END_TCP_UDP_CHKSUM_MASK                                             0x00000000ffff0000
1110*5113495bSYour Name 
1111*5113495bSYour Name 
1112*5113495bSYour Name /* Description		AGGREGATION_COUNT
1113*5113495bSYour Name 
1114*5113495bSYour Name 			FISA: Number of MSDU's aggregated so far
1115*5113495bSYour Name 
1116*5113495bSYour Name 			Set to zero in chips not supporting FISA
1117*5113495bSYour Name 			<legal all>
1118*5113495bSYour Name */
1119*5113495bSYour Name 
1120*5113495bSYour Name #define RX_MSDU_END_AGGREGATION_COUNT_OFFSET                                        0x0000000000000038
1121*5113495bSYour Name #define RX_MSDU_END_AGGREGATION_COUNT_LSB                                           32
1122*5113495bSYour Name #define RX_MSDU_END_AGGREGATION_COUNT_MSB                                           39
1123*5113495bSYour Name #define RX_MSDU_END_AGGREGATION_COUNT_MASK                                          0x000000ff00000000
1124*5113495bSYour Name 
1125*5113495bSYour Name 
1126*5113495bSYour Name /* Description		FLOW_AGGREGATION_CONTINUATION
1127*5113495bSYour Name 
1128*5113495bSYour Name 			FISA: To indicate that this MSDU can be aggregated with
1129*5113495bSYour Name 			the previous packet with the same flow id
1130*5113495bSYour Name 
1131*5113495bSYour Name 			Set to zero in chips not supporting FISA
1132*5113495bSYour Name 			<legal all>
1133*5113495bSYour Name */
1134*5113495bSYour Name 
1135*5113495bSYour Name #define RX_MSDU_END_FLOW_AGGREGATION_CONTINUATION_OFFSET                            0x0000000000000038
1136*5113495bSYour Name #define RX_MSDU_END_FLOW_AGGREGATION_CONTINUATION_LSB                               40
1137*5113495bSYour Name #define RX_MSDU_END_FLOW_AGGREGATION_CONTINUATION_MSB                               40
1138*5113495bSYour Name #define RX_MSDU_END_FLOW_AGGREGATION_CONTINUATION_MASK                              0x0000010000000000
1139*5113495bSYour Name 
1140*5113495bSYour Name 
1141*5113495bSYour Name /* Description		FISA_TIMEOUT
1142*5113495bSYour Name 
1143*5113495bSYour Name 			FISA: To indicate that the aggregation has restarted for
1144*5113495bSYour Name 			 this flow due to timeout
1145*5113495bSYour Name 
1146*5113495bSYour Name 			Set to zero in chips not supporting FISA
1147*5113495bSYour Name 			<legal all>
1148*5113495bSYour Name */
1149*5113495bSYour Name 
1150*5113495bSYour Name #define RX_MSDU_END_FISA_TIMEOUT_OFFSET                                             0x0000000000000038
1151*5113495bSYour Name #define RX_MSDU_END_FISA_TIMEOUT_LSB                                                41
1152*5113495bSYour Name #define RX_MSDU_END_FISA_TIMEOUT_MSB                                                41
1153*5113495bSYour Name #define RX_MSDU_END_FISA_TIMEOUT_MASK                                               0x0000020000000000
1154*5113495bSYour Name 
1155*5113495bSYour Name 
1156*5113495bSYour Name /* Description		TCP_UDP_CHKSUM_FAIL_COPY
1157*5113495bSYour Name 
1158*5113495bSYour Name 			if 'RXOLE_R0_MISC_CONFIG. OVERRIDE_MSDU_END_FIELDS' is set,
1159*5113495bSYour Name 			tcp_udp_chksum_fail from 'RX_ATTENTION' will be reported
1160*5113495bSYour Name 			 here:
1161*5113495bSYour Name 			Indicates that the computed checksum (tcp_udp_chksum) did
1162*5113495bSYour Name 			 not match the checksum in the TCP/UDP header.
1163*5113495bSYour Name */
1164*5113495bSYour Name 
1165*5113495bSYour Name #define RX_MSDU_END_TCP_UDP_CHKSUM_FAIL_COPY_OFFSET                                 0x0000000000000038
1166*5113495bSYour Name #define RX_MSDU_END_TCP_UDP_CHKSUM_FAIL_COPY_LSB                                    42
1167*5113495bSYour Name #define RX_MSDU_END_TCP_UDP_CHKSUM_FAIL_COPY_MSB                                    42
1168*5113495bSYour Name #define RX_MSDU_END_TCP_UDP_CHKSUM_FAIL_COPY_MASK                                   0x0000040000000000
1169*5113495bSYour Name 
1170*5113495bSYour Name 
1171*5113495bSYour Name /* Description		MSDU_LIMIT_ERROR
1172*5113495bSYour Name 
1173*5113495bSYour Name 			Indicates that the MSDU threshold was exceeded and thus
1174*5113495bSYour Name 			all the rest of the MSDUs will not be scattered and will
1175*5113495bSYour Name 			 not be decapsulated but will be DMA'ed in RAW format as
1176*5113495bSYour Name 			 a single MSDU buffer
1177*5113495bSYour Name */
1178*5113495bSYour Name 
1179*5113495bSYour Name #define RX_MSDU_END_MSDU_LIMIT_ERROR_OFFSET                                         0x0000000000000038
1180*5113495bSYour Name #define RX_MSDU_END_MSDU_LIMIT_ERROR_LSB                                            43
1181*5113495bSYour Name #define RX_MSDU_END_MSDU_LIMIT_ERROR_MSB                                            43
1182*5113495bSYour Name #define RX_MSDU_END_MSDU_LIMIT_ERROR_MASK                                           0x0000080000000000
1183*5113495bSYour Name 
1184*5113495bSYour Name 
1185*5113495bSYour Name /* Description		FLOW_IDX_TIMEOUT
1186*5113495bSYour Name 
1187*5113495bSYour Name 			Indicates an unsuccessful flow search due to the expiring
1188*5113495bSYour Name 			 of the search timer.
1189*5113495bSYour Name 			<legal all>
1190*5113495bSYour Name */
1191*5113495bSYour Name 
1192*5113495bSYour Name #define RX_MSDU_END_FLOW_IDX_TIMEOUT_OFFSET                                         0x0000000000000038
1193*5113495bSYour Name #define RX_MSDU_END_FLOW_IDX_TIMEOUT_LSB                                            44
1194*5113495bSYour Name #define RX_MSDU_END_FLOW_IDX_TIMEOUT_MSB                                            44
1195*5113495bSYour Name #define RX_MSDU_END_FLOW_IDX_TIMEOUT_MASK                                           0x0000100000000000
1196*5113495bSYour Name 
1197*5113495bSYour Name 
1198*5113495bSYour Name /* Description		FLOW_IDX_INVALID
1199*5113495bSYour Name 
1200*5113495bSYour Name 			flow id is not valid
1201*5113495bSYour Name 			<legal all>
1202*5113495bSYour Name */
1203*5113495bSYour Name 
1204*5113495bSYour Name #define RX_MSDU_END_FLOW_IDX_INVALID_OFFSET                                         0x0000000000000038
1205*5113495bSYour Name #define RX_MSDU_END_FLOW_IDX_INVALID_LSB                                            45
1206*5113495bSYour Name #define RX_MSDU_END_FLOW_IDX_INVALID_MSB                                            45
1207*5113495bSYour Name #define RX_MSDU_END_FLOW_IDX_INVALID_MASK                                           0x0000200000000000
1208*5113495bSYour Name 
1209*5113495bSYour Name 
1210*5113495bSYour Name /* Description		CCE_MATCH
1211*5113495bSYour Name 
1212*5113495bSYour Name 			Indicates that this status has a corresponding MSDU that
1213*5113495bSYour Name 			 requires FW processing.  The OLE will have classification
1214*5113495bSYour Name 			 ring mask registers which will indicate the ring(s) for
1215*5113495bSYour Name 			 packets and descriptors which need FW attention.
1216*5113495bSYour Name */
1217*5113495bSYour Name 
1218*5113495bSYour Name #define RX_MSDU_END_CCE_MATCH_OFFSET                                                0x0000000000000038
1219*5113495bSYour Name #define RX_MSDU_END_CCE_MATCH_LSB                                                   46
1220*5113495bSYour Name #define RX_MSDU_END_CCE_MATCH_MSB                                                   46
1221*5113495bSYour Name #define RX_MSDU_END_CCE_MATCH_MASK                                                  0x0000400000000000
1222*5113495bSYour Name 
1223*5113495bSYour Name 
1224*5113495bSYour Name /* Description		AMSDU_PARSER_ERROR
1225*5113495bSYour Name 
1226*5113495bSYour Name 			A-MSDU could not be properly de-agregated.
1227*5113495bSYour Name 			<legal all>
1228*5113495bSYour Name */
1229*5113495bSYour Name 
1230*5113495bSYour Name #define RX_MSDU_END_AMSDU_PARSER_ERROR_OFFSET                                       0x0000000000000038
1231*5113495bSYour Name #define RX_MSDU_END_AMSDU_PARSER_ERROR_LSB                                          47
1232*5113495bSYour Name #define RX_MSDU_END_AMSDU_PARSER_ERROR_MSB                                          47
1233*5113495bSYour Name #define RX_MSDU_END_AMSDU_PARSER_ERROR_MASK                                         0x0000800000000000
1234*5113495bSYour Name 
1235*5113495bSYour Name 
1236*5113495bSYour Name /* Description		CUMULATIVE_IP_LENGTH
1237*5113495bSYour Name 
1238*5113495bSYour Name 			FISA: Total MSDU length that is part of this flow aggregated
1239*5113495bSYour Name 			 so far
1240*5113495bSYour Name 
1241*5113495bSYour Name 			Set to zero in chips not supporting FISA
1242*5113495bSYour Name 			<legal all>
1243*5113495bSYour Name */
1244*5113495bSYour Name 
1245*5113495bSYour Name #define RX_MSDU_END_CUMULATIVE_IP_LENGTH_OFFSET                                     0x0000000000000038
1246*5113495bSYour Name #define RX_MSDU_END_CUMULATIVE_IP_LENGTH_LSB                                        48
1247*5113495bSYour Name #define RX_MSDU_END_CUMULATIVE_IP_LENGTH_MSB                                        63
1248*5113495bSYour Name #define RX_MSDU_END_CUMULATIVE_IP_LENGTH_MASK                                       0xffff000000000000
1249*5113495bSYour Name 
1250*5113495bSYour Name 
1251*5113495bSYour Name /* Description		KEY_ID_OCTET
1252*5113495bSYour Name 
1253*5113495bSYour Name 			The key ID octet from the IV.  Only valid when first_msdu
1254*5113495bSYour Name 			 is set.
1255*5113495bSYour Name */
1256*5113495bSYour Name 
1257*5113495bSYour Name #define RX_MSDU_END_KEY_ID_OCTET_OFFSET                                             0x0000000000000040
1258*5113495bSYour Name #define RX_MSDU_END_KEY_ID_OCTET_LSB                                                0
1259*5113495bSYour Name #define RX_MSDU_END_KEY_ID_OCTET_MSB                                                7
1260*5113495bSYour Name #define RX_MSDU_END_KEY_ID_OCTET_MASK                                               0x00000000000000ff
1261*5113495bSYour Name 
1262*5113495bSYour Name 
1263*5113495bSYour Name 
1264*5113495bSYour Name #define RX_MSDU_END_RESERVED_16A_OFFSET                                             0x0000000000000040
1265*5113495bSYour Name #define RX_MSDU_END_RESERVED_16A_LSB                                                8
1266*5113495bSYour Name #define RX_MSDU_END_RESERVED_16A_MSB                                                31
1267*5113495bSYour Name #define RX_MSDU_END_RESERVED_16A_MASK                                               0x00000000ffffff00
1268*5113495bSYour Name 
1269*5113495bSYour Name 
1270*5113495bSYour Name /* Description		RESERVED_17A
1271*5113495bSYour Name 
1272*5113495bSYour Name 			<legal 0>
1273*5113495bSYour Name */
1274*5113495bSYour Name 
1275*5113495bSYour Name #define RX_MSDU_END_RESERVED_17A_OFFSET                                             0x0000000000000040
1276*5113495bSYour Name #define RX_MSDU_END_RESERVED_17A_LSB                                                32
1277*5113495bSYour Name #define RX_MSDU_END_RESERVED_17A_MSB                                                37
1278*5113495bSYour Name #define RX_MSDU_END_RESERVED_17A_MASK                                               0x0000003f00000000
1279*5113495bSYour Name 
1280*5113495bSYour Name 
1281*5113495bSYour Name /* Description		SERVICE_CODE
1282*5113495bSYour Name 
1283*5113495bSYour Name 			Opaque service code between PPE and Wi-Fi
1284*5113495bSYour Name 
1285*5113495bSYour Name 			This field gets passed on by REO to PPE in the EDMA descriptor
1286*5113495bSYour Name 			 ('REO_TO_PPE_RING').
1287*5113495bSYour Name 
1288*5113495bSYour Name 			<legal all>
1289*5113495bSYour Name */
1290*5113495bSYour Name 
1291*5113495bSYour Name #define RX_MSDU_END_SERVICE_CODE_OFFSET                                             0x0000000000000040
1292*5113495bSYour Name #define RX_MSDU_END_SERVICE_CODE_LSB                                                38
1293*5113495bSYour Name #define RX_MSDU_END_SERVICE_CODE_MSB                                                46
1294*5113495bSYour Name #define RX_MSDU_END_SERVICE_CODE_MASK                                               0x00007fc000000000
1295*5113495bSYour Name 
1296*5113495bSYour Name 
1297*5113495bSYour Name /* Description		PRIORITY_VALID
1298*5113495bSYour Name 
1299*5113495bSYour Name 			This field gets passed on by REO to PPE in the EDMA descriptor
1300*5113495bSYour Name 			 ('REO_TO_PPE_RING').
1301*5113495bSYour Name 
1302*5113495bSYour Name 			<legal all>
1303*5113495bSYour Name */
1304*5113495bSYour Name 
1305*5113495bSYour Name #define RX_MSDU_END_PRIORITY_VALID_OFFSET                                           0x0000000000000040
1306*5113495bSYour Name #define RX_MSDU_END_PRIORITY_VALID_LSB                                              47
1307*5113495bSYour Name #define RX_MSDU_END_PRIORITY_VALID_MSB                                              47
1308*5113495bSYour Name #define RX_MSDU_END_PRIORITY_VALID_MASK                                             0x0000800000000000
1309*5113495bSYour Name 
1310*5113495bSYour Name 
1311*5113495bSYour Name /* Description		INTRA_BSS
1312*5113495bSYour Name 
1313*5113495bSYour Name 			This packet needs intra-BSS routing by SW as the 'vdev_id'
1314*5113495bSYour Name 			for the destination is the same as the 'vdev_id' (from 'RX_MPDU_PCU_START')
1315*5113495bSYour Name 			that this MSDU was got in.
1316*5113495bSYour Name 
1317*5113495bSYour Name 			<legal all>
1318*5113495bSYour Name */
1319*5113495bSYour Name 
1320*5113495bSYour Name #define RX_MSDU_END_INTRA_BSS_OFFSET                                                0x0000000000000040
1321*5113495bSYour Name #define RX_MSDU_END_INTRA_BSS_LSB                                                   48
1322*5113495bSYour Name #define RX_MSDU_END_INTRA_BSS_MSB                                                   48
1323*5113495bSYour Name #define RX_MSDU_END_INTRA_BSS_MASK                                                  0x0001000000000000
1324*5113495bSYour Name 
1325*5113495bSYour Name 
1326*5113495bSYour Name /* Description		DEST_CHIP_ID
1327*5113495bSYour Name 
1328*5113495bSYour Name 			If intra_bss is set, copied by RXOLE from 'ADDR_SEARCH_ENTRY'
1329*5113495bSYour Name 			to support intra-BSS routing with multi-chip multi-link
1330*5113495bSYour Name 			operation.
1331*5113495bSYour Name 
1332*5113495bSYour Name 			This indicates into which chip's TCL the packet should be
1333*5113495bSYour Name 			 queued.
1334*5113495bSYour Name 
1335*5113495bSYour Name 			<legal all>
1336*5113495bSYour Name */
1337*5113495bSYour Name 
1338*5113495bSYour Name #define RX_MSDU_END_DEST_CHIP_ID_OFFSET                                             0x0000000000000040
1339*5113495bSYour Name #define RX_MSDU_END_DEST_CHIP_ID_LSB                                                49
1340*5113495bSYour Name #define RX_MSDU_END_DEST_CHIP_ID_MSB                                                50
1341*5113495bSYour Name #define RX_MSDU_END_DEST_CHIP_ID_MASK                                               0x0006000000000000
1342*5113495bSYour Name 
1343*5113495bSYour Name 
1344*5113495bSYour Name /* Description		MULTICAST_ECHO
1345*5113495bSYour Name 
1346*5113495bSYour Name 			If set, this packet is a multicast echo, i.e. the DA is
1347*5113495bSYour Name 			multicast and Rx OLE SA search with mcast_echo_check = 1
1348*5113495bSYour Name 			 passed. RXDMA should release such packets to WBM.
1349*5113495bSYour Name 
1350*5113495bSYour Name 			<legal all>
1351*5113495bSYour Name */
1352*5113495bSYour Name 
1353*5113495bSYour Name #define RX_MSDU_END_MULTICAST_ECHO_OFFSET                                           0x0000000000000040
1354*5113495bSYour Name #define RX_MSDU_END_MULTICAST_ECHO_LSB                                              51
1355*5113495bSYour Name #define RX_MSDU_END_MULTICAST_ECHO_MSB                                              51
1356*5113495bSYour Name #define RX_MSDU_END_MULTICAST_ECHO_MASK                                             0x0008000000000000
1357*5113495bSYour Name 
1358*5113495bSYour Name 
1359*5113495bSYour Name /* Description		WDS_LEARNING_EVENT
1360*5113495bSYour Name 
1361*5113495bSYour Name 			If set, this packet has an SA search failure with WDS learning
1362*5113495bSYour Name 			 enabled for the peer. RXOLE should route this TLV to the
1363*5113495bSYour Name 			 RXDMA0 status ring to notify FW.
1364*5113495bSYour Name 
1365*5113495bSYour Name 			<legal all>
1366*5113495bSYour Name */
1367*5113495bSYour Name 
1368*5113495bSYour Name #define RX_MSDU_END_WDS_LEARNING_EVENT_OFFSET                                       0x0000000000000040
1369*5113495bSYour Name #define RX_MSDU_END_WDS_LEARNING_EVENT_LSB                                          52
1370*5113495bSYour Name #define RX_MSDU_END_WDS_LEARNING_EVENT_MSB                                          52
1371*5113495bSYour Name #define RX_MSDU_END_WDS_LEARNING_EVENT_MASK                                         0x0010000000000000
1372*5113495bSYour Name 
1373*5113495bSYour Name 
1374*5113495bSYour Name /* Description		WDS_ROAMING_EVENT
1375*5113495bSYour Name 
1376*5113495bSYour Name 			If set, this packet's SA 'Sw_peer_id' mismatches the 'Sw_peer_id'
1377*5113495bSYour Name 			of the peer through which the packet was got, indicating
1378*5113495bSYour Name 			 the SA node has roamed. RXOLE should route this TLV to
1379*5113495bSYour Name 			the RXDMA0 status ring to notify FW.
1380*5113495bSYour Name 
1381*5113495bSYour Name 			<legal all>
1382*5113495bSYour Name */
1383*5113495bSYour Name 
1384*5113495bSYour Name #define RX_MSDU_END_WDS_ROAMING_EVENT_OFFSET                                        0x0000000000000040
1385*5113495bSYour Name #define RX_MSDU_END_WDS_ROAMING_EVENT_LSB                                           53
1386*5113495bSYour Name #define RX_MSDU_END_WDS_ROAMING_EVENT_MSB                                           53
1387*5113495bSYour Name #define RX_MSDU_END_WDS_ROAMING_EVENT_MASK                                          0x0020000000000000
1388*5113495bSYour Name 
1389*5113495bSYour Name 
1390*5113495bSYour Name /* Description		WDS_KEEP_ALIVE_EVENT
1391*5113495bSYour Name 
1392*5113495bSYour Name 			If set, the AST timestamp for this packet's SA is older
1393*5113495bSYour Name 			than the current timestamp by more than a threshold programmed
1394*5113495bSYour Name 			 in RXOLE. RXOLE should route this TLV to the RXDMA0 status
1395*5113495bSYour Name 			 ring to notify FW to keep the AST entry for the SA alive.
1396*5113495bSYour Name 
1397*5113495bSYour Name 
1398*5113495bSYour Name 			<legal all>
1399*5113495bSYour Name */
1400*5113495bSYour Name 
1401*5113495bSYour Name #define RX_MSDU_END_WDS_KEEP_ALIVE_EVENT_OFFSET                                     0x0000000000000040
1402*5113495bSYour Name #define RX_MSDU_END_WDS_KEEP_ALIVE_EVENT_LSB                                        54
1403*5113495bSYour Name #define RX_MSDU_END_WDS_KEEP_ALIVE_EVENT_MSB                                        54
1404*5113495bSYour Name #define RX_MSDU_END_WDS_KEEP_ALIVE_EVENT_MASK                                       0x0040000000000000
1405*5113495bSYour Name 
1406*5113495bSYour Name 
1407*5113495bSYour Name /* Description		DEST_CHIP_PMAC_ID
1408*5113495bSYour Name 
1409*5113495bSYour Name 			If intra_bss is set, copied by RXOLE from 'ADDR_SEARCH_ENTRY'
1410*5113495bSYour Name 			to support intra-BSS routing with multi-chip multi-link
1411*5113495bSYour Name 			operation.
1412*5113495bSYour Name 
1413*5113495bSYour Name 			This indicates into which link/'vdev' the packet should
1414*5113495bSYour Name 			be queued in TCL.
1415*5113495bSYour Name 
1416*5113495bSYour Name 			<legal all>
1417*5113495bSYour Name */
1418*5113495bSYour Name 
1419*5113495bSYour Name #define RX_MSDU_END_DEST_CHIP_PMAC_ID_OFFSET                                        0x0000000000000040
1420*5113495bSYour Name #define RX_MSDU_END_DEST_CHIP_PMAC_ID_LSB                                           55
1421*5113495bSYour Name #define RX_MSDU_END_DEST_CHIP_PMAC_ID_MSB                                           55
1422*5113495bSYour Name #define RX_MSDU_END_DEST_CHIP_PMAC_ID_MASK                                          0x0080000000000000
1423*5113495bSYour Name 
1424*5113495bSYour Name 
1425*5113495bSYour Name /* Description		RESERVED_17B
1426*5113495bSYour Name 
1427*5113495bSYour Name 			<legal 0>
1428*5113495bSYour Name */
1429*5113495bSYour Name 
1430*5113495bSYour Name #define RX_MSDU_END_RESERVED_17B_OFFSET                                             0x0000000000000040
1431*5113495bSYour Name #define RX_MSDU_END_RESERVED_17B_LSB                                                56
1432*5113495bSYour Name #define RX_MSDU_END_RESERVED_17B_MSB                                                63
1433*5113495bSYour Name #define RX_MSDU_END_RESERVED_17B_MASK                                               0xff00000000000000
1434*5113495bSYour Name 
1435*5113495bSYour Name 
1436*5113495bSYour Name /* Description		MSDU_LENGTH
1437*5113495bSYour Name 
1438*5113495bSYour Name 			MSDU length in bytes after decapsulation.
1439*5113495bSYour Name 
1440*5113495bSYour Name 			This field is still valid for MPDU frames without A-MSDU.
1441*5113495bSYour Name 			 It still represents MSDU length after decapsulation
1442*5113495bSYour Name */
1443*5113495bSYour Name 
1444*5113495bSYour Name #define RX_MSDU_END_MSDU_LENGTH_OFFSET                                              0x0000000000000048
1445*5113495bSYour Name #define RX_MSDU_END_MSDU_LENGTH_LSB                                                 0
1446*5113495bSYour Name #define RX_MSDU_END_MSDU_LENGTH_MSB                                                 13
1447*5113495bSYour Name #define RX_MSDU_END_MSDU_LENGTH_MASK                                                0x0000000000003fff
1448*5113495bSYour Name 
1449*5113495bSYour Name 
1450*5113495bSYour Name /* Description		STBC
1451*5113495bSYour Name 
1452*5113495bSYour Name 			When set, use STBC transmission rates
1453*5113495bSYour Name */
1454*5113495bSYour Name 
1455*5113495bSYour Name #define RX_MSDU_END_STBC_OFFSET                                                     0x0000000000000048
1456*5113495bSYour Name #define RX_MSDU_END_STBC_LSB                                                        14
1457*5113495bSYour Name #define RX_MSDU_END_STBC_MSB                                                        14
1458*5113495bSYour Name #define RX_MSDU_END_STBC_MASK                                                       0x0000000000004000
1459*5113495bSYour Name 
1460*5113495bSYour Name 
1461*5113495bSYour Name /* Description		IPSEC_ESP
1462*5113495bSYour Name 
1463*5113495bSYour Name 			Set if IPv4/v6 packet is using IPsec ESP
1464*5113495bSYour Name */
1465*5113495bSYour Name 
1466*5113495bSYour Name #define RX_MSDU_END_IPSEC_ESP_OFFSET                                                0x0000000000000048
1467*5113495bSYour Name #define RX_MSDU_END_IPSEC_ESP_LSB                                                   15
1468*5113495bSYour Name #define RX_MSDU_END_IPSEC_ESP_MSB                                                   15
1469*5113495bSYour Name #define RX_MSDU_END_IPSEC_ESP_MASK                                                  0x0000000000008000
1470*5113495bSYour Name 
1471*5113495bSYour Name 
1472*5113495bSYour Name /* Description		L3_OFFSET
1473*5113495bSYour Name 
1474*5113495bSYour Name 			Depending upon mode bit, this field either indicates the
1475*5113495bSYour Name 			 L3 offset in bytes from the start of the RX_HEADER or the
1476*5113495bSYour Name 			 IP offset in bytes from the start of the packet after decapsulation.
1477*5113495bSYour Name 			 The latter is only valid if ipv4_proto or ipv6_proto is
1478*5113495bSYour Name 			 set.
1479*5113495bSYour Name */
1480*5113495bSYour Name 
1481*5113495bSYour Name #define RX_MSDU_END_L3_OFFSET_OFFSET                                                0x0000000000000048
1482*5113495bSYour Name #define RX_MSDU_END_L3_OFFSET_LSB                                                   16
1483*5113495bSYour Name #define RX_MSDU_END_L3_OFFSET_MSB                                                   22
1484*5113495bSYour Name #define RX_MSDU_END_L3_OFFSET_MASK                                                  0x00000000007f0000
1485*5113495bSYour Name 
1486*5113495bSYour Name 
1487*5113495bSYour Name /* Description		IPSEC_AH
1488*5113495bSYour Name 
1489*5113495bSYour Name 			Set if IPv4/v6 packet is using IPsec AH
1490*5113495bSYour Name */
1491*5113495bSYour Name 
1492*5113495bSYour Name #define RX_MSDU_END_IPSEC_AH_OFFSET                                                 0x0000000000000048
1493*5113495bSYour Name #define RX_MSDU_END_IPSEC_AH_LSB                                                    23
1494*5113495bSYour Name #define RX_MSDU_END_IPSEC_AH_MSB                                                    23
1495*5113495bSYour Name #define RX_MSDU_END_IPSEC_AH_MASK                                                   0x0000000000800000
1496*5113495bSYour Name 
1497*5113495bSYour Name 
1498*5113495bSYour Name /* Description		L4_OFFSET
1499*5113495bSYour Name 
1500*5113495bSYour Name 			Depending upon mode bit, this field either indicates the
1501*5113495bSYour Name 			 L4 offset nin bytes from the start of RX_HEADER(only valid
1502*5113495bSYour Name 			 if either ipv4_proto or ipv6_proto is set to 1) or indicates
1503*5113495bSYour Name 			 the offset in bytes to the start of TCP or UDP header from
1504*5113495bSYour Name 			 the start of the IP header after decapsulation(Only valid
1505*5113495bSYour Name 			 if tcp_proto or udp_proto is set).  The value 0 indicates
1506*5113495bSYour Name 			 that the offset is longer than 127 bytes.
1507*5113495bSYour Name */
1508*5113495bSYour Name 
1509*5113495bSYour Name #define RX_MSDU_END_L4_OFFSET_OFFSET                                                0x0000000000000048
1510*5113495bSYour Name #define RX_MSDU_END_L4_OFFSET_LSB                                                   24
1511*5113495bSYour Name #define RX_MSDU_END_L4_OFFSET_MSB                                                   31
1512*5113495bSYour Name #define RX_MSDU_END_L4_OFFSET_MASK                                                  0x00000000ff000000
1513*5113495bSYour Name 
1514*5113495bSYour Name 
1515*5113495bSYour Name /* Description		MSDU_NUMBER
1516*5113495bSYour Name 
1517*5113495bSYour Name 			Indicates the MSDU number within a MPDU.  This value is
1518*5113495bSYour Name 			reset to zero at the start of each MPDU.  If the number
1519*5113495bSYour Name 			of MSDU exceeds 255 this number will wrap using modulo 256.
1520*5113495bSYour Name 
1521*5113495bSYour Name */
1522*5113495bSYour Name 
1523*5113495bSYour Name #define RX_MSDU_END_MSDU_NUMBER_OFFSET                                              0x0000000000000048
1524*5113495bSYour Name #define RX_MSDU_END_MSDU_NUMBER_LSB                                                 32
1525*5113495bSYour Name #define RX_MSDU_END_MSDU_NUMBER_MSB                                                 39
1526*5113495bSYour Name #define RX_MSDU_END_MSDU_NUMBER_MASK                                                0x000000ff00000000
1527*5113495bSYour Name 
1528*5113495bSYour Name 
1529*5113495bSYour Name /* Description		DECAP_FORMAT
1530*5113495bSYour Name 
1531*5113495bSYour Name 			Indicates the format after decapsulation:
1532*5113495bSYour Name 
1533*5113495bSYour Name 			<enum 0 RAW> No encapsulation
1534*5113495bSYour Name 			<enum 1 Native_WiFi>
1535*5113495bSYour Name 			<enum 2 Ethernet> Ethernet 2 (DIX)  or 802.3 (uses SNAP/LLC)
1536*5113495bSYour Name 
1537*5113495bSYour Name 			<enum 3 802_3> Indicate Ethernet
1538*5113495bSYour Name 
1539*5113495bSYour Name 			<legal all>
1540*5113495bSYour Name */
1541*5113495bSYour Name 
1542*5113495bSYour Name #define RX_MSDU_END_DECAP_FORMAT_OFFSET                                             0x0000000000000048
1543*5113495bSYour Name #define RX_MSDU_END_DECAP_FORMAT_LSB                                                40
1544*5113495bSYour Name #define RX_MSDU_END_DECAP_FORMAT_MSB                                                41
1545*5113495bSYour Name #define RX_MSDU_END_DECAP_FORMAT_MASK                                               0x0000030000000000
1546*5113495bSYour Name 
1547*5113495bSYour Name 
1548*5113495bSYour Name /* Description		IPV4_PROTO
1549*5113495bSYour Name 
1550*5113495bSYour Name 			Set if L2 layer indicates IPv4 protocol.
1551*5113495bSYour Name */
1552*5113495bSYour Name 
1553*5113495bSYour Name #define RX_MSDU_END_IPV4_PROTO_OFFSET                                               0x0000000000000048
1554*5113495bSYour Name #define RX_MSDU_END_IPV4_PROTO_LSB                                                  42
1555*5113495bSYour Name #define RX_MSDU_END_IPV4_PROTO_MSB                                                  42
1556*5113495bSYour Name #define RX_MSDU_END_IPV4_PROTO_MASK                                                 0x0000040000000000
1557*5113495bSYour Name 
1558*5113495bSYour Name 
1559*5113495bSYour Name /* Description		IPV6_PROTO
1560*5113495bSYour Name 
1561*5113495bSYour Name 			Set if L2 layer indicates IPv6 protocol.
1562*5113495bSYour Name */
1563*5113495bSYour Name 
1564*5113495bSYour Name #define RX_MSDU_END_IPV6_PROTO_OFFSET                                               0x0000000000000048
1565*5113495bSYour Name #define RX_MSDU_END_IPV6_PROTO_LSB                                                  43
1566*5113495bSYour Name #define RX_MSDU_END_IPV6_PROTO_MSB                                                  43
1567*5113495bSYour Name #define RX_MSDU_END_IPV6_PROTO_MASK                                                 0x0000080000000000
1568*5113495bSYour Name 
1569*5113495bSYour Name 
1570*5113495bSYour Name /* Description		TCP_PROTO
1571*5113495bSYour Name 
1572*5113495bSYour Name 			Set if the ipv4_proto or ipv6_proto are set and the IP protocol
1573*5113495bSYour Name 			 indicates TCP.
1574*5113495bSYour Name */
1575*5113495bSYour Name 
1576*5113495bSYour Name #define RX_MSDU_END_TCP_PROTO_OFFSET                                                0x0000000000000048
1577*5113495bSYour Name #define RX_MSDU_END_TCP_PROTO_LSB                                                   44
1578*5113495bSYour Name #define RX_MSDU_END_TCP_PROTO_MSB                                                   44
1579*5113495bSYour Name #define RX_MSDU_END_TCP_PROTO_MASK                                                  0x0000100000000000
1580*5113495bSYour Name 
1581*5113495bSYour Name 
1582*5113495bSYour Name /* Description		UDP_PROTO
1583*5113495bSYour Name 
1584*5113495bSYour Name 			Set if the ipv4_proto or ipv6_proto are set and the IP protocol
1585*5113495bSYour Name 			 indicates UDP.
1586*5113495bSYour Name */
1587*5113495bSYour Name 
1588*5113495bSYour Name #define RX_MSDU_END_UDP_PROTO_OFFSET                                                0x0000000000000048
1589*5113495bSYour Name #define RX_MSDU_END_UDP_PROTO_LSB                                                   45
1590*5113495bSYour Name #define RX_MSDU_END_UDP_PROTO_MSB                                                   45
1591*5113495bSYour Name #define RX_MSDU_END_UDP_PROTO_MASK                                                  0x0000200000000000
1592*5113495bSYour Name 
1593*5113495bSYour Name 
1594*5113495bSYour Name /* Description		IP_FRAG
1595*5113495bSYour Name 
1596*5113495bSYour Name 			Indicates that either the IP More frag bit is set or IP
1597*5113495bSYour Name 			frag number is non-zero.  If set indicates that this is
1598*5113495bSYour Name 			a fragmented IP packet.
1599*5113495bSYour Name */
1600*5113495bSYour Name 
1601*5113495bSYour Name #define RX_MSDU_END_IP_FRAG_OFFSET                                                  0x0000000000000048
1602*5113495bSYour Name #define RX_MSDU_END_IP_FRAG_LSB                                                     46
1603*5113495bSYour Name #define RX_MSDU_END_IP_FRAG_MSB                                                     46
1604*5113495bSYour Name #define RX_MSDU_END_IP_FRAG_MASK                                                    0x0000400000000000
1605*5113495bSYour Name 
1606*5113495bSYour Name 
1607*5113495bSYour Name /* Description		TCP_ONLY_ACK
1608*5113495bSYour Name 
1609*5113495bSYour Name 			Set if only the TCP Ack bit is set in the TCP flags and
1610*5113495bSYour Name 			if the TCP payload is 0.
1611*5113495bSYour Name */
1612*5113495bSYour Name 
1613*5113495bSYour Name #define RX_MSDU_END_TCP_ONLY_ACK_OFFSET                                             0x0000000000000048
1614*5113495bSYour Name #define RX_MSDU_END_TCP_ONLY_ACK_LSB                                                47
1615*5113495bSYour Name #define RX_MSDU_END_TCP_ONLY_ACK_MSB                                                47
1616*5113495bSYour Name #define RX_MSDU_END_TCP_ONLY_ACK_MASK                                               0x0000800000000000
1617*5113495bSYour Name 
1618*5113495bSYour Name 
1619*5113495bSYour Name /* Description		DA_IS_BCAST_MCAST
1620*5113495bSYour Name 
1621*5113495bSYour Name 			The destination address is broadcast or multicast.
1622*5113495bSYour Name */
1623*5113495bSYour Name 
1624*5113495bSYour Name #define RX_MSDU_END_DA_IS_BCAST_MCAST_OFFSET                                        0x0000000000000048
1625*5113495bSYour Name #define RX_MSDU_END_DA_IS_BCAST_MCAST_LSB                                           48
1626*5113495bSYour Name #define RX_MSDU_END_DA_IS_BCAST_MCAST_MSB                                           48
1627*5113495bSYour Name #define RX_MSDU_END_DA_IS_BCAST_MCAST_MASK                                          0x0001000000000000
1628*5113495bSYour Name 
1629*5113495bSYour Name 
1630*5113495bSYour Name /* Description		TOEPLITZ_HASH_SEL
1631*5113495bSYour Name 
1632*5113495bSYour Name 			Actual choosen Hash.
1633*5113495bSYour Name 
1634*5113495bSYour Name 			0 -> Toeplitz hash of 2-tuple (IP source address, IP destination
1635*5113495bSYour Name 			 address)1 -> Toeplitz hash of 4-tuple (IP source address,
1636*5113495bSYour Name 			IP destination address, L4 (TCP/UDP) source port, L4 (TCP/UDP)
1637*5113495bSYour Name 			destination port)
1638*5113495bSYour Name 			2 -> Toeplitz of flow_id
1639*5113495bSYour Name 			3 -> "Zero" is used
1640*5113495bSYour Name 			<legal all>
1641*5113495bSYour Name */
1642*5113495bSYour Name 
1643*5113495bSYour Name #define RX_MSDU_END_TOEPLITZ_HASH_SEL_OFFSET                                        0x0000000000000048
1644*5113495bSYour Name #define RX_MSDU_END_TOEPLITZ_HASH_SEL_LSB                                           49
1645*5113495bSYour Name #define RX_MSDU_END_TOEPLITZ_HASH_SEL_MSB                                           50
1646*5113495bSYour Name #define RX_MSDU_END_TOEPLITZ_HASH_SEL_MASK                                          0x0006000000000000
1647*5113495bSYour Name 
1648*5113495bSYour Name 
1649*5113495bSYour Name /* Description		IP_FIXED_HEADER_VALID
1650*5113495bSYour Name 
1651*5113495bSYour Name 			Fixed 20-byte IPv4 header or 40-byte IPv6 header parsed
1652*5113495bSYour Name 			fully within first 256 bytes of the packet
1653*5113495bSYour Name */
1654*5113495bSYour Name 
1655*5113495bSYour Name #define RX_MSDU_END_IP_FIXED_HEADER_VALID_OFFSET                                    0x0000000000000048
1656*5113495bSYour Name #define RX_MSDU_END_IP_FIXED_HEADER_VALID_LSB                                       51
1657*5113495bSYour Name #define RX_MSDU_END_IP_FIXED_HEADER_VALID_MSB                                       51
1658*5113495bSYour Name #define RX_MSDU_END_IP_FIXED_HEADER_VALID_MASK                                      0x0008000000000000
1659*5113495bSYour Name 
1660*5113495bSYour Name 
1661*5113495bSYour Name /* Description		IP_EXTN_HEADER_VALID
1662*5113495bSYour Name 
1663*5113495bSYour Name 			IPv6/IPv6 header, including IPv4 options and recognizable
1664*5113495bSYour Name 			 extension headers parsed fully within first 256 bytes of
1665*5113495bSYour Name 			 the packet
1666*5113495bSYour Name */
1667*5113495bSYour Name 
1668*5113495bSYour Name #define RX_MSDU_END_IP_EXTN_HEADER_VALID_OFFSET                                     0x0000000000000048
1669*5113495bSYour Name #define RX_MSDU_END_IP_EXTN_HEADER_VALID_LSB                                        52
1670*5113495bSYour Name #define RX_MSDU_END_IP_EXTN_HEADER_VALID_MSB                                        52
1671*5113495bSYour Name #define RX_MSDU_END_IP_EXTN_HEADER_VALID_MASK                                       0x0010000000000000
1672*5113495bSYour Name 
1673*5113495bSYour Name 
1674*5113495bSYour Name /* Description		TCP_UDP_HEADER_VALID
1675*5113495bSYour Name 
1676*5113495bSYour Name 			Fixed 20-byte TCP (excluding TCP options) or 8-byte UDP
1677*5113495bSYour Name 			header parsed fully within first 256 bytes of the packet
1678*5113495bSYour Name 
1679*5113495bSYour Name */
1680*5113495bSYour Name 
1681*5113495bSYour Name #define RX_MSDU_END_TCP_UDP_HEADER_VALID_OFFSET                                     0x0000000000000048
1682*5113495bSYour Name #define RX_MSDU_END_TCP_UDP_HEADER_VALID_LSB                                        53
1683*5113495bSYour Name #define RX_MSDU_END_TCP_UDP_HEADER_VALID_MSB                                        53
1684*5113495bSYour Name #define RX_MSDU_END_TCP_UDP_HEADER_VALID_MASK                                       0x0020000000000000
1685*5113495bSYour Name 
1686*5113495bSYour Name 
1687*5113495bSYour Name /* Description		MESH_CONTROL_PRESENT
1688*5113495bSYour Name 
1689*5113495bSYour Name 			When set, this MSDU includes the 'Mesh Control' field
1690*5113495bSYour Name 			<legal all>
1691*5113495bSYour Name */
1692*5113495bSYour Name 
1693*5113495bSYour Name #define RX_MSDU_END_MESH_CONTROL_PRESENT_OFFSET                                     0x0000000000000048
1694*5113495bSYour Name #define RX_MSDU_END_MESH_CONTROL_PRESENT_LSB                                        54
1695*5113495bSYour Name #define RX_MSDU_END_MESH_CONTROL_PRESENT_MSB                                        54
1696*5113495bSYour Name #define RX_MSDU_END_MESH_CONTROL_PRESENT_MASK                                       0x0040000000000000
1697*5113495bSYour Name 
1698*5113495bSYour Name 
1699*5113495bSYour Name /* Description		LDPC
1700*5113495bSYour Name 
1701*5113495bSYour Name 			When set, indicates that LDPC coding was used.
1702*5113495bSYour Name 			<legal all>
1703*5113495bSYour Name */
1704*5113495bSYour Name 
1705*5113495bSYour Name #define RX_MSDU_END_LDPC_OFFSET                                                     0x0000000000000048
1706*5113495bSYour Name #define RX_MSDU_END_LDPC_LSB                                                        55
1707*5113495bSYour Name #define RX_MSDU_END_LDPC_MSB                                                        55
1708*5113495bSYour Name #define RX_MSDU_END_LDPC_MASK                                                       0x0080000000000000
1709*5113495bSYour Name 
1710*5113495bSYour Name 
1711*5113495bSYour Name /* Description		IP4_PROTOCOL_IP6_NEXT_HEADER
1712*5113495bSYour Name 
1713*5113495bSYour Name 			For IPv4 this is the 8 bit protocol field (when ipv4_proto
1714*5113495bSYour Name 			 is set).  For IPv6 this is the 8 bit next_header field (when
1715*5113495bSYour Name 			 ipv6_proto is set).
1716*5113495bSYour Name */
1717*5113495bSYour Name 
1718*5113495bSYour Name #define RX_MSDU_END_IP4_PROTOCOL_IP6_NEXT_HEADER_OFFSET                             0x0000000000000048
1719*5113495bSYour Name #define RX_MSDU_END_IP4_PROTOCOL_IP6_NEXT_HEADER_LSB                                56
1720*5113495bSYour Name #define RX_MSDU_END_IP4_PROTOCOL_IP6_NEXT_HEADER_MSB                                63
1721*5113495bSYour Name #define RX_MSDU_END_IP4_PROTOCOL_IP6_NEXT_HEADER_MASK                               0xff00000000000000
1722*5113495bSYour Name 
1723*5113495bSYour Name 
1724*5113495bSYour Name 
1725*5113495bSYour Name #define RX_MSDU_END_VLAN_CTAG_CI_OFFSET                                             0x0000000000000050
1726*5113495bSYour Name #define RX_MSDU_END_VLAN_CTAG_CI_LSB                                                0
1727*5113495bSYour Name #define RX_MSDU_END_VLAN_CTAG_CI_MSB                                                15
1728*5113495bSYour Name #define RX_MSDU_END_VLAN_CTAG_CI_MASK                                               0x000000000000ffff
1729*5113495bSYour Name 
1730*5113495bSYour Name 
1731*5113495bSYour Name 
1732*5113495bSYour Name #define RX_MSDU_END_VLAN_STAG_CI_OFFSET                                             0x0000000000000050
1733*5113495bSYour Name #define RX_MSDU_END_VLAN_STAG_CI_LSB                                                16
1734*5113495bSYour Name #define RX_MSDU_END_VLAN_STAG_CI_MSB                                                31
1735*5113495bSYour Name #define RX_MSDU_END_VLAN_STAG_CI_MASK                                               0x00000000ffff0000
1736*5113495bSYour Name 
1737*5113495bSYour Name 
1738*5113495bSYour Name #define RX_MSDU_END_PEER_META_DATA_OFFSET                                           0x0000000000000050
1739*5113495bSYour Name #define RX_MSDU_END_PEER_META_DATA_LSB                                              32
1740*5113495bSYour Name #define RX_MSDU_END_PEER_META_DATA_MSB                                              63
1741*5113495bSYour Name #define RX_MSDU_END_PEER_META_DATA_MASK                                             0xffffffff00000000
1742*5113495bSYour Name 
1743*5113495bSYour Name 
1744*5113495bSYour Name /* Description		USER_RSSI
1745*5113495bSYour Name 
1746*5113495bSYour Name 			RSSI for this user
1747*5113495bSYour Name 			<legal all>
1748*5113495bSYour Name */
1749*5113495bSYour Name 
1750*5113495bSYour Name #define RX_MSDU_END_USER_RSSI_OFFSET                                                0x0000000000000058
1751*5113495bSYour Name #define RX_MSDU_END_USER_RSSI_LSB                                                   0
1752*5113495bSYour Name #define RX_MSDU_END_USER_RSSI_MSB                                                   7
1753*5113495bSYour Name #define RX_MSDU_END_USER_RSSI_MASK                                                  0x00000000000000ff
1754*5113495bSYour Name 
1755*5113495bSYour Name 
1756*5113495bSYour Name /* Description		PKT_TYPE
1757*5113495bSYour Name 
1758*5113495bSYour Name 			Packet type:
1759*5113495bSYour Name 			<enum 0 dot11a>802.11a PPDU type
1760*5113495bSYour Name 			<enum 1 dot11b>802.11b PPDU type
1761*5113495bSYour Name 			<enum 2 dot11n_mm>802.11n Mixed Mode PPDU type
1762*5113495bSYour Name 			<enum 3 dot11ac>802.11ac PPDU type
1763*5113495bSYour Name 			<enum 4 dot11ax>802.11ax PPDU type
1764*5113495bSYour Name 			<enum 5 dot11ba>802.11ba (WUR) PPDU type
1765*5113495bSYour Name 			<enum 6 dot11be>802.11be PPDU type
1766*5113495bSYour Name 			<enum 7 dot11az>802.11az (ranging) PPDU type
1767*5113495bSYour Name 			<enum 8 dot11n_gf>802.11n Green Field PPDU type (unsupported
1768*5113495bSYour Name 			 & aborted)
1769*5113495bSYour Name */
1770*5113495bSYour Name 
1771*5113495bSYour Name #define RX_MSDU_END_PKT_TYPE_OFFSET                                                 0x0000000000000058
1772*5113495bSYour Name #define RX_MSDU_END_PKT_TYPE_LSB                                                    8
1773*5113495bSYour Name #define RX_MSDU_END_PKT_TYPE_MSB                                                    11
1774*5113495bSYour Name #define RX_MSDU_END_PKT_TYPE_MASK                                                   0x0000000000000f00
1775*5113495bSYour Name 
1776*5113495bSYour Name 
1777*5113495bSYour Name /* Description		SGI
1778*5113495bSYour Name 
1779*5113495bSYour Name 			Field only valid when pkt type is HT, VHT or HE.
1780*5113495bSYour Name 
1781*5113495bSYour Name 			<enum 0     0_8_us_sgi > Legacy normal GI. Can also be used
1782*5113495bSYour Name 			 for HE
1783*5113495bSYour Name 			<enum 1     0_4_us_sgi > Legacy short GI. Can also be used
1784*5113495bSYour Name 			 for HE
1785*5113495bSYour Name 			<enum 2     1_6_us_sgi > HE related GI
1786*5113495bSYour Name 			<enum 3     3_2_us_sgi > HE related GI
1787*5113495bSYour Name 			<legal 0 - 3>
1788*5113495bSYour Name */
1789*5113495bSYour Name 
1790*5113495bSYour Name #define RX_MSDU_END_SGI_OFFSET                                                      0x0000000000000058
1791*5113495bSYour Name #define RX_MSDU_END_SGI_LSB                                                         12
1792*5113495bSYour Name #define RX_MSDU_END_SGI_MSB                                                         13
1793*5113495bSYour Name #define RX_MSDU_END_SGI_MASK                                                        0x0000000000003000
1794*5113495bSYour Name 
1795*5113495bSYour Name 
1796*5113495bSYour Name /* Description		RATE_MCS
1797*5113495bSYour Name 
1798*5113495bSYour Name 			For details, refer to  MCS_TYPE description
1799*5113495bSYour Name 			Note: This is "rate" in case of 11a/11b
1800*5113495bSYour Name 
1801*5113495bSYour Name 			<legal all>
1802*5113495bSYour Name */
1803*5113495bSYour Name 
1804*5113495bSYour Name #define RX_MSDU_END_RATE_MCS_OFFSET                                                 0x0000000000000058
1805*5113495bSYour Name #define RX_MSDU_END_RATE_MCS_LSB                                                    14
1806*5113495bSYour Name #define RX_MSDU_END_RATE_MCS_MSB                                                    17
1807*5113495bSYour Name #define RX_MSDU_END_RATE_MCS_MASK                                                   0x000000000003c000
1808*5113495bSYour Name 
1809*5113495bSYour Name 
1810*5113495bSYour Name /* Description		RECEIVE_BANDWIDTH
1811*5113495bSYour Name 
1812*5113495bSYour Name 			Full receive Bandwidth
1813*5113495bSYour Name 
1814*5113495bSYour Name 			<enum 0 20_mhz>20 Mhz BW
1815*5113495bSYour Name 			<enum 1 40_mhz>40 Mhz BW
1816*5113495bSYour Name 			<enum 2 80_mhz>80 Mhz BW
1817*5113495bSYour Name 			<enum 3 160_mhz>160 Mhz BW
1818*5113495bSYour Name 			<enum 4 320_mhz>320 Mhz BW
1819*5113495bSYour Name 			<enum 5 240_mhz>240 Mhz BW
1820*5113495bSYour Name */
1821*5113495bSYour Name 
1822*5113495bSYour Name #define RX_MSDU_END_RECEIVE_BANDWIDTH_OFFSET                                        0x0000000000000058
1823*5113495bSYour Name #define RX_MSDU_END_RECEIVE_BANDWIDTH_LSB                                           18
1824*5113495bSYour Name #define RX_MSDU_END_RECEIVE_BANDWIDTH_MSB                                           20
1825*5113495bSYour Name #define RX_MSDU_END_RECEIVE_BANDWIDTH_MASK                                          0x00000000001c0000
1826*5113495bSYour Name 
1827*5113495bSYour Name 
1828*5113495bSYour Name #define RX_MSDU_END_RECEPTION_TYPE_OFFSET                                           0x0000000000000058
1829*5113495bSYour Name #define RX_MSDU_END_RECEPTION_TYPE_LSB                                              21
1830*5113495bSYour Name #define RX_MSDU_END_RECEPTION_TYPE_MSB                                              23
1831*5113495bSYour Name #define RX_MSDU_END_RECEPTION_TYPE_MASK                                             0x0000000000e00000
1832*5113495bSYour Name 
1833*5113495bSYour Name 
1834*5113495bSYour Name /* Description		MIMO_SS_BITMAP
1835*5113495bSYour Name 
1836*5113495bSYour Name 			Field only valid when Reception_type for the MPDU from this
1837*5113495bSYour Name 			 STA is some form of MIMO reception
1838*5113495bSYour Name 
1839*5113495bSYour Name 			Bitmap, with each bit indicating if the related spatial
1840*5113495bSYour Name 			stream is used for this STA
1841*5113495bSYour Name 			LSB related to SS 0
1842*5113495bSYour Name 
1843*5113495bSYour Name 			0: spatial stream not used for this reception
1844*5113495bSYour Name 			1: spatial stream used for this reception
1845*5113495bSYour Name 
1846*5113495bSYour Name 			Note: Only 7 bits are reported here to accommodate field
1847*5113495bSYour Name 			 'msdu_done_copy.'
1848*5113495bSYour Name 			<legal all>
1849*5113495bSYour Name */
1850*5113495bSYour Name 
1851*5113495bSYour Name #define RX_MSDU_END_MIMO_SS_BITMAP_OFFSET                                           0x0000000000000058
1852*5113495bSYour Name #define RX_MSDU_END_MIMO_SS_BITMAP_LSB                                              24
1853*5113495bSYour Name #define RX_MSDU_END_MIMO_SS_BITMAP_MSB                                              30
1854*5113495bSYour Name #define RX_MSDU_END_MIMO_SS_BITMAP_MASK                                             0x000000007f000000
1855*5113495bSYour Name 
1856*5113495bSYour Name 
1857*5113495bSYour Name /* Description		MSDU_DONE_COPY
1858*5113495bSYour Name 
1859*5113495bSYour Name 			If set indicates that the RX packet data, RX header data,
1860*5113495bSYour Name 			RX PPDU start descriptor, RX MPDU start/end descriptor,
1861*5113495bSYour Name 			RX MSDU start/end descriptors and RX Attention descriptor
1862*5113495bSYour Name 			are all valid.
1863*5113495bSYour Name 
1864*5113495bSYour Name 			<legal 1>
1865*5113495bSYour Name */
1866*5113495bSYour Name 
1867*5113495bSYour Name #define RX_MSDU_END_MSDU_DONE_COPY_OFFSET                                           0x0000000000000058
1868*5113495bSYour Name #define RX_MSDU_END_MSDU_DONE_COPY_LSB                                              31
1869*5113495bSYour Name #define RX_MSDU_END_MSDU_DONE_COPY_MSB                                              31
1870*5113495bSYour Name #define RX_MSDU_END_MSDU_DONE_COPY_MASK                                             0x0000000080000000
1871*5113495bSYour Name 
1872*5113495bSYour Name 
1873*5113495bSYour Name #define RX_MSDU_END_FLOW_ID_TOEPLITZ_OFFSET                                         0x0000000000000058
1874*5113495bSYour Name #define RX_MSDU_END_FLOW_ID_TOEPLITZ_LSB                                            32
1875*5113495bSYour Name #define RX_MSDU_END_FLOW_ID_TOEPLITZ_MSB                                            63
1876*5113495bSYour Name #define RX_MSDU_END_FLOW_ID_TOEPLITZ_MASK                                           0xffffffff00000000
1877*5113495bSYour Name 
1878*5113495bSYour Name 
1879*5113495bSYour Name /* Description		PPDU_START_TIMESTAMP_63_32
1880*5113495bSYour Name 
1881*5113495bSYour Name 			Timestamp that indicates when the PPDU that contained this
1882*5113495bSYour Name 			 MPDU started on the medium, upper 32 bits
1883*5113495bSYour Name 			<legal all>
1884*5113495bSYour Name */
1885*5113495bSYour Name 
1886*5113495bSYour Name #define RX_MSDU_END_PPDU_START_TIMESTAMP_63_32_OFFSET                               0x0000000000000060
1887*5113495bSYour Name #define RX_MSDU_END_PPDU_START_TIMESTAMP_63_32_LSB                                  0
1888*5113495bSYour Name #define RX_MSDU_END_PPDU_START_TIMESTAMP_63_32_MSB                                  31
1889*5113495bSYour Name #define RX_MSDU_END_PPDU_START_TIMESTAMP_63_32_MASK                                 0x00000000ffffffff
1890*5113495bSYour Name 
1891*5113495bSYour Name 
1892*5113495bSYour Name /* Description		SW_PHY_META_DATA
1893*5113495bSYour Name 
1894*5113495bSYour Name 			SW programmed Meta data provided by the PHY.
1895*5113495bSYour Name 
1896*5113495bSYour Name 			Can be used for SW to indicate the channel the device is
1897*5113495bSYour Name 			 on.
1898*5113495bSYour Name 			<legal all>
1899*5113495bSYour Name */
1900*5113495bSYour Name 
1901*5113495bSYour Name #define RX_MSDU_END_SW_PHY_META_DATA_OFFSET                                         0x0000000000000060
1902*5113495bSYour Name #define RX_MSDU_END_SW_PHY_META_DATA_LSB                                            32
1903*5113495bSYour Name #define RX_MSDU_END_SW_PHY_META_DATA_MSB                                            63
1904*5113495bSYour Name #define RX_MSDU_END_SW_PHY_META_DATA_MASK                                           0xffffffff00000000
1905*5113495bSYour Name 
1906*5113495bSYour Name 
1907*5113495bSYour Name #define RX_MSDU_END_PPDU_START_TIMESTAMP_31_0_OFFSET                                0x0000000000000068
1908*5113495bSYour Name #define RX_MSDU_END_PPDU_START_TIMESTAMP_31_0_LSB                                   0
1909*5113495bSYour Name #define RX_MSDU_END_PPDU_START_TIMESTAMP_31_0_MSB                                   31
1910*5113495bSYour Name #define RX_MSDU_END_PPDU_START_TIMESTAMP_31_0_MASK                                  0x00000000ffffffff
1911*5113495bSYour Name 
1912*5113495bSYour Name 
1913*5113495bSYour Name /* Description		TOEPLITZ_HASH_2_OR_4
1914*5113495bSYour Name 
1915*5113495bSYour Name 			Controlled by multiple RxOLE registers for TCP/UDP over
1916*5113495bSYour Name 			IPv4/IPv6 - Either, Toeplitz hash computed over 2-tuple
1917*5113495bSYour Name 			IPv4 or IPv6 src/dest addresses is reported; or, Toeplitz
1918*5113495bSYour Name 			 hash computed over 4-tuple IPv4 or IPv6 src/dest addresses
1919*5113495bSYour Name 			 and src/dest ports is reported. The Flow_id_toeplitz hash
1920*5113495bSYour Name 			 can also be reported here. Usually the hash reported here
1921*5113495bSYour Name 			 is the one used for hash-based REO routing (see use_flow_id_toeplitz_clfy
1922*5113495bSYour Name 			 in 'RXPT_CLASSIFY_INFO').
1923*5113495bSYour Name 
1924*5113495bSYour Name 			Optionally the 3-tuple Toeplitz hash over IPv4
1925*5113495bSYour Name 			or IPv6 src/dest addresses and L4 protocol can be reported
1926*5113495bSYour Name */
1927*5113495bSYour Name 
1928*5113495bSYour Name #define RX_MSDU_END_TOEPLITZ_HASH_2_OR_4_OFFSET                                     0x0000000000000068
1929*5113495bSYour Name #define RX_MSDU_END_TOEPLITZ_HASH_2_OR_4_LSB                                        32
1930*5113495bSYour Name #define RX_MSDU_END_TOEPLITZ_HASH_2_OR_4_MSB                                        63
1931*5113495bSYour Name #define RX_MSDU_END_TOEPLITZ_HASH_2_OR_4_MASK                                       0xffffffff00000000
1932*5113495bSYour Name 
1933*5113495bSYour Name 
1934*5113495bSYour Name /* Description		RESERVED_28A
1935*5113495bSYour Name 
1936*5113495bSYour Name 			<legal 0>
1937*5113495bSYour Name */
1938*5113495bSYour Name 
1939*5113495bSYour Name #define RX_MSDU_END_RESERVED_28A_OFFSET                                             0x0000000000000070
1940*5113495bSYour Name #define RX_MSDU_END_RESERVED_28A_LSB                                                0
1941*5113495bSYour Name #define RX_MSDU_END_RESERVED_28A_MSB                                                15
1942*5113495bSYour Name #define RX_MSDU_END_RESERVED_28A_MASK                                               0x000000000000ffff
1943*5113495bSYour Name 
1944*5113495bSYour Name 
1945*5113495bSYour Name /* Description		SA_15_0
1946*5113495bSYour Name 
1947*5113495bSYour Name 			Source MAC address bits [15:0] (with the fifth byte in the
1948*5113495bSYour Name 			 MSB and the last byte in the LSB, i.e. requiring a byte-swap
1949*5113495bSYour Name 			 for little-endian FW)
1950*5113495bSYour Name */
1951*5113495bSYour Name 
1952*5113495bSYour Name #define RX_MSDU_END_SA_15_0_OFFSET                                                  0x0000000000000070
1953*5113495bSYour Name #define RX_MSDU_END_SA_15_0_LSB                                                     16
1954*5113495bSYour Name #define RX_MSDU_END_SA_15_0_MSB                                                     31
1955*5113495bSYour Name #define RX_MSDU_END_SA_15_0_MASK                                                    0x00000000ffff0000
1956*5113495bSYour Name 
1957*5113495bSYour Name 
1958*5113495bSYour Name /* Description		SA_47_16
1959*5113495bSYour Name 
1960*5113495bSYour Name 			Source MAC address bits [47:16] (with the first byte in
1961*5113495bSYour Name 			the MSB and the fourth byte in the LSB, i.e. requiring a
1962*5113495bSYour Name 			 byte-swap for little-endian FW)
1963*5113495bSYour Name */
1964*5113495bSYour Name 
1965*5113495bSYour Name #define RX_MSDU_END_SA_47_16_OFFSET                                                 0x0000000000000070
1966*5113495bSYour Name #define RX_MSDU_END_SA_47_16_LSB                                                    32
1967*5113495bSYour Name #define RX_MSDU_END_SA_47_16_MSB                                                    63
1968*5113495bSYour Name #define RX_MSDU_END_SA_47_16_MASK                                                   0xffffffff00000000
1969*5113495bSYour Name 
1970*5113495bSYour Name 
1971*5113495bSYour Name #define RX_MSDU_END_FIRST_MPDU_OFFSET                                               0x0000000000000078
1972*5113495bSYour Name #define RX_MSDU_END_FIRST_MPDU_LSB                                                  0
1973*5113495bSYour Name #define RX_MSDU_END_FIRST_MPDU_MSB                                                  0
1974*5113495bSYour Name #define RX_MSDU_END_FIRST_MPDU_MASK                                                 0x0000000000000001
1975*5113495bSYour Name 
1976*5113495bSYour Name 
1977*5113495bSYour Name /* Description		RESERVED_30A
1978*5113495bSYour Name 
1979*5113495bSYour Name 			<legal 0>
1980*5113495bSYour Name */
1981*5113495bSYour Name 
1982*5113495bSYour Name #define RX_MSDU_END_RESERVED_30A_OFFSET                                             0x0000000000000078
1983*5113495bSYour Name #define RX_MSDU_END_RESERVED_30A_LSB                                                1
1984*5113495bSYour Name #define RX_MSDU_END_RESERVED_30A_MSB                                                1
1985*5113495bSYour Name #define RX_MSDU_END_RESERVED_30A_MASK                                               0x0000000000000002
1986*5113495bSYour Name 
1987*5113495bSYour Name 
1988*5113495bSYour Name /* Description		MCAST_BCAST
1989*5113495bSYour Name 
1990*5113495bSYour Name 			Multicast / broadcast indicator.  Only set when the MAC
1991*5113495bSYour Name 			address 1 bit 0 is set indicating mcast/bcast and the BSSID
1992*5113495bSYour Name 			 matches one of the 4 BSSID registers. Only set when first_msdu
1993*5113495bSYour Name 			 is set.
1994*5113495bSYour Name */
1995*5113495bSYour Name 
1996*5113495bSYour Name #define RX_MSDU_END_MCAST_BCAST_OFFSET                                              0x0000000000000078
1997*5113495bSYour Name #define RX_MSDU_END_MCAST_BCAST_LSB                                                 2
1998*5113495bSYour Name #define RX_MSDU_END_MCAST_BCAST_MSB                                                 2
1999*5113495bSYour Name #define RX_MSDU_END_MCAST_BCAST_MASK                                                0x0000000000000004
2000*5113495bSYour Name 
2001*5113495bSYour Name 
2002*5113495bSYour Name /* Description		AST_INDEX_NOT_FOUND
2003*5113495bSYour Name 
2004*5113495bSYour Name 			Only valid when first_msdu is set.
2005*5113495bSYour Name 
2006*5113495bSYour Name 			Indicates no AST matching entries within the the max search
2007*5113495bSYour Name 			 count.
2008*5113495bSYour Name */
2009*5113495bSYour Name 
2010*5113495bSYour Name #define RX_MSDU_END_AST_INDEX_NOT_FOUND_OFFSET                                      0x0000000000000078
2011*5113495bSYour Name #define RX_MSDU_END_AST_INDEX_NOT_FOUND_LSB                                         3
2012*5113495bSYour Name #define RX_MSDU_END_AST_INDEX_NOT_FOUND_MSB                                         3
2013*5113495bSYour Name #define RX_MSDU_END_AST_INDEX_NOT_FOUND_MASK                                        0x0000000000000008
2014*5113495bSYour Name 
2015*5113495bSYour Name 
2016*5113495bSYour Name /* Description		AST_INDEX_TIMEOUT
2017*5113495bSYour Name 
2018*5113495bSYour Name 			Only valid when first_msdu is set.
2019*5113495bSYour Name 
2020*5113495bSYour Name 			Indicates an unsuccessful search in the address seach table
2021*5113495bSYour Name 			 due to timeout.
2022*5113495bSYour Name */
2023*5113495bSYour Name 
2024*5113495bSYour Name #define RX_MSDU_END_AST_INDEX_TIMEOUT_OFFSET                                        0x0000000000000078
2025*5113495bSYour Name #define RX_MSDU_END_AST_INDEX_TIMEOUT_LSB                                           4
2026*5113495bSYour Name #define RX_MSDU_END_AST_INDEX_TIMEOUT_MSB                                           4
2027*5113495bSYour Name #define RX_MSDU_END_AST_INDEX_TIMEOUT_MASK                                          0x0000000000000010
2028*5113495bSYour Name 
2029*5113495bSYour Name 
2030*5113495bSYour Name /* Description		POWER_MGMT
2031*5113495bSYour Name 
2032*5113495bSYour Name 			Power management bit set in the 802.11 header.  Only set
2033*5113495bSYour Name 			 when first_msdu is set.
2034*5113495bSYour Name */
2035*5113495bSYour Name 
2036*5113495bSYour Name #define RX_MSDU_END_POWER_MGMT_OFFSET                                               0x0000000000000078
2037*5113495bSYour Name #define RX_MSDU_END_POWER_MGMT_LSB                                                  5
2038*5113495bSYour Name #define RX_MSDU_END_POWER_MGMT_MSB                                                  5
2039*5113495bSYour Name #define RX_MSDU_END_POWER_MGMT_MASK                                                 0x0000000000000020
2040*5113495bSYour Name 
2041*5113495bSYour Name 
2042*5113495bSYour Name /* Description		NON_QOS
2043*5113495bSYour Name 
2044*5113495bSYour Name 			Set if packet is not a non-QoS data frame.  Only set when
2045*5113495bSYour Name 			 first_msdu is set.
2046*5113495bSYour Name */
2047*5113495bSYour Name 
2048*5113495bSYour Name #define RX_MSDU_END_NON_QOS_OFFSET                                                  0x0000000000000078
2049*5113495bSYour Name #define RX_MSDU_END_NON_QOS_LSB                                                     6
2050*5113495bSYour Name #define RX_MSDU_END_NON_QOS_MSB                                                     6
2051*5113495bSYour Name #define RX_MSDU_END_NON_QOS_MASK                                                    0x0000000000000040
2052*5113495bSYour Name 
2053*5113495bSYour Name 
2054*5113495bSYour Name /* Description		NULL_DATA
2055*5113495bSYour Name 
2056*5113495bSYour Name 			Set if frame type indicates either null data or QoS null
2057*5113495bSYour Name 			 data format.  Only set when first_msdu is set.
2058*5113495bSYour Name */
2059*5113495bSYour Name 
2060*5113495bSYour Name #define RX_MSDU_END_NULL_DATA_OFFSET                                                0x0000000000000078
2061*5113495bSYour Name #define RX_MSDU_END_NULL_DATA_LSB                                                   7
2062*5113495bSYour Name #define RX_MSDU_END_NULL_DATA_MSB                                                   7
2063*5113495bSYour Name #define RX_MSDU_END_NULL_DATA_MASK                                                  0x0000000000000080
2064*5113495bSYour Name 
2065*5113495bSYour Name 
2066*5113495bSYour Name /* Description		MGMT_TYPE
2067*5113495bSYour Name 
2068*5113495bSYour Name 			Set if packet is a management packet.  Only set when first_msdu
2069*5113495bSYour Name 			 is set.
2070*5113495bSYour Name */
2071*5113495bSYour Name 
2072*5113495bSYour Name #define RX_MSDU_END_MGMT_TYPE_OFFSET                                                0x0000000000000078
2073*5113495bSYour Name #define RX_MSDU_END_MGMT_TYPE_LSB                                                   8
2074*5113495bSYour Name #define RX_MSDU_END_MGMT_TYPE_MSB                                                   8
2075*5113495bSYour Name #define RX_MSDU_END_MGMT_TYPE_MASK                                                  0x0000000000000100
2076*5113495bSYour Name 
2077*5113495bSYour Name 
2078*5113495bSYour Name /* Description		CTRL_TYPE
2079*5113495bSYour Name 
2080*5113495bSYour Name 			Set if packet is a control packet.  Only set when first_msdu
2081*5113495bSYour Name 			 is set.
2082*5113495bSYour Name */
2083*5113495bSYour Name 
2084*5113495bSYour Name #define RX_MSDU_END_CTRL_TYPE_OFFSET                                                0x0000000000000078
2085*5113495bSYour Name #define RX_MSDU_END_CTRL_TYPE_LSB                                                   9
2086*5113495bSYour Name #define RX_MSDU_END_CTRL_TYPE_MSB                                                   9
2087*5113495bSYour Name #define RX_MSDU_END_CTRL_TYPE_MASK                                                  0x0000000000000200
2088*5113495bSYour Name 
2089*5113495bSYour Name 
2090*5113495bSYour Name /* Description		MORE_DATA
2091*5113495bSYour Name 
2092*5113495bSYour Name 			Set if more bit in frame control is set.  Only set when
2093*5113495bSYour Name 			first_msdu is set.
2094*5113495bSYour Name */
2095*5113495bSYour Name 
2096*5113495bSYour Name #define RX_MSDU_END_MORE_DATA_OFFSET                                                0x0000000000000078
2097*5113495bSYour Name #define RX_MSDU_END_MORE_DATA_LSB                                                   10
2098*5113495bSYour Name #define RX_MSDU_END_MORE_DATA_MSB                                                   10
2099*5113495bSYour Name #define RX_MSDU_END_MORE_DATA_MASK                                                  0x0000000000000400
2100*5113495bSYour Name 
2101*5113495bSYour Name 
2102*5113495bSYour Name /* Description		EOSP
2103*5113495bSYour Name 
2104*5113495bSYour Name 			Set if the EOSP (end of service period) bit in the QoS control
2105*5113495bSYour Name 			 field is set.  Only set when first_msdu is set.
2106*5113495bSYour Name */
2107*5113495bSYour Name 
2108*5113495bSYour Name #define RX_MSDU_END_EOSP_OFFSET                                                     0x0000000000000078
2109*5113495bSYour Name #define RX_MSDU_END_EOSP_LSB                                                        11
2110*5113495bSYour Name #define RX_MSDU_END_EOSP_MSB                                                        11
2111*5113495bSYour Name #define RX_MSDU_END_EOSP_MASK                                                       0x0000000000000800
2112*5113495bSYour Name 
2113*5113495bSYour Name 
2114*5113495bSYour Name /* Description		A_MSDU_ERROR
2115*5113495bSYour Name 
2116*5113495bSYour Name 			Set if number of MSDUs in A-MSDU is above a threshold or
2117*5113495bSYour Name 			 if the size of the MSDU is invalid.  This receive buffer
2118*5113495bSYour Name 			 will contain all of the remainder of the MSDUs in this
2119*5113495bSYour Name 			MPDU without decapsulation.
2120*5113495bSYour Name */
2121*5113495bSYour Name 
2122*5113495bSYour Name #define RX_MSDU_END_A_MSDU_ERROR_OFFSET                                             0x0000000000000078
2123*5113495bSYour Name #define RX_MSDU_END_A_MSDU_ERROR_LSB                                                12
2124*5113495bSYour Name #define RX_MSDU_END_A_MSDU_ERROR_MSB                                                12
2125*5113495bSYour Name #define RX_MSDU_END_A_MSDU_ERROR_MASK                                               0x0000000000001000
2126*5113495bSYour Name 
2127*5113495bSYour Name 
2128*5113495bSYour Name #define RX_MSDU_END_RESERVED_30B_OFFSET                                             0x0000000000000078
2129*5113495bSYour Name #define RX_MSDU_END_RESERVED_30B_LSB                                                13
2130*5113495bSYour Name #define RX_MSDU_END_RESERVED_30B_MSB                                                13
2131*5113495bSYour Name #define RX_MSDU_END_RESERVED_30B_MASK                                               0x0000000000002000
2132*5113495bSYour Name 
2133*5113495bSYour Name 
2134*5113495bSYour Name /* Description		ORDER
2135*5113495bSYour Name 
2136*5113495bSYour Name 			Set if the order bit in the frame control is set.  Only
2137*5113495bSYour Name 			set when first_msdu is set.
2138*5113495bSYour Name */
2139*5113495bSYour Name 
2140*5113495bSYour Name #define RX_MSDU_END_ORDER_OFFSET                                                    0x0000000000000078
2141*5113495bSYour Name #define RX_MSDU_END_ORDER_LSB                                                       14
2142*5113495bSYour Name #define RX_MSDU_END_ORDER_MSB                                                       14
2143*5113495bSYour Name #define RX_MSDU_END_ORDER_MASK                                                      0x0000000000004000
2144*5113495bSYour Name 
2145*5113495bSYour Name 
2146*5113495bSYour Name /* Description		WIFI_PARSER_ERROR
2147*5113495bSYour Name 
2148*5113495bSYour Name 			Indicates that the WiFi frame has one of the following errors
2149*5113495bSYour Name 
2150*5113495bSYour Name 			o has less than minimum allowed bytes as per standard
2151*5113495bSYour Name 			o has incomplete VLAN LLC/SNAP (only for non A-MSDUs)
2152*5113495bSYour Name 			<legal all>
2153*5113495bSYour Name */
2154*5113495bSYour Name 
2155*5113495bSYour Name #define RX_MSDU_END_WIFI_PARSER_ERROR_OFFSET                                        0x0000000000000078
2156*5113495bSYour Name #define RX_MSDU_END_WIFI_PARSER_ERROR_LSB                                           15
2157*5113495bSYour Name #define RX_MSDU_END_WIFI_PARSER_ERROR_MSB                                           15
2158*5113495bSYour Name #define RX_MSDU_END_WIFI_PARSER_ERROR_MASK                                          0x0000000000008000
2159*5113495bSYour Name 
2160*5113495bSYour Name 
2161*5113495bSYour Name /* Description		OVERFLOW_ERR
2162*5113495bSYour Name 
2163*5113495bSYour Name 			RXPCU Receive FIFO ran out of space to receive the full
2164*5113495bSYour Name 			MPDU. Therefor this MPDU is terminated early and is thus
2165*5113495bSYour Name 			 corrupted.
2166*5113495bSYour Name 
2167*5113495bSYour Name 			This MPDU will not be ACKed.
2168*5113495bSYour Name 			RXPCU might still be able to correctly receive the following
2169*5113495bSYour Name 			 MPDUs in the PPDU if enough fifo space became available
2170*5113495bSYour Name 			 in time
2171*5113495bSYour Name */
2172*5113495bSYour Name 
2173*5113495bSYour Name #define RX_MSDU_END_OVERFLOW_ERR_OFFSET                                             0x0000000000000078
2174*5113495bSYour Name #define RX_MSDU_END_OVERFLOW_ERR_LSB                                                16
2175*5113495bSYour Name #define RX_MSDU_END_OVERFLOW_ERR_MSB                                                16
2176*5113495bSYour Name #define RX_MSDU_END_OVERFLOW_ERR_MASK                                               0x0000000000010000
2177*5113495bSYour Name 
2178*5113495bSYour Name 
2179*5113495bSYour Name /* Description		MSDU_LENGTH_ERR
2180*5113495bSYour Name 
2181*5113495bSYour Name 			Indicates that the MSDU length from the 802.3 encapsulated
2182*5113495bSYour Name 			 length field extends beyond the MPDU boundary or if the
2183*5113495bSYour Name 			 length is less than 14 bytes.
2184*5113495bSYour Name 			Merged with original "other_msdu_err": Indicates that the
2185*5113495bSYour Name 			 MSDU threshold was exceeded and thus all the rest of the
2186*5113495bSYour Name 			 MSDUs will not be scattered and will not be decasulated
2187*5113495bSYour Name 			 but will be DMA'ed in RAW format as a single MSDU buffer
2188*5113495bSYour Name 
2189*5113495bSYour Name */
2190*5113495bSYour Name 
2191*5113495bSYour Name #define RX_MSDU_END_MSDU_LENGTH_ERR_OFFSET                                          0x0000000000000078
2192*5113495bSYour Name #define RX_MSDU_END_MSDU_LENGTH_ERR_LSB                                             17
2193*5113495bSYour Name #define RX_MSDU_END_MSDU_LENGTH_ERR_MSB                                             17
2194*5113495bSYour Name #define RX_MSDU_END_MSDU_LENGTH_ERR_MASK                                            0x0000000000020000
2195*5113495bSYour Name 
2196*5113495bSYour Name 
2197*5113495bSYour Name /* Description		TCP_UDP_CHKSUM_FAIL
2198*5113495bSYour Name 
2199*5113495bSYour Name 			Indicates that the computed checksum (tcp_udp_chksum in 'RX_MSDU_END')
2200*5113495bSYour Name 			did not match the checksum in the TCP/UDP header.
2201*5113495bSYour Name */
2202*5113495bSYour Name 
2203*5113495bSYour Name #define RX_MSDU_END_TCP_UDP_CHKSUM_FAIL_OFFSET                                      0x0000000000000078
2204*5113495bSYour Name #define RX_MSDU_END_TCP_UDP_CHKSUM_FAIL_LSB                                         18
2205*5113495bSYour Name #define RX_MSDU_END_TCP_UDP_CHKSUM_FAIL_MSB                                         18
2206*5113495bSYour Name #define RX_MSDU_END_TCP_UDP_CHKSUM_FAIL_MASK                                        0x0000000000040000
2207*5113495bSYour Name 
2208*5113495bSYour Name 
2209*5113495bSYour Name /* Description		IP_CHKSUM_FAIL
2210*5113495bSYour Name 
2211*5113495bSYour Name 			Indicates that the computed checksum (ip_hdr_chksum in 'RX_MSDU_END')
2212*5113495bSYour Name 			did not match the checksum in the IP header.
2213*5113495bSYour Name */
2214*5113495bSYour Name 
2215*5113495bSYour Name #define RX_MSDU_END_IP_CHKSUM_FAIL_OFFSET                                           0x0000000000000078
2216*5113495bSYour Name #define RX_MSDU_END_IP_CHKSUM_FAIL_LSB                                              19
2217*5113495bSYour Name #define RX_MSDU_END_IP_CHKSUM_FAIL_MSB                                              19
2218*5113495bSYour Name #define RX_MSDU_END_IP_CHKSUM_FAIL_MASK                                             0x0000000000080000
2219*5113495bSYour Name 
2220*5113495bSYour Name 
2221*5113495bSYour Name /* Description		SA_IDX_INVALID
2222*5113495bSYour Name 
2223*5113495bSYour Name 			Indicates no matching entry was found in the address search
2224*5113495bSYour Name 			 table for the source MAC address.
2225*5113495bSYour Name */
2226*5113495bSYour Name 
2227*5113495bSYour Name #define RX_MSDU_END_SA_IDX_INVALID_OFFSET                                           0x0000000000000078
2228*5113495bSYour Name #define RX_MSDU_END_SA_IDX_INVALID_LSB                                              20
2229*5113495bSYour Name #define RX_MSDU_END_SA_IDX_INVALID_MSB                                              20
2230*5113495bSYour Name #define RX_MSDU_END_SA_IDX_INVALID_MASK                                             0x0000000000100000
2231*5113495bSYour Name 
2232*5113495bSYour Name 
2233*5113495bSYour Name /* Description		DA_IDX_INVALID
2234*5113495bSYour Name 
2235*5113495bSYour Name 			Indicates no matching entry was found in the address search
2236*5113495bSYour Name 			 table for the destination MAC address.
2237*5113495bSYour Name */
2238*5113495bSYour Name 
2239*5113495bSYour Name #define RX_MSDU_END_DA_IDX_INVALID_OFFSET                                           0x0000000000000078
2240*5113495bSYour Name #define RX_MSDU_END_DA_IDX_INVALID_LSB                                              21
2241*5113495bSYour Name #define RX_MSDU_END_DA_IDX_INVALID_MSB                                              21
2242*5113495bSYour Name #define RX_MSDU_END_DA_IDX_INVALID_MASK                                             0x0000000000200000
2243*5113495bSYour Name 
2244*5113495bSYour Name 
2245*5113495bSYour Name /* Description		AMSDU_ADDR_MISMATCH
2246*5113495bSYour Name 
2247*5113495bSYour Name 			Indicates that an A-MSDU with 'from DS = 0' had an SA mismatching
2248*5113495bSYour Name 			 TA or an A-MDU with 'to DS = 0' had a DA mismatching RA
2249*5113495bSYour Name 
2250*5113495bSYour Name */
2251*5113495bSYour Name 
2252*5113495bSYour Name #define RX_MSDU_END_AMSDU_ADDR_MISMATCH_OFFSET                                      0x0000000000000078
2253*5113495bSYour Name #define RX_MSDU_END_AMSDU_ADDR_MISMATCH_LSB                                         22
2254*5113495bSYour Name #define RX_MSDU_END_AMSDU_ADDR_MISMATCH_MSB                                         22
2255*5113495bSYour Name #define RX_MSDU_END_AMSDU_ADDR_MISMATCH_MASK                                        0x0000000000400000
2256*5113495bSYour Name 
2257*5113495bSYour Name 
2258*5113495bSYour Name /* Description		RX_IN_TX_DECRYPT_BYP
2259*5113495bSYour Name 
2260*5113495bSYour Name 			Indicates that RX packet is not decrypted as Crypto is busy
2261*5113495bSYour Name 			 with TX packet processing.
2262*5113495bSYour Name */
2263*5113495bSYour Name 
2264*5113495bSYour Name #define RX_MSDU_END_RX_IN_TX_DECRYPT_BYP_OFFSET                                     0x0000000000000078
2265*5113495bSYour Name #define RX_MSDU_END_RX_IN_TX_DECRYPT_BYP_LSB                                        23
2266*5113495bSYour Name #define RX_MSDU_END_RX_IN_TX_DECRYPT_BYP_MSB                                        23
2267*5113495bSYour Name #define RX_MSDU_END_RX_IN_TX_DECRYPT_BYP_MASK                                       0x0000000000800000
2268*5113495bSYour Name 
2269*5113495bSYour Name 
2270*5113495bSYour Name /* Description		ENCRYPT_REQUIRED
2271*5113495bSYour Name 
2272*5113495bSYour Name 			Indicates that this data type frame is not encrypted even
2273*5113495bSYour Name 			 if the policy for this MPDU requires encryption as indicated
2274*5113495bSYour Name 			 in the peer entry key type.
2275*5113495bSYour Name */
2276*5113495bSYour Name 
2277*5113495bSYour Name #define RX_MSDU_END_ENCRYPT_REQUIRED_OFFSET                                         0x0000000000000078
2278*5113495bSYour Name #define RX_MSDU_END_ENCRYPT_REQUIRED_LSB                                            24
2279*5113495bSYour Name #define RX_MSDU_END_ENCRYPT_REQUIRED_MSB                                            24
2280*5113495bSYour Name #define RX_MSDU_END_ENCRYPT_REQUIRED_MASK                                           0x0000000001000000
2281*5113495bSYour Name 
2282*5113495bSYour Name 
2283*5113495bSYour Name /* Description		DIRECTED
2284*5113495bSYour Name 
2285*5113495bSYour Name 			MPDU is a directed packet which means that the RA matched
2286*5113495bSYour Name 			 our STA addresses.  In proxySTA it means that the TA matched
2287*5113495bSYour Name 			 an entry in our address search table with the corresponding
2288*5113495bSYour Name 			 "no_ack" bit is the address search entry cleared.
2289*5113495bSYour Name */
2290*5113495bSYour Name 
2291*5113495bSYour Name #define RX_MSDU_END_DIRECTED_OFFSET                                                 0x0000000000000078
2292*5113495bSYour Name #define RX_MSDU_END_DIRECTED_LSB                                                    25
2293*5113495bSYour Name #define RX_MSDU_END_DIRECTED_MSB                                                    25
2294*5113495bSYour Name #define RX_MSDU_END_DIRECTED_MASK                                                   0x0000000002000000
2295*5113495bSYour Name 
2296*5113495bSYour Name 
2297*5113495bSYour Name /* Description		BUFFER_FRAGMENT
2298*5113495bSYour Name 
2299*5113495bSYour Name 			Indicates that at least one of the rx buffers has been fragmented.
2300*5113495bSYour Name 			 If set the FW should look at the rx_frag_info descriptor
2301*5113495bSYour Name 			 described below.
2302*5113495bSYour Name */
2303*5113495bSYour Name 
2304*5113495bSYour Name #define RX_MSDU_END_BUFFER_FRAGMENT_OFFSET                                          0x0000000000000078
2305*5113495bSYour Name #define RX_MSDU_END_BUFFER_FRAGMENT_LSB                                             26
2306*5113495bSYour Name #define RX_MSDU_END_BUFFER_FRAGMENT_MSB                                             26
2307*5113495bSYour Name #define RX_MSDU_END_BUFFER_FRAGMENT_MASK                                            0x0000000004000000
2308*5113495bSYour Name 
2309*5113495bSYour Name 
2310*5113495bSYour Name /* Description		MPDU_LENGTH_ERR
2311*5113495bSYour Name 
2312*5113495bSYour Name 			Indicates that the MPDU was pre-maturely terminated resulting
2313*5113495bSYour Name 			 in a truncated MPDU.  Don't trust the MPDU length field.
2314*5113495bSYour Name 
2315*5113495bSYour Name */
2316*5113495bSYour Name 
2317*5113495bSYour Name #define RX_MSDU_END_MPDU_LENGTH_ERR_OFFSET                                          0x0000000000000078
2318*5113495bSYour Name #define RX_MSDU_END_MPDU_LENGTH_ERR_LSB                                             27
2319*5113495bSYour Name #define RX_MSDU_END_MPDU_LENGTH_ERR_MSB                                             27
2320*5113495bSYour Name #define RX_MSDU_END_MPDU_LENGTH_ERR_MASK                                            0x0000000008000000
2321*5113495bSYour Name 
2322*5113495bSYour Name 
2323*5113495bSYour Name /* Description		TKIP_MIC_ERR
2324*5113495bSYour Name 
2325*5113495bSYour Name 			Indicates that the MPDU Michael integrity check failed
2326*5113495bSYour Name */
2327*5113495bSYour Name 
2328*5113495bSYour Name #define RX_MSDU_END_TKIP_MIC_ERR_OFFSET                                             0x0000000000000078
2329*5113495bSYour Name #define RX_MSDU_END_TKIP_MIC_ERR_LSB                                                28
2330*5113495bSYour Name #define RX_MSDU_END_TKIP_MIC_ERR_MSB                                                28
2331*5113495bSYour Name #define RX_MSDU_END_TKIP_MIC_ERR_MASK                                               0x0000000010000000
2332*5113495bSYour Name 
2333*5113495bSYour Name 
2334*5113495bSYour Name /* Description		DECRYPT_ERR
2335*5113495bSYour Name 
2336*5113495bSYour Name 			Indicates that the MPDU decrypt integrity check failed or
2337*5113495bSYour Name 			 CRYPTO received an encrypted frame, but did not get a valid
2338*5113495bSYour Name 			 corresponding key id in the peer entry.
2339*5113495bSYour Name */
2340*5113495bSYour Name 
2341*5113495bSYour Name #define RX_MSDU_END_DECRYPT_ERR_OFFSET                                              0x0000000000000078
2342*5113495bSYour Name #define RX_MSDU_END_DECRYPT_ERR_LSB                                                 29
2343*5113495bSYour Name #define RX_MSDU_END_DECRYPT_ERR_MSB                                                 29
2344*5113495bSYour Name #define RX_MSDU_END_DECRYPT_ERR_MASK                                                0x0000000020000000
2345*5113495bSYour Name 
2346*5113495bSYour Name 
2347*5113495bSYour Name /* Description		UNENCRYPTED_FRAME_ERR
2348*5113495bSYour Name 
2349*5113495bSYour Name 			Copied here by RX OLE from the RX_MPDU_END TLV
2350*5113495bSYour Name */
2351*5113495bSYour Name 
2352*5113495bSYour Name #define RX_MSDU_END_UNENCRYPTED_FRAME_ERR_OFFSET                                    0x0000000000000078
2353*5113495bSYour Name #define RX_MSDU_END_UNENCRYPTED_FRAME_ERR_LSB                                       30
2354*5113495bSYour Name #define RX_MSDU_END_UNENCRYPTED_FRAME_ERR_MSB                                       30
2355*5113495bSYour Name #define RX_MSDU_END_UNENCRYPTED_FRAME_ERR_MASK                                      0x0000000040000000
2356*5113495bSYour Name 
2357*5113495bSYour Name 
2358*5113495bSYour Name /* Description		FCS_ERR
2359*5113495bSYour Name 
2360*5113495bSYour Name 			Indicates that the MPDU FCS check failed
2361*5113495bSYour Name */
2362*5113495bSYour Name 
2363*5113495bSYour Name #define RX_MSDU_END_FCS_ERR_OFFSET                                                  0x0000000000000078
2364*5113495bSYour Name #define RX_MSDU_END_FCS_ERR_LSB                                                     31
2365*5113495bSYour Name #define RX_MSDU_END_FCS_ERR_MSB                                                     31
2366*5113495bSYour Name #define RX_MSDU_END_FCS_ERR_MASK                                                    0x0000000080000000
2367*5113495bSYour Name 
2368*5113495bSYour Name 
2369*5113495bSYour Name /* Description		RESERVED_31A
2370*5113495bSYour Name 
2371*5113495bSYour Name 			<legal 0>
2372*5113495bSYour Name */
2373*5113495bSYour Name 
2374*5113495bSYour Name #define RX_MSDU_END_RESERVED_31A_OFFSET                                             0x0000000000000078
2375*5113495bSYour Name #define RX_MSDU_END_RESERVED_31A_LSB                                                32
2376*5113495bSYour Name #define RX_MSDU_END_RESERVED_31A_MSB                                                41
2377*5113495bSYour Name #define RX_MSDU_END_RESERVED_31A_MASK                                               0x000003ff00000000
2378*5113495bSYour Name 
2379*5113495bSYour Name 
2380*5113495bSYour Name /* Description		DECRYPT_STATUS_CODE
2381*5113495bSYour Name 
2382*5113495bSYour Name 			Field provides insight into the decryption performed
2383*5113495bSYour Name 
2384*5113495bSYour Name 			<enum 0 decrypt_ok> Frame had protection enabled and decrypted
2385*5113495bSYour Name 			 properly
2386*5113495bSYour Name 			<enum 1 decrypt_unprotected_frame > Frame is unprotected
2387*5113495bSYour Name 			 and hence bypassed
2388*5113495bSYour Name 			<enum 2 decrypt_data_err > Frame has protection enabled
2389*5113495bSYour Name 			and could not be properly d   ecrypted due to MIC/ICV mismatch
2390*5113495bSYour Name 			 etc.
2391*5113495bSYour Name 			<enum 3 decrypt_key_invalid > Frame has protection enabled
2392*5113495bSYour Name 			 but the key that was required to decrypt this frame was
2393*5113495bSYour Name 			 not valid
2394*5113495bSYour Name 			<enum 4 decrypt_peer_entry_invalid > Frame has protection
2395*5113495bSYour Name 			 enabled but the key that was required to decrypt this frame
2396*5113495bSYour Name 			 was not valid
2397*5113495bSYour Name 			<enum 5 decrypt_other > Reserved for other indications
2398*5113495bSYour Name 
2399*5113495bSYour Name 			<legal 0 - 5>
2400*5113495bSYour Name */
2401*5113495bSYour Name 
2402*5113495bSYour Name #define RX_MSDU_END_DECRYPT_STATUS_CODE_OFFSET                                      0x0000000000000078
2403*5113495bSYour Name #define RX_MSDU_END_DECRYPT_STATUS_CODE_LSB                                         42
2404*5113495bSYour Name #define RX_MSDU_END_DECRYPT_STATUS_CODE_MSB                                         44
2405*5113495bSYour Name #define RX_MSDU_END_DECRYPT_STATUS_CODE_MASK                                        0x00001c0000000000
2406*5113495bSYour Name 
2407*5113495bSYour Name 
2408*5113495bSYour Name /* Description		RX_BITMAP_NOT_UPDATED
2409*5113495bSYour Name 
2410*5113495bSYour Name 			Frame is received, but RXPCU could not update the receive
2411*5113495bSYour Name 			 bitmap due to (temporary) fifo contraints.
2412*5113495bSYour Name 			<legal all>
2413*5113495bSYour Name */
2414*5113495bSYour Name 
2415*5113495bSYour Name #define RX_MSDU_END_RX_BITMAP_NOT_UPDATED_OFFSET                                    0x0000000000000078
2416*5113495bSYour Name #define RX_MSDU_END_RX_BITMAP_NOT_UPDATED_LSB                                       45
2417*5113495bSYour Name #define RX_MSDU_END_RX_BITMAP_NOT_UPDATED_MSB                                       45
2418*5113495bSYour Name #define RX_MSDU_END_RX_BITMAP_NOT_UPDATED_MASK                                      0x0000200000000000
2419*5113495bSYour Name 
2420*5113495bSYour Name 
2421*5113495bSYour Name /* Description		RESERVED_31B
2422*5113495bSYour Name 
2423*5113495bSYour Name 			<legal 0>
2424*5113495bSYour Name */
2425*5113495bSYour Name 
2426*5113495bSYour Name #define RX_MSDU_END_RESERVED_31B_OFFSET                                             0x0000000000000078
2427*5113495bSYour Name #define RX_MSDU_END_RESERVED_31B_LSB                                                46
2428*5113495bSYour Name #define RX_MSDU_END_RESERVED_31B_MSB                                                62
2429*5113495bSYour Name #define RX_MSDU_END_RESERVED_31B_MASK                                               0x7fffc00000000000
2430*5113495bSYour Name 
2431*5113495bSYour Name 
2432*5113495bSYour Name #define RX_MSDU_END_MSDU_DONE_OFFSET                                                0x0000000000000078
2433*5113495bSYour Name #define RX_MSDU_END_MSDU_DONE_LSB                                                   63
2434*5113495bSYour Name #define RX_MSDU_END_MSDU_DONE_MSB                                                   63
2435*5113495bSYour Name #define RX_MSDU_END_MSDU_DONE_MASK                                                  0x8000000000000000
2436*5113495bSYour Name 
2437*5113495bSYour Name 
2438*5113495bSYour Name 
2439*5113495bSYour Name #endif   // RX_MSDU_END
2440