xref: /wlan-driver/fw-api/hw/qca8074/v2/reo_destination_ring.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
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 // $ATH_LICENSE_HW_HDR_C$
18 //
19 // DO NOT EDIT!  This file is automatically generated
20 //               These definitions are tied to a particular hardware layout
21 
22 
23 #ifndef _REO_DESTINATION_RING_H_
24 #define _REO_DESTINATION_RING_H_
25 #if !defined(__ASSEMBLER__)
26 #endif
27 
28 #include "buffer_addr_info.h"
29 #include "rx_mpdu_desc_info.h"
30 #include "rx_msdu_desc_info.h"
31 
32 // ################ START SUMMARY #################
33 //
34 //	Dword	Fields
35 //	0-1	struct buffer_addr_info buf_or_link_desc_addr_info;
36 //	2-3	struct rx_mpdu_desc_info rx_mpdu_desc_info_details;
37 //	4-5	struct rx_msdu_desc_info rx_msdu_desc_info_details;
38 //	6	rx_reo_queue_desc_addr_31_0[31:0]
39 //	7	rx_reo_queue_desc_addr_39_32[7:0], reo_dest_buffer_type[8], reo_push_reason[10:9], reo_error_code[15:11], receive_queue_number[31:16]
40 //	8	soft_reorder_info_valid[0], reorder_opcode[4:1], reorder_slot_index[12:5], mpdu_fragment_number[16:13], reserved_8a[31:17]
41 //	9	reserved_9a[31:0]
42 //	10	reserved_10a[31:0]
43 //	11	reserved_11a[31:0]
44 //	12	reserved_12a[31:0]
45 //	13	reserved_13a[31:0]
46 //	14	reserved_14a[31:0]
47 //	15	reserved_15[19:0], ring_id[27:20], looping_count[31:28]
48 //
49 // ################ END SUMMARY #################
50 
51 #define NUM_OF_DWORDS_REO_DESTINATION_RING 16
52 
53 struct reo_destination_ring {
54     struct            buffer_addr_info                       buf_or_link_desc_addr_info;
55     struct            rx_mpdu_desc_info                       rx_mpdu_desc_info_details;
56     struct            rx_msdu_desc_info                       rx_msdu_desc_info_details;
57              uint32_t rx_reo_queue_desc_addr_31_0     : 32; //[31:0]
58              uint32_t rx_reo_queue_desc_addr_39_32    :  8, //[7:0]
59                       reo_dest_buffer_type            :  1, //[8]
60                       reo_push_reason                 :  2, //[10:9]
61                       reo_error_code                  :  5, //[15:11]
62                       receive_queue_number            : 16; //[31:16]
63              uint32_t soft_reorder_info_valid         :  1, //[0]
64                       reorder_opcode                  :  4, //[4:1]
65                       reorder_slot_index              :  8, //[12:5]
66                       mpdu_fragment_number            :  4, //[16:13]
67                       reserved_8a                     : 15; //[31:17]
68              uint32_t reserved_9a                     : 32; //[31:0]
69              uint32_t reserved_10a                    : 32; //[31:0]
70              uint32_t reserved_11a                    : 32; //[31:0]
71              uint32_t reserved_12a                    : 32; //[31:0]
72              uint32_t reserved_13a                    : 32; //[31:0]
73              uint32_t reserved_14a                    : 32; //[31:0]
74              uint32_t reserved_15                     : 20, //[19:0]
75                       ring_id                         :  8, //[27:20]
76                       looping_count                   :  4; //[31:28]
77 };
78 
79 /*
80 
81 struct buffer_addr_info buf_or_link_desc_addr_info
82 
83 			Consumer: REO/SW/FW
84 
85 			Producer: RXDMA
86 
87 
88 
89 			Details of the physical address of the a buffer or MSDU
90 			link descriptor
91 
92 struct rx_mpdu_desc_info rx_mpdu_desc_info_details
93 
94 			Consumer: REO/SW/FW
95 
96 			Producer: RXDMA
97 
98 
99 
100 			General information related to the MPDU that is passed
101 			on from REO entrance ring to the REO destination ring
102 
103 struct rx_msdu_desc_info rx_msdu_desc_info_details
104 
105 			General information related to the MSDU that is passed
106 			on from RXDMA all the way to to the REO destination ring.
107 
108 rx_reo_queue_desc_addr_31_0
109 
110 			Consumer: REO
111 
112 			Producer: RXDMA
113 
114 
115 
116 			Address (lower 32 bits) of the REO queue descriptor.
117 
118 			<legal all>
119 
120 rx_reo_queue_desc_addr_39_32
121 
122 			Consumer: REO
123 
124 			Producer: RXDMA
125 
126 
127 
128 			Address (upper 8 bits) of the REO queue descriptor.
129 
130 			<legal all>
131 
132 reo_dest_buffer_type
133 
134 			Indicates the type of address provided in the
135 			'Buf_or_link_desc_addr_info'
136 
137 
138 
139 			<enum 0 MSDU_buf_address> The address of an MSDU buffer
140 
141 			<enum 1 MSDU_link_desc_address> The address of the MSDU
142 			link descriptor.
143 
144 
145 
146 			<legal all>
147 
148 reo_push_reason
149 
150 			Indicates why REO pushed the frame to this exit ring
151 
152 
153 
154 			<enum 0 reo_error_detected> Reo detected an error an
155 			pushed this frame to this queue
156 
157 			<enum 1 reo_routing_instruction> Reo pushed the frame to
158 			this queue per received routing instructions. No error
159 			within REO was detected
160 
161 
162 
163 
164 
165 			<legal 0 - 1>
166 
167 reo_error_code
168 
169 			Field only valid when 'Reo_push_reason' set to
170 			'reo_error_detected'.
171 
172 
173 
174 			<enum 0 reo_queue_desc_addr_zero> Reo queue descriptor
175 			provided in the REO_ENTRANCE ring is set to 0
176 
177 			<enum 1 reo_queue_desc_not_valid> Reo queue descriptor
178 			valid bit is NOT set
179 
180 			<enum 2 ampdu_in_non_ba> AMPDU frame received without BA
181 			session having been setup.
182 
183 			<enum 3 non_ba_duplicate> Non-BA session, SN equal to
184 			SSN, Retry bit set: duplicate frame
185 
186 			<enum 4 ba_duplicate> BA session, duplicate frame
187 
188 			<enum 5 regular_frame_2k_jump> A normal (management/data
189 			frame) received with 2K jump in SN
190 
191 			<enum 6 bar_frame_2k_jump> A bar received with 2K jump
192 			in SSN
193 
194 			<enum 7 regular_frame_OOR> A normal (management/data
195 			frame) received with SN falling within the OOR window
196 
197 			<enum 8 bar_frame_OOR> A bar received with SSN falling
198 			within the OOR window
199 
200 			<enum 9 bar_frame_no_ba_session> A bar received without
201 			a BA session
202 
203 			<enum 10 bar_frame_sn_equals_ssn> A bar received with
204 			SSN equal to SN
205 
206 			<enum 11 pn_check_failed> PN Check Failed packet.
207 
208 			<enum 12 2k_error_handling_flag_set> Frame is forwarded
209 			as a result of the 'Seq_2k_error_detected_flag' been set in
210 			the REO Queue descriptor
211 
212 			<enum 13 pn_error_handling_flag_set> Frame is forwarded
213 			as a result of the 'pn_error_detected_flag' been set in the
214 			REO Queue descriptor
215 
216 			<enum 14 queue_descriptor_blocked_set> Frame is
217 			forwarded as a result of the queue descriptor(address) being
218 			blocked as SW/FW seems to be currently in the process of
219 			making updates to this descriptor...
220 
221 
222 
223 			<legal 0-14>
224 
225 receive_queue_number
226 
227 			This field indicates the REO MPDU reorder queue ID from
228 			which this frame originated. This field is populated from a
229 			field with the same name in the RX_REO_QUEUE descriptor.
230 
231 			<legal all>
232 
233 soft_reorder_info_valid
234 
235 			When set, REO has been instructed to not perform the
236 			actual re-ordering of frames for this queue, but just to
237 			insert the reorder opcodes
238 
239 			<legal all>
240 
241 reorder_opcode
242 
243 			Field is valid when 'Soft_reorder_info_valid' is set.
244 			This field is always valid for debug purpose as well.
245 
246 			Details are in the MLD.
247 
248 
249 
250 			<enum 0 invalid>
251 
252 			<enum 1 fwdcur_fwdbuf>
253 
254 			<enum 2 fwdbuf_fwdcur>
255 
256 			<enum 3 qcur>
257 
258 			<enum 4 fwdbuf_qcur>
259 
260 			<enum 5 fwdbuf_drop>
261 
262 			<enum 6 fwdall_drop>
263 
264 			<enum 7 fwdall_qcur>
265 
266 			<enum 8 reserved_reo_opcode_1>
267 
268 			<enum 9 dropcur>  the error reason code is in
269 			reo_error_code field.
270 
271 			<enum 10 reserved_reo_opcode_2>
272 
273 			<enum 11 reserved_reo_opcode_3>
274 
275 			<enum 12 reserved_reo_opcode_4>
276 
277 			<enum 13 reserved_reo_opcode_5>
278 
279 			<enum 14 reserved_reo_opcode_6>
280 
281 			<enum 15 reserved_reo_opcode_7>
282 
283 
284 
285 			<legal all>
286 
287 reorder_slot_index
288 
289 			Field only valid when 'Soft_reorder_info_valid' is set.
290 
291 
292 
293 			TODO: add description
294 
295 
296 
297 			<legal all>
298 
299 mpdu_fragment_number
300 
301 			Field only valid when Rx_mpdu_desc_info_details.
302 
303 			Fragment_flag  is set.
304 
305 
306 
307 			The fragment number from the 802.11 header.
308 
309 
310 
311 			Note that the sequence number is embedded in field:
312 			Rx_mpdu_desc_info_details.
313 
314 			Mpdu_Sequence_number
315 
316 			<legal all>
317 
318 reserved_8a
319 
320 			<legal 0>
321 
322 reserved_9a
323 
324 			<legal 0>
325 
326 reserved_10a
327 
328 			<legal 0>
329 
330 reserved_11a
331 
332 			<legal 0>
333 
334 reserved_12a
335 
336 			<legal 0>
337 
338 reserved_13a
339 
340 			<legal 0>
341 
342 reserved_14a
343 
344 			<legal 0>
345 
346 reserved_15
347 
348 			<legal 0>
349 
350 ring_id
351 
352 			The buffer pointer ring ID.
353 
354 			0 refers to the IDLE ring
355 
356 			1 - N refers to other rings
357 
358 
359 
360 			Helps with debugging when dumping ring contents.
361 
362 			<legal all>
363 
364 looping_count
365 
366 			A count value that indicates the number of times the
367 			producer of entries into this Ring has looped around the
368 			ring.
369 
370 			At initialization time, this value is set to 0. On the
371 			first loop, this value is set to 1. After the max value is
372 			reached allowed by the number of bits for this field, the
373 			count value continues with 0 again.
374 
375 			In case SW is the consumer of the ring entries, it can
376 			use this field to figure out up to where the producer of
377 			entries has created new entries. This eliminates the need to
378 			check where the head pointer' of the ring is located once
379 			the SW starts processing an interrupt indicating that new
380 			entries have been put into this ring...
381 
382 
383 
384 			Also note that SW if it wants only needs to look at the
385 			LSB bit of this count value.
386 
387 			<legal all>
388 */
389 
390 
391  /* EXTERNAL REFERENCE : struct buffer_addr_info buf_or_link_desc_addr_info */
392 
393 
394 /* Description		REO_DESTINATION_RING_0_BUF_OR_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0
395 
396 			Address (lower 32 bits) of the MSDU buffer OR
397 			MSDU_EXTENSION descriptor OR Link Descriptor
398 
399 
400 
401 			In case of 'NULL' pointer, this field is set to 0
402 
403 			<legal all>
404 */
405 #define REO_DESTINATION_RING_0_BUF_OR_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_OFFSET 0x00000000
406 #define REO_DESTINATION_RING_0_BUF_OR_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_LSB 0
407 #define REO_DESTINATION_RING_0_BUF_OR_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_MASK 0xffffffff
408 
409 /* Description		REO_DESTINATION_RING_1_BUF_OR_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32
410 
411 			Address (upper 8 bits) of the MSDU buffer OR
412 			MSDU_EXTENSION descriptor OR Link Descriptor
413 
414 
415 
416 			In case of 'NULL' pointer, this field is set to 0
417 
418 			<legal all>
419 */
420 #define REO_DESTINATION_RING_1_BUF_OR_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_OFFSET 0x00000004
421 #define REO_DESTINATION_RING_1_BUF_OR_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_LSB 0
422 #define REO_DESTINATION_RING_1_BUF_OR_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_MASK 0x000000ff
423 
424 /* Description		REO_DESTINATION_RING_1_BUF_OR_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER
425 
426 			Consumer: WBM
427 
428 			Producer: SW/FW
429 
430 
431 
432 			In case of 'NULL' pointer, this field is set to 0
433 
434 
435 
436 			Indicates to which buffer manager the buffer OR
437 			MSDU_EXTENSION descriptor OR link descriptor that is being
438 			pointed to shall be returned after the frame has been
439 			processed. It is used by WBM for routing purposes.
440 
441 
442 
443 			<enum 0 WBM_IDLE_BUF_LIST> This buffer shall be returned
444 			to the WMB buffer idle list
445 
446 			<enum 1 WBM_IDLE_DESC_LIST> This buffer shall be
447 			returned to the WMB idle link descriptor idle list
448 
449 			<enum 2 FW_BM> This buffer shall be returned to the FW
450 
451 			<enum 3 SW0_BM> This buffer shall be returned to the SW,
452 			ring 0
453 
454 			<enum 4 SW1_BM> This buffer shall be returned to the SW,
455 			ring 1
456 
457 			<enum 5 SW2_BM> This buffer shall be returned to the SW,
458 			ring 2
459 
460 			<enum 6 SW3_BM> This buffer shall be returned to the SW,
461 			ring 3
462 
463 			<enum 7 SW4_BM> This buffer shall be returned to the SW,
464 			ring 3
465 
466 
467 
468 			<legal all>
469 */
470 #define REO_DESTINATION_RING_1_BUF_OR_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_OFFSET 0x00000004
471 #define REO_DESTINATION_RING_1_BUF_OR_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_LSB 8
472 #define REO_DESTINATION_RING_1_BUF_OR_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_MASK 0x00000700
473 
474 /* Description		REO_DESTINATION_RING_1_BUF_OR_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE
475 
476 			Cookie field exclusively used by SW.
477 
478 
479 
480 			In case of 'NULL' pointer, this field is set to 0
481 
482 
483 
484 			HW ignores the contents, accept that it passes the
485 			programmed value on to other descriptors together with the
486 			physical address
487 
488 
489 
490 			Field can be used by SW to for example associate the
491 			buffers physical address with the virtual address
492 
493 			The bit definitions as used by SW are within SW HLD
494 			specification
495 
496 
497 
498 			NOTE:
499 
500 			The three most significant bits can have a special
501 			meaning in case this struct is embedded in a TX_MPDU_DETAILS
502 			STRUCT, and field transmit_bw_restriction is set
503 
504 
505 
506 			In case of NON punctured transmission:
507 
508 			Sw_buffer_cookie[20:19] = 2'b00: 20 MHz TX only
509 
510 			Sw_buffer_cookie[20:19] = 2'b01: 40 MHz TX only
511 
512 			Sw_buffer_cookie[20:19] = 2'b10: 80 MHz TX only
513 
514 			Sw_buffer_cookie[20:19] = 2'b11: 160 MHz TX only
515 
516 
517 
518 			In case of punctured transmission:
519 
520 			Sw_buffer_cookie[20:18] = 3'b000: pattern 0 only
521 
522 			Sw_buffer_cookie[20:18] = 3'b001: pattern 1 only
523 
524 			Sw_buffer_cookie[20:18] = 3'b010: pattern 2 only
525 
526 			Sw_buffer_cookie[20:18] = 3'b011: pattern 3 only
527 
528 			Sw_buffer_cookie[20:18] = 3'b100: pattern 4 only
529 
530 			Sw_buffer_cookie[20:18] = 3'b101: pattern 5 only
531 
532 			Sw_buffer_cookie[20:18] = 3'b110: pattern 6 only
533 
534 			Sw_buffer_cookie[20:18] = 3'b111: pattern 7 only
535 
536 
537 
538 			Note: a punctured transmission is indicated by the
539 			presence of TLV TX_PUNCTURE_SETUP embedded in the scheduler
540 			TLV
541 
542 
543 
544 			<legal all>
545 */
546 #define REO_DESTINATION_RING_1_BUF_OR_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_OFFSET 0x00000004
547 #define REO_DESTINATION_RING_1_BUF_OR_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_LSB 11
548 #define REO_DESTINATION_RING_1_BUF_OR_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_MASK 0xfffff800
549 
550  /* EXTERNAL REFERENCE : struct rx_mpdu_desc_info rx_mpdu_desc_info_details */
551 
552 
553 /* Description		REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_MSDU_COUNT
554 
555 			Consumer: REO/SW/FW
556 
557 			Producer: RXDMA
558 
559 
560 
561 			The number of MSDUs within the MPDU
562 
563 			<legal all>
564 */
565 #define REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_MSDU_COUNT_OFFSET 0x00000008
566 #define REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_MSDU_COUNT_LSB 0
567 #define REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_MSDU_COUNT_MASK 0x000000ff
568 
569 /* Description		REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_MPDU_SEQUENCE_NUMBER
570 
571 			Consumer: REO/SW/FW
572 
573 			Producer: RXDMA
574 
575 
576 
577 			The field can have two different meanings based on the
578 			setting of field 'BAR_frame':
579 
580 
581 
582 			'BAR_frame' is NOT set:
583 
584 			The MPDU sequence number of the received frame.
585 
586 
587 
588 			'BAR_frame' is set.
589 
590 			The MPDU Start sequence number from the BAR frame
591 
592 			<legal all>
593 */
594 #define REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_MPDU_SEQUENCE_NUMBER_OFFSET 0x00000008
595 #define REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_MPDU_SEQUENCE_NUMBER_LSB 8
596 #define REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_MPDU_SEQUENCE_NUMBER_MASK 0x000fff00
597 
598 /* Description		REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_FRAGMENT_FLAG
599 
600 			Consumer: REO/SW/FW
601 
602 			Producer: RXDMA
603 
604 
605 
606 			When set, this MPDU is a fragment and REO should forward
607 			this fragment MPDU to the REO destination ring without any
608 			reorder checks, pn checks or bitmap update. This implies
609 			that REO is forwarding the pointer to the MSDU link
610 			descriptor. The destination ring is coming from a
611 			programmable register setting in REO
612 
613 
614 
615 			<legal all>
616 */
617 #define REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_FRAGMENT_FLAG_OFFSET 0x00000008
618 #define REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_FRAGMENT_FLAG_LSB 20
619 #define REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_FRAGMENT_FLAG_MASK 0x00100000
620 
621 /* Description		REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_MPDU_RETRY_BIT
622 
623 			Consumer: REO/SW/FW
624 
625 			Producer: RXDMA
626 
627 
628 
629 			The retry bit setting from the MPDU header of the
630 			received frame
631 
632 			<legal all>
633 */
634 #define REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_MPDU_RETRY_BIT_OFFSET 0x00000008
635 #define REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_MPDU_RETRY_BIT_LSB 21
636 #define REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_MPDU_RETRY_BIT_MASK 0x00200000
637 
638 /* Description		REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_AMPDU_FLAG
639 
640 			Consumer: REO/SW/FW
641 
642 			Producer: RXDMA
643 
644 
645 
646 			When set, the MPDU was received as part of an A-MPDU.
647 
648 			<legal all>
649 */
650 #define REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_AMPDU_FLAG_OFFSET 0x00000008
651 #define REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_AMPDU_FLAG_LSB 22
652 #define REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_AMPDU_FLAG_MASK 0x00400000
653 
654 /* Description		REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_BAR_FRAME
655 
656 			Consumer: REO/SW/FW
657 
658 			Producer: RXDMA
659 
660 
661 
662 			When set, the received frame is a BAR frame. After
663 			processing, this frame shall be pushed to SW or deleted.
664 
665 			<legal all>
666 */
667 #define REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_BAR_FRAME_OFFSET 0x00000008
668 #define REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_BAR_FRAME_LSB 23
669 #define REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_BAR_FRAME_MASK 0x00800000
670 
671 /* Description		REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_PN_FIELDS_CONTAIN_VALID_INFO
672 
673 			Consumer: REO/SW/FW
674 
675 			Producer: RXDMA
676 
677 
678 
679 			Copied here by RXDMA from RX_MPDU_END
680 
681 			When not set, REO will Not perform a PN sequence number
682 			check
683 */
684 #define REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_PN_FIELDS_CONTAIN_VALID_INFO_OFFSET 0x00000008
685 #define REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_PN_FIELDS_CONTAIN_VALID_INFO_LSB 24
686 #define REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_PN_FIELDS_CONTAIN_VALID_INFO_MASK 0x01000000
687 
688 /* Description		REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_SA_IS_VALID
689 
690 			When set, OLE found a valid SA entry for all MSDUs in
691 			this MPDU
692 
693 			<legal all>
694 */
695 #define REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_SA_IS_VALID_OFFSET 0x00000008
696 #define REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_SA_IS_VALID_LSB 25
697 #define REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_SA_IS_VALID_MASK 0x02000000
698 
699 /* Description		REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT
700 
701 			When set, at least 1 MSDU within the MPDU has an
702 			unsuccessful MAC source address search due to the expiration
703 			of the search timer.
704 
705 			<legal all>
706 */
707 #define REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_OFFSET 0x00000008
708 #define REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_LSB 26
709 #define REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_MASK 0x04000000
710 
711 /* Description		REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_DA_IS_VALID
712 
713 			When set, OLE found a valid DA entry for all MSDUs in
714 			this MPDU
715 
716 			<legal all>
717 */
718 #define REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_DA_IS_VALID_OFFSET 0x00000008
719 #define REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_DA_IS_VALID_LSB 27
720 #define REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_DA_IS_VALID_MASK 0x08000000
721 
722 /* Description		REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_DA_IS_MCBC
723 
724 			Field Only valid if da_is_valid is set
725 
726 
727 
728 			When set, at least one of the DA addresses is a
729 			Multicast or Broadcast address.
730 
731 			<legal all>
732 */
733 #define REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_DA_IS_MCBC_OFFSET 0x00000008
734 #define REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_DA_IS_MCBC_LSB 28
735 #define REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_DA_IS_MCBC_MASK 0x10000000
736 
737 /* Description		REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT
738 
739 			When set, at least 1 MSDU within the MPDU has an
740 			unsuccessful MAC destination address search due to the
741 			expiration of the search timer.
742 
743 			<legal all>
744 */
745 #define REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_OFFSET 0x00000008
746 #define REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_LSB 29
747 #define REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_MASK 0x20000000
748 
749 /* Description		REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_RAW_MPDU
750 
751 			Field only valid when first_msdu_in_mpdu_flag is set.
752 
753 
754 
755 			When set, the contents in the MSDU buffer contains a
756 			'RAW' MPDU. This 'RAW' MPDU might be spread out over
757 			multiple MSDU buffers.
758 
759 			<legal all>
760 */
761 #define REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_RAW_MPDU_OFFSET 0x00000008
762 #define REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_RAW_MPDU_LSB 30
763 #define REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_RAW_MPDU_MASK 0x40000000
764 
765 /* Description		REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_MORE_FRAGMENT_FLAG
766 
767 			The More Fragment bit setting from the MPDU header of
768 			the received frame
769 
770 
771 
772 			<legal all>
773 */
774 #define REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_MORE_FRAGMENT_FLAG_OFFSET 0x00000008
775 #define REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_MORE_FRAGMENT_FLAG_LSB 31
776 #define REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_DETAILS_MORE_FRAGMENT_FLAG_MASK 0x80000000
777 
778 /* Description		REO_DESTINATION_RING_3_RX_MPDU_DESC_INFO_DETAILS_PEER_META_DATA
779 
780 			Meta data that SW has programmed in the Peer table entry
781 			of the transmitting STA.
782 
783 			<legal all>
784 */
785 #define REO_DESTINATION_RING_3_RX_MPDU_DESC_INFO_DETAILS_PEER_META_DATA_OFFSET 0x0000000c
786 #define REO_DESTINATION_RING_3_RX_MPDU_DESC_INFO_DETAILS_PEER_META_DATA_LSB 0
787 #define REO_DESTINATION_RING_3_RX_MPDU_DESC_INFO_DETAILS_PEER_META_DATA_MASK 0xffffffff
788 
789  /* EXTERNAL REFERENCE : struct rx_msdu_desc_info rx_msdu_desc_info_details */
790 
791 
792 /* Description		REO_DESTINATION_RING_4_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG
793 
794 			Parsed from RX_MSDU_END TLV . In the case MSDU spans
795 			over multiple buffers, this field will be valid in the Last
796 			buffer used by the MSDU
797 
798 
799 
800 			<enum 0 Not_first_msdu> This is not the first MSDU in
801 			the MPDU.
802 
803 			<enum 1 first_msdu> This MSDU is the first one in the
804 			MPDU.
805 
806 
807 
808 			<legal all>
809 */
810 #define REO_DESTINATION_RING_4_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_OFFSET 0x00000010
811 #define REO_DESTINATION_RING_4_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_LSB 0
812 #define REO_DESTINATION_RING_4_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_MASK 0x00000001
813 
814 /* Description		REO_DESTINATION_RING_4_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG
815 
816 			Consumer: WBM/REO/SW/FW
817 
818 			Producer: RXDMA
819 
820 
821 
822 			Parsed from RX_MSDU_END TLV . In the case MSDU spans
823 			over multiple buffers, this field will be valid in the Last
824 			buffer used by the MSDU
825 
826 
827 
828 			<enum 0 Not_last_msdu> There are more MSDUs linked to
829 			this MSDU that belongs to this MPDU
830 
831 			<enum 1 Last_msdu> this MSDU is the last one in the
832 			MPDU. This setting is only allowed in combination with
833 			'Msdu_continuation' set to 0. This implies that when an msdu
834 			is spread out over multiple buffers and thus
835 			msdu_continuation is set, only for the very last buffer of
836 			the msdu, can the 'last_msdu_in_mpdu_flag' be set.
837 
838 
839 
840 			When both first_msdu_in_mpdu_flag and
841 			last_msdu_in_mpdu_flag are set, the MPDU that this MSDU
842 			belongs to only contains a single MSDU.
843 
844 
845 
846 
847 
848 			<legal all>
849 */
850 #define REO_DESTINATION_RING_4_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_OFFSET 0x00000010
851 #define REO_DESTINATION_RING_4_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_LSB 1
852 #define REO_DESTINATION_RING_4_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_MASK 0x00000002
853 
854 /* Description		REO_DESTINATION_RING_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION
855 
856 			When set, this MSDU buffer was not able to hold the
857 			entire MSDU. The next buffer will therefor contain
858 			additional information related to this MSDU.
859 
860 
861 
862 			<legal all>
863 */
864 #define REO_DESTINATION_RING_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_OFFSET 0x00000010
865 #define REO_DESTINATION_RING_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_LSB 2
866 #define REO_DESTINATION_RING_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_MASK 0x00000004
867 
868 /* Description		REO_DESTINATION_RING_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH
869 
870 			Parsed from RX_MSDU_START TLV . In the case MSDU spans
871 			over multiple buffers, this field will be valid in the First
872 			buffer used by MSDU.
873 
874 
875 
876 			Full MSDU length in bytes after decapsulation.
877 
878 
879 
880 			This field is still valid for MPDU frames without
881 			A-MSDU.  It still represents MSDU length after decapsulation
882 
883 
884 
885 			Or in case of RAW MPDUs, it indicates the length of the
886 			entire MPDU (without FCS field)
887 
888 			<legal all>
889 */
890 #define REO_DESTINATION_RING_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_OFFSET 0x00000010
891 #define REO_DESTINATION_RING_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_LSB 3
892 #define REO_DESTINATION_RING_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_MASK 0x0001fff8
893 
894 /* Description		REO_DESTINATION_RING_4_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION
895 
896 			Parsed from RX_MSDU_END TLV . In the case MSDU spans
897 			over multiple buffers, this field will be valid in the Last
898 			buffer used by the MSDU
899 
900 
901 
902 			The ID of the REO exit ring where the MSDU frame shall
903 			push after (MPDU level) reordering has finished.
904 
905 
906 
907 			<enum 0 reo_destination_tcl> Reo will push the frame
908 			into the REO2TCL ring
909 
910 			<enum 1 reo_destination_sw1> Reo will push the frame
911 			into the REO2SW1 ring
912 
913 			<enum 2 reo_destination_sw2> Reo will push the frame
914 			into the REO2SW1 ring
915 
916 			<enum 3 reo_destination_sw3> Reo will push the frame
917 			into the REO2SW1 ring
918 
919 			<enum 4 reo_destination_sw4> Reo will push the frame
920 			into the REO2SW1 ring
921 
922 			<enum 5 reo_destination_release> Reo will push the frame
923 			into the REO_release ring
924 
925 			<enum 6 reo_destination_fw> Reo will push the frame into
926 			the REO2FW ring
927 
928 			<enum 7 reo_destination_7> REO remaps this
929 
930 			<enum 8 reo_destination_8> REO remaps this <enum 9
931 			reo_destination_9> REO remaps this <enum 10
932 			reo_destination_10> REO remaps this
933 
934 			<enum 11 reo_destination_11> REO remaps this
935 
936 			<enum 12 reo_destination_12> REO remaps this <enum 13
937 			reo_destination_13> REO remaps this
938 
939 			<enum 14 reo_destination_14> REO remaps this
940 
941 			<enum 15 reo_destination_15> REO remaps this
942 
943 			<enum 16 reo_destination_16> REO remaps this
944 
945 			<enum 17 reo_destination_17> REO remaps this
946 
947 			<enum 18 reo_destination_18> REO remaps this
948 
949 			<enum 19 reo_destination_19> REO remaps this
950 
951 			<enum 20 reo_destination_20> REO remaps this
952 
953 			<enum 21 reo_destination_21> REO remaps this
954 
955 			<enum 22 reo_destination_22> REO remaps this
956 
957 			<enum 23 reo_destination_23> REO remaps this
958 
959 			<enum 24 reo_destination_24> REO remaps this
960 
961 			<enum 25 reo_destination_25> REO remaps this
962 
963 			<enum 26 reo_destination_26> REO remaps this
964 
965 			<enum 27 reo_destination_27> REO remaps this
966 
967 			<enum 28 reo_destination_28> REO remaps this
968 
969 			<enum 29 reo_destination_29> REO remaps this
970 
971 			<enum 30 reo_destination_30> REO remaps this
972 
973 			<enum 31 reo_destination_31> REO remaps this
974 
975 
976 
977 			<legal all>
978 */
979 #define REO_DESTINATION_RING_4_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_OFFSET 0x00000010
980 #define REO_DESTINATION_RING_4_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_LSB 17
981 #define REO_DESTINATION_RING_4_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_MASK 0x003e0000
982 
983 /* Description		REO_DESTINATION_RING_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP
984 
985 			Parsed from RX_MSDU_END TLV . In the case MSDU spans
986 			over multiple buffers, this field will be valid in the Last
987 			buffer used by the MSDU
988 
989 
990 
991 			When set, REO shall drop this MSDU and not forward it to
992 			any other ring...
993 
994 			<legal all>
995 */
996 #define REO_DESTINATION_RING_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_OFFSET 0x00000010
997 #define REO_DESTINATION_RING_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_LSB 22
998 #define REO_DESTINATION_RING_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_MASK 0x00400000
999 
1000 /* Description		REO_DESTINATION_RING_4_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID
1001 
1002 			Parsed from RX_MSDU_END TLV . In the case MSDU spans
1003 			over multiple buffers, this field will be valid in the Last
1004 			buffer used by the MSDU
1005 
1006 
1007 
1008 			Indicates that OLE found a valid SA entry for this MSDU
1009 
1010 			<legal all>
1011 */
1012 #define REO_DESTINATION_RING_4_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_OFFSET 0x00000010
1013 #define REO_DESTINATION_RING_4_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_LSB 23
1014 #define REO_DESTINATION_RING_4_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_MASK 0x00800000
1015 
1016 /* Description		REO_DESTINATION_RING_4_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT
1017 
1018 			Parsed from RX_MSDU_END TLV . In the case MSDU spans
1019 			over multiple buffers, this field will be valid in the Last
1020 			buffer used by the MSDU
1021 
1022 
1023 
1024 			Indicates an unsuccessful MAC source address search due
1025 			to the expiring of the search timer for this MSDU
1026 
1027 			<legal all>
1028 */
1029 #define REO_DESTINATION_RING_4_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_OFFSET 0x00000010
1030 #define REO_DESTINATION_RING_4_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_LSB 24
1031 #define REO_DESTINATION_RING_4_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_MASK 0x01000000
1032 
1033 /* Description		REO_DESTINATION_RING_4_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID
1034 
1035 			Parsed from RX_MSDU_END TLV . In the case MSDU spans
1036 			over multiple buffers, this field will be valid in the Last
1037 			buffer used by the MSDU
1038 
1039 
1040 
1041 			Indicates that OLE found a valid DA entry for this MSDU
1042 
1043 			<legal all>
1044 */
1045 #define REO_DESTINATION_RING_4_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_OFFSET 0x00000010
1046 #define REO_DESTINATION_RING_4_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_LSB 25
1047 #define REO_DESTINATION_RING_4_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_MASK 0x02000000
1048 
1049 /* Description		REO_DESTINATION_RING_4_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC
1050 
1051 			Field Only valid if da_is_valid is set
1052 
1053 
1054 
1055 			Indicates the DA address was a Multicast of Broadcast
1056 			address for this MSDU
1057 
1058 			<legal all>
1059 */
1060 #define REO_DESTINATION_RING_4_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_OFFSET 0x00000010
1061 #define REO_DESTINATION_RING_4_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_LSB 26
1062 #define REO_DESTINATION_RING_4_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_MASK 0x04000000
1063 
1064 /* Description		REO_DESTINATION_RING_4_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT
1065 
1066 			Parsed from RX_MSDU_END TLV . In the case MSDU spans
1067 			over multiple buffers, this field will be valid in the Last
1068 			buffer used by the MSDU
1069 
1070 
1071 
1072 			Indicates an unsuccessful MAC destination address search
1073 			due to the expiring of the search timer for this MSDU
1074 
1075 			<legal all>
1076 */
1077 #define REO_DESTINATION_RING_4_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_OFFSET 0x00000010
1078 #define REO_DESTINATION_RING_4_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_LSB 27
1079 #define REO_DESTINATION_RING_4_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_MASK 0x08000000
1080 
1081 /* Description		REO_DESTINATION_RING_4_RX_MSDU_DESC_INFO_DETAILS_RESERVED_0A
1082 
1083 			<legal 0>
1084 */
1085 #define REO_DESTINATION_RING_4_RX_MSDU_DESC_INFO_DETAILS_RESERVED_0A_OFFSET 0x00000010
1086 #define REO_DESTINATION_RING_4_RX_MSDU_DESC_INFO_DETAILS_RESERVED_0A_LSB 28
1087 #define REO_DESTINATION_RING_4_RX_MSDU_DESC_INFO_DETAILS_RESERVED_0A_MASK 0xf0000000
1088 
1089 /* Description		REO_DESTINATION_RING_5_RX_MSDU_DESC_INFO_DETAILS_RESERVED_1A
1090 
1091 			<legal 0>
1092 */
1093 #define REO_DESTINATION_RING_5_RX_MSDU_DESC_INFO_DETAILS_RESERVED_1A_OFFSET 0x00000014
1094 #define REO_DESTINATION_RING_5_RX_MSDU_DESC_INFO_DETAILS_RESERVED_1A_LSB 0
1095 #define REO_DESTINATION_RING_5_RX_MSDU_DESC_INFO_DETAILS_RESERVED_1A_MASK 0xffffffff
1096 
1097 /* Description		REO_DESTINATION_RING_6_RX_REO_QUEUE_DESC_ADDR_31_0
1098 
1099 			Consumer: REO
1100 
1101 			Producer: RXDMA
1102 
1103 
1104 
1105 			Address (lower 32 bits) of the REO queue descriptor.
1106 
1107 			<legal all>
1108 */
1109 #define REO_DESTINATION_RING_6_RX_REO_QUEUE_DESC_ADDR_31_0_OFFSET    0x00000018
1110 #define REO_DESTINATION_RING_6_RX_REO_QUEUE_DESC_ADDR_31_0_LSB       0
1111 #define REO_DESTINATION_RING_6_RX_REO_QUEUE_DESC_ADDR_31_0_MASK      0xffffffff
1112 
1113 /* Description		REO_DESTINATION_RING_7_RX_REO_QUEUE_DESC_ADDR_39_32
1114 
1115 			Consumer: REO
1116 
1117 			Producer: RXDMA
1118 
1119 
1120 
1121 			Address (upper 8 bits) of the REO queue descriptor.
1122 
1123 			<legal all>
1124 */
1125 #define REO_DESTINATION_RING_7_RX_REO_QUEUE_DESC_ADDR_39_32_OFFSET   0x0000001c
1126 #define REO_DESTINATION_RING_7_RX_REO_QUEUE_DESC_ADDR_39_32_LSB      0
1127 #define REO_DESTINATION_RING_7_RX_REO_QUEUE_DESC_ADDR_39_32_MASK     0x000000ff
1128 
1129 /* Description		REO_DESTINATION_RING_7_REO_DEST_BUFFER_TYPE
1130 
1131 			Indicates the type of address provided in the
1132 			'Buf_or_link_desc_addr_info'
1133 
1134 
1135 
1136 			<enum 0 MSDU_buf_address> The address of an MSDU buffer
1137 
1138 			<enum 1 MSDU_link_desc_address> The address of the MSDU
1139 			link descriptor.
1140 
1141 
1142 
1143 			<legal all>
1144 */
1145 #define REO_DESTINATION_RING_7_REO_DEST_BUFFER_TYPE_OFFSET           0x0000001c
1146 #define REO_DESTINATION_RING_7_REO_DEST_BUFFER_TYPE_LSB              8
1147 #define REO_DESTINATION_RING_7_REO_DEST_BUFFER_TYPE_MASK             0x00000100
1148 
1149 /* Description		REO_DESTINATION_RING_7_REO_PUSH_REASON
1150 
1151 			Indicates why REO pushed the frame to this exit ring
1152 
1153 
1154 
1155 			<enum 0 reo_error_detected> Reo detected an error an
1156 			pushed this frame to this queue
1157 
1158 			<enum 1 reo_routing_instruction> Reo pushed the frame to
1159 			this queue per received routing instructions. No error
1160 			within REO was detected
1161 
1162 
1163 
1164 
1165 
1166 			<legal 0 - 1>
1167 */
1168 #define REO_DESTINATION_RING_7_REO_PUSH_REASON_OFFSET                0x0000001c
1169 #define REO_DESTINATION_RING_7_REO_PUSH_REASON_LSB                   9
1170 #define REO_DESTINATION_RING_7_REO_PUSH_REASON_MASK                  0x00000600
1171 
1172 /* Description		REO_DESTINATION_RING_7_REO_ERROR_CODE
1173 
1174 			Field only valid when 'Reo_push_reason' set to
1175 			'reo_error_detected'.
1176 
1177 
1178 
1179 			<enum 0 reo_queue_desc_addr_zero> Reo queue descriptor
1180 			provided in the REO_ENTRANCE ring is set to 0
1181 
1182 			<enum 1 reo_queue_desc_not_valid> Reo queue descriptor
1183 			valid bit is NOT set
1184 
1185 			<enum 2 ampdu_in_non_ba> AMPDU frame received without BA
1186 			session having been setup.
1187 
1188 			<enum 3 non_ba_duplicate> Non-BA session, SN equal to
1189 			SSN, Retry bit set: duplicate frame
1190 
1191 			<enum 4 ba_duplicate> BA session, duplicate frame
1192 
1193 			<enum 5 regular_frame_2k_jump> A normal (management/data
1194 			frame) received with 2K jump in SN
1195 
1196 			<enum 6 bar_frame_2k_jump> A bar received with 2K jump
1197 			in SSN
1198 
1199 			<enum 7 regular_frame_OOR> A normal (management/data
1200 			frame) received with SN falling within the OOR window
1201 
1202 			<enum 8 bar_frame_OOR> A bar received with SSN falling
1203 			within the OOR window
1204 
1205 			<enum 9 bar_frame_no_ba_session> A bar received without
1206 			a BA session
1207 
1208 			<enum 10 bar_frame_sn_equals_ssn> A bar received with
1209 			SSN equal to SN
1210 
1211 			<enum 11 pn_check_failed> PN Check Failed packet.
1212 
1213 			<enum 12 2k_error_handling_flag_set> Frame is forwarded
1214 			as a result of the 'Seq_2k_error_detected_flag' been set in
1215 			the REO Queue descriptor
1216 
1217 			<enum 13 pn_error_handling_flag_set> Frame is forwarded
1218 			as a result of the 'pn_error_detected_flag' been set in the
1219 			REO Queue descriptor
1220 
1221 			<enum 14 queue_descriptor_blocked_set> Frame is
1222 			forwarded as a result of the queue descriptor(address) being
1223 			blocked as SW/FW seems to be currently in the process of
1224 			making updates to this descriptor...
1225 
1226 
1227 
1228 			<legal 0-14>
1229 */
1230 #define REO_DESTINATION_RING_7_REO_ERROR_CODE_OFFSET                 0x0000001c
1231 #define REO_DESTINATION_RING_7_REO_ERROR_CODE_LSB                    11
1232 #define REO_DESTINATION_RING_7_REO_ERROR_CODE_MASK                   0x0000f800
1233 
1234 /* Description		REO_DESTINATION_RING_7_RECEIVE_QUEUE_NUMBER
1235 
1236 			This field indicates the REO MPDU reorder queue ID from
1237 			which this frame originated. This field is populated from a
1238 			field with the same name in the RX_REO_QUEUE descriptor.
1239 
1240 			<legal all>
1241 */
1242 #define REO_DESTINATION_RING_7_RECEIVE_QUEUE_NUMBER_OFFSET           0x0000001c
1243 #define REO_DESTINATION_RING_7_RECEIVE_QUEUE_NUMBER_LSB              16
1244 #define REO_DESTINATION_RING_7_RECEIVE_QUEUE_NUMBER_MASK             0xffff0000
1245 
1246 /* Description		REO_DESTINATION_RING_8_SOFT_REORDER_INFO_VALID
1247 
1248 			When set, REO has been instructed to not perform the
1249 			actual re-ordering of frames for this queue, but just to
1250 			insert the reorder opcodes
1251 
1252 			<legal all>
1253 */
1254 #define REO_DESTINATION_RING_8_SOFT_REORDER_INFO_VALID_OFFSET        0x00000020
1255 #define REO_DESTINATION_RING_8_SOFT_REORDER_INFO_VALID_LSB           0
1256 #define REO_DESTINATION_RING_8_SOFT_REORDER_INFO_VALID_MASK          0x00000001
1257 
1258 /* Description		REO_DESTINATION_RING_8_REORDER_OPCODE
1259 
1260 			Field is valid when 'Soft_reorder_info_valid' is set.
1261 			This field is always valid for debug purpose as well.
1262 
1263 			Details are in the MLD.
1264 
1265 
1266 
1267 			<enum 0 invalid>
1268 
1269 			<enum 1 fwdcur_fwdbuf>
1270 
1271 			<enum 2 fwdbuf_fwdcur>
1272 
1273 			<enum 3 qcur>
1274 
1275 			<enum 4 fwdbuf_qcur>
1276 
1277 			<enum 5 fwdbuf_drop>
1278 
1279 			<enum 6 fwdall_drop>
1280 
1281 			<enum 7 fwdall_qcur>
1282 
1283 			<enum 8 reserved_reo_opcode_1>
1284 
1285 			<enum 9 dropcur>  the error reason code is in
1286 			reo_error_code field.
1287 
1288 			<enum 10 reserved_reo_opcode_2>
1289 
1290 			<enum 11 reserved_reo_opcode_3>
1291 
1292 			<enum 12 reserved_reo_opcode_4>
1293 
1294 			<enum 13 reserved_reo_opcode_5>
1295 
1296 			<enum 14 reserved_reo_opcode_6>
1297 
1298 			<enum 15 reserved_reo_opcode_7>
1299 
1300 
1301 
1302 			<legal all>
1303 */
1304 #define REO_DESTINATION_RING_8_REORDER_OPCODE_OFFSET                 0x00000020
1305 #define REO_DESTINATION_RING_8_REORDER_OPCODE_LSB                    1
1306 #define REO_DESTINATION_RING_8_REORDER_OPCODE_MASK                   0x0000001e
1307 
1308 /* Description		REO_DESTINATION_RING_8_REORDER_SLOT_INDEX
1309 
1310 			Field only valid when 'Soft_reorder_info_valid' is set.
1311 
1312 
1313 
1314 			TODO: add description
1315 
1316 
1317 
1318 			<legal all>
1319 */
1320 #define REO_DESTINATION_RING_8_REORDER_SLOT_INDEX_OFFSET             0x00000020
1321 #define REO_DESTINATION_RING_8_REORDER_SLOT_INDEX_LSB                5
1322 #define REO_DESTINATION_RING_8_REORDER_SLOT_INDEX_MASK               0x00001fe0
1323 
1324 /* Description		REO_DESTINATION_RING_8_MPDU_FRAGMENT_NUMBER
1325 
1326 			Field only valid when Rx_mpdu_desc_info_details.
1327 
1328 			Fragment_flag  is set.
1329 
1330 
1331 
1332 			The fragment number from the 802.11 header.
1333 
1334 
1335 
1336 			Note that the sequence number is embedded in field:
1337 			Rx_mpdu_desc_info_details.
1338 
1339 			Mpdu_Sequence_number
1340 
1341 			<legal all>
1342 */
1343 #define REO_DESTINATION_RING_8_MPDU_FRAGMENT_NUMBER_OFFSET           0x00000020
1344 #define REO_DESTINATION_RING_8_MPDU_FRAGMENT_NUMBER_LSB              13
1345 #define REO_DESTINATION_RING_8_MPDU_FRAGMENT_NUMBER_MASK             0x0001e000
1346 
1347 /* Description		REO_DESTINATION_RING_8_RESERVED_8A
1348 
1349 			<legal 0>
1350 */
1351 #define REO_DESTINATION_RING_8_RESERVED_8A_OFFSET                    0x00000020
1352 #define REO_DESTINATION_RING_8_RESERVED_8A_LSB                       17
1353 #define REO_DESTINATION_RING_8_RESERVED_8A_MASK                      0xfffe0000
1354 
1355 /* Description		REO_DESTINATION_RING_9_RESERVED_9A
1356 
1357 			<legal 0>
1358 */
1359 #define REO_DESTINATION_RING_9_RESERVED_9A_OFFSET                    0x00000024
1360 #define REO_DESTINATION_RING_9_RESERVED_9A_LSB                       0
1361 #define REO_DESTINATION_RING_9_RESERVED_9A_MASK                      0xffffffff
1362 
1363 /* Description		REO_DESTINATION_RING_10_RESERVED_10A
1364 
1365 			<legal 0>
1366 */
1367 #define REO_DESTINATION_RING_10_RESERVED_10A_OFFSET                  0x00000028
1368 #define REO_DESTINATION_RING_10_RESERVED_10A_LSB                     0
1369 #define REO_DESTINATION_RING_10_RESERVED_10A_MASK                    0xffffffff
1370 
1371 /* Description		REO_DESTINATION_RING_11_RESERVED_11A
1372 
1373 			<legal 0>
1374 */
1375 #define REO_DESTINATION_RING_11_RESERVED_11A_OFFSET                  0x0000002c
1376 #define REO_DESTINATION_RING_11_RESERVED_11A_LSB                     0
1377 #define REO_DESTINATION_RING_11_RESERVED_11A_MASK                    0xffffffff
1378 
1379 /* Description		REO_DESTINATION_RING_12_RESERVED_12A
1380 
1381 			<legal 0>
1382 */
1383 #define REO_DESTINATION_RING_12_RESERVED_12A_OFFSET                  0x00000030
1384 #define REO_DESTINATION_RING_12_RESERVED_12A_LSB                     0
1385 #define REO_DESTINATION_RING_12_RESERVED_12A_MASK                    0xffffffff
1386 
1387 /* Description		REO_DESTINATION_RING_13_RESERVED_13A
1388 
1389 			<legal 0>
1390 */
1391 #define REO_DESTINATION_RING_13_RESERVED_13A_OFFSET                  0x00000034
1392 #define REO_DESTINATION_RING_13_RESERVED_13A_LSB                     0
1393 #define REO_DESTINATION_RING_13_RESERVED_13A_MASK                    0xffffffff
1394 
1395 /* Description		REO_DESTINATION_RING_14_RESERVED_14A
1396 
1397 			<legal 0>
1398 */
1399 #define REO_DESTINATION_RING_14_RESERVED_14A_OFFSET                  0x00000038
1400 #define REO_DESTINATION_RING_14_RESERVED_14A_LSB                     0
1401 #define REO_DESTINATION_RING_14_RESERVED_14A_MASK                    0xffffffff
1402 
1403 /* Description		REO_DESTINATION_RING_15_RESERVED_15
1404 
1405 			<legal 0>
1406 */
1407 #define REO_DESTINATION_RING_15_RESERVED_15_OFFSET                   0x0000003c
1408 #define REO_DESTINATION_RING_15_RESERVED_15_LSB                      0
1409 #define REO_DESTINATION_RING_15_RESERVED_15_MASK                     0x000fffff
1410 
1411 /* Description		REO_DESTINATION_RING_15_RING_ID
1412 
1413 			The buffer pointer ring ID.
1414 
1415 			0 refers to the IDLE ring
1416 
1417 			1 - N refers to other rings
1418 
1419 
1420 
1421 			Helps with debugging when dumping ring contents.
1422 
1423 			<legal all>
1424 */
1425 #define REO_DESTINATION_RING_15_RING_ID_OFFSET                       0x0000003c
1426 #define REO_DESTINATION_RING_15_RING_ID_LSB                          20
1427 #define REO_DESTINATION_RING_15_RING_ID_MASK                         0x0ff00000
1428 
1429 /* Description		REO_DESTINATION_RING_15_LOOPING_COUNT
1430 
1431 			A count value that indicates the number of times the
1432 			producer of entries into this Ring has looped around the
1433 			ring.
1434 
1435 			At initialization time, this value is set to 0. On the
1436 			first loop, this value is set to 1. After the max value is
1437 			reached allowed by the number of bits for this field, the
1438 			count value continues with 0 again.
1439 
1440 			In case SW is the consumer of the ring entries, it can
1441 			use this field to figure out up to where the producer of
1442 			entries has created new entries. This eliminates the need to
1443 			check where the head pointer' of the ring is located once
1444 			the SW starts processing an interrupt indicating that new
1445 			entries have been put into this ring...
1446 
1447 
1448 
1449 			Also note that SW if it wants only needs to look at the
1450 			LSB bit of this count value.
1451 
1452 			<legal all>
1453 */
1454 #define REO_DESTINATION_RING_15_LOOPING_COUNT_OFFSET                 0x0000003c
1455 #define REO_DESTINATION_RING_15_LOOPING_COUNT_LSB                    28
1456 #define REO_DESTINATION_RING_15_LOOPING_COUNT_MASK                   0xf0000000
1457 
1458 
1459 #endif // _REO_DESTINATION_RING_H_
1460