1  /*
2   * Copyright (c) 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