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