1 /*
2  * Copyright (c) 2016-2018 The Linux Foundation. All rights reserved.
3  *
4  * Permission to use, copy, modify, and/or distribute this software for
5  * any purpose with or without fee is hereby granted, provided that the
6  * above copyright notice and this permission notice appear in all
7  * copies.
8  *
9  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
10  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
11  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
12  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
13  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
14  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
15  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
16  * PERFORMANCE OF THIS SOFTWARE.
17  */
18 
19 #ifndef _REO_GET_QUEUE_STATS_STATUS_H_
20 #define _REO_GET_QUEUE_STATS_STATUS_H_
21 #if !defined(__ASSEMBLER__)
22 #endif
23 
24 #include "uniform_reo_status_header.h"
25 
26 // ################ START SUMMARY #################
27 //
28 //	Dword	Fields
29 //	0-1	struct uniform_reo_status_header status_header;
30 //	2	ssn[11:0], current_index[19:12], reserved_2[31:20]
31 //	3	pn_31_0[31:0]
32 //	4	pn_63_32[31:0]
33 //	5	pn_95_64[31:0]
34 //	6	pn_127_96[31:0]
35 //	7	last_rx_enqueue_timestamp[31:0]
36 //	8	last_rx_dequeue_timestamp[31:0]
37 //	9	rx_bitmap_31_0[31:0]
38 //	10	rx_bitmap_63_32[31:0]
39 //	11	rx_bitmap_95_64[31:0]
40 //	12	rx_bitmap_127_96[31:0]
41 //	13	rx_bitmap_159_128[31:0]
42 //	14	rx_bitmap_191_160[31:0]
43 //	15	rx_bitmap_223_192[31:0]
44 //	16	rx_bitmap_255_224[31:0]
45 //	17	current_mpdu_count[6:0], current_msdu_count[31:7]
46 //	18	reserved_18[3:0], timeout_count[9:4], forward_due_to_bar_count[15:10], duplicate_count[31:16]
47 //	19	frames_in_order_count[23:0], bar_received_count[31:24]
48 //	20	mpdu_frames_processed_count[31:0]
49 //	21	msdu_frames_processed_count[31:0]
50 //	22	total_processed_byte_count[31:0]
51 //	23	late_receive_mpdu_count[11:0], window_jump_2k[15:12], hole_count[31:16]
52 //	24	reserved_24a[27:0], looping_count[31:28]
53 //
54 // ################ END SUMMARY #################
55 
56 #define NUM_OF_DWORDS_REO_GET_QUEUE_STATS_STATUS 25
57 
58 struct reo_get_queue_stats_status {
59     struct            uniform_reo_status_header                       status_header;
60              uint32_t ssn                             : 12, //[11:0]
61                       current_index                   :  8, //[19:12]
62                       reserved_2                      : 12; //[31:20]
63              uint32_t pn_31_0                         : 32; //[31:0]
64              uint32_t pn_63_32                        : 32; //[31:0]
65              uint32_t pn_95_64                        : 32; //[31:0]
66              uint32_t pn_127_96                       : 32; //[31:0]
67              uint32_t last_rx_enqueue_timestamp       : 32; //[31:0]
68              uint32_t last_rx_dequeue_timestamp       : 32; //[31:0]
69              uint32_t rx_bitmap_31_0                  : 32; //[31:0]
70              uint32_t rx_bitmap_63_32                 : 32; //[31:0]
71              uint32_t rx_bitmap_95_64                 : 32; //[31:0]
72              uint32_t rx_bitmap_127_96                : 32; //[31:0]
73              uint32_t rx_bitmap_159_128               : 32; //[31:0]
74              uint32_t rx_bitmap_191_160               : 32; //[31:0]
75              uint32_t rx_bitmap_223_192               : 32; //[31:0]
76              uint32_t rx_bitmap_255_224               : 32; //[31:0]
77              uint32_t current_mpdu_count              :  7, //[6:0]
78                       current_msdu_count              : 25; //[31:7]
79              uint32_t reserved_18                     :  4, //[3:0]
80                       timeout_count                   :  6, //[9:4]
81                       forward_due_to_bar_count        :  6, //[15:10]
82                       duplicate_count                 : 16; //[31:16]
83              uint32_t frames_in_order_count           : 24, //[23:0]
84                       bar_received_count              :  8; //[31:24]
85              uint32_t mpdu_frames_processed_count     : 32; //[31:0]
86              uint32_t msdu_frames_processed_count     : 32; //[31:0]
87              uint32_t total_processed_byte_count      : 32; //[31:0]
88              uint32_t late_receive_mpdu_count         : 12, //[11:0]
89                       window_jump_2k                  :  4, //[15:12]
90                       hole_count                      : 16; //[31:16]
91              uint32_t reserved_24a                    : 28, //[27:0]
92                       looping_count                   :  4; //[31:28]
93 };
94 
95 /*
96 
97 struct uniform_reo_status_header status_header
98 
99 			Consumer: SW
100 
101 			Producer: REO
102 
103 
104 
105 			Details that can link this status with the original
106 			command. It also contains info on how long REO took to
107 			execute this command.
108 
109 ssn
110 
111 			Starting Sequence number of the session, this changes
112 			whenever window moves. (can be filled by SW then maintained
113 			by REO)
114 
115 			<legal all>
116 
117 current_index
118 
119 			Points to last forwarded packet
120 
121 			<legal all>
122 
123 reserved_2
124 
125 			<legal 0>
126 
127 pn_31_0
128 
129 
130 			<legal all>
131 
132 pn_63_32
133 
134 			Bits [63:32] of the PN number.
135 
136 			<legal all>
137 
138 pn_95_64
139 
140 			Bits [95:64] of the PN number.
141 
142 			<legal all>
143 
144 pn_127_96
145 
146 			Bits [127:96] of the PN number.
147 
148 			<legal all>
149 
150 last_rx_enqueue_timestamp
151 
152 			Timestamp of arrival of the last MPDU for this queue
153 
154 			<legal all>
155 
156 last_rx_dequeue_timestamp
157 
158 			Timestamp of forwarding an MPDU
159 
160 
161 
162 			If the queue is empty when a frame gets received, this
163 			time shall be initialized to the 'enqueue' timestamp
164 
165 
166 
167 			Used for aging
168 
169 			<legal all>
170 
171 rx_bitmap_31_0
172 
173 			When a bit is set, the corresponding frame is currently
174 			held in the re-order queue.
175 
176 			The bitmap  is Fully managed by HW.
177 
178 			SW shall init this to 0, and then never ever change it
179 
180 			<legal all>
181 
182 rx_bitmap_63_32
183 
184 			See Rx_bitmap_31_0 description
185 
186 			<legal all>
187 
188 rx_bitmap_95_64
189 
190 			See Rx_bitmap_31_0 description
191 
192 			<legal all>
193 
194 rx_bitmap_127_96
195 
196 			See Rx_bitmap_31_0 description
197 
198 			<legal all>
199 
200 rx_bitmap_159_128
201 
202 			See Rx_bitmap_31_0 description
203 
204 			<legal all>
205 
206 rx_bitmap_191_160
207 
208 			See Rx_bitmap_31_0 description
209 
210 			<legal all>
211 
212 rx_bitmap_223_192
213 
214 			See Rx_bitmap_31_0 description
215 
216 			<legal all>
217 
218 rx_bitmap_255_224
219 
220 			See Rx_bitmap_31_0 description
221 
222 			<legal all>
223 
224 current_mpdu_count
225 
226 			The number of MPDUs in the queue.
227 
228 
229 
230 			<legal all>
231 
232 current_msdu_count
233 
234 			The number of MSDUs in the queue.
235 
236 			<legal all>
237 
238 reserved_18
239 
240 			<legal 0>
241 
242 timeout_count
243 
244 			The number of times that REO started forwarding frames
245 			even though there is a hole in the bitmap. Forwarding reason
246 			is Timeout
247 
248 
249 
250 			The counter saturates and freezes at 0x3F
251 
252 
253 
254 			<legal all>
255 
256 forward_due_to_bar_count
257 
258 			The number of times that REO started forwarding frames
259 			even though there is a hole in the bitmap. Forwarding reason
260 			is reception of BAR frame.
261 
262 
263 
264 			The counter saturates and freezes at 0x3F
265 
266 
267 
268 			<legal all>
269 
270 duplicate_count
271 
272 			The number of duplicate frames that have been detected
273 
274 			<legal all>
275 
276 frames_in_order_count
277 
278 			The number of frames that have been received in order
279 			(without a hole that prevented them from being forwarded
280 			immediately)
281 
282 
283 
284 			This corresponds to the Reorder opcodes:
285 
286 			'FWDCUR' and 'FWD BUF'
287 
288 
289 
290 			<legal all>
291 
292 bar_received_count
293 
294 			The number of times a BAR frame is received.
295 
296 
297 
298 			This corresponds to the Reorder opcodes with 'DROP'
299 
300 
301 
302 			The counter saturates and freezes at 0xFF
303 
304 			<legal all>
305 
306 mpdu_frames_processed_count
307 
308 			The total number of MPDU frames that have been processed
309 			by REO. This includes the duplicates.
310 
311 
312 
313 			<legal all>
314 
315 msdu_frames_processed_count
316 
317 			The total number of MSDU frames that have been processed
318 			by REO. This includes the duplicates.
319 
320 
321 
322 			<legal all>
323 
324 total_processed_byte_count
325 
326 			An approximation of the number of bytes received for
327 			this queue.
328 
329 
330 
331 			In 64 byte units
332 
333 			<legal all>
334 
335 late_receive_mpdu_count
336 
337 			The number of MPDUs received after the window had
338 			already moved on. The 'late' sequence window is defined as
339 			(Window SSN - 256) - (Window SSN - 1)
340 
341 
342 
343 			This corresponds with Out of order detection in
344 			duplicate detect FSM
345 
346 
347 
348 			The counter saturates and freezes at 0xFFF
349 
350 
351 
352 			<legal all>
353 
354 window_jump_2k
355 
356 			The number of times the window moved more then 2K
357 
358 
359 
360 			The counter saturates and freezes at 0xF
361 
362 
363 
364 			(Note: field name can not start with number: previous
365 			2k_window_jump)
366 
367 
368 
369 			<legal all>
370 
371 hole_count
372 
373 			The number of times a hole was created in the receive
374 			bitmap.
375 
376 
377 
378 			This corresponds to the Reorder opcodes with 'QCUR'
379 
380 
381 
382 			<legal all>
383 
384 reserved_24a
385 
386 			<legal 0>
387 
388 looping_count
389 
390 			A count value that indicates the number of times the
391 			producer of entries into this Ring has looped around the
392 			ring.
393 
394 			At initialization time, this value is set to 0. On the
395 			first loop, this value is set to 1. After the max value is
396 			reached allowed by the number of bits for this field, the
397 			count value continues with 0 again.
398 
399 
400 
401 			In case SW is the consumer of the ring entries, it can
402 			use this field to figure out up to where the producer of
403 			entries has created new entries. This eliminates the need to
404 			check where the head pointer' of the ring is located once
405 			the SW starts processing an interrupt indicating that new
406 			entries have been put into this ring...
407 
408 
409 
410 			Also note that SW if it wants only needs to look at the
411 			LSB bit of this count value.
412 
413 			<legal all>
414 */
415 
416 #define REO_GET_QUEUE_STATS_STATUS_0_UNIFORM_REO_STATUS_HEADER_STATUS_HEADER_OFFSET 0x00000000
417 #define REO_GET_QUEUE_STATS_STATUS_0_UNIFORM_REO_STATUS_HEADER_STATUS_HEADER_LSB 28
418 #define REO_GET_QUEUE_STATS_STATUS_0_UNIFORM_REO_STATUS_HEADER_STATUS_HEADER_MASK 0xffffffff
419 #define REO_GET_QUEUE_STATS_STATUS_1_UNIFORM_REO_STATUS_HEADER_STATUS_HEADER_OFFSET 0x00000004
420 #define REO_GET_QUEUE_STATS_STATUS_1_UNIFORM_REO_STATUS_HEADER_STATUS_HEADER_LSB 28
421 #define REO_GET_QUEUE_STATS_STATUS_1_UNIFORM_REO_STATUS_HEADER_STATUS_HEADER_MASK 0xffffffff
422 
423 /* Description		REO_GET_QUEUE_STATS_STATUS_2_SSN
424 
425 			Starting Sequence number of the session, this changes
426 			whenever window moves. (can be filled by SW then maintained
427 			by REO)
428 
429 			<legal all>
430 */
431 #define REO_GET_QUEUE_STATS_STATUS_2_SSN_OFFSET                      0x00000008
432 #define REO_GET_QUEUE_STATS_STATUS_2_SSN_LSB                         0
433 #define REO_GET_QUEUE_STATS_STATUS_2_SSN_MASK                        0x00000fff
434 
435 /* Description		REO_GET_QUEUE_STATS_STATUS_2_CURRENT_INDEX
436 
437 			Points to last forwarded packet
438 
439 			<legal all>
440 */
441 #define REO_GET_QUEUE_STATS_STATUS_2_CURRENT_INDEX_OFFSET            0x00000008
442 #define REO_GET_QUEUE_STATS_STATUS_2_CURRENT_INDEX_LSB               12
443 #define REO_GET_QUEUE_STATS_STATUS_2_CURRENT_INDEX_MASK              0x000ff000
444 
445 /* Description		REO_GET_QUEUE_STATS_STATUS_2_RESERVED_2
446 
447 			<legal 0>
448 */
449 #define REO_GET_QUEUE_STATS_STATUS_2_RESERVED_2_OFFSET               0x00000008
450 #define REO_GET_QUEUE_STATS_STATUS_2_RESERVED_2_LSB                  20
451 #define REO_GET_QUEUE_STATS_STATUS_2_RESERVED_2_MASK                 0xfff00000
452 
453 /* Description		REO_GET_QUEUE_STATS_STATUS_3_PN_31_0
454 
455 
456 			<legal all>
457 */
458 #define REO_GET_QUEUE_STATS_STATUS_3_PN_31_0_OFFSET                  0x0000000c
459 #define REO_GET_QUEUE_STATS_STATUS_3_PN_31_0_LSB                     0
460 #define REO_GET_QUEUE_STATS_STATUS_3_PN_31_0_MASK                    0xffffffff
461 
462 /* Description		REO_GET_QUEUE_STATS_STATUS_4_PN_63_32
463 
464 			Bits [63:32] of the PN number.
465 
466 			<legal all>
467 */
468 #define REO_GET_QUEUE_STATS_STATUS_4_PN_63_32_OFFSET                 0x00000010
469 #define REO_GET_QUEUE_STATS_STATUS_4_PN_63_32_LSB                    0
470 #define REO_GET_QUEUE_STATS_STATUS_4_PN_63_32_MASK                   0xffffffff
471 
472 /* Description		REO_GET_QUEUE_STATS_STATUS_5_PN_95_64
473 
474 			Bits [95:64] of the PN number.
475 
476 			<legal all>
477 */
478 #define REO_GET_QUEUE_STATS_STATUS_5_PN_95_64_OFFSET                 0x00000014
479 #define REO_GET_QUEUE_STATS_STATUS_5_PN_95_64_LSB                    0
480 #define REO_GET_QUEUE_STATS_STATUS_5_PN_95_64_MASK                   0xffffffff
481 
482 /* Description		REO_GET_QUEUE_STATS_STATUS_6_PN_127_96
483 
484 			Bits [127:96] of the PN number.
485 
486 			<legal all>
487 */
488 #define REO_GET_QUEUE_STATS_STATUS_6_PN_127_96_OFFSET                0x00000018
489 #define REO_GET_QUEUE_STATS_STATUS_6_PN_127_96_LSB                   0
490 #define REO_GET_QUEUE_STATS_STATUS_6_PN_127_96_MASK                  0xffffffff
491 
492 /* Description		REO_GET_QUEUE_STATS_STATUS_7_LAST_RX_ENQUEUE_TIMESTAMP
493 
494 			Timestamp of arrival of the last MPDU for this queue
495 
496 			<legal all>
497 */
498 #define REO_GET_QUEUE_STATS_STATUS_7_LAST_RX_ENQUEUE_TIMESTAMP_OFFSET 0x0000001c
499 #define REO_GET_QUEUE_STATS_STATUS_7_LAST_RX_ENQUEUE_TIMESTAMP_LSB   0
500 #define REO_GET_QUEUE_STATS_STATUS_7_LAST_RX_ENQUEUE_TIMESTAMP_MASK  0xffffffff
501 
502 /* Description		REO_GET_QUEUE_STATS_STATUS_8_LAST_RX_DEQUEUE_TIMESTAMP
503 
504 			Timestamp of forwarding an MPDU
505 
506 
507 
508 			If the queue is empty when a frame gets received, this
509 			time shall be initialized to the 'enqueue' timestamp
510 
511 
512 
513 			Used for aging
514 
515 			<legal all>
516 */
517 #define REO_GET_QUEUE_STATS_STATUS_8_LAST_RX_DEQUEUE_TIMESTAMP_OFFSET 0x00000020
518 #define REO_GET_QUEUE_STATS_STATUS_8_LAST_RX_DEQUEUE_TIMESTAMP_LSB   0
519 #define REO_GET_QUEUE_STATS_STATUS_8_LAST_RX_DEQUEUE_TIMESTAMP_MASK  0xffffffff
520 
521 /* Description		REO_GET_QUEUE_STATS_STATUS_9_RX_BITMAP_31_0
522 
523 			When a bit is set, the corresponding frame is currently
524 			held in the re-order queue.
525 
526 			The bitmap  is Fully managed by HW.
527 
528 			SW shall init this to 0, and then never ever change it
529 
530 			<legal all>
531 */
532 #define REO_GET_QUEUE_STATS_STATUS_9_RX_BITMAP_31_0_OFFSET           0x00000024
533 #define REO_GET_QUEUE_STATS_STATUS_9_RX_BITMAP_31_0_LSB              0
534 #define REO_GET_QUEUE_STATS_STATUS_9_RX_BITMAP_31_0_MASK             0xffffffff
535 
536 /* Description		REO_GET_QUEUE_STATS_STATUS_10_RX_BITMAP_63_32
537 
538 			See Rx_bitmap_31_0 description
539 
540 			<legal all>
541 */
542 #define REO_GET_QUEUE_STATS_STATUS_10_RX_BITMAP_63_32_OFFSET         0x00000028
543 #define REO_GET_QUEUE_STATS_STATUS_10_RX_BITMAP_63_32_LSB            0
544 #define REO_GET_QUEUE_STATS_STATUS_10_RX_BITMAP_63_32_MASK           0xffffffff
545 
546 /* Description		REO_GET_QUEUE_STATS_STATUS_11_RX_BITMAP_95_64
547 
548 			See Rx_bitmap_31_0 description
549 
550 			<legal all>
551 */
552 #define REO_GET_QUEUE_STATS_STATUS_11_RX_BITMAP_95_64_OFFSET         0x0000002c
553 #define REO_GET_QUEUE_STATS_STATUS_11_RX_BITMAP_95_64_LSB            0
554 #define REO_GET_QUEUE_STATS_STATUS_11_RX_BITMAP_95_64_MASK           0xffffffff
555 
556 /* Description		REO_GET_QUEUE_STATS_STATUS_12_RX_BITMAP_127_96
557 
558 			See Rx_bitmap_31_0 description
559 
560 			<legal all>
561 */
562 #define REO_GET_QUEUE_STATS_STATUS_12_RX_BITMAP_127_96_OFFSET        0x00000030
563 #define REO_GET_QUEUE_STATS_STATUS_12_RX_BITMAP_127_96_LSB           0
564 #define REO_GET_QUEUE_STATS_STATUS_12_RX_BITMAP_127_96_MASK          0xffffffff
565 
566 /* Description		REO_GET_QUEUE_STATS_STATUS_13_RX_BITMAP_159_128
567 
568 			See Rx_bitmap_31_0 description
569 
570 			<legal all>
571 */
572 #define REO_GET_QUEUE_STATS_STATUS_13_RX_BITMAP_159_128_OFFSET       0x00000034
573 #define REO_GET_QUEUE_STATS_STATUS_13_RX_BITMAP_159_128_LSB          0
574 #define REO_GET_QUEUE_STATS_STATUS_13_RX_BITMAP_159_128_MASK         0xffffffff
575 
576 /* Description		REO_GET_QUEUE_STATS_STATUS_14_RX_BITMAP_191_160
577 
578 			See Rx_bitmap_31_0 description
579 
580 			<legal all>
581 */
582 #define REO_GET_QUEUE_STATS_STATUS_14_RX_BITMAP_191_160_OFFSET       0x00000038
583 #define REO_GET_QUEUE_STATS_STATUS_14_RX_BITMAP_191_160_LSB          0
584 #define REO_GET_QUEUE_STATS_STATUS_14_RX_BITMAP_191_160_MASK         0xffffffff
585 
586 /* Description		REO_GET_QUEUE_STATS_STATUS_15_RX_BITMAP_223_192
587 
588 			See Rx_bitmap_31_0 description
589 
590 			<legal all>
591 */
592 #define REO_GET_QUEUE_STATS_STATUS_15_RX_BITMAP_223_192_OFFSET       0x0000003c
593 #define REO_GET_QUEUE_STATS_STATUS_15_RX_BITMAP_223_192_LSB          0
594 #define REO_GET_QUEUE_STATS_STATUS_15_RX_BITMAP_223_192_MASK         0xffffffff
595 
596 /* Description		REO_GET_QUEUE_STATS_STATUS_16_RX_BITMAP_255_224
597 
598 			See Rx_bitmap_31_0 description
599 
600 			<legal all>
601 */
602 #define REO_GET_QUEUE_STATS_STATUS_16_RX_BITMAP_255_224_OFFSET       0x00000040
603 #define REO_GET_QUEUE_STATS_STATUS_16_RX_BITMAP_255_224_LSB          0
604 #define REO_GET_QUEUE_STATS_STATUS_16_RX_BITMAP_255_224_MASK         0xffffffff
605 
606 /* Description		REO_GET_QUEUE_STATS_STATUS_17_CURRENT_MPDU_COUNT
607 
608 			The number of MPDUs in the queue.
609 
610 
611 
612 			<legal all>
613 */
614 #define REO_GET_QUEUE_STATS_STATUS_17_CURRENT_MPDU_COUNT_OFFSET      0x00000044
615 #define REO_GET_QUEUE_STATS_STATUS_17_CURRENT_MPDU_COUNT_LSB         0
616 #define REO_GET_QUEUE_STATS_STATUS_17_CURRENT_MPDU_COUNT_MASK        0x0000007f
617 
618 /* Description		REO_GET_QUEUE_STATS_STATUS_17_CURRENT_MSDU_COUNT
619 
620 			The number of MSDUs in the queue.
621 
622 			<legal all>
623 */
624 #define REO_GET_QUEUE_STATS_STATUS_17_CURRENT_MSDU_COUNT_OFFSET      0x00000044
625 #define REO_GET_QUEUE_STATS_STATUS_17_CURRENT_MSDU_COUNT_LSB         7
626 #define REO_GET_QUEUE_STATS_STATUS_17_CURRENT_MSDU_COUNT_MASK        0xffffff80
627 
628 /* Description		REO_GET_QUEUE_STATS_STATUS_18_RESERVED_18
629 
630 			<legal 0>
631 */
632 #define REO_GET_QUEUE_STATS_STATUS_18_RESERVED_18_OFFSET             0x00000048
633 #define REO_GET_QUEUE_STATS_STATUS_18_RESERVED_18_LSB                0
634 #define REO_GET_QUEUE_STATS_STATUS_18_RESERVED_18_MASK               0x0000000f
635 
636 /* Description		REO_GET_QUEUE_STATS_STATUS_18_TIMEOUT_COUNT
637 
638 			The number of times that REO started forwarding frames
639 			even though there is a hole in the bitmap. Forwarding reason
640 			is Timeout
641 
642 
643 
644 			The counter saturates and freezes at 0x3F
645 
646 
647 
648 			<legal all>
649 */
650 #define REO_GET_QUEUE_STATS_STATUS_18_TIMEOUT_COUNT_OFFSET           0x00000048
651 #define REO_GET_QUEUE_STATS_STATUS_18_TIMEOUT_COUNT_LSB              4
652 #define REO_GET_QUEUE_STATS_STATUS_18_TIMEOUT_COUNT_MASK             0x000003f0
653 
654 /* Description		REO_GET_QUEUE_STATS_STATUS_18_FORWARD_DUE_TO_BAR_COUNT
655 
656 			The number of times that REO started forwarding frames
657 			even though there is a hole in the bitmap. Forwarding reason
658 			is reception of BAR frame.
659 
660 
661 
662 			The counter saturates and freezes at 0x3F
663 
664 
665 
666 			<legal all>
667 */
668 #define REO_GET_QUEUE_STATS_STATUS_18_FORWARD_DUE_TO_BAR_COUNT_OFFSET 0x00000048
669 #define REO_GET_QUEUE_STATS_STATUS_18_FORWARD_DUE_TO_BAR_COUNT_LSB   10
670 #define REO_GET_QUEUE_STATS_STATUS_18_FORWARD_DUE_TO_BAR_COUNT_MASK  0x0000fc00
671 
672 /* Description		REO_GET_QUEUE_STATS_STATUS_18_DUPLICATE_COUNT
673 
674 			The number of duplicate frames that have been detected
675 
676 			<legal all>
677 */
678 #define REO_GET_QUEUE_STATS_STATUS_18_DUPLICATE_COUNT_OFFSET         0x00000048
679 #define REO_GET_QUEUE_STATS_STATUS_18_DUPLICATE_COUNT_LSB            16
680 #define REO_GET_QUEUE_STATS_STATUS_18_DUPLICATE_COUNT_MASK           0xffff0000
681 
682 /* Description		REO_GET_QUEUE_STATS_STATUS_19_FRAMES_IN_ORDER_COUNT
683 
684 			The number of frames that have been received in order
685 			(without a hole that prevented them from being forwarded
686 			immediately)
687 
688 
689 
690 			This corresponds to the Reorder opcodes:
691 
692 			'FWDCUR' and 'FWD BUF'
693 
694 
695 
696 			<legal all>
697 */
698 #define REO_GET_QUEUE_STATS_STATUS_19_FRAMES_IN_ORDER_COUNT_OFFSET   0x0000004c
699 #define REO_GET_QUEUE_STATS_STATUS_19_FRAMES_IN_ORDER_COUNT_LSB      0
700 #define REO_GET_QUEUE_STATS_STATUS_19_FRAMES_IN_ORDER_COUNT_MASK     0x00ffffff
701 
702 /* Description		REO_GET_QUEUE_STATS_STATUS_19_BAR_RECEIVED_COUNT
703 
704 			The number of times a BAR frame is received.
705 
706 
707 
708 			This corresponds to the Reorder opcodes with 'DROP'
709 
710 
711 
712 			The counter saturates and freezes at 0xFF
713 
714 			<legal all>
715 */
716 #define REO_GET_QUEUE_STATS_STATUS_19_BAR_RECEIVED_COUNT_OFFSET      0x0000004c
717 #define REO_GET_QUEUE_STATS_STATUS_19_BAR_RECEIVED_COUNT_LSB         24
718 #define REO_GET_QUEUE_STATS_STATUS_19_BAR_RECEIVED_COUNT_MASK        0xff000000
719 
720 /* Description		REO_GET_QUEUE_STATS_STATUS_20_MPDU_FRAMES_PROCESSED_COUNT
721 
722 			The total number of MPDU frames that have been processed
723 			by REO. This includes the duplicates.
724 
725 
726 
727 			<legal all>
728 */
729 #define REO_GET_QUEUE_STATS_STATUS_20_MPDU_FRAMES_PROCESSED_COUNT_OFFSET 0x00000050
730 #define REO_GET_QUEUE_STATS_STATUS_20_MPDU_FRAMES_PROCESSED_COUNT_LSB 0
731 #define REO_GET_QUEUE_STATS_STATUS_20_MPDU_FRAMES_PROCESSED_COUNT_MASK 0xffffffff
732 
733 /* Description		REO_GET_QUEUE_STATS_STATUS_21_MSDU_FRAMES_PROCESSED_COUNT
734 
735 			The total number of MSDU frames that have been processed
736 			by REO. This includes the duplicates.
737 
738 
739 
740 			<legal all>
741 */
742 #define REO_GET_QUEUE_STATS_STATUS_21_MSDU_FRAMES_PROCESSED_COUNT_OFFSET 0x00000054
743 #define REO_GET_QUEUE_STATS_STATUS_21_MSDU_FRAMES_PROCESSED_COUNT_LSB 0
744 #define REO_GET_QUEUE_STATS_STATUS_21_MSDU_FRAMES_PROCESSED_COUNT_MASK 0xffffffff
745 
746 /* Description		REO_GET_QUEUE_STATS_STATUS_22_TOTAL_PROCESSED_BYTE_COUNT
747 
748 			An approximation of the number of bytes received for
749 			this queue.
750 
751 
752 
753 			In 64 byte units
754 
755 			<legal all>
756 */
757 #define REO_GET_QUEUE_STATS_STATUS_22_TOTAL_PROCESSED_BYTE_COUNT_OFFSET 0x00000058
758 #define REO_GET_QUEUE_STATS_STATUS_22_TOTAL_PROCESSED_BYTE_COUNT_LSB 0
759 #define REO_GET_QUEUE_STATS_STATUS_22_TOTAL_PROCESSED_BYTE_COUNT_MASK 0xffffffff
760 
761 /* Description		REO_GET_QUEUE_STATS_STATUS_23_LATE_RECEIVE_MPDU_COUNT
762 
763 			The number of MPDUs received after the window had
764 			already moved on. The 'late' sequence window is defined as
765 			(Window SSN - 256) - (Window SSN - 1)
766 
767 
768 
769 			This corresponds with Out of order detection in
770 			duplicate detect FSM
771 
772 
773 
774 			The counter saturates and freezes at 0xFFF
775 
776 
777 
778 			<legal all>
779 */
780 #define REO_GET_QUEUE_STATS_STATUS_23_LATE_RECEIVE_MPDU_COUNT_OFFSET 0x0000005c
781 #define REO_GET_QUEUE_STATS_STATUS_23_LATE_RECEIVE_MPDU_COUNT_LSB    0
782 #define REO_GET_QUEUE_STATS_STATUS_23_LATE_RECEIVE_MPDU_COUNT_MASK   0x00000fff
783 
784 /* Description		REO_GET_QUEUE_STATS_STATUS_23_WINDOW_JUMP_2K
785 
786 			The number of times the window moved more then 2K
787 
788 
789 
790 			The counter saturates and freezes at 0xF
791 
792 
793 
794 			(Note: field name can not start with number: previous
795 			2k_window_jump)
796 
797 
798 
799 			<legal all>
800 */
801 #define REO_GET_QUEUE_STATS_STATUS_23_WINDOW_JUMP_2K_OFFSET          0x0000005c
802 #define REO_GET_QUEUE_STATS_STATUS_23_WINDOW_JUMP_2K_LSB             12
803 #define REO_GET_QUEUE_STATS_STATUS_23_WINDOW_JUMP_2K_MASK            0x0000f000
804 
805 /* Description		REO_GET_QUEUE_STATS_STATUS_23_HOLE_COUNT
806 
807 			The number of times a hole was created in the receive
808 			bitmap.
809 
810 
811 
812 			This corresponds to the Reorder opcodes with 'QCUR'
813 
814 
815 
816 			<legal all>
817 */
818 #define REO_GET_QUEUE_STATS_STATUS_23_HOLE_COUNT_OFFSET              0x0000005c
819 #define REO_GET_QUEUE_STATS_STATUS_23_HOLE_COUNT_LSB                 16
820 #define REO_GET_QUEUE_STATS_STATUS_23_HOLE_COUNT_MASK                0xffff0000
821 
822 /* Description		REO_GET_QUEUE_STATS_STATUS_24_RESERVED_24A
823 
824 			<legal 0>
825 */
826 #define REO_GET_QUEUE_STATS_STATUS_24_RESERVED_24A_OFFSET            0x00000060
827 #define REO_GET_QUEUE_STATS_STATUS_24_RESERVED_24A_LSB               0
828 #define REO_GET_QUEUE_STATS_STATUS_24_RESERVED_24A_MASK              0x0fffffff
829 
830 /* Description		REO_GET_QUEUE_STATS_STATUS_24_LOOPING_COUNT
831 
832 			A count value that indicates the number of times the
833 			producer of entries into this Ring has looped around the
834 			ring.
835 
836 			At initialization time, this value is set to 0. On the
837 			first loop, this value is set to 1. After the max value is
838 			reached allowed by the number of bits for this field, the
839 			count value continues with 0 again.
840 
841 
842 
843 			In case SW is the consumer of the ring entries, it can
844 			use this field to figure out up to where the producer of
845 			entries has created new entries. This eliminates the need to
846 			check where the head pointer' of the ring is located once
847 			the SW starts processing an interrupt indicating that new
848 			entries have been put into this ring...
849 
850 
851 
852 			Also note that SW if it wants only needs to look at the
853 			LSB bit of this count value.
854 
855 			<legal all>
856 */
857 #define REO_GET_QUEUE_STATS_STATUS_24_LOOPING_COUNT_OFFSET           0x00000060
858 #define REO_GET_QUEUE_STATS_STATUS_24_LOOPING_COUNT_LSB              28
859 #define REO_GET_QUEUE_STATS_STATUS_24_LOOPING_COUNT_MASK             0xf0000000
860 
861 
862 #endif // _REO_GET_QUEUE_STATS_STATUS_H_
863