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