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