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