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