1 /*
2  * Copyright (c) 2016-2017 The Linux Foundation. All rights reserved.
3  *
4  * Permission to use, copy, modify, and/or distribute this software for
5  * any purpose with or without fee is hereby granted, provided that the
6  * above copyright notice and this permission notice appear in all
7  * copies.
8  *
9  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
10  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
11  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
12  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
13  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
14  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
15  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
16  * PERFORMANCE OF THIS SOFTWARE.
17  */
18 
19 // $ATH_LICENSE_HW_HDR_C$
20 //
21 // DO NOT EDIT!  This file is automatically generated
22 //               These definitions are tied to a particular hardware layout
23 
24 
25 #ifndef _WBM_RELEASE_RING_H_
26 #define _WBM_RELEASE_RING_H_
27 #if !defined(__ASSEMBLER__)
28 #endif
29 
30 #include "buffer_addr_info.h"
31 #include "tx_rate_stats_info.h"
32 
33 // ################ START SUMMARY #################
34 //
35 //	Dword	Fields
36 //	0-1	struct buffer_addr_info released_buff_or_desc_addr_info;
37 //	2	release_source_module[2:0], bm_action[5:3], buffer_or_desc_type[8:6], first_msdu_index[12:9], tqm_release_reason[15:13], rxdma_push_reason[17:16], rxdma_error_code[22:18], reo_push_reason[24:23], reo_error_code[29:25], wbm_internal_error[30], reserved_2[31]
38 //	3	tqm_status_number[23:0], transmit_count[30:24], reserved_3a[31]
39 //	4	ack_frame_rssi[7:0], sw_release_details_valid[8], first_msdu[9], last_msdu[10], msdu_part_of_amsdu[11], fw_tx_notify_frame[12], buffer_timestamp[31:13]
40 //	5-6	struct tx_rate_stats_info tx_rate_stats;
41 //	7	sw_peer_id[15:0], tid[19:16], ring_id[27:20], looping_count[31:28]
42 //
43 // ################ END SUMMARY #################
44 
45 #define NUM_OF_DWORDS_WBM_RELEASE_RING 8
46 
47 struct wbm_release_ring {
48     struct            buffer_addr_info                       released_buff_or_desc_addr_info;
49              uint32_t release_source_module           :  3, //[2:0]
50                       bm_action                       :  3, //[5:3]
51                       buffer_or_desc_type             :  3, //[8:6]
52                       first_msdu_index                :  4, //[12:9]
53                       tqm_release_reason              :  3, //[15:13]
54                       rxdma_push_reason               :  2, //[17:16]
55                       rxdma_error_code                :  5, //[22:18]
56                       reo_push_reason                 :  2, //[24:23]
57                       reo_error_code                  :  5, //[29:25]
58                       wbm_internal_error              :  1, //[30]
59                       reserved_2                      :  1; //[31]
60              uint32_t tqm_status_number               : 24, //[23:0]
61                       transmit_count                  :  7, //[30:24]
62                       reserved_3a                     :  1; //[31]
63              uint32_t ack_frame_rssi                  :  8, //[7:0]
64                       sw_release_details_valid        :  1, //[8]
65                       first_msdu                      :  1, //[9]
66                       last_msdu                       :  1, //[10]
67                       msdu_part_of_amsdu              :  1, //[11]
68                       fw_tx_notify_frame              :  1, //[12]
69                       buffer_timestamp                : 19; //[31:13]
70     struct            tx_rate_stats_info                       tx_rate_stats;
71              uint32_t sw_peer_id                      : 16, //[15:0]
72                       tid                             :  4, //[19:16]
73                       ring_id                         :  8, //[27:20]
74                       looping_count                   :  4; //[31:28]
75 };
76 
77 /*
78 
79 struct buffer_addr_info released_buff_or_desc_addr_info
80 
81 			Consumer: WBM/SW/FW
82 
83 			Producer: SW/TQM/RXDMA/REO/SWITCH
84 
85 
86 
87 			Details of the physical address of the buffer or link
88 			descriptor that is being released. Note that within this
89 			descriptor, WBM will look at the 'owner' of the released
90 			buffer/descriptor and forward it to SW/FW is WBM is not the
91 			owner.
92 
93 release_source_module
94 
95 			Indicates which module initiated the release of this
96 			buffer or descriptor
97 
98 
99 
100 			<enum 0 release_source_TQM> TQM released this buffer or
101 			descriptor
102 
103 			<enum 1 release_source_RXDMA> RXDMA released this buffer
104 			or descriptor
105 
106 			<enum 2 release_source_REO> REO released this buffer or
107 			descriptor
108 
109 			<enum 3 release_source_FW> FW released this buffer or
110 			descriptor
111 
112 			<enum 4 release_source_SW> SW released this buffer or
113 			descriptor
114 
115 			<legal 0-4>
116 
117 bm_action
118 
119 			Consumer: WBM/SW/FW
120 
121 			Producer: SW/TQM/RXDMA/REO/SWITCH
122 
123 
124 
125 			Field only valid when the field return_buffer_manager in
126 			the Released_buff_or_desc_addr_info indicates:
127 
128 			WBM_IDLE_BUF_LIST or
129 
130 			WBM_IDLE_DESC_LIST
131 
132 
133 
134 			An MSDU extension descriptor shall never be marked as
135 
136 
137 
138 			<enum 0 Put_in_idle_list> Put the buffer or descriptor
139 			back in the idle list. In case of MSDU or MDPU link
140 			descriptor, BM does not need to check to release any
141 			individual MSDU buffers
142 
143 
144 
145 			<enum 1 release_msdu_list > This BM action can only be
146 			used in combination with buffer_or_desc_type being
147 			msdu_link_descriptor. Field first_msdu_index points out
148 			which MSDU pointer in the MSDU link descriptor is the first
149 			of an MPDU that is released.
150 
151 			BM shall release all the MSDU buffers linked to this
152 			first MSDU buffer pointer. All related MSDU buffer pointer
153 			entries shall be set to value 0, which represents the 'NULL
154 			pointer. When all MSDU buffer pointers in the MSDU link
155 			descriptor are 'NULL', the MSDU link descriptor itself shall
156 			also be released.
157 
158 
159 
160 			<enum 2 Put_in_idle_list_expanded> CURRENTLY NOT
161 			IMPLEMENTED....
162 
163 			Put the buffer or descriptor back in the idle list. Only
164 			valid in combination with buffer_or_desc_type indicating
165 			MDPU_link_descriptor.
166 
167 			BM shall release the MPDU link descriptor as well as all
168 			MSDUs that are linked to the MPDUs in this descriptor.
169 
170 
171 
172 			<legal 0-2>
173 
174 buffer_or_desc_type
175 
176 			Consumer: WBM/SW/FW
177 
178 			Producer: SW/TQM/RXDMA/REO/SWITCH
179 
180 
181 
182 			Field only valid when WBM is marked as the
183 			return_buffer_manager in the Released_Buffer_address_info
184 
185 
186 
187 			Indicates that type of buffer or descriptor is being
188 			released
189 
190 
191 
192 			<enum 0 MSDU_rel_buffer> The address points to an MSDU
193 			buffer
194 
195 			<enum 1 msdu_link_descriptor> The address points to an
196 			TX MSDU link descriptor
197 
198 			<enum 2 mpdu_link_descriptor> The address points to an
199 			MPDU link descriptor
200 
201 			<enum 3 msdu_ext_descriptor > The address points to an
202 			MSDU extension descriptor.
203 
204 			In case BM finds this one in a release ring, it passes
205 			it on to FW...
206 
207 			<enum 4 queue_ext_descriptor> The address points to an
208 			TQM queue extension descriptor. WBM should treat this is the
209 			same way as a link descriptor. That is, put the 128 byte
210 			buffer back in the link buffer idle list.
211 
212 
213 
214 			<legal 0-4>
215 
216 first_msdu_index
217 
218 			Consumer: WBM/SW/FW
219 
220 			Producer: SW/TQM/RXDMA/REO/SWITCH
221 
222 
223 
224 			Field only valid for the bm_action release_msdu_list.
225 
226 
227 
228 			The index of the first MSDU in an MSDU link descriptor
229 			all belonging to the same MPDU.
230 
231 
232 
233 			<legal 0-6>
234 
235 tqm_release_reason
236 
237 			Consumer: WBM/SW/FW
238 
239 			Producer: TQM
240 
241 
242 
243 			Field only valid when Release_source_module is set to
244 			release_source_TQM
245 
246 
247 
248 			(rr = Release Reason)
249 
250 			<enum 0 tqm_rr_frame_acked> frame is removed because an
251 			ACK of BA for it was received
252 
253 			<enum 1 tqm_rr_rem_cmd_rem> frame is removed because a
254 			remove command of type Remove_mpdus initiated by SW
255 
256 			<enum 2 tqm_rr_rem_cmd_tx> frame is removed because a
257 			remove command of type Remove_transmitted_mpdus initiated by
258 			SW
259 
260 			<enum 3 tqm_rr_rem_cmd_notx> frame is removed because a
261 			remove command of type Remove_untransmitted_mpdus initiated
262 			by SW
263 
264 			<enum 4 tqm_rr_rem_cmd_aged> frame is removed because a
265 			remove command of type Remove_aged_mpdus or
266 			Remove_aged_msdus initiated by SW
267 
268 			<enum 5 tqm_fw_reason1> frame is removed because a
269 			remove command where fw indicated that remove reason is
270 			fw_reason1
271 
272 			<enum 6 tqm_fw_reason2> frame is removed because a
273 			remove command where fw indicated that remove reason is
274 			fw_reason1
275 
276 			<enum 7 tqm_fw_reason3> frame is removed because a
277 			remove command where fw indicated that remove reason is
278 			fw_reason1
279 
280 
281 
282 			<legal 0-7>
283 
284 rxdma_push_reason
285 
286 			Field only valid when Release_source_module is set to
287 			release_source_RXDMA
288 
289 
290 
291 			Indicates why rxdma pushed the frame to this ring
292 
293 
294 
295 			<enum 0 rxdma_error_detected> RXDMA detected an error an
296 			pushed this frame to this queue
297 
298 			<enum 1 rxdma_routing_instruction> RXDMA pushed the
299 			frame to this queue per received routing instructions. No
300 			error within RXDMA was detected
301 
302 
303 
304 			<legal 0 - 1>
305 
306 rxdma_error_code
307 
308 			Field only valid when 'rxdma_push_reason' set to
309 			'rxdma_error_detected'.
310 
311 
312 
313 			<enum 0 rxdma_overflow_err>MPDU frame is not complete
314 			due to a FIFO overflow error in RXPCU.
315 
316 			<enum 1 rxdma_mpdu_length_err>MPDU frame is not complete
317 			due to receiving incomplete MPDU from the PHY
318 
319 
320 			<enum 3 rxdma_decrypt_err>CRYPTO reported a decryption
321 			error or CRYPTO received an encrypted frame, but did not get
322 			a valid corresponding key id in the peer entry.
323 
324 			<enum 4 rxdma_tkip_mic_err>CRYPTO reported a TKIP MIC
325 			error
326 
327 			<enum 5 rxdma_unecrypted_err>CRYPTO reported an
328 			unencrypted frame error when encrypted was expected
329 
330 			<enum 6 rxdma_msdu_len_err>RX OLE reported an MSDU
331 			length error
332 
333 			<enum 7 rxdma_msdu_limit_err>RX OLE reported that max
334 			number of MSDUs allowed in an MPDU got exceeded
335 
336 			<enum 8 rxdma_wifi_parse_err>RX OLE reported a parsing
337 			error
338 
339 			<enum 9 rxdma_amsdu_parse_err>RX OLE reported an A-MSDU
340 			parsing error
341 
342 			<enum 10 rxdma_sa_timeout_err>RX OLE reported a timeout
343 			during SA search
344 
345 			<enum 11 rxdma_da_timeout_err>RX OLE reported a timeout
346 			during DA search
347 
348 			<enum 12 rxdma_flow_timeout_err>RX OLE reported a
349 			timeout during flow search
350 
351 			<enum 13 Rxdma_flush_request>RXDMA received a flush
352 			request
353 
354 reo_push_reason
355 
356 			Field only valid when Release_source_module is set to
357 			release_source_REO
358 
359 
360 
361 			Indicates why REO pushed the frame to this release ring
362 
363 
364 
365 			<enum 0 reo_error_detected> Reo detected an error an
366 			pushed this frame to this queue
367 
368 			<enum 1 reo_routing_instruction> Reo pushed the frame to
369 			this queue per received routing instructions. No error
370 			within REO was detected
371 
372 
373 
374 			<legal 0 - 1>
375 
376 reo_error_code
377 
378 			Field only valid when 'Reo_push_reason' set to
379 			'reo_error_detected'.
380 
381 
382 
383 			<enum 0 reo_queue_desc_addr_zero> Reo queue descriptor
384 			provided in the REO_ENTRANCE ring is set to 0
385 
386 			<enum 1 reo_queue_desc_not_valid> Reo queue descriptor
387 			valid bit is NOT set
388 
389 			<enum 2 ampdu_in_non_ba> AMPDU frame received without BA
390 			session having been setup.
391 
392 			<enum 3 non_ba_duplicate> Non-BA session, SN equal to
393 			SSN, Retry bit set: duplicate frame
394 
395 			<enum 4 ba_duplicate> BA session, duplicate frame
396 
397 			<enum 5 regular_frame_2k_jump> A normal (management/data
398 			frame) received with 2K jump in SN
399 
400 			<enum 6 bar_frame_2k_jump> A bar received with 2K jump
401 			in SSN
402 
403 			<enum 7 regular_frame_OOR> A normal (management/data
404 			frame) received with SN falling within the OOR window
405 
406 			<enum 8 bar_frame_OOR> A bar received with SSN falling
407 			within the OOR window
408 
409 			<enum 9 bar_frame_no_ba_session> A bar received without
410 			a BA session
411 
412 			<enum 10 bar_frame_sn_equals_ssn> A bar received with
413 			SSN equal to SN
414 
415 			<enum 11 pn_check_failed> PN Check Failed packet.
416 
417 			<enum 12 2k_error_handling_flag_set> Frame is forwarded
418 			as a result of the 'Seq_2k_error_detected_flag' been set in
419 			the REO Queue descriptor
420 
421 			<enum 13 pn_error_handling_flag_set> Frame is forwarded
422 			as a result of the 'pn_error_detected_flag' been set in the
423 			REO Queue descriptor
424 
425 			<enum 14 queue_descriptor_blocked_set> Frame is
426 			forwarded as a result of the queue descriptor(address) being
427 			blocked as SW/FW seems to be currently in the process of
428 			making updates to this descriptor...
429 
430 
431 
432 			<legal 0-14>
433 
434 wbm_internal_error
435 
436 			Can only be set by WBM.
437 
438 
439 
440 			Is set when WBM got a buffer pointer but the action was
441 			to push it to the idle link descriptor ring or do link
442 			related activity
443 
444 			OR
445 
446 			Is set when WBM got a link buffer pointer but the action
447 			was to push it to the buffer  descriptor ring
448 
449 
450 
451 			<legal all>
452 
453 reserved_2
454 
455 			<legal 0>
456 
457 tqm_status_number
458 
459 			Field only valid when Release_source_module is set to
460 			release_source_TQM
461 
462 
463 
464 			The value in this field is equal to value of the
465 			'TQM_CMD_Number' field the TQM command or the
466 			'TQM_add_cmd_Number' field from the TQM entrance ring
467 			descriptor
468 
469 
470 
471 			This field helps to correlate the statuses with the TQM
472 			commands.
473 
474 
475 
476 			NOTE that SW could program this number to be equal to
477 			the PPDU_ID number in case direct correlation with the PPDU
478 			ID is desired
479 
480 
481 
482 			<legal all>
483 
484 transmit_count
485 
486 			Field only valid when Release_source_module is set to
487 			release_source_TQM
488 
489 
490 
491 			The number of times this frame has been transmitted
492 
493 reserved_3a
494 
495 			<legal 0>
496 
497 ack_frame_rssi
498 
499 			This field is only valid when the source is TQM.
500 
501 
502 
503 			If this frame is removed as the result of the reception
504 			of an ACK or BA, this field indicates the RSSI of the
505 			received ACK or BA frame.
506 
507 
508 
509 			When the frame is removed as result of a direct remove
510 			command from the SW,  this field is set to 0x0 (which is
511 			never a valid value when real RSSI is available)
512 
513 
514 
515 			<legal all>
516 
517 sw_release_details_valid
518 
519 			Consumer: SW
520 
521 			Producer: WBM
522 
523 
524 
525 			When set, some WBM specific release info for SW is
526 			valid.
527 
528 			This is set when WMB got a 'release_msdu_list' command
529 			from TQM and the return buffer manager is not WMB. WBM will
530 			then de-aggregate all the MSDUs and pass them one at a time
531 			on to the 'buffer owner'
532 
533 
534 
535 			<legal all>
536 
537 first_msdu
538 
539 			Field only valid when SW_release_details_valid is set.
540 
541 
542 
543 			Consumer: SW
544 
545 			Producer: WBM
546 
547 
548 
549 			When set, this MSDU is the first MSDU pointed to in the
550 			'release_msdu_list' command.
551 
552 
553 
554 			<legal all>
555 
556 last_msdu
557 
558 			Field only valid when SW_release_details_valid is set.
559 
560 
561 
562 			Consumer: SW
563 
564 			Producer: WBM
565 
566 
567 
568 			When set, this MSDU is the last MSDU pointed to in the
569 			'release_msdu_list' command.
570 
571 
572 
573 			<legal all>
574 
575 msdu_part_of_amsdu
576 
577 			Field only valid when SW_release_details_valid is set.
578 
579 
580 
581 			Consumer: SW
582 
583 			Producer: WBM
584 
585 
586 
587 			When set, this MSDU was part of an A-MSDU in MPDU
588 
589 			<legal all>
590 
591 fw_tx_notify_frame
592 
593 			Field only valid when SW_release_details_valid is set.
594 
595 
596 
597 			Consumer: SW
598 
599 			Producer: WBM
600 
601 
602 
603 			This is the FW_tx_notify_frame field from the
604 
605 			<legal all>
606 
607 buffer_timestamp
608 
609 			Field only valid when SW_release_details_valid is set.
610 
611 
612 
613 			Consumer: SW
614 
615 			Producer: WBM
616 
617 
618 
619 			This is the Buffer_timestamp field from the
620 
621 			<legal all>
622 
623 struct tx_rate_stats_info tx_rate_stats
624 
625 			Consumer: TQM
626 
627 			Producer: SW/SCH(from TXPCU, PDG)
628 
629 
630 
631 			Details for command execution tracking purposes.
632 
633 sw_peer_id
634 
635 			Field only valid when Release_source_module is set to
636 			release_source_TQM
637 
638 
639 
640 			1) Release of msdu buffer due to drop_frame = 1. Flow is
641 			not fetched and hence sw_peer_id and tid = 0
642 
643 			buffer_or_desc_type = e_num 0
644 			MSDU_rel_buffertqm_release_reason = e_num 1
645 			tqm_rr_rem_cmd_rem
646 
647 
648 
649 
650 
651 			2) Release of msdu buffer due to Flow is not fetched and
652 			hence sw_peer_id and tid = 0
653 
654 			buffer_or_desc_type = e_num 0
655 			MSDU_rel_buffertqm_release_reason = e_num 1
656 			tqm_rr_rem_cmd_rem
657 
658 
659 
660 
661 
662 			3) Release of msdu link due to remove_mpdu or acked_mpdu
663 			command.
664 
665 			buffer_or_desc_type = e_num1
666 			msdu_link_descriptortqm_release_reason can be:e_num 1
667 			tqm_rr_rem_cmd_reme_num 2 tqm_rr_rem_cmd_tx
668 
669 			e_num 3 tqm_rr_rem_cmd_notxe_num 4 tqm_rr_rem_cmd_aged
670 
671 
672 
673 			Sw_peer_id from the TX_MSDU_FLOW descriptor or
674 			TX_MPDU_QUEUE descriptor
675 
676 			<legal all>
677 
678 tid
679 
680 			Field only valid when Release_source_module is set to
681 			release_source_TQM
682 
683 
684 
685 			1) Release of msdu buffer due to drop_frame = 1. Flow is
686 			not fetched and hence sw_peer_id and tid = 0
687 
688 			buffer_or_desc_type = e_num 0
689 			MSDU_rel_buffertqm_release_reason = e_num 1
690 			tqm_rr_rem_cmd_rem
691 
692 
693 
694 
695 
696 			2) Release of msdu buffer due to Flow is not fetched and
697 			hence sw_peer_id and tid = 0
698 
699 			buffer_or_desc_type = e_num 0
700 			MSDU_rel_buffertqm_release_reason = e_num 1
701 			tqm_rr_rem_cmd_rem
702 
703 
704 
705 
706 
707 			3) Release of msdu link due to remove_mpdu or acked_mpdu
708 			command.
709 
710 			buffer_or_desc_type = e_num1
711 			msdu_link_descriptortqm_release_reason can be:e_num 1
712 			tqm_rr_rem_cmd_reme_num 2 tqm_rr_rem_cmd_tx
713 
714 			e_num 3 tqm_rr_rem_cmd_notxe_num 4 tqm_rr_rem_cmd_aged
715 
716 
717 
718 
719 
720 			This field represents the TID from the TX_MSDU_FLOW
721 			descriptor or TX_MPDU_QUEUE descriptor
722 
723 
724 
725 			 <legal all>
726 
727 ring_id
728 
729 			Consumer: TQM/REO/RXDMA/SW
730 
731 			Producer: SRNG (of RXDMA)
732 
733 
734 
735 			For debugging.
736 
737 			This field is filled in by the SRNG module.
738 
739 			It help to identify the ring that is being looked <legal
740 			all>
741 
742 looping_count
743 
744 			Consumer: WBM/SW/FW
745 
746 			Producer: SW/TQM/RXDMA/REO/SWITCH
747 
748 
749 
750 			A count value that indicates the number of times the
751 			producer of entries into the Buffer Manager Ring has looped
752 			around the ring.
753 
754 			At initialization time, this value is set to 0. On the
755 			first loop, this value is set to 1. After the max value is
756 			reached allowed by the number of bits for this field, the
757 			count value continues with 0 again.
758 
759 
760 
761 			In case SW is the consumer of the ring entries, it can
762 			use this field to figure out up to where the producer of
763 			entries has created new entries. This eliminates the need to
764 			check where the head pointer' of the ring is located once
765 			the SW starts processing an interrupt indicating that new
766 			entries have been put into this ring...
767 
768 
769 
770 			Also note that SW if it wants only needs to look at the
771 			LSB bit of this count value.
772 
773 			<legal all>
774 */
775 
776 #define WBM_RELEASE_RING_0_BUFFER_ADDR_INFO_RELEASED_BUFF_OR_DESC_ADDR_INFO_OFFSET 0x00000000
777 #define WBM_RELEASE_RING_0_BUFFER_ADDR_INFO_RELEASED_BUFF_OR_DESC_ADDR_INFO_LSB 28
778 #define WBM_RELEASE_RING_0_BUFFER_ADDR_INFO_RELEASED_BUFF_OR_DESC_ADDR_INFO_MASK 0xffffffff
779 #define WBM_RELEASE_RING_1_BUFFER_ADDR_INFO_RELEASED_BUFF_OR_DESC_ADDR_INFO_OFFSET 0x00000004
780 #define WBM_RELEASE_RING_1_BUFFER_ADDR_INFO_RELEASED_BUFF_OR_DESC_ADDR_INFO_LSB 28
781 #define WBM_RELEASE_RING_1_BUFFER_ADDR_INFO_RELEASED_BUFF_OR_DESC_ADDR_INFO_MASK 0xffffffff
782 
783 /* Description		WBM_RELEASE_RING_2_RELEASE_SOURCE_MODULE
784 
785 			Indicates which module initiated the release of this
786 			buffer or descriptor
787 
788 
789 
790 			<enum 0 release_source_TQM> TQM released this buffer or
791 			descriptor
792 
793 			<enum 1 release_source_RXDMA> RXDMA released this buffer
794 			or descriptor
795 
796 			<enum 2 release_source_REO> REO released this buffer or
797 			descriptor
798 
799 			<enum 3 release_source_FW> FW released this buffer or
800 			descriptor
801 
802 			<enum 4 release_source_SW> SW released this buffer or
803 			descriptor
804 
805 			<legal 0-4>
806 */
807 #define WBM_RELEASE_RING_2_RELEASE_SOURCE_MODULE_OFFSET              0x00000008
808 #define WBM_RELEASE_RING_2_RELEASE_SOURCE_MODULE_LSB                 0
809 #define WBM_RELEASE_RING_2_RELEASE_SOURCE_MODULE_MASK                0x00000007
810 
811 /* Description		WBM_RELEASE_RING_2_BM_ACTION
812 
813 			Consumer: WBM/SW/FW
814 
815 			Producer: SW/TQM/RXDMA/REO/SWITCH
816 
817 
818 
819 			Field only valid when the field return_buffer_manager in
820 			the Released_buff_or_desc_addr_info indicates:
821 
822 			WBM_IDLE_BUF_LIST or
823 
824 			WBM_IDLE_DESC_LIST
825 
826 
827 
828 			An MSDU extension descriptor shall never be marked as
829 
830 
831 
832 			<enum 0 Put_in_idle_list> Put the buffer or descriptor
833 			back in the idle list. In case of MSDU or MDPU link
834 			descriptor, BM does not need to check to release any
835 			individual MSDU buffers
836 
837 
838 
839 			<enum 1 release_msdu_list > This BM action can only be
840 			used in combination with buffer_or_desc_type being
841 			msdu_link_descriptor. Field first_msdu_index points out
842 			which MSDU pointer in the MSDU link descriptor is the first
843 			of an MPDU that is released.
844 
845 			BM shall release all the MSDU buffers linked to this
846 			first MSDU buffer pointer. All related MSDU buffer pointer
847 			entries shall be set to value 0, which represents the 'NULL
848 			pointer. When all MSDU buffer pointers in the MSDU link
849 			descriptor are 'NULL', the MSDU link descriptor itself shall
850 			also be released.
851 
852 
853 
854 			<enum 2 Put_in_idle_list_expanded> CURRENTLY NOT
855 			IMPLEMENTED....
856 
857 			Put the buffer or descriptor back in the idle list. Only
858 			valid in combination with buffer_or_desc_type indicating
859 			MDPU_link_descriptor.
860 
861 			BM shall release the MPDU link descriptor as well as all
862 			MSDUs that are linked to the MPDUs in this descriptor.
863 
864 
865 
866 			<legal 0-2>
867 */
868 #define WBM_RELEASE_RING_2_BM_ACTION_OFFSET                          0x00000008
869 #define WBM_RELEASE_RING_2_BM_ACTION_LSB                             3
870 #define WBM_RELEASE_RING_2_BM_ACTION_MASK                            0x00000038
871 
872 /* Description		WBM_RELEASE_RING_2_BUFFER_OR_DESC_TYPE
873 
874 			Consumer: WBM/SW/FW
875 
876 			Producer: SW/TQM/RXDMA/REO/SWITCH
877 
878 
879 
880 			Field only valid when WBM is marked as the
881 			return_buffer_manager in the Released_Buffer_address_info
882 
883 
884 
885 			Indicates that type of buffer or descriptor is being
886 			released
887 
888 
889 
890 			<enum 0 MSDU_rel_buffer> The address points to an MSDU
891 			buffer
892 
893 			<enum 1 msdu_link_descriptor> The address points to an
894 			TX MSDU link descriptor
895 
896 			<enum 2 mpdu_link_descriptor> The address points to an
897 			MPDU link descriptor
898 
899 			<enum 3 msdu_ext_descriptor > The address points to an
900 			MSDU extension descriptor.
901 
902 			In case BM finds this one in a release ring, it passes
903 			it on to FW...
904 
905 			<enum 4 queue_ext_descriptor> The address points to an
906 			TQM queue extension descriptor. WBM should treat this is the
907 			same way as a link descriptor. That is, put the 128 byte
908 			buffer back in the link buffer idle list.
909 
910 
911 
912 			<legal 0-4>
913 */
914 #define WBM_RELEASE_RING_2_BUFFER_OR_DESC_TYPE_OFFSET                0x00000008
915 #define WBM_RELEASE_RING_2_BUFFER_OR_DESC_TYPE_LSB                   6
916 #define WBM_RELEASE_RING_2_BUFFER_OR_DESC_TYPE_MASK                  0x000001c0
917 
918 /* Description		WBM_RELEASE_RING_2_FIRST_MSDU_INDEX
919 
920 			Consumer: WBM/SW/FW
921 
922 			Producer: SW/TQM/RXDMA/REO/SWITCH
923 
924 
925 
926 			Field only valid for the bm_action release_msdu_list.
927 
928 
929 
930 			The index of the first MSDU in an MSDU link descriptor
931 			all belonging to the same MPDU.
932 
933 
934 
935 			<legal 0-6>
936 */
937 #define WBM_RELEASE_RING_2_FIRST_MSDU_INDEX_OFFSET                   0x00000008
938 #define WBM_RELEASE_RING_2_FIRST_MSDU_INDEX_LSB                      9
939 #define WBM_RELEASE_RING_2_FIRST_MSDU_INDEX_MASK                     0x00001e00
940 
941 /* Description		WBM_RELEASE_RING_2_TQM_RELEASE_REASON
942 
943 			Consumer: WBM/SW/FW
944 
945 			Producer: TQM
946 
947 
948 
949 			Field only valid when Release_source_module is set to
950 			release_source_TQM
951 
952 
953 
954 			(rr = Release Reason)
955 
956 			<enum 0 tqm_rr_frame_acked> frame is removed because an
957 			ACK of BA for it was received
958 
959 			<enum 1 tqm_rr_rem_cmd_rem> frame is removed because a
960 			remove command of type Remove_mpdus initiated by SW
961 
962 			<enum 2 tqm_rr_rem_cmd_tx> frame is removed because a
963 			remove command of type Remove_transmitted_mpdus initiated by
964 			SW
965 
966 			<enum 3 tqm_rr_rem_cmd_notx> frame is removed because a
967 			remove command of type Remove_untransmitted_mpdus initiated
968 			by SW
969 
970 			<enum 4 tqm_rr_rem_cmd_aged> frame is removed because a
971 			remove command of type Remove_aged_mpdus or
972 			Remove_aged_msdus initiated by SW
973 
974 			<enum 5 tqm_fw_reason1> frame is removed because a
975 			remove command where fw indicated that remove reason is
976 			fw_reason1
977 
978 			<enum 6 tqm_fw_reason2> frame is removed because a
979 			remove command where fw indicated that remove reason is
980 			fw_reason1
981 
982 			<enum 7 tqm_fw_reason3> frame is removed because a
983 			remove command where fw indicated that remove reason is
984 			fw_reason1
985 
986 
987 
988 			<legal 0-7>
989 */
990 #define WBM_RELEASE_RING_2_TQM_RELEASE_REASON_OFFSET                 0x00000008
991 #define WBM_RELEASE_RING_2_TQM_RELEASE_REASON_LSB                    13
992 #define WBM_RELEASE_RING_2_TQM_RELEASE_REASON_MASK                   0x0000e000
993 
994 /* Description		WBM_RELEASE_RING_2_RXDMA_PUSH_REASON
995 
996 			Field only valid when Release_source_module is set to
997 			release_source_RXDMA
998 
999 
1000 
1001 			Indicates why rxdma pushed the frame to this ring
1002 
1003 
1004 
1005 			<enum 0 rxdma_error_detected> RXDMA detected an error an
1006 			pushed this frame to this queue
1007 
1008 			<enum 1 rxdma_routing_instruction> RXDMA pushed the
1009 			frame to this queue per received routing instructions. No
1010 			error within RXDMA was detected
1011 
1012 
1013 
1014 			<legal 0 - 1>
1015 */
1016 #define WBM_RELEASE_RING_2_RXDMA_PUSH_REASON_OFFSET                  0x00000008
1017 #define WBM_RELEASE_RING_2_RXDMA_PUSH_REASON_LSB                     16
1018 #define WBM_RELEASE_RING_2_RXDMA_PUSH_REASON_MASK                    0x00030000
1019 
1020 /* Description		WBM_RELEASE_RING_2_RXDMA_ERROR_CODE
1021 
1022 			Field only valid when 'rxdma_push_reason' set to
1023 			'rxdma_error_detected'.
1024 
1025 
1026 
1027 			<enum 0 rxdma_overflow_err>MPDU frame is not complete
1028 			due to a FIFO overflow error in RXPCU.
1029 
1030 			<enum 1 rxdma_mpdu_length_err>MPDU frame is not complete
1031 			due to receiving incomplete MPDU from the PHY
1032 
1033 
1034 			<enum 3 rxdma_decrypt_err>CRYPTO reported a decryption
1035 			error or CRYPTO received an encrypted frame, but did not get
1036 			a valid corresponding key id in the peer entry.
1037 
1038 			<enum 4 rxdma_tkip_mic_err>CRYPTO reported a TKIP MIC
1039 			error
1040 
1041 			<enum 5 rxdma_unecrypted_err>CRYPTO reported an
1042 			unencrypted frame error when encrypted was expected
1043 
1044 			<enum 6 rxdma_msdu_len_err>RX OLE reported an MSDU
1045 			length error
1046 
1047 			<enum 7 rxdma_msdu_limit_err>RX OLE reported that max
1048 			number of MSDUs allowed in an MPDU got exceeded
1049 
1050 			<enum 8 rxdma_wifi_parse_err>RX OLE reported a parsing
1051 			error
1052 
1053 			<enum 9 rxdma_amsdu_parse_err>RX OLE reported an A-MSDU
1054 			parsing error
1055 
1056 			<enum 10 rxdma_sa_timeout_err>RX OLE reported a timeout
1057 			during SA search
1058 
1059 			<enum 11 rxdma_da_timeout_err>RX OLE reported a timeout
1060 			during DA search
1061 
1062 			<enum 12 rxdma_flow_timeout_err>RX OLE reported a
1063 			timeout during flow search
1064 
1065 			<enum 13 Rxdma_flush_request>RXDMA received a flush
1066 			request
1067 */
1068 #define WBM_RELEASE_RING_2_RXDMA_ERROR_CODE_OFFSET                   0x00000008
1069 #define WBM_RELEASE_RING_2_RXDMA_ERROR_CODE_LSB                      18
1070 #define WBM_RELEASE_RING_2_RXDMA_ERROR_CODE_MASK                     0x007c0000
1071 
1072 /* Description		WBM_RELEASE_RING_2_REO_PUSH_REASON
1073 
1074 			Field only valid when Release_source_module is set to
1075 			release_source_REO
1076 
1077 
1078 
1079 			Indicates why REO pushed the frame to this release ring
1080 
1081 
1082 
1083 			<enum 0 reo_error_detected> Reo detected an error an
1084 			pushed this frame to this queue
1085 
1086 			<enum 1 reo_routing_instruction> Reo pushed the frame to
1087 			this queue per received routing instructions. No error
1088 			within REO was detected
1089 
1090 
1091 
1092 			<legal 0 - 1>
1093 */
1094 #define WBM_RELEASE_RING_2_REO_PUSH_REASON_OFFSET                    0x00000008
1095 #define WBM_RELEASE_RING_2_REO_PUSH_REASON_LSB                       23
1096 #define WBM_RELEASE_RING_2_REO_PUSH_REASON_MASK                      0x01800000
1097 
1098 /* Description		WBM_RELEASE_RING_2_REO_ERROR_CODE
1099 
1100 			Field only valid when 'Reo_push_reason' set to
1101 			'reo_error_detected'.
1102 
1103 
1104 
1105 			<enum 0 reo_queue_desc_addr_zero> Reo queue descriptor
1106 			provided in the REO_ENTRANCE ring is set to 0
1107 
1108 			<enum 1 reo_queue_desc_not_valid> Reo queue descriptor
1109 			valid bit is NOT set
1110 
1111 			<enum 2 ampdu_in_non_ba> AMPDU frame received without BA
1112 			session having been setup.
1113 
1114 			<enum 3 non_ba_duplicate> Non-BA session, SN equal to
1115 			SSN, Retry bit set: duplicate frame
1116 
1117 			<enum 4 ba_duplicate> BA session, duplicate frame
1118 
1119 			<enum 5 regular_frame_2k_jump> A normal (management/data
1120 			frame) received with 2K jump in SN
1121 
1122 			<enum 6 bar_frame_2k_jump> A bar received with 2K jump
1123 			in SSN
1124 
1125 			<enum 7 regular_frame_OOR> A normal (management/data
1126 			frame) received with SN falling within the OOR window
1127 
1128 			<enum 8 bar_frame_OOR> A bar received with SSN falling
1129 			within the OOR window
1130 
1131 			<enum 9 bar_frame_no_ba_session> A bar received without
1132 			a BA session
1133 
1134 			<enum 10 bar_frame_sn_equals_ssn> A bar received with
1135 			SSN equal to SN
1136 
1137 			<enum 11 pn_check_failed> PN Check Failed packet.
1138 
1139 			<enum 12 2k_error_handling_flag_set> Frame is forwarded
1140 			as a result of the 'Seq_2k_error_detected_flag' been set in
1141 			the REO Queue descriptor
1142 
1143 			<enum 13 pn_error_handling_flag_set> Frame is forwarded
1144 			as a result of the 'pn_error_detected_flag' been set in the
1145 			REO Queue descriptor
1146 
1147 			<enum 14 queue_descriptor_blocked_set> Frame is
1148 			forwarded as a result of the queue descriptor(address) being
1149 			blocked as SW/FW seems to be currently in the process of
1150 			making updates to this descriptor...
1151 
1152 
1153 
1154 			<legal 0-14>
1155 */
1156 #define WBM_RELEASE_RING_2_REO_ERROR_CODE_OFFSET                     0x00000008
1157 #define WBM_RELEASE_RING_2_REO_ERROR_CODE_LSB                        25
1158 #define WBM_RELEASE_RING_2_REO_ERROR_CODE_MASK                       0x3e000000
1159 
1160 /* Description		WBM_RELEASE_RING_2_WBM_INTERNAL_ERROR
1161 
1162 			Can only be set by WBM.
1163 
1164 
1165 
1166 			Is set when WBM got a buffer pointer but the action was
1167 			to push it to the idle link descriptor ring or do link
1168 			related activity
1169 
1170 			OR
1171 
1172 			Is set when WBM got a link buffer pointer but the action
1173 			was to push it to the buffer  descriptor ring
1174 
1175 
1176 
1177 			<legal all>
1178 */
1179 #define WBM_RELEASE_RING_2_WBM_INTERNAL_ERROR_OFFSET                 0x00000008
1180 #define WBM_RELEASE_RING_2_WBM_INTERNAL_ERROR_LSB                    30
1181 #define WBM_RELEASE_RING_2_WBM_INTERNAL_ERROR_MASK                   0x40000000
1182 
1183 /* Description		WBM_RELEASE_RING_2_RESERVED_2
1184 
1185 			<legal 0>
1186 */
1187 #define WBM_RELEASE_RING_2_RESERVED_2_OFFSET                         0x00000008
1188 #define WBM_RELEASE_RING_2_RESERVED_2_LSB                            31
1189 #define WBM_RELEASE_RING_2_RESERVED_2_MASK                           0x80000000
1190 
1191 /* Description		WBM_RELEASE_RING_3_TQM_STATUS_NUMBER
1192 
1193 			Field only valid when Release_source_module is set to
1194 			release_source_TQM
1195 
1196 
1197 
1198 			The value in this field is equal to value of the
1199 			'TQM_CMD_Number' field the TQM command or the
1200 			'TQM_add_cmd_Number' field from the TQM entrance ring
1201 			descriptor
1202 
1203 
1204 
1205 			This field helps to correlate the statuses with the TQM
1206 			commands.
1207 
1208 
1209 
1210 			NOTE that SW could program this number to be equal to
1211 			the PPDU_ID number in case direct correlation with the PPDU
1212 			ID is desired
1213 
1214 
1215 
1216 			<legal all>
1217 */
1218 #define WBM_RELEASE_RING_3_TQM_STATUS_NUMBER_OFFSET                  0x0000000c
1219 #define WBM_RELEASE_RING_3_TQM_STATUS_NUMBER_LSB                     0
1220 #define WBM_RELEASE_RING_3_TQM_STATUS_NUMBER_MASK                    0x00ffffff
1221 
1222 /* Description		WBM_RELEASE_RING_3_TRANSMIT_COUNT
1223 
1224 			Field only valid when Release_source_module is set to
1225 			release_source_TQM
1226 
1227 
1228 
1229 			The number of times this frame has been transmitted
1230 */
1231 #define WBM_RELEASE_RING_3_TRANSMIT_COUNT_OFFSET                     0x0000000c
1232 #define WBM_RELEASE_RING_3_TRANSMIT_COUNT_LSB                        24
1233 #define WBM_RELEASE_RING_3_TRANSMIT_COUNT_MASK                       0x7f000000
1234 
1235 /* Description		WBM_RELEASE_RING_3_RESERVED_3A
1236 
1237 			<legal 0>
1238 */
1239 #define WBM_RELEASE_RING_3_RESERVED_3A_OFFSET                        0x0000000c
1240 #define WBM_RELEASE_RING_3_RESERVED_3A_LSB                           31
1241 #define WBM_RELEASE_RING_3_RESERVED_3A_MASK                          0x80000000
1242 
1243 /* Description		WBM_RELEASE_RING_4_ACK_FRAME_RSSI
1244 
1245 			This field is only valid when the source is TQM.
1246 
1247 
1248 
1249 			If this frame is removed as the result of the reception
1250 			of an ACK or BA, this field indicates the RSSI of the
1251 			received ACK or BA frame.
1252 
1253 
1254 
1255 			When the frame is removed as result of a direct remove
1256 			command from the SW,  this field is set to 0x0 (which is
1257 			never a valid value when real RSSI is available)
1258 
1259 
1260 
1261 			<legal all>
1262 */
1263 #define WBM_RELEASE_RING_4_ACK_FRAME_RSSI_OFFSET                     0x00000010
1264 #define WBM_RELEASE_RING_4_ACK_FRAME_RSSI_LSB                        0
1265 #define WBM_RELEASE_RING_4_ACK_FRAME_RSSI_MASK                       0x000000ff
1266 
1267 /* Description		WBM_RELEASE_RING_4_SW_RELEASE_DETAILS_VALID
1268 
1269 			Consumer: SW
1270 
1271 			Producer: WBM
1272 
1273 
1274 
1275 			When set, some WBM specific release info for SW is
1276 			valid.
1277 
1278 			This is set when WMB got a 'release_msdu_list' command
1279 			from TQM and the return buffer manager is not WMB. WBM will
1280 			then de-aggregate all the MSDUs and pass them one at a time
1281 			on to the 'buffer owner'
1282 
1283 
1284 
1285 			<legal all>
1286 */
1287 #define WBM_RELEASE_RING_4_SW_RELEASE_DETAILS_VALID_OFFSET           0x00000010
1288 #define WBM_RELEASE_RING_4_SW_RELEASE_DETAILS_VALID_LSB              8
1289 #define WBM_RELEASE_RING_4_SW_RELEASE_DETAILS_VALID_MASK             0x00000100
1290 
1291 /* Description		WBM_RELEASE_RING_4_FIRST_MSDU
1292 
1293 			Field only valid when SW_release_details_valid is set.
1294 
1295 
1296 
1297 			Consumer: SW
1298 
1299 			Producer: WBM
1300 
1301 
1302 
1303 			When set, this MSDU is the first MSDU pointed to in the
1304 			'release_msdu_list' command.
1305 
1306 
1307 
1308 			<legal all>
1309 */
1310 #define WBM_RELEASE_RING_4_FIRST_MSDU_OFFSET                         0x00000010
1311 #define WBM_RELEASE_RING_4_FIRST_MSDU_LSB                            9
1312 #define WBM_RELEASE_RING_4_FIRST_MSDU_MASK                           0x00000200
1313 
1314 /* Description		WBM_RELEASE_RING_4_LAST_MSDU
1315 
1316 			Field only valid when SW_release_details_valid is set.
1317 
1318 
1319 
1320 			Consumer: SW
1321 
1322 			Producer: WBM
1323 
1324 
1325 
1326 			When set, this MSDU is the last MSDU pointed to in the
1327 			'release_msdu_list' command.
1328 
1329 
1330 
1331 			<legal all>
1332 */
1333 #define WBM_RELEASE_RING_4_LAST_MSDU_OFFSET                          0x00000010
1334 #define WBM_RELEASE_RING_4_LAST_MSDU_LSB                             10
1335 #define WBM_RELEASE_RING_4_LAST_MSDU_MASK                            0x00000400
1336 
1337 /* Description		WBM_RELEASE_RING_4_MSDU_PART_OF_AMSDU
1338 
1339 			Field only valid when SW_release_details_valid is set.
1340 
1341 
1342 
1343 			Consumer: SW
1344 
1345 			Producer: WBM
1346 
1347 
1348 
1349 			When set, this MSDU was part of an A-MSDU in MPDU
1350 
1351 			<legal all>
1352 */
1353 #define WBM_RELEASE_RING_4_MSDU_PART_OF_AMSDU_OFFSET                 0x00000010
1354 #define WBM_RELEASE_RING_4_MSDU_PART_OF_AMSDU_LSB                    11
1355 #define WBM_RELEASE_RING_4_MSDU_PART_OF_AMSDU_MASK                   0x00000800
1356 
1357 /* Description		WBM_RELEASE_RING_4_FW_TX_NOTIFY_FRAME
1358 
1359 			Field only valid when SW_release_details_valid is set.
1360 
1361 
1362 
1363 			Consumer: SW
1364 
1365 			Producer: WBM
1366 
1367 
1368 
1369 			This is the FW_tx_notify_frame field from the
1370 
1371 			<legal all>
1372 */
1373 #define WBM_RELEASE_RING_4_FW_TX_NOTIFY_FRAME_OFFSET                 0x00000010
1374 #define WBM_RELEASE_RING_4_FW_TX_NOTIFY_FRAME_LSB                    12
1375 #define WBM_RELEASE_RING_4_FW_TX_NOTIFY_FRAME_MASK                   0x00001000
1376 
1377 /* Description		WBM_RELEASE_RING_4_BUFFER_TIMESTAMP
1378 
1379 			Field only valid when SW_release_details_valid is set.
1380 
1381 
1382 
1383 			Consumer: SW
1384 
1385 			Producer: WBM
1386 
1387 
1388 
1389 			This is the Buffer_timestamp field from the
1390 
1391 			<legal all>
1392 */
1393 #define WBM_RELEASE_RING_4_BUFFER_TIMESTAMP_OFFSET                   0x00000010
1394 #define WBM_RELEASE_RING_4_BUFFER_TIMESTAMP_LSB                      13
1395 #define WBM_RELEASE_RING_4_BUFFER_TIMESTAMP_MASK                     0xffffe000
1396 #define WBM_RELEASE_RING_5_TX_RATE_STATS_INFO_TX_RATE_STATS_OFFSET   0x00000014
1397 #define WBM_RELEASE_RING_5_TX_RATE_STATS_INFO_TX_RATE_STATS_LSB      13
1398 #define WBM_RELEASE_RING_5_TX_RATE_STATS_INFO_TX_RATE_STATS_MASK     0xffffffff
1399 #define WBM_RELEASE_RING_6_TX_RATE_STATS_INFO_TX_RATE_STATS_OFFSET   0x00000018
1400 #define WBM_RELEASE_RING_6_TX_RATE_STATS_INFO_TX_RATE_STATS_LSB      13
1401 #define WBM_RELEASE_RING_6_TX_RATE_STATS_INFO_TX_RATE_STATS_MASK     0xffffffff
1402 
1403 /* Description		WBM_RELEASE_RING_7_SW_PEER_ID
1404 
1405 			Field only valid when Release_source_module is set to
1406 			release_source_TQM
1407 
1408 
1409 
1410 			1) Release of msdu buffer due to drop_frame = 1. Flow is
1411 			not fetched and hence sw_peer_id and tid = 0
1412 
1413 			buffer_or_desc_type = e_num 0
1414 			MSDU_rel_buffertqm_release_reason = e_num 1
1415 			tqm_rr_rem_cmd_rem
1416 
1417 
1418 
1419 
1420 
1421 			2) Release of msdu buffer due to Flow is not fetched and
1422 			hence sw_peer_id and tid = 0
1423 
1424 			buffer_or_desc_type = e_num 0
1425 			MSDU_rel_buffertqm_release_reason = e_num 1
1426 			tqm_rr_rem_cmd_rem
1427 
1428 
1429 
1430 
1431 
1432 			3) Release of msdu link due to remove_mpdu or acked_mpdu
1433 			command.
1434 
1435 			buffer_or_desc_type = e_num1
1436 			msdu_link_descriptortqm_release_reason can be:e_num 1
1437 			tqm_rr_rem_cmd_reme_num 2 tqm_rr_rem_cmd_tx
1438 
1439 			e_num 3 tqm_rr_rem_cmd_notxe_num 4 tqm_rr_rem_cmd_aged
1440 
1441 
1442 
1443 			Sw_peer_id from the TX_MSDU_FLOW descriptor or
1444 			TX_MPDU_QUEUE descriptor
1445 
1446 			<legal all>
1447 */
1448 #define WBM_RELEASE_RING_7_SW_PEER_ID_OFFSET                         0x0000001c
1449 #define WBM_RELEASE_RING_7_SW_PEER_ID_LSB                            0
1450 #define WBM_RELEASE_RING_7_SW_PEER_ID_MASK                           0x0000ffff
1451 
1452 /* Description		WBM_RELEASE_RING_7_TID
1453 
1454 			Field only valid when Release_source_module is set to
1455 			release_source_TQM
1456 
1457 
1458 
1459 			1) Release of msdu buffer due to drop_frame = 1. Flow is
1460 			not fetched and hence sw_peer_id and tid = 0
1461 
1462 			buffer_or_desc_type = e_num 0
1463 			MSDU_rel_buffertqm_release_reason = e_num 1
1464 			tqm_rr_rem_cmd_rem
1465 
1466 
1467 
1468 
1469 
1470 			2) Release of msdu buffer due to Flow is not fetched and
1471 			hence sw_peer_id and tid = 0
1472 
1473 			buffer_or_desc_type = e_num 0
1474 			MSDU_rel_buffertqm_release_reason = e_num 1
1475 			tqm_rr_rem_cmd_rem
1476 
1477 
1478 
1479 
1480 
1481 			3) Release of msdu link due to remove_mpdu or acked_mpdu
1482 			command.
1483 
1484 			buffer_or_desc_type = e_num1
1485 			msdu_link_descriptortqm_release_reason can be:e_num 1
1486 			tqm_rr_rem_cmd_reme_num 2 tqm_rr_rem_cmd_tx
1487 
1488 			e_num 3 tqm_rr_rem_cmd_notxe_num 4 tqm_rr_rem_cmd_aged
1489 
1490 
1491 
1492 
1493 
1494 			This field represents the TID from the TX_MSDU_FLOW
1495 			descriptor or TX_MPDU_QUEUE descriptor
1496 
1497 
1498 
1499 			 <legal all>
1500 */
1501 #define WBM_RELEASE_RING_7_TID_OFFSET                                0x0000001c
1502 #define WBM_RELEASE_RING_7_TID_LSB                                   16
1503 #define WBM_RELEASE_RING_7_TID_MASK                                  0x000f0000
1504 
1505 /* Description		WBM_RELEASE_RING_7_RING_ID
1506 
1507 			Consumer: TQM/REO/RXDMA/SW
1508 
1509 			Producer: SRNG (of RXDMA)
1510 
1511 
1512 
1513 			For debugging.
1514 
1515 			This field is filled in by the SRNG module.
1516 
1517 			It help to identify the ring that is being looked <legal
1518 			all>
1519 */
1520 #define WBM_RELEASE_RING_7_RING_ID_OFFSET                            0x0000001c
1521 #define WBM_RELEASE_RING_7_RING_ID_LSB                               20
1522 #define WBM_RELEASE_RING_7_RING_ID_MASK                              0x0ff00000
1523 
1524 /* Description		WBM_RELEASE_RING_7_LOOPING_COUNT
1525 
1526 			Consumer: WBM/SW/FW
1527 
1528 			Producer: SW/TQM/RXDMA/REO/SWITCH
1529 
1530 
1531 
1532 			A count value that indicates the number of times the
1533 			producer of entries into the Buffer Manager Ring has looped
1534 			around the ring.
1535 
1536 			At initialization time, this value is set to 0. On the
1537 			first loop, this value is set to 1. After the max value is
1538 			reached allowed by the number of bits for this field, the
1539 			count value continues with 0 again.
1540 
1541 
1542 
1543 			In case SW is the consumer of the ring entries, it can
1544 			use this field to figure out up to where the producer of
1545 			entries has created new entries. This eliminates the need to
1546 			check where the head pointer' of the ring is located once
1547 			the SW starts processing an interrupt indicating that new
1548 			entries have been put into this ring...
1549 
1550 
1551 
1552 			Also note that SW if it wants only needs to look at the
1553 			LSB bit of this count value.
1554 
1555 			<legal all>
1556 */
1557 #define WBM_RELEASE_RING_7_LOOPING_COUNT_OFFSET                      0x0000001c
1558 #define WBM_RELEASE_RING_7_LOOPING_COUNT_LSB                         28
1559 #define WBM_RELEASE_RING_7_LOOPING_COUNT_MASK                        0xf0000000
1560 
1561 
1562 #endif // _WBM_RELEASE_RING_H_
1563