xref: /wlan-driver/fw-api/hw/qca9574/rx_reo_queue.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1*5113495bSYour Name /*
2*5113495bSYour Name  * Copyright (c) 2021 The Linux Foundation. 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 // $ATH_LICENSE_HW_HDR_C$
18*5113495bSYour Name //
19*5113495bSYour Name // DO NOT EDIT!  This file is automatically generated
20*5113495bSYour Name //               These definitions are tied to a particular hardware layout
21*5113495bSYour Name 
22*5113495bSYour Name 
23*5113495bSYour Name #ifndef _RX_REO_QUEUE_H_
24*5113495bSYour Name #define _RX_REO_QUEUE_H_
25*5113495bSYour Name #if !defined(__ASSEMBLER__)
26*5113495bSYour Name #endif
27*5113495bSYour Name 
28*5113495bSYour Name #include "uniform_descriptor_header.h"
29*5113495bSYour Name 
30*5113495bSYour Name // ################ START SUMMARY #################
31*5113495bSYour Name //
32*5113495bSYour Name //	Dword	Fields
33*5113495bSYour Name //	0	struct uniform_descriptor_header descriptor_header;
34*5113495bSYour Name //	1	receive_queue_number[15:0], reserved_1b[31:16]
35*5113495bSYour Name //	2	vld[0], associated_link_descriptor_counter[2:1], disable_duplicate_detection[3], soft_reorder_enable[4], ac[6:5], bar[7], rty[8], chk_2k_mode[9], oor_mode[10], ba_window_size[18:11], pn_check_needed[19], pn_shall_be_even[20], pn_shall_be_uneven[21], pn_handling_enable[22], pn_size[24:23], ignore_ampdu_flag[25], reserved_2b[31:26]
36*5113495bSYour Name //	3	svld[0], ssn[12:1], current_index[20:13], seq_2k_error_detected_flag[21], pn_error_detected_flag[22], reserved_3a[30:23], pn_valid[31]
37*5113495bSYour Name //	4	pn_31_0[31:0]
38*5113495bSYour Name //	5	pn_63_32[31:0]
39*5113495bSYour Name //	6	pn_95_64[31:0]
40*5113495bSYour Name //	7	pn_127_96[31:0]
41*5113495bSYour Name //	8	last_rx_enqueue_timestamp[31:0]
42*5113495bSYour Name //	9	last_rx_dequeue_timestamp[31:0]
43*5113495bSYour Name //	10	ptr_to_next_aging_queue_31_0[31:0]
44*5113495bSYour Name //	11	ptr_to_next_aging_queue_39_32[7:0], reserved_11a[31:8]
45*5113495bSYour Name //	12	ptr_to_previous_aging_queue_31_0[31:0]
46*5113495bSYour Name //	13	ptr_to_previous_aging_queue_39_32[7:0], reserved_13a[31:8]
47*5113495bSYour Name //	14	rx_bitmap_31_0[31:0]
48*5113495bSYour Name //	15	rx_bitmap_63_32[31:0]
49*5113495bSYour Name //	16	rx_bitmap_95_64[31:0]
50*5113495bSYour Name //	17	rx_bitmap_127_96[31:0]
51*5113495bSYour Name //	18	rx_bitmap_159_128[31:0]
52*5113495bSYour Name //	19	rx_bitmap_191_160[31:0]
53*5113495bSYour Name //	20	rx_bitmap_223_192[31:0]
54*5113495bSYour Name //	21	rx_bitmap_255_224[31:0]
55*5113495bSYour Name //	22	current_mpdu_count[6:0], current_msdu_count[31:7]
56*5113495bSYour Name //	23	reserved_23[3:0], timeout_count[9:4], forward_due_to_bar_count[15:10], duplicate_count[31:16]
57*5113495bSYour Name //	24	frames_in_order_count[23:0], bar_received_count[31:24]
58*5113495bSYour Name //	25	mpdu_frames_processed_count[31:0]
59*5113495bSYour Name //	26	msdu_frames_processed_count[31:0]
60*5113495bSYour Name //	27	total_processed_byte_count[31:0]
61*5113495bSYour Name //	28	late_receive_mpdu_count[11:0], window_jump_2k[15:12], hole_count[31:16]
62*5113495bSYour Name //	29	reserved_29[31:0]
63*5113495bSYour Name //	30	reserved_30[31:0]
64*5113495bSYour Name //	31	reserved_31[31:0]
65*5113495bSYour Name //
66*5113495bSYour Name // ################ END SUMMARY #################
67*5113495bSYour Name 
68*5113495bSYour Name #define NUM_OF_DWORDS_RX_REO_QUEUE 32
69*5113495bSYour Name 
70*5113495bSYour Name struct rx_reo_queue {
71*5113495bSYour Name     struct            uniform_descriptor_header                       descriptor_header;
72*5113495bSYour Name              uint32_t receive_queue_number            : 16, //[15:0]
73*5113495bSYour Name                       reserved_1b                     : 16; //[31:16]
74*5113495bSYour Name              uint32_t vld                             :  1, //[0]
75*5113495bSYour Name                       associated_link_descriptor_counter:  2, //[2:1]
76*5113495bSYour Name                       disable_duplicate_detection     :  1, //[3]
77*5113495bSYour Name                       soft_reorder_enable             :  1, //[4]
78*5113495bSYour Name                       ac                              :  2, //[6:5]
79*5113495bSYour Name                       bar                             :  1, //[7]
80*5113495bSYour Name                       rty                             :  1, //[8]
81*5113495bSYour Name                       chk_2k_mode                     :  1, //[9]
82*5113495bSYour Name                       oor_mode                        :  1, //[10]
83*5113495bSYour Name                       ba_window_size                  :  8, //[18:11]
84*5113495bSYour Name                       pn_check_needed                 :  1, //[19]
85*5113495bSYour Name                       pn_shall_be_even                :  1, //[20]
86*5113495bSYour Name                       pn_shall_be_uneven              :  1, //[21]
87*5113495bSYour Name                       pn_handling_enable              :  1, //[22]
88*5113495bSYour Name                       pn_size                         :  2, //[24:23]
89*5113495bSYour Name                       ignore_ampdu_flag               :  1, //[25]
90*5113495bSYour Name                       reserved_2b                     :  6; //[31:26]
91*5113495bSYour Name              uint32_t svld                            :  1, //[0]
92*5113495bSYour Name                       ssn                             : 12, //[12:1]
93*5113495bSYour Name                       current_index                   :  8, //[20:13]
94*5113495bSYour Name                       seq_2k_error_detected_flag      :  1, //[21]
95*5113495bSYour Name                       pn_error_detected_flag          :  1, //[22]
96*5113495bSYour Name                       reserved_3a                     :  8, //[30:23]
97*5113495bSYour Name                       pn_valid                        :  1; //[31]
98*5113495bSYour Name              uint32_t pn_31_0                         : 32; //[31:0]
99*5113495bSYour Name              uint32_t pn_63_32                        : 32; //[31:0]
100*5113495bSYour Name              uint32_t pn_95_64                        : 32; //[31:0]
101*5113495bSYour Name              uint32_t pn_127_96                       : 32; //[31:0]
102*5113495bSYour Name              uint32_t last_rx_enqueue_timestamp       : 32; //[31:0]
103*5113495bSYour Name              uint32_t last_rx_dequeue_timestamp       : 32; //[31:0]
104*5113495bSYour Name              uint32_t ptr_to_next_aging_queue_31_0    : 32; //[31:0]
105*5113495bSYour Name              uint32_t ptr_to_next_aging_queue_39_32   :  8, //[7:0]
106*5113495bSYour Name                       reserved_11a                    : 24; //[31:8]
107*5113495bSYour Name              uint32_t ptr_to_previous_aging_queue_31_0: 32; //[31:0]
108*5113495bSYour Name              uint32_t ptr_to_previous_aging_queue_39_32:  8, //[7:0]
109*5113495bSYour Name                       reserved_13a                    : 24; //[31:8]
110*5113495bSYour Name              uint32_t rx_bitmap_31_0                  : 32; //[31:0]
111*5113495bSYour Name              uint32_t rx_bitmap_63_32                 : 32; //[31:0]
112*5113495bSYour Name              uint32_t rx_bitmap_95_64                 : 32; //[31:0]
113*5113495bSYour Name              uint32_t rx_bitmap_127_96                : 32; //[31:0]
114*5113495bSYour Name              uint32_t rx_bitmap_159_128               : 32; //[31:0]
115*5113495bSYour Name              uint32_t rx_bitmap_191_160               : 32; //[31:0]
116*5113495bSYour Name              uint32_t rx_bitmap_223_192               : 32; //[31:0]
117*5113495bSYour Name              uint32_t rx_bitmap_255_224               : 32; //[31:0]
118*5113495bSYour Name              uint32_t current_mpdu_count              :  7, //[6:0]
119*5113495bSYour Name                       current_msdu_count              : 25; //[31:7]
120*5113495bSYour Name              uint32_t reserved_23                     :  4, //[3:0]
121*5113495bSYour Name                       timeout_count                   :  6, //[9:4]
122*5113495bSYour Name                       forward_due_to_bar_count        :  6, //[15:10]
123*5113495bSYour Name                       duplicate_count                 : 16; //[31:16]
124*5113495bSYour Name              uint32_t frames_in_order_count           : 24, //[23:0]
125*5113495bSYour Name                       bar_received_count              :  8; //[31:24]
126*5113495bSYour Name              uint32_t mpdu_frames_processed_count     : 32; //[31:0]
127*5113495bSYour Name              uint32_t msdu_frames_processed_count     : 32; //[31:0]
128*5113495bSYour Name              uint32_t total_processed_byte_count      : 32; //[31:0]
129*5113495bSYour Name              uint32_t late_receive_mpdu_count         : 12, //[11:0]
130*5113495bSYour Name                       window_jump_2k                  :  4, //[15:12]
131*5113495bSYour Name                       hole_count                      : 16; //[31:16]
132*5113495bSYour Name              uint32_t reserved_29                     : 32; //[31:0]
133*5113495bSYour Name              uint32_t reserved_30                     : 32; //[31:0]
134*5113495bSYour Name              uint32_t reserved_31                     : 32; //[31:0]
135*5113495bSYour Name };
136*5113495bSYour Name 
137*5113495bSYour Name /*
138*5113495bSYour Name 
139*5113495bSYour Name struct uniform_descriptor_header descriptor_header
140*5113495bSYour Name 
141*5113495bSYour Name 			Details about which module owns this struct.
142*5113495bSYour Name 
143*5113495bSYour Name 			Note that sub field Buffer_type shall be set to
144*5113495bSYour Name 			Receive_REO_queue_descriptor
145*5113495bSYour Name 
146*5113495bSYour Name receive_queue_number
147*5113495bSYour Name 
148*5113495bSYour Name 			Indicates the MPDU queue ID to which this MPDU link
149*5113495bSYour Name 			descriptor belongs
150*5113495bSYour Name 
151*5113495bSYour Name 			Used for tracking and debugging
152*5113495bSYour Name 
153*5113495bSYour Name 			<legal all>
154*5113495bSYour Name 
155*5113495bSYour Name reserved_1b
156*5113495bSYour Name 
157*5113495bSYour Name 			<legal 0>
158*5113495bSYour Name 
159*5113495bSYour Name vld
160*5113495bSYour Name 
161*5113495bSYour Name 			Valid bit indicating a session is established and the
162*5113495bSYour Name 			queue descriptor is valid(Filled by SW)
163*5113495bSYour Name 
164*5113495bSYour Name 			<legal all>
165*5113495bSYour Name 
166*5113495bSYour Name associated_link_descriptor_counter
167*5113495bSYour Name 
168*5113495bSYour Name 			Indicates which of the 3 link descriptor counters shall
169*5113495bSYour Name 			be incremented or decremented when link descriptors are
170*5113495bSYour Name 			added or removed from this flow queue.
171*5113495bSYour Name 
172*5113495bSYour Name 			MSDU link descriptors related with MPDUs stored in the
173*5113495bSYour Name 			re-order buffer shall also be included in this count.
174*5113495bSYour Name 
175*5113495bSYour Name 
176*5113495bSYour Name 
177*5113495bSYour Name 			<legal 0-2>
178*5113495bSYour Name 
179*5113495bSYour Name disable_duplicate_detection
180*5113495bSYour Name 
181*5113495bSYour Name 			When set, do not perform any duplicate detection.
182*5113495bSYour Name 
183*5113495bSYour Name 
184*5113495bSYour Name 
185*5113495bSYour Name 			<legal all>
186*5113495bSYour Name 
187*5113495bSYour Name soft_reorder_enable
188*5113495bSYour Name 
189*5113495bSYour Name 			When set, REO has been instructed to not perform the
190*5113495bSYour Name 			actual re-ordering of frames for this queue, but just to
191*5113495bSYour Name 			insert the reorder opcodes.
192*5113495bSYour Name 
193*5113495bSYour Name 
194*5113495bSYour Name 
195*5113495bSYour Name 			Note that this implies that REO is also not going to
196*5113495bSYour Name 			perform any MSDU level operations, and the entire MPDU (and
197*5113495bSYour Name 			thus pointer to the MSDU link descriptor) will be pushed to
198*5113495bSYour Name 			a destination ring that SW has programmed in a SW
199*5113495bSYour Name 			programmable configuration register in REO
200*5113495bSYour Name 
201*5113495bSYour Name 
202*5113495bSYour Name 
203*5113495bSYour Name 			<legal all>
204*5113495bSYour Name 
205*5113495bSYour Name ac
206*5113495bSYour Name 
207*5113495bSYour Name 			Indicates which access category the queue descriptor
208*5113495bSYour Name 			belongs to(filled by SW)
209*5113495bSYour Name 
210*5113495bSYour Name 			<legal all>
211*5113495bSYour Name 
212*5113495bSYour Name bar
213*5113495bSYour Name 
214*5113495bSYour Name 			Indicates if  BAR has been received (mostly used for
215*5113495bSYour Name 			debug purpose and this is filled by REO)
216*5113495bSYour Name 
217*5113495bSYour Name 			<legal all>
218*5113495bSYour Name 
219*5113495bSYour Name rty
220*5113495bSYour Name 
221*5113495bSYour Name 			Retry bit is checked if this bit is set.
222*5113495bSYour Name 
223*5113495bSYour Name 			<legal all>
224*5113495bSYour Name 
225*5113495bSYour Name chk_2k_mode
226*5113495bSYour Name 
227*5113495bSYour Name 			Indicates what type of operation is expected from Reo
228*5113495bSYour Name 			when the received frame SN falls within the 2K window
229*5113495bSYour Name 
230*5113495bSYour Name 
231*5113495bSYour Name 
232*5113495bSYour Name 			See REO MLD document for programming details.
233*5113495bSYour Name 
234*5113495bSYour Name 			<legal all>
235*5113495bSYour Name 
236*5113495bSYour Name oor_mode
237*5113495bSYour Name 
238*5113495bSYour Name 			Out of Order mode:
239*5113495bSYour Name 
240*5113495bSYour Name 			Indicates what type of operation is expected when the
241*5113495bSYour Name 			received frame falls within the OOR window.
242*5113495bSYour Name 
243*5113495bSYour Name 
244*5113495bSYour Name 
245*5113495bSYour Name 			See REO MLD document for programming details.
246*5113495bSYour Name 
247*5113495bSYour Name 			<legal all>
248*5113495bSYour Name 
249*5113495bSYour Name ba_window_size
250*5113495bSYour Name 
251*5113495bSYour Name 			Indicates the negotiated (window size + 1).
252*5113495bSYour Name 
253*5113495bSYour Name 			it can go up to Max of 256bits.
254*5113495bSYour Name 
255*5113495bSYour Name 
256*5113495bSYour Name 
257*5113495bSYour Name 			A value 255 means 256 bitmap, 63 means 64 bitmap, 0
258*5113495bSYour Name 			(means non-BA session, with window size of 0). The 3 values
259*5113495bSYour Name 			here are the main values validated, but other values should
260*5113495bSYour Name 			work as well.
261*5113495bSYour Name 
262*5113495bSYour Name 
263*5113495bSYour Name 
264*5113495bSYour Name 			A BA window size of 0 (=> one frame entry bitmat), means
265*5113495bSYour Name 			that there is NO RX_REO_QUEUE_EXT descriptor following this
266*5113495bSYour Name 			RX_REO_QUEUE STRUCT in memory
267*5113495bSYour Name 
268*5113495bSYour Name 
269*5113495bSYour Name 
270*5113495bSYour Name 			A BA window size of 1 - 105, means that there is 1
271*5113495bSYour Name 			RX_REO_QUEUE_EXT descriptor directly following this
272*5113495bSYour Name 			RX_REO_QUEUE STRUCT in memory.
273*5113495bSYour Name 
274*5113495bSYour Name 
275*5113495bSYour Name 
276*5113495bSYour Name 			A BA window size of 106 - 210, means that there are 2
277*5113495bSYour Name 			RX_REO_QUEUE_EXT descriptors directly following this
278*5113495bSYour Name 			RX_REO_QUEUE STRUCT in memory
279*5113495bSYour Name 
280*5113495bSYour Name 
281*5113495bSYour Name 
282*5113495bSYour Name 			A BA window size of 211 - 256, means that there are 3
283*5113495bSYour Name 			RX_REO_QUEUE_EXT descriptors directly following this
284*5113495bSYour Name 			RX_REO_QUEUE STRUCT in memory
285*5113495bSYour Name 
286*5113495bSYour Name 
287*5113495bSYour Name 
288*5113495bSYour Name 			<legal 0 - 255>
289*5113495bSYour Name 
290*5113495bSYour Name pn_check_needed
291*5113495bSYour Name 
292*5113495bSYour Name 			When set, REO shall perform the PN increment check
293*5113495bSYour Name 
294*5113495bSYour Name 			<legal all>
295*5113495bSYour Name 
296*5113495bSYour Name pn_shall_be_even
297*5113495bSYour Name 
298*5113495bSYour Name 			Field only valid when 'pn_check_needed' is set.
299*5113495bSYour Name 
300*5113495bSYour Name 
301*5113495bSYour Name 
302*5113495bSYour Name 			When set, REO shall confirm that the received PN number
303*5113495bSYour Name 			is not only incremented, but also always an even number
304*5113495bSYour Name 
305*5113495bSYour Name 			<legal all>
306*5113495bSYour Name 
307*5113495bSYour Name pn_shall_be_uneven
308*5113495bSYour Name 
309*5113495bSYour Name 			Field only valid when 'pn_check_needed' is set.
310*5113495bSYour Name 
311*5113495bSYour Name 
312*5113495bSYour Name 
313*5113495bSYour Name 			When set, REO shall confirm that the received PN number
314*5113495bSYour Name 			is not only incremented, but also always an uneven number
315*5113495bSYour Name 
316*5113495bSYour Name 			<legal all>
317*5113495bSYour Name 
318*5113495bSYour Name pn_handling_enable
319*5113495bSYour Name 
320*5113495bSYour Name 			Field only valid when 'pn_check_needed' is set.
321*5113495bSYour Name 
322*5113495bSYour Name 
323*5113495bSYour Name 
324*5113495bSYour Name 			When set, and REO detected a PN error, HW shall set the
325*5113495bSYour Name 			'pn_error_detected_flag'.
326*5113495bSYour Name 
327*5113495bSYour Name 			<legal all>
328*5113495bSYour Name 
329*5113495bSYour Name pn_size
330*5113495bSYour Name 
331*5113495bSYour Name 			Size of the PN field check.
332*5113495bSYour Name 
333*5113495bSYour Name 			Needed for wrap around handling...
334*5113495bSYour Name 
335*5113495bSYour Name 
336*5113495bSYour Name 
337*5113495bSYour Name 			<enum 0     pn_size_24>
338*5113495bSYour Name 
339*5113495bSYour Name 			<enum 1     pn_size_48>
340*5113495bSYour Name 
341*5113495bSYour Name 			<enum 2     pn_size_128>
342*5113495bSYour Name 
343*5113495bSYour Name 
344*5113495bSYour Name 
345*5113495bSYour Name 			<legal 0-2>
346*5113495bSYour Name 
347*5113495bSYour Name ignore_ampdu_flag
348*5113495bSYour Name 
349*5113495bSYour Name 			When set, REO shall ignore the ampdu_flag on the
350*5113495bSYour Name 			entrance descriptor for this queue.
351*5113495bSYour Name 
352*5113495bSYour Name 			<legal all>
353*5113495bSYour Name 
354*5113495bSYour Name reserved_2b
355*5113495bSYour Name 
356*5113495bSYour Name 			<legal 0>
357*5113495bSYour Name 
358*5113495bSYour Name svld
359*5113495bSYour Name 
360*5113495bSYour Name 			Sequence number in next field is valid one. It can be
361*5113495bSYour Name 			filled by SW if the want to fill in the any negotiated SSN,
362*5113495bSYour Name 			otherwise REO will fill the sequence number of first
363*5113495bSYour Name 			received packet and set this bit to 1.
364*5113495bSYour Name 
365*5113495bSYour Name 			<legal all>
366*5113495bSYour Name 
367*5113495bSYour Name ssn
368*5113495bSYour Name 
369*5113495bSYour Name 			Starting Sequence number of the session, this changes
370*5113495bSYour Name 			whenever window moves. (can be filled by SW then maintained
371*5113495bSYour Name 			by REO)
372*5113495bSYour Name 
373*5113495bSYour Name 			<legal all>
374*5113495bSYour Name 
375*5113495bSYour Name current_index
376*5113495bSYour Name 
377*5113495bSYour Name 			Points to last forwarded packet
378*5113495bSYour Name 
379*5113495bSYour Name 			<legal all>
380*5113495bSYour Name 
381*5113495bSYour Name seq_2k_error_detected_flag
382*5113495bSYour Name 
383*5113495bSYour Name 			Set by REO, can only be cleared by SW
384*5113495bSYour Name 
385*5113495bSYour Name 
386*5113495bSYour Name 
387*5113495bSYour Name 			When set, REO has detected a 2k error jump in the
388*5113495bSYour Name 			sequence number and from that moment forward, all new frames
389*5113495bSYour Name 			are forwarded directly to FW, without duplicate detect,
390*5113495bSYour Name 			reordering, etc.
391*5113495bSYour Name 
392*5113495bSYour Name 			<legal all>
393*5113495bSYour Name 
394*5113495bSYour Name pn_error_detected_flag
395*5113495bSYour Name 
396*5113495bSYour Name 			Set by REO, can only be cleared by SW
397*5113495bSYour Name 
398*5113495bSYour Name 
399*5113495bSYour Name 
400*5113495bSYour Name 			When set, REO has detected a PN error and from that
401*5113495bSYour Name 			moment forward, all new frames are forwarded directly to FW,
402*5113495bSYour Name 			without duplicate detect, reordering, etc.
403*5113495bSYour Name 
404*5113495bSYour Name 			<legal all>
405*5113495bSYour Name 
406*5113495bSYour Name reserved_3a
407*5113495bSYour Name 
408*5113495bSYour Name 			<legal 0>
409*5113495bSYour Name 
410*5113495bSYour Name pn_valid
411*5113495bSYour Name 
412*5113495bSYour Name 			PN number in next fields are valid. It can be filled by
413*5113495bSYour Name 			SW if it wants to fill in the any negotiated SSN, otherwise
414*5113495bSYour Name 			REO will fill the pn based on the first received packet and
415*5113495bSYour Name 			set this bit to 1.
416*5113495bSYour Name 
417*5113495bSYour Name 			<legal all>
418*5113495bSYour Name 
419*5113495bSYour Name pn_31_0
420*5113495bSYour Name 
421*5113495bSYour Name 
422*5113495bSYour Name 			<legal all>
423*5113495bSYour Name 
424*5113495bSYour Name pn_63_32
425*5113495bSYour Name 
426*5113495bSYour Name 			Bits [63:32] of the PN number.
427*5113495bSYour Name 
428*5113495bSYour Name 			<legal all>
429*5113495bSYour Name 
430*5113495bSYour Name pn_95_64
431*5113495bSYour Name 
432*5113495bSYour Name 			Bits [95:64] of the PN number.
433*5113495bSYour Name 
434*5113495bSYour Name 			<legal all>
435*5113495bSYour Name 
436*5113495bSYour Name pn_127_96
437*5113495bSYour Name 
438*5113495bSYour Name 			Bits [127:96] of the PN number.
439*5113495bSYour Name 
440*5113495bSYour Name 			<legal all>
441*5113495bSYour Name 
442*5113495bSYour Name last_rx_enqueue_timestamp
443*5113495bSYour Name 
444*5113495bSYour Name 			This timestamp is updated when an MPDU is received and
445*5113495bSYour Name 			accesses this Queue Descriptor. It does not include the
446*5113495bSYour Name 			access due to Command TLVs or Aging (which will be updated
447*5113495bSYour Name 			in Last_rx_dequeue_timestamp).
448*5113495bSYour Name 
449*5113495bSYour Name 			<legal all>
450*5113495bSYour Name 
451*5113495bSYour Name last_rx_dequeue_timestamp
452*5113495bSYour Name 
453*5113495bSYour Name 			This timestamp is used for Aging. When an MPDU or
454*5113495bSYour Name 			multiple MPDUs are forwarded, either due to window movement,
455*5113495bSYour Name 			bar, aging or command flush, this timestamp is updated. Also
456*5113495bSYour Name 			when the bitmap is all zero and the first time an MPDU is
457*5113495bSYour Name 			queued (opcode=QCUR), this timestamp is updated for aging.
458*5113495bSYour Name 
459*5113495bSYour Name 			<legal all>
460*5113495bSYour Name 
461*5113495bSYour Name ptr_to_next_aging_queue_31_0
462*5113495bSYour Name 
463*5113495bSYour Name 			Address  (address bits 31-0)of next RX_REO_QUEUE
464*5113495bSYour Name 			descriptor in the 'receive timestamp' ordered list.
465*5113495bSYour Name 
466*5113495bSYour Name 			From it the Position of this queue descriptor in the per
467*5113495bSYour Name 			AC aging waitlist  can be derived.
468*5113495bSYour Name 
469*5113495bSYour Name 			Value 0x0 indicates the 'NULL' pointer which implies
470*5113495bSYour Name 			that this is the last entry in the list.
471*5113495bSYour Name 
472*5113495bSYour Name 			<legal all>
473*5113495bSYour Name 
474*5113495bSYour Name ptr_to_next_aging_queue_39_32
475*5113495bSYour Name 
476*5113495bSYour Name 			Address  (address bits 39-32)of next RX_REO_QUEUE
477*5113495bSYour Name 			descriptor in the 'receive timestamp' ordered list.
478*5113495bSYour Name 
479*5113495bSYour Name 			From it the Position of this queue descriptor in the per
480*5113495bSYour Name 			AC aging waitlist  can be derived.
481*5113495bSYour Name 
482*5113495bSYour Name 			Value 0x0 indicates the 'NULL' pointer which implies
483*5113495bSYour Name 			that this is the last entry in the list.
484*5113495bSYour Name 
485*5113495bSYour Name 			<legal all>
486*5113495bSYour Name 
487*5113495bSYour Name reserved_11a
488*5113495bSYour Name 
489*5113495bSYour Name 			<legal 0>
490*5113495bSYour Name 
491*5113495bSYour Name ptr_to_previous_aging_queue_31_0
492*5113495bSYour Name 
493*5113495bSYour Name 			Address  (address bits 31-0)of next RX_REO_QUEUE
494*5113495bSYour Name 			descriptor in the 'receive timestamp' ordered list.
495*5113495bSYour Name 
496*5113495bSYour Name 			From it the Position of this queue descriptor in the per
497*5113495bSYour Name 			AC aging waitlist  can be derived.
498*5113495bSYour Name 
499*5113495bSYour Name 			Value 0x0 indicates the 'NULL' pointer which implies
500*5113495bSYour Name 			that this is the first entry in the list.
501*5113495bSYour Name 
502*5113495bSYour Name 			<legal all>
503*5113495bSYour Name 
504*5113495bSYour Name ptr_to_previous_aging_queue_39_32
505*5113495bSYour Name 
506*5113495bSYour Name 			Address  (address bits 39-32)of next RX_REO_QUEUE
507*5113495bSYour Name 			descriptor in the 'receive timestamp' ordered list.
508*5113495bSYour Name 
509*5113495bSYour Name 			From it the Position of this queue descriptor in the per
510*5113495bSYour Name 			AC aging waitlist  can be derived.
511*5113495bSYour Name 
512*5113495bSYour Name 			Value 0x0 indicates the 'NULL' pointer which implies
513*5113495bSYour Name 			that this is the first entry in the list.
514*5113495bSYour Name 
515*5113495bSYour Name 			<legal all>
516*5113495bSYour Name 
517*5113495bSYour Name reserved_13a
518*5113495bSYour Name 
519*5113495bSYour Name 			<legal 0>
520*5113495bSYour Name 
521*5113495bSYour Name rx_bitmap_31_0
522*5113495bSYour Name 
523*5113495bSYour Name 			When a bit is set, the corresponding frame is currently
524*5113495bSYour Name 			held in the re-order queue.
525*5113495bSYour Name 
526*5113495bSYour Name 			The bitmap  is Fully managed by HW.
527*5113495bSYour Name 
528*5113495bSYour Name 			SW shall init this to 0, and then never ever change it
529*5113495bSYour Name 
530*5113495bSYour Name 			<legal all>
531*5113495bSYour Name 
532*5113495bSYour Name rx_bitmap_63_32
533*5113495bSYour Name 
534*5113495bSYour Name 			See Rx_bitmap_31_0 description
535*5113495bSYour Name 
536*5113495bSYour Name 			<legal all>
537*5113495bSYour Name 
538*5113495bSYour Name rx_bitmap_95_64
539*5113495bSYour Name 
540*5113495bSYour Name 			See Rx_bitmap_31_0 description
541*5113495bSYour Name 
542*5113495bSYour Name 			<legal all>
543*5113495bSYour Name 
544*5113495bSYour Name rx_bitmap_127_96
545*5113495bSYour Name 
546*5113495bSYour Name 			See Rx_bitmap_31_0 description
547*5113495bSYour Name 
548*5113495bSYour Name 			<legal all>
549*5113495bSYour Name 
550*5113495bSYour Name rx_bitmap_159_128
551*5113495bSYour Name 
552*5113495bSYour Name 			See Rx_bitmap_31_0 description
553*5113495bSYour Name 
554*5113495bSYour Name 			<legal all>
555*5113495bSYour Name 
556*5113495bSYour Name rx_bitmap_191_160
557*5113495bSYour Name 
558*5113495bSYour Name 			See Rx_bitmap_31_0 description
559*5113495bSYour Name 
560*5113495bSYour Name 			<legal all>
561*5113495bSYour Name 
562*5113495bSYour Name rx_bitmap_223_192
563*5113495bSYour Name 
564*5113495bSYour Name 			See Rx_bitmap_31_0 description
565*5113495bSYour Name 
566*5113495bSYour Name 			<legal all>
567*5113495bSYour Name 
568*5113495bSYour Name rx_bitmap_255_224
569*5113495bSYour Name 
570*5113495bSYour Name 			See Rx_bitmap_31_0 description
571*5113495bSYour Name 
572*5113495bSYour Name 			<legal all>
573*5113495bSYour Name 
574*5113495bSYour Name current_mpdu_count
575*5113495bSYour Name 
576*5113495bSYour Name 			The number of MPDUs in the queue.
577*5113495bSYour Name 
578*5113495bSYour Name 
579*5113495bSYour Name 
580*5113495bSYour Name 			<legal all>
581*5113495bSYour Name 
582*5113495bSYour Name current_msdu_count
583*5113495bSYour Name 
584*5113495bSYour Name 			The number of MSDUs in the queue.
585*5113495bSYour Name 
586*5113495bSYour Name 			<legal all>
587*5113495bSYour Name 
588*5113495bSYour Name reserved_23
589*5113495bSYour Name 
590*5113495bSYour Name 			<legal 0>
591*5113495bSYour Name 
592*5113495bSYour Name timeout_count
593*5113495bSYour Name 
594*5113495bSYour Name 			The number of times that REO started forwarding frames
595*5113495bSYour Name 			even though there is a hole in the bitmap. Forwarding reason
596*5113495bSYour Name 			is Timeout
597*5113495bSYour Name 
598*5113495bSYour Name 
599*5113495bSYour Name 
600*5113495bSYour Name 			The counter saturates and freezes at 0x3F
601*5113495bSYour Name 
602*5113495bSYour Name 
603*5113495bSYour Name 
604*5113495bSYour Name 			<legal all>
605*5113495bSYour Name 
606*5113495bSYour Name forward_due_to_bar_count
607*5113495bSYour Name 
608*5113495bSYour Name 			The number of times that REO started forwarding frames
609*5113495bSYour Name 			even though there is a hole in the bitmap. Forwarding reason
610*5113495bSYour Name 			is reception of BAR frame.
611*5113495bSYour Name 
612*5113495bSYour Name 
613*5113495bSYour Name 
614*5113495bSYour Name 			The counter saturates and freezes at 0x3F
615*5113495bSYour Name 
616*5113495bSYour Name 
617*5113495bSYour Name 
618*5113495bSYour Name 			<legal all>
619*5113495bSYour Name 
620*5113495bSYour Name duplicate_count
621*5113495bSYour Name 
622*5113495bSYour Name 			The number of duplicate frames that have been detected
623*5113495bSYour Name 
624*5113495bSYour Name 			<legal all>
625*5113495bSYour Name 
626*5113495bSYour Name frames_in_order_count
627*5113495bSYour Name 
628*5113495bSYour Name 			The number of frames that have been received in order
629*5113495bSYour Name 			(without a hole that prevented them from being forwarded
630*5113495bSYour Name 			immediately)
631*5113495bSYour Name 
632*5113495bSYour Name 
633*5113495bSYour Name 
634*5113495bSYour Name 			This corresponds to the Reorder opcodes:
635*5113495bSYour Name 
636*5113495bSYour Name 			'FWDCUR' and 'FWD BUF'
637*5113495bSYour Name 
638*5113495bSYour Name 
639*5113495bSYour Name 
640*5113495bSYour Name 			<legal all>
641*5113495bSYour Name 
642*5113495bSYour Name bar_received_count
643*5113495bSYour Name 
644*5113495bSYour Name 			The number of times a BAR frame is received.
645*5113495bSYour Name 
646*5113495bSYour Name 
647*5113495bSYour Name 
648*5113495bSYour Name 			This corresponds to the Reorder opcodes with 'DROP'
649*5113495bSYour Name 
650*5113495bSYour Name 
651*5113495bSYour Name 
652*5113495bSYour Name 			The counter saturates and freezes at 0xFF
653*5113495bSYour Name 
654*5113495bSYour Name 			<legal all>
655*5113495bSYour Name 
656*5113495bSYour Name mpdu_frames_processed_count
657*5113495bSYour Name 
658*5113495bSYour Name 			The total number of MPDU frames that have been processed
659*5113495bSYour Name 			by REO. 'Processing' here means that REO has received them
660*5113495bSYour Name 			out of the entrance ring, and retrieved the corresponding
661*5113495bSYour Name 			RX_REO_QUEUE Descriptor.
662*5113495bSYour Name 
663*5113495bSYour Name 
664*5113495bSYour Name 
665*5113495bSYour Name 			Note that this count includes duplicates, frames that
666*5113495bSYour Name 			later had errors, etc.
667*5113495bSYour Name 
668*5113495bSYour Name 
669*5113495bSYour Name 
670*5113495bSYour Name 			Note that field 'Duplicate_count' indicates how many of
671*5113495bSYour Name 			these MPDUs were duplicates.
672*5113495bSYour Name 
673*5113495bSYour Name 
674*5113495bSYour Name 
675*5113495bSYour Name 			<legal all>
676*5113495bSYour Name 
677*5113495bSYour Name msdu_frames_processed_count
678*5113495bSYour Name 
679*5113495bSYour Name 			The total number of MSDU frames that have been processed
680*5113495bSYour Name 			by REO. 'Processing' here means that REO has received them
681*5113495bSYour Name 			out of the entrance ring, and retrieved the corresponding
682*5113495bSYour Name 			RX_REO_QUEUE Descriptor.
683*5113495bSYour Name 
684*5113495bSYour Name 
685*5113495bSYour Name 
686*5113495bSYour Name 			Note that this count includes duplicates, frames that
687*5113495bSYour Name 			later had errors, etc.
688*5113495bSYour Name 
689*5113495bSYour Name 
690*5113495bSYour Name 
691*5113495bSYour Name 			<legal all>
692*5113495bSYour Name 
693*5113495bSYour Name total_processed_byte_count
694*5113495bSYour Name 
695*5113495bSYour Name 			An approximation of the number of bytes processed for
696*5113495bSYour Name 			this queue.
697*5113495bSYour Name 
698*5113495bSYour Name 			'Processing' here means that REO has received them out
699*5113495bSYour Name 			of the entrance ring, and retrieved the corresponding
700*5113495bSYour Name 			RX_REO_QUEUE Descriptor.
701*5113495bSYour Name 
702*5113495bSYour Name 
703*5113495bSYour Name 
704*5113495bSYour Name 			Note that this count includes duplicates, frames that
705*5113495bSYour Name 			later had errors, etc.
706*5113495bSYour Name 
707*5113495bSYour Name 
708*5113495bSYour Name 
709*5113495bSYour Name 			In 64 byte units
710*5113495bSYour Name 
711*5113495bSYour Name 			<legal all>
712*5113495bSYour Name 
713*5113495bSYour Name late_receive_mpdu_count
714*5113495bSYour Name 
715*5113495bSYour Name 			The number of MPDUs received after the window had
716*5113495bSYour Name 			already moved on. The 'late' sequence window is defined as
717*5113495bSYour Name 			(Window SSN - 256) - (Window SSN - 1)
718*5113495bSYour Name 
719*5113495bSYour Name 
720*5113495bSYour Name 
721*5113495bSYour Name 			This corresponds with Out of order detection in
722*5113495bSYour Name 			duplicate detect FSM
723*5113495bSYour Name 
724*5113495bSYour Name 
725*5113495bSYour Name 
726*5113495bSYour Name 			The counter saturates and freezes at 0xFFF
727*5113495bSYour Name 
728*5113495bSYour Name 
729*5113495bSYour Name 
730*5113495bSYour Name 			<legal all>
731*5113495bSYour Name 
732*5113495bSYour Name window_jump_2k
733*5113495bSYour Name 
734*5113495bSYour Name 			The number of times the window moved more then 2K
735*5113495bSYour Name 
736*5113495bSYour Name 
737*5113495bSYour Name 
738*5113495bSYour Name 			The counter saturates and freezes at 0xF
739*5113495bSYour Name 
740*5113495bSYour Name 
741*5113495bSYour Name 
742*5113495bSYour Name 			(Note: field name can not start with number: previous
743*5113495bSYour Name 			2k_window_jump)
744*5113495bSYour Name 
745*5113495bSYour Name 
746*5113495bSYour Name 
747*5113495bSYour Name 			<legal all>
748*5113495bSYour Name 
749*5113495bSYour Name hole_count
750*5113495bSYour Name 
751*5113495bSYour Name 			The number of times a hole was created in the receive
752*5113495bSYour Name 			bitmap.
753*5113495bSYour Name 
754*5113495bSYour Name 
755*5113495bSYour Name 
756*5113495bSYour Name 			This corresponds to the Reorder opcodes with 'QCUR'
757*5113495bSYour Name 
758*5113495bSYour Name 
759*5113495bSYour Name 
760*5113495bSYour Name 			<legal all>
761*5113495bSYour Name 
762*5113495bSYour Name reserved_29
763*5113495bSYour Name 
764*5113495bSYour Name 			<legal 0>
765*5113495bSYour Name 
766*5113495bSYour Name reserved_30
767*5113495bSYour Name 
768*5113495bSYour Name 			<legal 0>
769*5113495bSYour Name 
770*5113495bSYour Name reserved_31
771*5113495bSYour Name 
772*5113495bSYour Name 			<legal 0>
773*5113495bSYour Name */
774*5113495bSYour Name 
775*5113495bSYour Name 
776*5113495bSYour Name  /* EXTERNAL REFERENCE : struct uniform_descriptor_header descriptor_header */
777*5113495bSYour Name 
778*5113495bSYour Name 
779*5113495bSYour Name /* Description		RX_REO_QUEUE_0_DESCRIPTOR_HEADER_OWNER
780*5113495bSYour Name 
781*5113495bSYour Name 			Consumer: In DEBUG mode: WBM, TQM, TXDMA, RXDMA, REO
782*5113495bSYour Name 
783*5113495bSYour Name 			Producer: In DEBUG mode: WBM, TQM, TXDMA, RXDMA, REO
784*5113495bSYour Name 
785*5113495bSYour Name 
786*5113495bSYour Name 
787*5113495bSYour Name 			The owner of this data structure:
788*5113495bSYour Name 
789*5113495bSYour Name 			<enum 0 WBM_owned> Buffer Manager currently owns this
790*5113495bSYour Name 			data structure.
791*5113495bSYour Name 
792*5113495bSYour Name 			<enum 1 SW_OR_FW_owned> Software of FW currently owns
793*5113495bSYour Name 			this data structure.
794*5113495bSYour Name 
795*5113495bSYour Name 			<enum 2 TQM_owned> Transmit Queue Manager currently owns
796*5113495bSYour Name 			this data structure.
797*5113495bSYour Name 
798*5113495bSYour Name 			<enum 3 RXDMA_owned> Receive DMA currently owns this
799*5113495bSYour Name 			data structure.
800*5113495bSYour Name 
801*5113495bSYour Name 			<enum 4 REO_owned> Reorder currently owns this data
802*5113495bSYour Name 			structure.
803*5113495bSYour Name 
804*5113495bSYour Name 			<enum 5 SWITCH_owned> SWITCH currently owns this data
805*5113495bSYour Name 			structure.
806*5113495bSYour Name 
807*5113495bSYour Name 
808*5113495bSYour Name 
809*5113495bSYour Name 			<legal 0-5>
810*5113495bSYour Name */
811*5113495bSYour Name #define RX_REO_QUEUE_0_DESCRIPTOR_HEADER_OWNER_OFFSET                0x00000000
812*5113495bSYour Name #define RX_REO_QUEUE_0_DESCRIPTOR_HEADER_OWNER_LSB                   0
813*5113495bSYour Name #define RX_REO_QUEUE_0_DESCRIPTOR_HEADER_OWNER_MASK                  0x0000000f
814*5113495bSYour Name 
815*5113495bSYour Name /* Description		RX_REO_QUEUE_0_DESCRIPTOR_HEADER_BUFFER_TYPE
816*5113495bSYour Name 
817*5113495bSYour Name 			Consumer: In DEBUG mode: WBM, TQM, TXDMA, RXDMA, REO
818*5113495bSYour Name 
819*5113495bSYour Name 			Producer: In DEBUG mode: WBM, TQM, TXDMA, RXDMA, REO
820*5113495bSYour Name 
821*5113495bSYour Name 
822*5113495bSYour Name 
823*5113495bSYour Name 			Field describing what contents format is of this
824*5113495bSYour Name 			descriptor
825*5113495bSYour Name 
826*5113495bSYour Name 
827*5113495bSYour Name 
828*5113495bSYour Name 			<enum 0 Transmit_MSDU_Link_descriptor >
829*5113495bSYour Name 
830*5113495bSYour Name 			<enum 1 Transmit_MPDU_Link_descriptor >
831*5113495bSYour Name 
832*5113495bSYour Name 			<enum 2 Transmit_MPDU_Queue_head_descriptor>
833*5113495bSYour Name 
834*5113495bSYour Name 			<enum 3 Transmit_MPDU_Queue_ext_descriptor>
835*5113495bSYour Name 
836*5113495bSYour Name 			<enum 4 Transmit_flow_descriptor>
837*5113495bSYour Name 
838*5113495bSYour Name 			<enum 5 Transmit_buffer > NOT TO BE USED:
839*5113495bSYour Name 
840*5113495bSYour Name 
841*5113495bSYour Name 
842*5113495bSYour Name 			<enum 6 Receive_MSDU_Link_descriptor >
843*5113495bSYour Name 
844*5113495bSYour Name 			<enum 7 Receive_MPDU_Link_descriptor >
845*5113495bSYour Name 
846*5113495bSYour Name 			<enum 8 Receive_REO_queue_descriptor >
847*5113495bSYour Name 
848*5113495bSYour Name 			<enum 9 Receive_REO_queue_ext_descriptor >
849*5113495bSYour Name 
850*5113495bSYour Name 
851*5113495bSYour Name 
852*5113495bSYour Name 			<enum 10 Receive_buffer >
853*5113495bSYour Name 
854*5113495bSYour Name 
855*5113495bSYour Name 
856*5113495bSYour Name 			<enum 11 Idle_link_list_entry>
857*5113495bSYour Name 
858*5113495bSYour Name 
859*5113495bSYour Name 
860*5113495bSYour Name 			<legal 0-11>
861*5113495bSYour Name */
862*5113495bSYour Name #define RX_REO_QUEUE_0_DESCRIPTOR_HEADER_BUFFER_TYPE_OFFSET          0x00000000
863*5113495bSYour Name #define RX_REO_QUEUE_0_DESCRIPTOR_HEADER_BUFFER_TYPE_LSB             4
864*5113495bSYour Name #define RX_REO_QUEUE_0_DESCRIPTOR_HEADER_BUFFER_TYPE_MASK            0x000000f0
865*5113495bSYour Name 
866*5113495bSYour Name /* Description		RX_REO_QUEUE_0_DESCRIPTOR_HEADER_RESERVED_0A
867*5113495bSYour Name 
868*5113495bSYour Name 			<legal 0>
869*5113495bSYour Name */
870*5113495bSYour Name #define RX_REO_QUEUE_0_DESCRIPTOR_HEADER_RESERVED_0A_OFFSET          0x00000000
871*5113495bSYour Name #define RX_REO_QUEUE_0_DESCRIPTOR_HEADER_RESERVED_0A_LSB             8
872*5113495bSYour Name #define RX_REO_QUEUE_0_DESCRIPTOR_HEADER_RESERVED_0A_MASK            0xffffff00
873*5113495bSYour Name 
874*5113495bSYour Name /* Description		RX_REO_QUEUE_1_RECEIVE_QUEUE_NUMBER
875*5113495bSYour Name 
876*5113495bSYour Name 			Indicates the MPDU queue ID to which this MPDU link
877*5113495bSYour Name 			descriptor belongs
878*5113495bSYour Name 
879*5113495bSYour Name 			Used for tracking and debugging
880*5113495bSYour Name 
881*5113495bSYour Name 			<legal all>
882*5113495bSYour Name */
883*5113495bSYour Name #define RX_REO_QUEUE_1_RECEIVE_QUEUE_NUMBER_OFFSET                   0x00000004
884*5113495bSYour Name #define RX_REO_QUEUE_1_RECEIVE_QUEUE_NUMBER_LSB                      0
885*5113495bSYour Name #define RX_REO_QUEUE_1_RECEIVE_QUEUE_NUMBER_MASK                     0x0000ffff
886*5113495bSYour Name 
887*5113495bSYour Name /* Description		RX_REO_QUEUE_1_RESERVED_1B
888*5113495bSYour Name 
889*5113495bSYour Name 			<legal 0>
890*5113495bSYour Name */
891*5113495bSYour Name #define RX_REO_QUEUE_1_RESERVED_1B_OFFSET                            0x00000004
892*5113495bSYour Name #define RX_REO_QUEUE_1_RESERVED_1B_LSB                               16
893*5113495bSYour Name #define RX_REO_QUEUE_1_RESERVED_1B_MASK                              0xffff0000
894*5113495bSYour Name 
895*5113495bSYour Name /* Description		RX_REO_QUEUE_2_VLD
896*5113495bSYour Name 
897*5113495bSYour Name 			Valid bit indicating a session is established and the
898*5113495bSYour Name 			queue descriptor is valid(Filled by SW)
899*5113495bSYour Name 
900*5113495bSYour Name 			<legal all>
901*5113495bSYour Name */
902*5113495bSYour Name #define RX_REO_QUEUE_2_VLD_OFFSET                                    0x00000008
903*5113495bSYour Name #define RX_REO_QUEUE_2_VLD_LSB                                       0
904*5113495bSYour Name #define RX_REO_QUEUE_2_VLD_MASK                                      0x00000001
905*5113495bSYour Name 
906*5113495bSYour Name /* Description		RX_REO_QUEUE_2_ASSOCIATED_LINK_DESCRIPTOR_COUNTER
907*5113495bSYour Name 
908*5113495bSYour Name 			Indicates which of the 3 link descriptor counters shall
909*5113495bSYour Name 			be incremented or decremented when link descriptors are
910*5113495bSYour Name 			added or removed from this flow queue.
911*5113495bSYour Name 
912*5113495bSYour Name 			MSDU link descriptors related with MPDUs stored in the
913*5113495bSYour Name 			re-order buffer shall also be included in this count.
914*5113495bSYour Name 
915*5113495bSYour Name 
916*5113495bSYour Name 
917*5113495bSYour Name 			<legal 0-2>
918*5113495bSYour Name */
919*5113495bSYour Name #define RX_REO_QUEUE_2_ASSOCIATED_LINK_DESCRIPTOR_COUNTER_OFFSET     0x00000008
920*5113495bSYour Name #define RX_REO_QUEUE_2_ASSOCIATED_LINK_DESCRIPTOR_COUNTER_LSB        1
921*5113495bSYour Name #define RX_REO_QUEUE_2_ASSOCIATED_LINK_DESCRIPTOR_COUNTER_MASK       0x00000006
922*5113495bSYour Name 
923*5113495bSYour Name /* Description		RX_REO_QUEUE_2_DISABLE_DUPLICATE_DETECTION
924*5113495bSYour Name 
925*5113495bSYour Name 			When set, do not perform any duplicate detection.
926*5113495bSYour Name 
927*5113495bSYour Name 
928*5113495bSYour Name 
929*5113495bSYour Name 			<legal all>
930*5113495bSYour Name */
931*5113495bSYour Name #define RX_REO_QUEUE_2_DISABLE_DUPLICATE_DETECTION_OFFSET            0x00000008
932*5113495bSYour Name #define RX_REO_QUEUE_2_DISABLE_DUPLICATE_DETECTION_LSB               3
933*5113495bSYour Name #define RX_REO_QUEUE_2_DISABLE_DUPLICATE_DETECTION_MASK              0x00000008
934*5113495bSYour Name 
935*5113495bSYour Name /* Description		RX_REO_QUEUE_2_SOFT_REORDER_ENABLE
936*5113495bSYour Name 
937*5113495bSYour Name 			When set, REO has been instructed to not perform the
938*5113495bSYour Name 			actual re-ordering of frames for this queue, but just to
939*5113495bSYour Name 			insert the reorder opcodes.
940*5113495bSYour Name 
941*5113495bSYour Name 
942*5113495bSYour Name 
943*5113495bSYour Name 			Note that this implies that REO is also not going to
944*5113495bSYour Name 			perform any MSDU level operations, and the entire MPDU (and
945*5113495bSYour Name 			thus pointer to the MSDU link descriptor) will be pushed to
946*5113495bSYour Name 			a destination ring that SW has programmed in a SW
947*5113495bSYour Name 			programmable configuration register in REO
948*5113495bSYour Name 
949*5113495bSYour Name 
950*5113495bSYour Name 
951*5113495bSYour Name 			<legal all>
952*5113495bSYour Name */
953*5113495bSYour Name #define RX_REO_QUEUE_2_SOFT_REORDER_ENABLE_OFFSET                    0x00000008
954*5113495bSYour Name #define RX_REO_QUEUE_2_SOFT_REORDER_ENABLE_LSB                       4
955*5113495bSYour Name #define RX_REO_QUEUE_2_SOFT_REORDER_ENABLE_MASK                      0x00000010
956*5113495bSYour Name 
957*5113495bSYour Name /* Description		RX_REO_QUEUE_2_AC
958*5113495bSYour Name 
959*5113495bSYour Name 			Indicates which access category the queue descriptor
960*5113495bSYour Name 			belongs to(filled by SW)
961*5113495bSYour Name 
962*5113495bSYour Name 			<legal all>
963*5113495bSYour Name */
964*5113495bSYour Name #define RX_REO_QUEUE_2_AC_OFFSET                                     0x00000008
965*5113495bSYour Name #define RX_REO_QUEUE_2_AC_LSB                                        5
966*5113495bSYour Name #define RX_REO_QUEUE_2_AC_MASK                                       0x00000060
967*5113495bSYour Name 
968*5113495bSYour Name /* Description		RX_REO_QUEUE_2_BAR
969*5113495bSYour Name 
970*5113495bSYour Name 			Indicates if  BAR has been received (mostly used for
971*5113495bSYour Name 			debug purpose and this is filled by REO)
972*5113495bSYour Name 
973*5113495bSYour Name 			<legal all>
974*5113495bSYour Name */
975*5113495bSYour Name #define RX_REO_QUEUE_2_BAR_OFFSET                                    0x00000008
976*5113495bSYour Name #define RX_REO_QUEUE_2_BAR_LSB                                       7
977*5113495bSYour Name #define RX_REO_QUEUE_2_BAR_MASK                                      0x00000080
978*5113495bSYour Name 
979*5113495bSYour Name /* Description		RX_REO_QUEUE_2_RTY
980*5113495bSYour Name 
981*5113495bSYour Name 			Retry bit is checked if this bit is set.
982*5113495bSYour Name 
983*5113495bSYour Name 			<legal all>
984*5113495bSYour Name */
985*5113495bSYour Name #define RX_REO_QUEUE_2_RTY_OFFSET                                    0x00000008
986*5113495bSYour Name #define RX_REO_QUEUE_2_RTY_LSB                                       8
987*5113495bSYour Name #define RX_REO_QUEUE_2_RTY_MASK                                      0x00000100
988*5113495bSYour Name 
989*5113495bSYour Name /* Description		RX_REO_QUEUE_2_CHK_2K_MODE
990*5113495bSYour Name 
991*5113495bSYour Name 			Indicates what type of operation is expected from Reo
992*5113495bSYour Name 			when the received frame SN falls within the 2K window
993*5113495bSYour Name 
994*5113495bSYour Name 
995*5113495bSYour Name 
996*5113495bSYour Name 			See REO MLD document for programming details.
997*5113495bSYour Name 
998*5113495bSYour Name 			<legal all>
999*5113495bSYour Name */
1000*5113495bSYour Name #define RX_REO_QUEUE_2_CHK_2K_MODE_OFFSET                            0x00000008
1001*5113495bSYour Name #define RX_REO_QUEUE_2_CHK_2K_MODE_LSB                               9
1002*5113495bSYour Name #define RX_REO_QUEUE_2_CHK_2K_MODE_MASK                              0x00000200
1003*5113495bSYour Name 
1004*5113495bSYour Name /* Description		RX_REO_QUEUE_2_OOR_MODE
1005*5113495bSYour Name 
1006*5113495bSYour Name 			Out of Order mode:
1007*5113495bSYour Name 
1008*5113495bSYour Name 			Indicates what type of operation is expected when the
1009*5113495bSYour Name 			received frame falls within the OOR window.
1010*5113495bSYour Name 
1011*5113495bSYour Name 
1012*5113495bSYour Name 
1013*5113495bSYour Name 			See REO MLD document for programming details.
1014*5113495bSYour Name 
1015*5113495bSYour Name 			<legal all>
1016*5113495bSYour Name */
1017*5113495bSYour Name #define RX_REO_QUEUE_2_OOR_MODE_OFFSET                               0x00000008
1018*5113495bSYour Name #define RX_REO_QUEUE_2_OOR_MODE_LSB                                  10
1019*5113495bSYour Name #define RX_REO_QUEUE_2_OOR_MODE_MASK                                 0x00000400
1020*5113495bSYour Name 
1021*5113495bSYour Name /* Description		RX_REO_QUEUE_2_BA_WINDOW_SIZE
1022*5113495bSYour Name 
1023*5113495bSYour Name 			Indicates the negotiated (window size + 1).
1024*5113495bSYour Name 
1025*5113495bSYour Name 			it can go up to Max of 256bits.
1026*5113495bSYour Name 
1027*5113495bSYour Name 
1028*5113495bSYour Name 
1029*5113495bSYour Name 			A value 255 means 256 bitmap, 63 means 64 bitmap, 0
1030*5113495bSYour Name 			(means non-BA session, with window size of 0). The 3 values
1031*5113495bSYour Name 			here are the main values validated, but other values should
1032*5113495bSYour Name 			work as well.
1033*5113495bSYour Name 
1034*5113495bSYour Name 
1035*5113495bSYour Name 
1036*5113495bSYour Name 			A BA window size of 0 (=> one frame entry bitmat), means
1037*5113495bSYour Name 			that there is NO RX_REO_QUEUE_EXT descriptor following this
1038*5113495bSYour Name 			RX_REO_QUEUE STRUCT in memory
1039*5113495bSYour Name 
1040*5113495bSYour Name 
1041*5113495bSYour Name 
1042*5113495bSYour Name 			A BA window size of 1 - 105, means that there is 1
1043*5113495bSYour Name 			RX_REO_QUEUE_EXT descriptor directly following this
1044*5113495bSYour Name 			RX_REO_QUEUE STRUCT in memory.
1045*5113495bSYour Name 
1046*5113495bSYour Name 
1047*5113495bSYour Name 
1048*5113495bSYour Name 			A BA window size of 106 - 210, means that there are 2
1049*5113495bSYour Name 			RX_REO_QUEUE_EXT descriptors directly following this
1050*5113495bSYour Name 			RX_REO_QUEUE STRUCT in memory
1051*5113495bSYour Name 
1052*5113495bSYour Name 
1053*5113495bSYour Name 
1054*5113495bSYour Name 			A BA window size of 211 - 256, means that there are 3
1055*5113495bSYour Name 			RX_REO_QUEUE_EXT descriptors directly following this
1056*5113495bSYour Name 			RX_REO_QUEUE STRUCT in memory
1057*5113495bSYour Name 
1058*5113495bSYour Name 
1059*5113495bSYour Name 
1060*5113495bSYour Name 			<legal 0 - 255>
1061*5113495bSYour Name */
1062*5113495bSYour Name #define RX_REO_QUEUE_2_BA_WINDOW_SIZE_OFFSET                         0x00000008
1063*5113495bSYour Name #define RX_REO_QUEUE_2_BA_WINDOW_SIZE_LSB                            11
1064*5113495bSYour Name #define RX_REO_QUEUE_2_BA_WINDOW_SIZE_MASK                           0x0007f800
1065*5113495bSYour Name 
1066*5113495bSYour Name /* Description		RX_REO_QUEUE_2_PN_CHECK_NEEDED
1067*5113495bSYour Name 
1068*5113495bSYour Name 			When set, REO shall perform the PN increment check
1069*5113495bSYour Name 
1070*5113495bSYour Name 			<legal all>
1071*5113495bSYour Name */
1072*5113495bSYour Name #define RX_REO_QUEUE_2_PN_CHECK_NEEDED_OFFSET                        0x00000008
1073*5113495bSYour Name #define RX_REO_QUEUE_2_PN_CHECK_NEEDED_LSB                           19
1074*5113495bSYour Name #define RX_REO_QUEUE_2_PN_CHECK_NEEDED_MASK                          0x00080000
1075*5113495bSYour Name 
1076*5113495bSYour Name /* Description		RX_REO_QUEUE_2_PN_SHALL_BE_EVEN
1077*5113495bSYour Name 
1078*5113495bSYour Name 			Field only valid when 'pn_check_needed' is set.
1079*5113495bSYour Name 
1080*5113495bSYour Name 
1081*5113495bSYour Name 
1082*5113495bSYour Name 			When set, REO shall confirm that the received PN number
1083*5113495bSYour Name 			is not only incremented, but also always an even number
1084*5113495bSYour Name 
1085*5113495bSYour Name 			<legal all>
1086*5113495bSYour Name */
1087*5113495bSYour Name #define RX_REO_QUEUE_2_PN_SHALL_BE_EVEN_OFFSET                       0x00000008
1088*5113495bSYour Name #define RX_REO_QUEUE_2_PN_SHALL_BE_EVEN_LSB                          20
1089*5113495bSYour Name #define RX_REO_QUEUE_2_PN_SHALL_BE_EVEN_MASK                         0x00100000
1090*5113495bSYour Name 
1091*5113495bSYour Name /* Description		RX_REO_QUEUE_2_PN_SHALL_BE_UNEVEN
1092*5113495bSYour Name 
1093*5113495bSYour Name 			Field only valid when 'pn_check_needed' is set.
1094*5113495bSYour Name 
1095*5113495bSYour Name 
1096*5113495bSYour Name 
1097*5113495bSYour Name 			When set, REO shall confirm that the received PN number
1098*5113495bSYour Name 			is not only incremented, but also always an uneven number
1099*5113495bSYour Name 
1100*5113495bSYour Name 			<legal all>
1101*5113495bSYour Name */
1102*5113495bSYour Name #define RX_REO_QUEUE_2_PN_SHALL_BE_UNEVEN_OFFSET                     0x00000008
1103*5113495bSYour Name #define RX_REO_QUEUE_2_PN_SHALL_BE_UNEVEN_LSB                        21
1104*5113495bSYour Name #define RX_REO_QUEUE_2_PN_SHALL_BE_UNEVEN_MASK                       0x00200000
1105*5113495bSYour Name 
1106*5113495bSYour Name /* Description		RX_REO_QUEUE_2_PN_HANDLING_ENABLE
1107*5113495bSYour Name 
1108*5113495bSYour Name 			Field only valid when 'pn_check_needed' is set.
1109*5113495bSYour Name 
1110*5113495bSYour Name 
1111*5113495bSYour Name 
1112*5113495bSYour Name 			When set, and REO detected a PN error, HW shall set the
1113*5113495bSYour Name 			'pn_error_detected_flag'.
1114*5113495bSYour Name 
1115*5113495bSYour Name 			<legal all>
1116*5113495bSYour Name */
1117*5113495bSYour Name #define RX_REO_QUEUE_2_PN_HANDLING_ENABLE_OFFSET                     0x00000008
1118*5113495bSYour Name #define RX_REO_QUEUE_2_PN_HANDLING_ENABLE_LSB                        22
1119*5113495bSYour Name #define RX_REO_QUEUE_2_PN_HANDLING_ENABLE_MASK                       0x00400000
1120*5113495bSYour Name 
1121*5113495bSYour Name /* Description		RX_REO_QUEUE_2_PN_SIZE
1122*5113495bSYour Name 
1123*5113495bSYour Name 			Size of the PN field check.
1124*5113495bSYour Name 
1125*5113495bSYour Name 			Needed for wrap around handling...
1126*5113495bSYour Name 
1127*5113495bSYour Name 
1128*5113495bSYour Name 
1129*5113495bSYour Name 			<enum 0     pn_size_24>
1130*5113495bSYour Name 
1131*5113495bSYour Name 			<enum 1     pn_size_48>
1132*5113495bSYour Name 
1133*5113495bSYour Name 			<enum 2     pn_size_128>
1134*5113495bSYour Name 
1135*5113495bSYour Name 
1136*5113495bSYour Name 
1137*5113495bSYour Name 			<legal 0-2>
1138*5113495bSYour Name */
1139*5113495bSYour Name #define RX_REO_QUEUE_2_PN_SIZE_OFFSET                                0x00000008
1140*5113495bSYour Name #define RX_REO_QUEUE_2_PN_SIZE_LSB                                   23
1141*5113495bSYour Name #define RX_REO_QUEUE_2_PN_SIZE_MASK                                  0x01800000
1142*5113495bSYour Name 
1143*5113495bSYour Name /* Description		RX_REO_QUEUE_2_IGNORE_AMPDU_FLAG
1144*5113495bSYour Name 
1145*5113495bSYour Name 			When set, REO shall ignore the ampdu_flag on the
1146*5113495bSYour Name 			entrance descriptor for this queue.
1147*5113495bSYour Name 
1148*5113495bSYour Name 			<legal all>
1149*5113495bSYour Name */
1150*5113495bSYour Name #define RX_REO_QUEUE_2_IGNORE_AMPDU_FLAG_OFFSET                      0x00000008
1151*5113495bSYour Name #define RX_REO_QUEUE_2_IGNORE_AMPDU_FLAG_LSB                         25
1152*5113495bSYour Name #define RX_REO_QUEUE_2_IGNORE_AMPDU_FLAG_MASK                        0x02000000
1153*5113495bSYour Name 
1154*5113495bSYour Name /* Description		RX_REO_QUEUE_2_RESERVED_2B
1155*5113495bSYour Name 
1156*5113495bSYour Name 			<legal 0>
1157*5113495bSYour Name */
1158*5113495bSYour Name #define RX_REO_QUEUE_2_RESERVED_2B_OFFSET                            0x00000008
1159*5113495bSYour Name #define RX_REO_QUEUE_2_RESERVED_2B_LSB                               26
1160*5113495bSYour Name #define RX_REO_QUEUE_2_RESERVED_2B_MASK                              0xfc000000
1161*5113495bSYour Name 
1162*5113495bSYour Name /* Description		RX_REO_QUEUE_3_SVLD
1163*5113495bSYour Name 
1164*5113495bSYour Name 			Sequence number in next field is valid one. It can be
1165*5113495bSYour Name 			filled by SW if the want to fill in the any negotiated SSN,
1166*5113495bSYour Name 			otherwise REO will fill the sequence number of first
1167*5113495bSYour Name 			received packet and set this bit to 1.
1168*5113495bSYour Name 
1169*5113495bSYour Name 			<legal all>
1170*5113495bSYour Name */
1171*5113495bSYour Name #define RX_REO_QUEUE_3_SVLD_OFFSET                                   0x0000000c
1172*5113495bSYour Name #define RX_REO_QUEUE_3_SVLD_LSB                                      0
1173*5113495bSYour Name #define RX_REO_QUEUE_3_SVLD_MASK                                     0x00000001
1174*5113495bSYour Name 
1175*5113495bSYour Name /* Description		RX_REO_QUEUE_3_SSN
1176*5113495bSYour Name 
1177*5113495bSYour Name 			Starting Sequence number of the session, this changes
1178*5113495bSYour Name 			whenever window moves. (can be filled by SW then maintained
1179*5113495bSYour Name 			by REO)
1180*5113495bSYour Name 
1181*5113495bSYour Name 			<legal all>
1182*5113495bSYour Name */
1183*5113495bSYour Name #define RX_REO_QUEUE_3_SSN_OFFSET                                    0x0000000c
1184*5113495bSYour Name #define RX_REO_QUEUE_3_SSN_LSB                                       1
1185*5113495bSYour Name #define RX_REO_QUEUE_3_SSN_MASK                                      0x00001ffe
1186*5113495bSYour Name 
1187*5113495bSYour Name /* Description		RX_REO_QUEUE_3_CURRENT_INDEX
1188*5113495bSYour Name 
1189*5113495bSYour Name 			Points to last forwarded packet
1190*5113495bSYour Name 
1191*5113495bSYour Name 			<legal all>
1192*5113495bSYour Name */
1193*5113495bSYour Name #define RX_REO_QUEUE_3_CURRENT_INDEX_OFFSET                          0x0000000c
1194*5113495bSYour Name #define RX_REO_QUEUE_3_CURRENT_INDEX_LSB                             13
1195*5113495bSYour Name #define RX_REO_QUEUE_3_CURRENT_INDEX_MASK                            0x001fe000
1196*5113495bSYour Name 
1197*5113495bSYour Name /* Description		RX_REO_QUEUE_3_SEQ_2K_ERROR_DETECTED_FLAG
1198*5113495bSYour Name 
1199*5113495bSYour Name 			Set by REO, can only be cleared by SW
1200*5113495bSYour Name 
1201*5113495bSYour Name 
1202*5113495bSYour Name 
1203*5113495bSYour Name 			When set, REO has detected a 2k error jump in the
1204*5113495bSYour Name 			sequence number and from that moment forward, all new frames
1205*5113495bSYour Name 			are forwarded directly to FW, without duplicate detect,
1206*5113495bSYour Name 			reordering, etc.
1207*5113495bSYour Name 
1208*5113495bSYour Name 			<legal all>
1209*5113495bSYour Name */
1210*5113495bSYour Name #define RX_REO_QUEUE_3_SEQ_2K_ERROR_DETECTED_FLAG_OFFSET             0x0000000c
1211*5113495bSYour Name #define RX_REO_QUEUE_3_SEQ_2K_ERROR_DETECTED_FLAG_LSB                21
1212*5113495bSYour Name #define RX_REO_QUEUE_3_SEQ_2K_ERROR_DETECTED_FLAG_MASK               0x00200000
1213*5113495bSYour Name 
1214*5113495bSYour Name /* Description		RX_REO_QUEUE_3_PN_ERROR_DETECTED_FLAG
1215*5113495bSYour Name 
1216*5113495bSYour Name 			Set by REO, can only be cleared by SW
1217*5113495bSYour Name 
1218*5113495bSYour Name 
1219*5113495bSYour Name 
1220*5113495bSYour Name 			When set, REO has detected a PN error and from that
1221*5113495bSYour Name 			moment forward, all new frames are forwarded directly to FW,
1222*5113495bSYour Name 			without duplicate detect, reordering, etc.
1223*5113495bSYour Name 
1224*5113495bSYour Name 			<legal all>
1225*5113495bSYour Name */
1226*5113495bSYour Name #define RX_REO_QUEUE_3_PN_ERROR_DETECTED_FLAG_OFFSET                 0x0000000c
1227*5113495bSYour Name #define RX_REO_QUEUE_3_PN_ERROR_DETECTED_FLAG_LSB                    22
1228*5113495bSYour Name #define RX_REO_QUEUE_3_PN_ERROR_DETECTED_FLAG_MASK                   0x00400000
1229*5113495bSYour Name 
1230*5113495bSYour Name /* Description		RX_REO_QUEUE_3_RESERVED_3A
1231*5113495bSYour Name 
1232*5113495bSYour Name 			<legal 0>
1233*5113495bSYour Name */
1234*5113495bSYour Name #define RX_REO_QUEUE_3_RESERVED_3A_OFFSET                            0x0000000c
1235*5113495bSYour Name #define RX_REO_QUEUE_3_RESERVED_3A_LSB                               23
1236*5113495bSYour Name #define RX_REO_QUEUE_3_RESERVED_3A_MASK                              0x7f800000
1237*5113495bSYour Name 
1238*5113495bSYour Name /* Description		RX_REO_QUEUE_3_PN_VALID
1239*5113495bSYour Name 
1240*5113495bSYour Name 			PN number in next fields are valid. It can be filled by
1241*5113495bSYour Name 			SW if it wants to fill in the any negotiated SSN, otherwise
1242*5113495bSYour Name 			REO will fill the pn based on the first received packet and
1243*5113495bSYour Name 			set this bit to 1.
1244*5113495bSYour Name 
1245*5113495bSYour Name 			<legal all>
1246*5113495bSYour Name */
1247*5113495bSYour Name #define RX_REO_QUEUE_3_PN_VALID_OFFSET                               0x0000000c
1248*5113495bSYour Name #define RX_REO_QUEUE_3_PN_VALID_LSB                                  31
1249*5113495bSYour Name #define RX_REO_QUEUE_3_PN_VALID_MASK                                 0x80000000
1250*5113495bSYour Name 
1251*5113495bSYour Name /* Description		RX_REO_QUEUE_4_PN_31_0
1252*5113495bSYour Name 
1253*5113495bSYour Name 
1254*5113495bSYour Name 			<legal all>
1255*5113495bSYour Name */
1256*5113495bSYour Name #define RX_REO_QUEUE_4_PN_31_0_OFFSET                                0x00000010
1257*5113495bSYour Name #define RX_REO_QUEUE_4_PN_31_0_LSB                                   0
1258*5113495bSYour Name #define RX_REO_QUEUE_4_PN_31_0_MASK                                  0xffffffff
1259*5113495bSYour Name 
1260*5113495bSYour Name /* Description		RX_REO_QUEUE_5_PN_63_32
1261*5113495bSYour Name 
1262*5113495bSYour Name 			Bits [63:32] of the PN number.
1263*5113495bSYour Name 
1264*5113495bSYour Name 			<legal all>
1265*5113495bSYour Name */
1266*5113495bSYour Name #define RX_REO_QUEUE_5_PN_63_32_OFFSET                               0x00000014
1267*5113495bSYour Name #define RX_REO_QUEUE_5_PN_63_32_LSB                                  0
1268*5113495bSYour Name #define RX_REO_QUEUE_5_PN_63_32_MASK                                 0xffffffff
1269*5113495bSYour Name 
1270*5113495bSYour Name /* Description		RX_REO_QUEUE_6_PN_95_64
1271*5113495bSYour Name 
1272*5113495bSYour Name 			Bits [95:64] of the PN number.
1273*5113495bSYour Name 
1274*5113495bSYour Name 			<legal all>
1275*5113495bSYour Name */
1276*5113495bSYour Name #define RX_REO_QUEUE_6_PN_95_64_OFFSET                               0x00000018
1277*5113495bSYour Name #define RX_REO_QUEUE_6_PN_95_64_LSB                                  0
1278*5113495bSYour Name #define RX_REO_QUEUE_6_PN_95_64_MASK                                 0xffffffff
1279*5113495bSYour Name 
1280*5113495bSYour Name /* Description		RX_REO_QUEUE_7_PN_127_96
1281*5113495bSYour Name 
1282*5113495bSYour Name 			Bits [127:96] of the PN number.
1283*5113495bSYour Name 
1284*5113495bSYour Name 			<legal all>
1285*5113495bSYour Name */
1286*5113495bSYour Name #define RX_REO_QUEUE_7_PN_127_96_OFFSET                              0x0000001c
1287*5113495bSYour Name #define RX_REO_QUEUE_7_PN_127_96_LSB                                 0
1288*5113495bSYour Name #define RX_REO_QUEUE_7_PN_127_96_MASK                                0xffffffff
1289*5113495bSYour Name 
1290*5113495bSYour Name /* Description		RX_REO_QUEUE_8_LAST_RX_ENQUEUE_TIMESTAMP
1291*5113495bSYour Name 
1292*5113495bSYour Name 			This timestamp is updated when an MPDU is received and
1293*5113495bSYour Name 			accesses this Queue Descriptor. It does not include the
1294*5113495bSYour Name 			access due to Command TLVs or Aging (which will be updated
1295*5113495bSYour Name 			in Last_rx_dequeue_timestamp).
1296*5113495bSYour Name 
1297*5113495bSYour Name 			<legal all>
1298*5113495bSYour Name */
1299*5113495bSYour Name #define RX_REO_QUEUE_8_LAST_RX_ENQUEUE_TIMESTAMP_OFFSET              0x00000020
1300*5113495bSYour Name #define RX_REO_QUEUE_8_LAST_RX_ENQUEUE_TIMESTAMP_LSB                 0
1301*5113495bSYour Name #define RX_REO_QUEUE_8_LAST_RX_ENQUEUE_TIMESTAMP_MASK                0xffffffff
1302*5113495bSYour Name 
1303*5113495bSYour Name /* Description		RX_REO_QUEUE_9_LAST_RX_DEQUEUE_TIMESTAMP
1304*5113495bSYour Name 
1305*5113495bSYour Name 			This timestamp is used for Aging. When an MPDU or
1306*5113495bSYour Name 			multiple MPDUs are forwarded, either due to window movement,
1307*5113495bSYour Name 			bar, aging or command flush, this timestamp is updated. Also
1308*5113495bSYour Name 			when the bitmap is all zero and the first time an MPDU is
1309*5113495bSYour Name 			queued (opcode=QCUR), this timestamp is updated for aging.
1310*5113495bSYour Name 
1311*5113495bSYour Name 			<legal all>
1312*5113495bSYour Name */
1313*5113495bSYour Name #define RX_REO_QUEUE_9_LAST_RX_DEQUEUE_TIMESTAMP_OFFSET              0x00000024
1314*5113495bSYour Name #define RX_REO_QUEUE_9_LAST_RX_DEQUEUE_TIMESTAMP_LSB                 0
1315*5113495bSYour Name #define RX_REO_QUEUE_9_LAST_RX_DEQUEUE_TIMESTAMP_MASK                0xffffffff
1316*5113495bSYour Name 
1317*5113495bSYour Name /* Description		RX_REO_QUEUE_10_PTR_TO_NEXT_AGING_QUEUE_31_0
1318*5113495bSYour Name 
1319*5113495bSYour Name 			Address  (address bits 31-0)of next RX_REO_QUEUE
1320*5113495bSYour Name 			descriptor in the 'receive timestamp' ordered list.
1321*5113495bSYour Name 
1322*5113495bSYour Name 			From it the Position of this queue descriptor in the per
1323*5113495bSYour Name 			AC aging waitlist  can be derived.
1324*5113495bSYour Name 
1325*5113495bSYour Name 			Value 0x0 indicates the 'NULL' pointer which implies
1326*5113495bSYour Name 			that this is the last entry in the list.
1327*5113495bSYour Name 
1328*5113495bSYour Name 			<legal all>
1329*5113495bSYour Name */
1330*5113495bSYour Name #define RX_REO_QUEUE_10_PTR_TO_NEXT_AGING_QUEUE_31_0_OFFSET          0x00000028
1331*5113495bSYour Name #define RX_REO_QUEUE_10_PTR_TO_NEXT_AGING_QUEUE_31_0_LSB             0
1332*5113495bSYour Name #define RX_REO_QUEUE_10_PTR_TO_NEXT_AGING_QUEUE_31_0_MASK            0xffffffff
1333*5113495bSYour Name 
1334*5113495bSYour Name /* Description		RX_REO_QUEUE_11_PTR_TO_NEXT_AGING_QUEUE_39_32
1335*5113495bSYour Name 
1336*5113495bSYour Name 			Address  (address bits 39-32)of next RX_REO_QUEUE
1337*5113495bSYour Name 			descriptor in the 'receive timestamp' ordered list.
1338*5113495bSYour Name 
1339*5113495bSYour Name 			From it the Position of this queue descriptor in the per
1340*5113495bSYour Name 			AC aging waitlist  can be derived.
1341*5113495bSYour Name 
1342*5113495bSYour Name 			Value 0x0 indicates the 'NULL' pointer which implies
1343*5113495bSYour Name 			that this is the last entry in the list.
1344*5113495bSYour Name 
1345*5113495bSYour Name 			<legal all>
1346*5113495bSYour Name */
1347*5113495bSYour Name #define RX_REO_QUEUE_11_PTR_TO_NEXT_AGING_QUEUE_39_32_OFFSET         0x0000002c
1348*5113495bSYour Name #define RX_REO_QUEUE_11_PTR_TO_NEXT_AGING_QUEUE_39_32_LSB            0
1349*5113495bSYour Name #define RX_REO_QUEUE_11_PTR_TO_NEXT_AGING_QUEUE_39_32_MASK           0x000000ff
1350*5113495bSYour Name 
1351*5113495bSYour Name /* Description		RX_REO_QUEUE_11_RESERVED_11A
1352*5113495bSYour Name 
1353*5113495bSYour Name 			<legal 0>
1354*5113495bSYour Name */
1355*5113495bSYour Name #define RX_REO_QUEUE_11_RESERVED_11A_OFFSET                          0x0000002c
1356*5113495bSYour Name #define RX_REO_QUEUE_11_RESERVED_11A_LSB                             8
1357*5113495bSYour Name #define RX_REO_QUEUE_11_RESERVED_11A_MASK                            0xffffff00
1358*5113495bSYour Name 
1359*5113495bSYour Name /* Description		RX_REO_QUEUE_12_PTR_TO_PREVIOUS_AGING_QUEUE_31_0
1360*5113495bSYour Name 
1361*5113495bSYour Name 			Address  (address bits 31-0)of next RX_REO_QUEUE
1362*5113495bSYour Name 			descriptor in the 'receive timestamp' ordered list.
1363*5113495bSYour Name 
1364*5113495bSYour Name 			From it the Position of this queue descriptor in the per
1365*5113495bSYour Name 			AC aging waitlist  can be derived.
1366*5113495bSYour Name 
1367*5113495bSYour Name 			Value 0x0 indicates the 'NULL' pointer which implies
1368*5113495bSYour Name 			that this is the first entry in the list.
1369*5113495bSYour Name 
1370*5113495bSYour Name 			<legal all>
1371*5113495bSYour Name */
1372*5113495bSYour Name #define RX_REO_QUEUE_12_PTR_TO_PREVIOUS_AGING_QUEUE_31_0_OFFSET      0x00000030
1373*5113495bSYour Name #define RX_REO_QUEUE_12_PTR_TO_PREVIOUS_AGING_QUEUE_31_0_LSB         0
1374*5113495bSYour Name #define RX_REO_QUEUE_12_PTR_TO_PREVIOUS_AGING_QUEUE_31_0_MASK        0xffffffff
1375*5113495bSYour Name 
1376*5113495bSYour Name /* Description		RX_REO_QUEUE_13_PTR_TO_PREVIOUS_AGING_QUEUE_39_32
1377*5113495bSYour Name 
1378*5113495bSYour Name 			Address  (address bits 39-32)of next RX_REO_QUEUE
1379*5113495bSYour Name 			descriptor in the 'receive timestamp' ordered list.
1380*5113495bSYour Name 
1381*5113495bSYour Name 			From it the Position of this queue descriptor in the per
1382*5113495bSYour Name 			AC aging waitlist  can be derived.
1383*5113495bSYour Name 
1384*5113495bSYour Name 			Value 0x0 indicates the 'NULL' pointer which implies
1385*5113495bSYour Name 			that this is the first entry in the list.
1386*5113495bSYour Name 
1387*5113495bSYour Name 			<legal all>
1388*5113495bSYour Name */
1389*5113495bSYour Name #define RX_REO_QUEUE_13_PTR_TO_PREVIOUS_AGING_QUEUE_39_32_OFFSET     0x00000034
1390*5113495bSYour Name #define RX_REO_QUEUE_13_PTR_TO_PREVIOUS_AGING_QUEUE_39_32_LSB        0
1391*5113495bSYour Name #define RX_REO_QUEUE_13_PTR_TO_PREVIOUS_AGING_QUEUE_39_32_MASK       0x000000ff
1392*5113495bSYour Name 
1393*5113495bSYour Name /* Description		RX_REO_QUEUE_13_RESERVED_13A
1394*5113495bSYour Name 
1395*5113495bSYour Name 			<legal 0>
1396*5113495bSYour Name */
1397*5113495bSYour Name #define RX_REO_QUEUE_13_RESERVED_13A_OFFSET                          0x00000034
1398*5113495bSYour Name #define RX_REO_QUEUE_13_RESERVED_13A_LSB                             8
1399*5113495bSYour Name #define RX_REO_QUEUE_13_RESERVED_13A_MASK                            0xffffff00
1400*5113495bSYour Name 
1401*5113495bSYour Name /* Description		RX_REO_QUEUE_14_RX_BITMAP_31_0
1402*5113495bSYour Name 
1403*5113495bSYour Name 			When a bit is set, the corresponding frame is currently
1404*5113495bSYour Name 			held in the re-order queue.
1405*5113495bSYour Name 
1406*5113495bSYour Name 			The bitmap  is Fully managed by HW.
1407*5113495bSYour Name 
1408*5113495bSYour Name 			SW shall init this to 0, and then never ever change it
1409*5113495bSYour Name 
1410*5113495bSYour Name 			<legal all>
1411*5113495bSYour Name */
1412*5113495bSYour Name #define RX_REO_QUEUE_14_RX_BITMAP_31_0_OFFSET                        0x00000038
1413*5113495bSYour Name #define RX_REO_QUEUE_14_RX_BITMAP_31_0_LSB                           0
1414*5113495bSYour Name #define RX_REO_QUEUE_14_RX_BITMAP_31_0_MASK                          0xffffffff
1415*5113495bSYour Name 
1416*5113495bSYour Name /* Description		RX_REO_QUEUE_15_RX_BITMAP_63_32
1417*5113495bSYour Name 
1418*5113495bSYour Name 			See Rx_bitmap_31_0 description
1419*5113495bSYour Name 
1420*5113495bSYour Name 			<legal all>
1421*5113495bSYour Name */
1422*5113495bSYour Name #define RX_REO_QUEUE_15_RX_BITMAP_63_32_OFFSET                       0x0000003c
1423*5113495bSYour Name #define RX_REO_QUEUE_15_RX_BITMAP_63_32_LSB                          0
1424*5113495bSYour Name #define RX_REO_QUEUE_15_RX_BITMAP_63_32_MASK                         0xffffffff
1425*5113495bSYour Name 
1426*5113495bSYour Name /* Description		RX_REO_QUEUE_16_RX_BITMAP_95_64
1427*5113495bSYour Name 
1428*5113495bSYour Name 			See Rx_bitmap_31_0 description
1429*5113495bSYour Name 
1430*5113495bSYour Name 			<legal all>
1431*5113495bSYour Name */
1432*5113495bSYour Name #define RX_REO_QUEUE_16_RX_BITMAP_95_64_OFFSET                       0x00000040
1433*5113495bSYour Name #define RX_REO_QUEUE_16_RX_BITMAP_95_64_LSB                          0
1434*5113495bSYour Name #define RX_REO_QUEUE_16_RX_BITMAP_95_64_MASK                         0xffffffff
1435*5113495bSYour Name 
1436*5113495bSYour Name /* Description		RX_REO_QUEUE_17_RX_BITMAP_127_96
1437*5113495bSYour Name 
1438*5113495bSYour Name 			See Rx_bitmap_31_0 description
1439*5113495bSYour Name 
1440*5113495bSYour Name 			<legal all>
1441*5113495bSYour Name */
1442*5113495bSYour Name #define RX_REO_QUEUE_17_RX_BITMAP_127_96_OFFSET                      0x00000044
1443*5113495bSYour Name #define RX_REO_QUEUE_17_RX_BITMAP_127_96_LSB                         0
1444*5113495bSYour Name #define RX_REO_QUEUE_17_RX_BITMAP_127_96_MASK                        0xffffffff
1445*5113495bSYour Name 
1446*5113495bSYour Name /* Description		RX_REO_QUEUE_18_RX_BITMAP_159_128
1447*5113495bSYour Name 
1448*5113495bSYour Name 			See Rx_bitmap_31_0 description
1449*5113495bSYour Name 
1450*5113495bSYour Name 			<legal all>
1451*5113495bSYour Name */
1452*5113495bSYour Name #define RX_REO_QUEUE_18_RX_BITMAP_159_128_OFFSET                     0x00000048
1453*5113495bSYour Name #define RX_REO_QUEUE_18_RX_BITMAP_159_128_LSB                        0
1454*5113495bSYour Name #define RX_REO_QUEUE_18_RX_BITMAP_159_128_MASK                       0xffffffff
1455*5113495bSYour Name 
1456*5113495bSYour Name /* Description		RX_REO_QUEUE_19_RX_BITMAP_191_160
1457*5113495bSYour Name 
1458*5113495bSYour Name 			See Rx_bitmap_31_0 description
1459*5113495bSYour Name 
1460*5113495bSYour Name 			<legal all>
1461*5113495bSYour Name */
1462*5113495bSYour Name #define RX_REO_QUEUE_19_RX_BITMAP_191_160_OFFSET                     0x0000004c
1463*5113495bSYour Name #define RX_REO_QUEUE_19_RX_BITMAP_191_160_LSB                        0
1464*5113495bSYour Name #define RX_REO_QUEUE_19_RX_BITMAP_191_160_MASK                       0xffffffff
1465*5113495bSYour Name 
1466*5113495bSYour Name /* Description		RX_REO_QUEUE_20_RX_BITMAP_223_192
1467*5113495bSYour Name 
1468*5113495bSYour Name 			See Rx_bitmap_31_0 description
1469*5113495bSYour Name 
1470*5113495bSYour Name 			<legal all>
1471*5113495bSYour Name */
1472*5113495bSYour Name #define RX_REO_QUEUE_20_RX_BITMAP_223_192_OFFSET                     0x00000050
1473*5113495bSYour Name #define RX_REO_QUEUE_20_RX_BITMAP_223_192_LSB                        0
1474*5113495bSYour Name #define RX_REO_QUEUE_20_RX_BITMAP_223_192_MASK                       0xffffffff
1475*5113495bSYour Name 
1476*5113495bSYour Name /* Description		RX_REO_QUEUE_21_RX_BITMAP_255_224
1477*5113495bSYour Name 
1478*5113495bSYour Name 			See Rx_bitmap_31_0 description
1479*5113495bSYour Name 
1480*5113495bSYour Name 			<legal all>
1481*5113495bSYour Name */
1482*5113495bSYour Name #define RX_REO_QUEUE_21_RX_BITMAP_255_224_OFFSET                     0x00000054
1483*5113495bSYour Name #define RX_REO_QUEUE_21_RX_BITMAP_255_224_LSB                        0
1484*5113495bSYour Name #define RX_REO_QUEUE_21_RX_BITMAP_255_224_MASK                       0xffffffff
1485*5113495bSYour Name 
1486*5113495bSYour Name /* Description		RX_REO_QUEUE_22_CURRENT_MPDU_COUNT
1487*5113495bSYour Name 
1488*5113495bSYour Name 			The number of MPDUs in the queue.
1489*5113495bSYour Name 
1490*5113495bSYour Name 
1491*5113495bSYour Name 
1492*5113495bSYour Name 			<legal all>
1493*5113495bSYour Name */
1494*5113495bSYour Name #define RX_REO_QUEUE_22_CURRENT_MPDU_COUNT_OFFSET                    0x00000058
1495*5113495bSYour Name #define RX_REO_QUEUE_22_CURRENT_MPDU_COUNT_LSB                       0
1496*5113495bSYour Name #define RX_REO_QUEUE_22_CURRENT_MPDU_COUNT_MASK                      0x0000007f
1497*5113495bSYour Name 
1498*5113495bSYour Name /* Description		RX_REO_QUEUE_22_CURRENT_MSDU_COUNT
1499*5113495bSYour Name 
1500*5113495bSYour Name 			The number of MSDUs in the queue.
1501*5113495bSYour Name 
1502*5113495bSYour Name 			<legal all>
1503*5113495bSYour Name */
1504*5113495bSYour Name #define RX_REO_QUEUE_22_CURRENT_MSDU_COUNT_OFFSET                    0x00000058
1505*5113495bSYour Name #define RX_REO_QUEUE_22_CURRENT_MSDU_COUNT_LSB                       7
1506*5113495bSYour Name #define RX_REO_QUEUE_22_CURRENT_MSDU_COUNT_MASK                      0xffffff80
1507*5113495bSYour Name 
1508*5113495bSYour Name /* Description		RX_REO_QUEUE_23_RESERVED_23
1509*5113495bSYour Name 
1510*5113495bSYour Name 			<legal 0>
1511*5113495bSYour Name */
1512*5113495bSYour Name #define RX_REO_QUEUE_23_RESERVED_23_OFFSET                           0x0000005c
1513*5113495bSYour Name #define RX_REO_QUEUE_23_RESERVED_23_LSB                              0
1514*5113495bSYour Name #define RX_REO_QUEUE_23_RESERVED_23_MASK                             0x0000000f
1515*5113495bSYour Name 
1516*5113495bSYour Name /* Description		RX_REO_QUEUE_23_TIMEOUT_COUNT
1517*5113495bSYour Name 
1518*5113495bSYour Name 			The number of times that REO started forwarding frames
1519*5113495bSYour Name 			even though there is a hole in the bitmap. Forwarding reason
1520*5113495bSYour Name 			is Timeout
1521*5113495bSYour Name 
1522*5113495bSYour Name 
1523*5113495bSYour Name 
1524*5113495bSYour Name 			The counter saturates and freezes at 0x3F
1525*5113495bSYour Name 
1526*5113495bSYour Name 
1527*5113495bSYour Name 
1528*5113495bSYour Name 			<legal all>
1529*5113495bSYour Name */
1530*5113495bSYour Name #define RX_REO_QUEUE_23_TIMEOUT_COUNT_OFFSET                         0x0000005c
1531*5113495bSYour Name #define RX_REO_QUEUE_23_TIMEOUT_COUNT_LSB                            4
1532*5113495bSYour Name #define RX_REO_QUEUE_23_TIMEOUT_COUNT_MASK                           0x000003f0
1533*5113495bSYour Name 
1534*5113495bSYour Name /* Description		RX_REO_QUEUE_23_FORWARD_DUE_TO_BAR_COUNT
1535*5113495bSYour Name 
1536*5113495bSYour Name 			The number of times that REO started forwarding frames
1537*5113495bSYour Name 			even though there is a hole in the bitmap. Forwarding reason
1538*5113495bSYour Name 			is reception of BAR frame.
1539*5113495bSYour Name 
1540*5113495bSYour Name 
1541*5113495bSYour Name 
1542*5113495bSYour Name 			The counter saturates and freezes at 0x3F
1543*5113495bSYour Name 
1544*5113495bSYour Name 
1545*5113495bSYour Name 
1546*5113495bSYour Name 			<legal all>
1547*5113495bSYour Name */
1548*5113495bSYour Name #define RX_REO_QUEUE_23_FORWARD_DUE_TO_BAR_COUNT_OFFSET              0x0000005c
1549*5113495bSYour Name #define RX_REO_QUEUE_23_FORWARD_DUE_TO_BAR_COUNT_LSB                 10
1550*5113495bSYour Name #define RX_REO_QUEUE_23_FORWARD_DUE_TO_BAR_COUNT_MASK                0x0000fc00
1551*5113495bSYour Name 
1552*5113495bSYour Name /* Description		RX_REO_QUEUE_23_DUPLICATE_COUNT
1553*5113495bSYour Name 
1554*5113495bSYour Name 			The number of duplicate frames that have been detected
1555*5113495bSYour Name 
1556*5113495bSYour Name 			<legal all>
1557*5113495bSYour Name */
1558*5113495bSYour Name #define RX_REO_QUEUE_23_DUPLICATE_COUNT_OFFSET                       0x0000005c
1559*5113495bSYour Name #define RX_REO_QUEUE_23_DUPLICATE_COUNT_LSB                          16
1560*5113495bSYour Name #define RX_REO_QUEUE_23_DUPLICATE_COUNT_MASK                         0xffff0000
1561*5113495bSYour Name 
1562*5113495bSYour Name /* Description		RX_REO_QUEUE_24_FRAMES_IN_ORDER_COUNT
1563*5113495bSYour Name 
1564*5113495bSYour Name 			The number of frames that have been received in order
1565*5113495bSYour Name 			(without a hole that prevented them from being forwarded
1566*5113495bSYour Name 			immediately)
1567*5113495bSYour Name 
1568*5113495bSYour Name 
1569*5113495bSYour Name 
1570*5113495bSYour Name 			This corresponds to the Reorder opcodes:
1571*5113495bSYour Name 
1572*5113495bSYour Name 			'FWDCUR' and 'FWD BUF'
1573*5113495bSYour Name 
1574*5113495bSYour Name 
1575*5113495bSYour Name 
1576*5113495bSYour Name 			<legal all>
1577*5113495bSYour Name */
1578*5113495bSYour Name #define RX_REO_QUEUE_24_FRAMES_IN_ORDER_COUNT_OFFSET                 0x00000060
1579*5113495bSYour Name #define RX_REO_QUEUE_24_FRAMES_IN_ORDER_COUNT_LSB                    0
1580*5113495bSYour Name #define RX_REO_QUEUE_24_FRAMES_IN_ORDER_COUNT_MASK                   0x00ffffff
1581*5113495bSYour Name 
1582*5113495bSYour Name /* Description		RX_REO_QUEUE_24_BAR_RECEIVED_COUNT
1583*5113495bSYour Name 
1584*5113495bSYour Name 			The number of times a BAR frame is received.
1585*5113495bSYour Name 
1586*5113495bSYour Name 
1587*5113495bSYour Name 
1588*5113495bSYour Name 			This corresponds to the Reorder opcodes with 'DROP'
1589*5113495bSYour Name 
1590*5113495bSYour Name 
1591*5113495bSYour Name 
1592*5113495bSYour Name 			The counter saturates and freezes at 0xFF
1593*5113495bSYour Name 
1594*5113495bSYour Name 			<legal all>
1595*5113495bSYour Name */
1596*5113495bSYour Name #define RX_REO_QUEUE_24_BAR_RECEIVED_COUNT_OFFSET                    0x00000060
1597*5113495bSYour Name #define RX_REO_QUEUE_24_BAR_RECEIVED_COUNT_LSB                       24
1598*5113495bSYour Name #define RX_REO_QUEUE_24_BAR_RECEIVED_COUNT_MASK                      0xff000000
1599*5113495bSYour Name 
1600*5113495bSYour Name /* Description		RX_REO_QUEUE_25_MPDU_FRAMES_PROCESSED_COUNT
1601*5113495bSYour Name 
1602*5113495bSYour Name 			The total number of MPDU frames that have been processed
1603*5113495bSYour Name 			by REO. 'Processing' here means that REO has received them
1604*5113495bSYour Name 			out of the entrance ring, and retrieved the corresponding
1605*5113495bSYour Name 			RX_REO_QUEUE Descriptor.
1606*5113495bSYour Name 
1607*5113495bSYour Name 
1608*5113495bSYour Name 
1609*5113495bSYour Name 			Note that this count includes duplicates, frames that
1610*5113495bSYour Name 			later had errors, etc.
1611*5113495bSYour Name 
1612*5113495bSYour Name 
1613*5113495bSYour Name 
1614*5113495bSYour Name 			Note that field 'Duplicate_count' indicates how many of
1615*5113495bSYour Name 			these MPDUs were duplicates.
1616*5113495bSYour Name 
1617*5113495bSYour Name 
1618*5113495bSYour Name 
1619*5113495bSYour Name 			<legal all>
1620*5113495bSYour Name */
1621*5113495bSYour Name #define RX_REO_QUEUE_25_MPDU_FRAMES_PROCESSED_COUNT_OFFSET           0x00000064
1622*5113495bSYour Name #define RX_REO_QUEUE_25_MPDU_FRAMES_PROCESSED_COUNT_LSB              0
1623*5113495bSYour Name #define RX_REO_QUEUE_25_MPDU_FRAMES_PROCESSED_COUNT_MASK             0xffffffff
1624*5113495bSYour Name 
1625*5113495bSYour Name /* Description		RX_REO_QUEUE_26_MSDU_FRAMES_PROCESSED_COUNT
1626*5113495bSYour Name 
1627*5113495bSYour Name 			The total number of MSDU frames that have been processed
1628*5113495bSYour Name 			by REO. 'Processing' here means that REO has received them
1629*5113495bSYour Name 			out of the entrance ring, and retrieved the corresponding
1630*5113495bSYour Name 			RX_REO_QUEUE Descriptor.
1631*5113495bSYour Name 
1632*5113495bSYour Name 
1633*5113495bSYour Name 
1634*5113495bSYour Name 			Note that this count includes duplicates, frames that
1635*5113495bSYour Name 			later had errors, etc.
1636*5113495bSYour Name 
1637*5113495bSYour Name 
1638*5113495bSYour Name 
1639*5113495bSYour Name 			<legal all>
1640*5113495bSYour Name */
1641*5113495bSYour Name #define RX_REO_QUEUE_26_MSDU_FRAMES_PROCESSED_COUNT_OFFSET           0x00000068
1642*5113495bSYour Name #define RX_REO_QUEUE_26_MSDU_FRAMES_PROCESSED_COUNT_LSB              0
1643*5113495bSYour Name #define RX_REO_QUEUE_26_MSDU_FRAMES_PROCESSED_COUNT_MASK             0xffffffff
1644*5113495bSYour Name 
1645*5113495bSYour Name /* Description		RX_REO_QUEUE_27_TOTAL_PROCESSED_BYTE_COUNT
1646*5113495bSYour Name 
1647*5113495bSYour Name 			An approximation of the number of bytes processed for
1648*5113495bSYour Name 			this queue.
1649*5113495bSYour Name 
1650*5113495bSYour Name 			'Processing' here means that REO has received them out
1651*5113495bSYour Name 			of the entrance ring, and retrieved the corresponding
1652*5113495bSYour Name 			RX_REO_QUEUE Descriptor.
1653*5113495bSYour Name 
1654*5113495bSYour Name 
1655*5113495bSYour Name 
1656*5113495bSYour Name 			Note that this count includes duplicates, frames that
1657*5113495bSYour Name 			later had errors, etc.
1658*5113495bSYour Name 
1659*5113495bSYour Name 
1660*5113495bSYour Name 
1661*5113495bSYour Name 			In 64 byte units
1662*5113495bSYour Name 
1663*5113495bSYour Name 			<legal all>
1664*5113495bSYour Name */
1665*5113495bSYour Name #define RX_REO_QUEUE_27_TOTAL_PROCESSED_BYTE_COUNT_OFFSET            0x0000006c
1666*5113495bSYour Name #define RX_REO_QUEUE_27_TOTAL_PROCESSED_BYTE_COUNT_LSB               0
1667*5113495bSYour Name #define RX_REO_QUEUE_27_TOTAL_PROCESSED_BYTE_COUNT_MASK              0xffffffff
1668*5113495bSYour Name 
1669*5113495bSYour Name /* Description		RX_REO_QUEUE_28_LATE_RECEIVE_MPDU_COUNT
1670*5113495bSYour Name 
1671*5113495bSYour Name 			The number of MPDUs received after the window had
1672*5113495bSYour Name 			already moved on. The 'late' sequence window is defined as
1673*5113495bSYour Name 			(Window SSN - 256) - (Window SSN - 1)
1674*5113495bSYour Name 
1675*5113495bSYour Name 
1676*5113495bSYour Name 
1677*5113495bSYour Name 			This corresponds with Out of order detection in
1678*5113495bSYour Name 			duplicate detect FSM
1679*5113495bSYour Name 
1680*5113495bSYour Name 
1681*5113495bSYour Name 
1682*5113495bSYour Name 			The counter saturates and freezes at 0xFFF
1683*5113495bSYour Name 
1684*5113495bSYour Name 
1685*5113495bSYour Name 
1686*5113495bSYour Name 			<legal all>
1687*5113495bSYour Name */
1688*5113495bSYour Name #define RX_REO_QUEUE_28_LATE_RECEIVE_MPDU_COUNT_OFFSET               0x00000070
1689*5113495bSYour Name #define RX_REO_QUEUE_28_LATE_RECEIVE_MPDU_COUNT_LSB                  0
1690*5113495bSYour Name #define RX_REO_QUEUE_28_LATE_RECEIVE_MPDU_COUNT_MASK                 0x00000fff
1691*5113495bSYour Name 
1692*5113495bSYour Name /* Description		RX_REO_QUEUE_28_WINDOW_JUMP_2K
1693*5113495bSYour Name 
1694*5113495bSYour Name 			The number of times the window moved more then 2K
1695*5113495bSYour Name 
1696*5113495bSYour Name 
1697*5113495bSYour Name 
1698*5113495bSYour Name 			The counter saturates and freezes at 0xF
1699*5113495bSYour Name 
1700*5113495bSYour Name 
1701*5113495bSYour Name 
1702*5113495bSYour Name 			(Note: field name can not start with number: previous
1703*5113495bSYour Name 			2k_window_jump)
1704*5113495bSYour Name 
1705*5113495bSYour Name 
1706*5113495bSYour Name 
1707*5113495bSYour Name 			<legal all>
1708*5113495bSYour Name */
1709*5113495bSYour Name #define RX_REO_QUEUE_28_WINDOW_JUMP_2K_OFFSET                        0x00000070
1710*5113495bSYour Name #define RX_REO_QUEUE_28_WINDOW_JUMP_2K_LSB                           12
1711*5113495bSYour Name #define RX_REO_QUEUE_28_WINDOW_JUMP_2K_MASK                          0x0000f000
1712*5113495bSYour Name 
1713*5113495bSYour Name /* Description		RX_REO_QUEUE_28_HOLE_COUNT
1714*5113495bSYour Name 
1715*5113495bSYour Name 			The number of times a hole was created in the receive
1716*5113495bSYour Name 			bitmap.
1717*5113495bSYour Name 
1718*5113495bSYour Name 
1719*5113495bSYour Name 
1720*5113495bSYour Name 			This corresponds to the Reorder opcodes with 'QCUR'
1721*5113495bSYour Name 
1722*5113495bSYour Name 
1723*5113495bSYour Name 
1724*5113495bSYour Name 			<legal all>
1725*5113495bSYour Name */
1726*5113495bSYour Name #define RX_REO_QUEUE_28_HOLE_COUNT_OFFSET                            0x00000070
1727*5113495bSYour Name #define RX_REO_QUEUE_28_HOLE_COUNT_LSB                               16
1728*5113495bSYour Name #define RX_REO_QUEUE_28_HOLE_COUNT_MASK                              0xffff0000
1729*5113495bSYour Name 
1730*5113495bSYour Name /* Description		RX_REO_QUEUE_29_RESERVED_29
1731*5113495bSYour Name 
1732*5113495bSYour Name 			<legal 0>
1733*5113495bSYour Name */
1734*5113495bSYour Name #define RX_REO_QUEUE_29_RESERVED_29_OFFSET                           0x00000074
1735*5113495bSYour Name #define RX_REO_QUEUE_29_RESERVED_29_LSB                              0
1736*5113495bSYour Name #define RX_REO_QUEUE_29_RESERVED_29_MASK                             0xffffffff
1737*5113495bSYour Name 
1738*5113495bSYour Name /* Description		RX_REO_QUEUE_30_RESERVED_30
1739*5113495bSYour Name 
1740*5113495bSYour Name 			<legal 0>
1741*5113495bSYour Name */
1742*5113495bSYour Name #define RX_REO_QUEUE_30_RESERVED_30_OFFSET                           0x00000078
1743*5113495bSYour Name #define RX_REO_QUEUE_30_RESERVED_30_LSB                              0
1744*5113495bSYour Name #define RX_REO_QUEUE_30_RESERVED_30_MASK                             0xffffffff
1745*5113495bSYour Name 
1746*5113495bSYour Name /* Description		RX_REO_QUEUE_31_RESERVED_31
1747*5113495bSYour Name 
1748*5113495bSYour Name 			<legal 0>
1749*5113495bSYour Name */
1750*5113495bSYour Name #define RX_REO_QUEUE_31_RESERVED_31_OFFSET                           0x0000007c
1751*5113495bSYour Name #define RX_REO_QUEUE_31_RESERVED_31_LSB                              0
1752*5113495bSYour Name #define RX_REO_QUEUE_31_RESERVED_31_MASK                             0xffffffff
1753*5113495bSYour Name 
1754*5113495bSYour Name 
1755*5113495bSYour Name #endif // _RX_REO_QUEUE_H_
1756