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