xref: /wlan-driver/fw-api/hw/qca5332/tx_flush_req.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1*5113495bSYour Name 
2*5113495bSYour Name /* Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved.
3*5113495bSYour Name  *
4*5113495bSYour Name  * Permission to use, copy, modify, and/or distribute this software for any
5*5113495bSYour Name  * purpose with or without fee is hereby granted, provided that the above
6*5113495bSYour Name  * copyright notice and this permission notice appear in all copies.
7*5113495bSYour Name  *
8*5113495bSYour Name  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9*5113495bSYour Name  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10*5113495bSYour Name  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11*5113495bSYour Name  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12*5113495bSYour Name  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13*5113495bSYour Name  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14*5113495bSYour Name  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15*5113495bSYour Name  */
16*5113495bSYour Name 
17*5113495bSYour Name 
18*5113495bSYour Name 
19*5113495bSYour Name 
20*5113495bSYour Name 
21*5113495bSYour Name 
22*5113495bSYour Name 
23*5113495bSYour Name 
24*5113495bSYour Name 
25*5113495bSYour Name 
26*5113495bSYour Name #ifndef _TX_FLUSH_REQ_H_
27*5113495bSYour Name #define _TX_FLUSH_REQ_H_
28*5113495bSYour Name #if !defined(__ASSEMBLER__)
29*5113495bSYour Name #endif
30*5113495bSYour Name 
31*5113495bSYour Name #define NUM_OF_DWORDS_TX_FLUSH_REQ 2
32*5113495bSYour Name 
33*5113495bSYour Name #define NUM_OF_QWORDS_TX_FLUSH_REQ 1
34*5113495bSYour Name 
35*5113495bSYour Name 
36*5113495bSYour Name struct tx_flush_req {
37*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN
38*5113495bSYour Name              uint32_t flush_req_reason                                        :  8, // [7:0]
39*5113495bSYour Name                       phytx_abort_reason                                      :  8, // [15:8]
40*5113495bSYour Name                       flush_req_user_number_or_link_id                        :  6, // [21:16]
41*5113495bSYour Name                       mlo_abort_reason                                        :  5, // [26:22]
42*5113495bSYour Name                       reserved_0a                                             :  5; // [31:27]
43*5113495bSYour Name              uint32_t tlv64_padding                                           : 32; // [31:0]
44*5113495bSYour Name #else
45*5113495bSYour Name              uint32_t reserved_0a                                             :  5, // [31:27]
46*5113495bSYour Name                       mlo_abort_reason                                        :  5, // [26:22]
47*5113495bSYour Name                       flush_req_user_number_or_link_id                        :  6, // [21:16]
48*5113495bSYour Name                       phytx_abort_reason                                      :  8, // [15:8]
49*5113495bSYour Name                       flush_req_reason                                        :  8; // [7:0]
50*5113495bSYour Name              uint32_t tlv64_padding                                           : 32; // [31:0]
51*5113495bSYour Name #endif
52*5113495bSYour Name };
53*5113495bSYour Name 
54*5113495bSYour Name 
55*5113495bSYour Name /* Description		FLUSH_REQ_REASON
56*5113495bSYour Name 
57*5113495bSYour Name 			The reason why the flush request was generated.
58*5113495bSYour Name 
59*5113495bSYour Name 			<enum 0 reserved_code>This is included for clean implementation
60*5113495bSYour Name 			 and verification. This code should NOT be used during a
61*5113495bSYour Name 			 valid FLUSH. It is used as a keeper value when flush logic
62*5113495bSYour Name 			 is idle
63*5113495bSYour Name 			<enum 1 txpcu_flreq_code_txop_exceeded>Flush request issued
64*5113495bSYour Name 			 by TXPCU in case of a WCOEX abort.
65*5113495bSYour Name 			<enum 2 crypt_flreq_rx_int_tx>This is a corner case scenario.
66*5113495bSYour Name 			A situation where:
67*5113495bSYour Name 			a.A RX is just over and CCA indication is IDLE
68*5113495bSYour Name 			b.Crypt is still busy decrypting
69*5113495bSYour Name 			c.A TX just starts.
70*5113495bSYour Name 			The TX should be tried later. This situation may be rare.
71*5113495bSYour Name 			Just taking an extra precaution.
72*5113495bSYour Name 			<enum 3 txpcu_flreq_code_rts_pkt_cca_abort>This is the static
73*5113495bSYour Name 			 BW failure happening right after start_tx for either RTS
74*5113495bSYour Name 			 frame or data packet
75*5113495bSYour Name 			<enum 4 txpcu_flreq_code_cts_cca_abort>This is the static
76*5113495bSYour Name 			 BW failure in the protection sequence (CTS).
77*5113495bSYour Name 			<enum 5 pdg_flreq_code_txop_abort>This is PDG signaling
78*5113495bSYour Name 			not enough TXOP for transmission
79*5113495bSYour Name 			<enum 6 sw_explicit_flush_termination>When SW issues a flush
80*5113495bSYour Name 			 WHICH CAUSES AN ONGOING FES to terminate
81*5113495bSYour Name 			<enum 7 fes_stp_not_enough_txop_rem>Not enough TXOP remaining
82*5113495bSYour Name 			 in either SW or HW mode. This checks if the remaining TXOP
83*5113495bSYour Name 			 < a parameterized minimum time. Currently half SIFS duration
84*5113495bSYour Name 			 (5 us).
85*5113495bSYour Name 			<enum 8 hwsch_sch_tlv_zero_hdr_err>HWSCH flush when Parser
86*5113495bSYour Name 			 engine encounters a header with all zeros in the DWORD
87*5113495bSYour Name 			<enum 9 fes_stp_tlv_time_exceeded_bkof_exp>Issued in case
88*5113495bSYour Name 			 TLV transmission exceeds start_tx time
89*5113495bSYour Name 			<enum 10 fes_stp_sw_fes_time_gt_hw>SW mode abort. When HWSCH
90*5113495bSYour Name 			 determines that none of the SW programmed (upto 3) BW times
91*5113495bSYour Name 			 can fit into the current TXOP remaining
92*5113495bSYour Name 			<enum 11 txpcu_flreq_ppdu_allow_bw_fields_not_set>Flush
93*5113495bSYour Name 			request issued by TXPCU in case none of the PPDU_ALLOW_BW_*
94*5113495bSYour Name 			fields are set in PCU_PPDU_SETUP TLV
95*5113495bSYour Name 			<enum 12 txpcu_false_mu_reception>Flush request issued by
96*5113495bSYour Name 			 TXPCU if RXPCU initiates a response generation for a MU
97*5113495bSYour Name 			 reception even though MU reception was not expected
98*5113495bSYour Name 			<enum 13 hwsch_coex_abort>Flush request issued by HWSCH
99*5113495bSYour Name 			when a coex event caused this transmit to be aborted
100*5113495bSYour Name 			<enum 14 hwsch_svd_rdy_timeout>Flush request issued by HWSCH
101*5113495bSYour Name 			 when the PHY does not return the SVD_READY before a timeout
102*5113495bSYour Name 			 expires
103*5113495bSYour Name 			<enum 15 num_mpdu_count_zero>Flush request issued by TXPCU
104*5113495bSYour Name 			 when the number of MPDU counter for selected BW is zero
105*5113495bSYour Name 
106*5113495bSYour Name 			<enum 16 unsupported_cbf>Flush request issued by TXPCU if
107*5113495bSYour Name 			 TXPCU receives TX_PKT_END with error_unsupported_cbf during
108*5113495bSYour Name 			 CV transfer.
109*5113495bSYour Name 			<enum 17 txpcu_flreq_pcu_ppdu_setup_init_not_valid>Indicates
110*5113495bSYour Name 			 TXPCU has not received PCU_PPDU_SETUP_INIT from PDG, by
111*5113495bSYour Name 			 the time it received PRE_START_TX from HWSCH.
112*5113495bSYour Name 			<enum 18 txpcu_flreq_pcu_ppdu_setup_start_not_valid>Indicates
113*5113495bSYour Name 			 TXPCU has not received PCU_PPDU_SETUP_START from PDG, by
114*5113495bSYour Name 			 the time it received START_TX from HWSCH.
115*5113495bSYour Name 			<enum 19 txpcu_flreq_tx_phy_descriptor_not_valid>Indicates
116*5113495bSYour Name 			 TXPCU has not received TX_PHY_DESCRIPTOR within REQD_TLVS_WAIT_TIME
117*5113495bSYour Name 			 after receiving START_TX from HWSCH.
118*5113495bSYour Name 			<enum 20 txpcu_req_tlvs_timeout_for_cbf>TXPCU did nor receive
119*5113495bSYour Name 			 the CBF info TLVs from the PHY fast enough which resulted
120*5113495bSYour Name 			 in a timeout.
121*5113495bSYour Name 			<enum 21 txdma_flreq_no_of_mpdu_less_than_limit_status>Indicates
122*5113495bSYour Name 			 the total number of MPDUs that needs to be send out by
123*5113495bSYour Name 			TXDMA is less than the number indicated by PDG/TXPCU in
124*5113495bSYour Name 			the MPDU_LIMIT_STATUS
125*5113495bSYour Name 			<enum 22 txole_flreq_frag_en_amsdu_ampdu>Fragmentation is
126*5113495bSYour Name 			 enabled in TX_FES_SETUP for an AMSDU or AMPDU
127*5113495bSYour Name 			<enum 23 txole_flreq_more_frag_set_for_last_seg>more_frag
128*5113495bSYour Name 			 bit in TX_FES_SETUP TLV is set for the last MPDU fragment
129*5113495bSYour Name 
130*5113495bSYour Name 			<enum 24 txpcu_flreq_start_tx_bw_mismatch>Indicates TXPCU
131*5113495bSYour Name 			 has detected a mismatch between BWs detected at PRE_START_TX
132*5113495bSYour Name 			 and START_TX
133*5113495bSYour Name 			<enum 25 txpcu_flreq_coex_bw_not_allowed>flush request and
134*5113495bSYour Name 			 is asserted by TXPCU when the final negotiated BW from
135*5113495bSYour Name 			COEX is not allowed by SW
136*5113495bSYour Name 			<enum 26 txole_flreq_frag_en_sw_encrypted>flush request
137*5113495bSYour Name 			and is asserted by TXPCU when the final negotiated BW from
138*5113495bSYour Name 			 COEX is not allowed by SW
139*5113495bSYour Name 			<enum 27 txole_flreq_frag_en_buffer_chaining>Fragmentation
140*5113495bSYour Name 			 is enabled in raw mode buffer chaining mode.
141*5113495bSYour Name 			<enum 28 txole_flreq_pv1_type3_amsdu_error>A1 and A2 set
142*5113495bSYour Name 			 to MAC addresses for 11ah PV1 short frame which is an AMSDU
143*5113495bSYour Name 
144*5113495bSYour Name 			<enum 29 txole_flreq_pv1_wrong_key_type>An unsupported key_type
145*5113495bSYour Name 			 is set for a PV1 frames. WEP, TKIP and WAPI are not supported
146*5113495bSYour Name 			 for PV1 frames
147*5113495bSYour Name 			<enum 30 txole_flreq_illegal_frame>Unexpected Tx Mpdu length.
148*5113495bSYour Name 			Asserted if the MSDU PACKET TLV length is less than the
149*5113495bSYour Name 			expected WMAC header
150*5113495bSYour Name 			<enum 31 pdg_flreq_coex_reasons>Asserted by PDG when COEX
151*5113495bSYour Name 			 related logic in PDG requires a flush request.
152*5113495bSYour Name 			<enum 32 wifi_txole_no_full_msdu_for_checksum_en>Full MSDU
153*5113495bSYour Name 			 packet was not provided by TXDMA when checksum/TSO/fragmentation
154*5113495bSYour Name 			 was enabled
155*5113495bSYour Name 			<enum 33 wifi_txole_length_mismatch_802_3_eth_frame>The
156*5113495bSYour Name 			length field in the incoming 802.3 ethernet frame doesn't
157*5113495bSYour Name 			 match with the actual number of bytes in the data TLV.
158*5113495bSYour Name 			<enum 34 wifi_txole_pv0_amsdu_frame_err>Non-QoS frames are
159*5113495bSYour Name 			 queued as part of AMSDU
160*5113495bSYour Name 			<enum 35 wifi_txole_pv0_wrong_key_type>Key type in peer
161*5113495bSYour Name 			table set to NO_CIPHER for protected frames
162*5113495bSYour Name 			<enum 36 wifi_fes_stp_cca_busy_in_pifs>This flush is initiated
163*5113495bSYour Name 			 by scheduler when (if enabled) CCA goes busy in the middle
164*5113495bSYour Name 			 of a PIFS burst
165*5113495bSYour Name 			<enum 37 prot_frame_data_underrun>This flush is initiated
166*5113495bSYour Name 			 by TXPCU when a protection frame is send, but TXPCU has
167*5113495bSYour Name 			 not received address fields in time.
168*5113495bSYour Name 			<enum 38 pdg_no_length_received>PDG generated this flush
169*5113495bSYour Name 			 request because not one MPDU length info has been received
170*5113495bSYour Name 			 at the required timeout (which is programmable)
171*5113495bSYour Name 			<enum 39 pdg_wrong_preamble_req_order>PDG generated this
172*5113495bSYour Name 			 flush request because PHY issued an unexpected preamble
173*5113495bSYour Name 			 request type
174*5113495bSYour Name 			<enum 40 txpcu_flreq_retry_for_optimal_bw>The most desired
175*5113495bSYour Name 			 BW was not available, and TXPCU would like to try the most
176*5113495bSYour Name 			 optimal transmit BW again after a new BO period.
177*5113495bSYour Name 			<enum 41 wifi_txole_incomplete_llc_frame>LLC received incomplete
178*5113495bSYour Name 			 frame
179*5113495bSYour Name 			<enum 42 pdg_cts_lower_bw_fit_err>PDG received a CTS frame
180*5113495bSYour Name 			 that reduced the BW, As a result the MPDU does not fit
181*5113495bSYour Name 			in the previous reserved time, the thus this transmission
182*5113495bSYour Name 			 is aborted
183*5113495bSYour Name 			<enum 43 pdg_cts_shorter_dur_fit_err>PDG received a CTS
184*5113495bSYour Name 			frame that a reduced duration field. As a result the MPDU
185*5113495bSYour Name 			 does not fit in the previous reserved time, the thus this
186*5113495bSYour Name 			 transmission is aborted
187*5113495bSYour Name 
188*5113495bSYour Name 			Note the duration field in CTS can be reduced as a result
189*5113495bSYour Name 			 of COEX reasons
190*5113495bSYour Name 			<enum 44 hwsch_sch_tlv_len_oor_err>HWSCH flush when Parser
191*5113495bSYour Name 			 engine encounters a header whose length is greater than
192*5113495bSYour Name 			 511 dwords. This excludes DUMMY TLVs.
193*5113495bSYour Name 			<enum 45 hwsch_sch_tlv_taglen_mismatch_err>HWSCH flush when
194*5113495bSYour Name 			 Parser engine encounters a header whose TAG does not match
195*5113495bSYour Name 			 the XML specified length. This check excludes zero length
196*5113495bSYour Name 			 and variable length TLVs
197*5113495bSYour Name 			<enum 46 hwsch_sch_tlv_sfm_tracking_err>HWSCH flush when
198*5113495bSYour Name 			 Parser engine encounters a non contiguous error check code,
199*5113495bSYour Name 			while reading SFM. This check is primarily to catch data
200*5113495bSYour Name 			 write or read issues within the buffering process of scheduler
201*5113495bSYour Name 			 TLV in SFM
202*5113495bSYour Name 			<enum 47 wifitx_flush_rssi_above_obss_nonsrg_thr>When HWSCH
203*5113495bSYour Name 			 attempts to transmit a packet based on OBSS_PD non-SRG
204*5113495bSYour Name 			opportunity, a flush with this code is generated if "ReceivedRssi
205*5113495bSYour Name 			 from RXPCU > Scheduler_cmd.RssiAltNonSrg".
206*5113495bSYour Name 			<enum 48 wifitx_flush_rssi_above_obss_srg_thr>When HWSCH
207*5113495bSYour Name 			 attempts to transmit a packet based on OBSS_PD non-SRG
208*5113495bSYour Name 			opportunity, a flush with this code is generated if "ReceivedRssi
209*5113495bSYour Name 			 from RXPCU > Scheduler_cmd.RssiAltSrg".
210*5113495bSYour Name 			<enum 49 wifitx_flush_rssi_above_srp_pwr_thr>When HWSCH
211*5113495bSYour Name 			attempts to transmit a packet within an SRP opportunity
212*5113495bSYour Name 			window, a flush with this code is generated if "Scheduler_cmd.SrpAltPwr
213*5113495bSYour Name 			 > SRP_less_RSSI".
214*5113495bSYour Name 			<enum 50 hwsch_unexpected_sch_tlv_end_err>parse errors
215*5113495bSYour Name 			<enum 51 hwsch_sch_tlv_tag_oor_err>HWSCH flush when Parser
216*5113495bSYour Name 			 engine encounters a header whose TAG is not listed in the
217*5113495bSYour Name 			 XML TAG table
218*5113495bSYour Name 			<enum 52 txpcu_phytx_abort_err>An abort from PHY TX got
219*5113495bSYour Name 			received
220*5113495bSYour Name 			<enum 53 txpcu_coex_soft_abort_err>A soft from coex got
221*5113495bSYour Name 			received before even a single MPDU got transmitted. Therefor
222*5113495bSYour Name 			 transmission is terminated.
223*5113495bSYour Name 			<enum 54 pdg_min_user_count_missed>PDG was asked to start
224*5113495bSYour Name 			 an MU transmission, but the number of users with actual
225*5113495bSYour Name 			 data was less then the threshold (Min_users_with_data_count)
226*5113495bSYour Name 
227*5113495bSYour Name 			<enum 55 pdg_min_byte_count_missed>PDG was asked to start
228*5113495bSYour Name 			 an SU transmission, but the number of bytes that PDG has
229*5113495bSYour Name 			 been informed about that can be transmitted is less then
230*5113495bSYour Name 			 the required threshold (min_ppdu_bytes)
231*5113495bSYour Name 			<enum 56 pdg_min_mpdu_count_missed>PDG was asked to start
232*5113495bSYour Name 			 an SU transmission, but the number of MPDUs that PDG has
233*5113495bSYour Name 			 been informed about that can be transmitted is less then
234*5113495bSYour Name 			 the required threshold (min_mpdus_in_ppdu)
235*5113495bSYour Name 			<enum 57 pdg_cannot_pad_min_ppdu_time>PDG uses this code
236*5113495bSYour Name 			 when the min PPDU time to pad up to (pad_min_ppdu_time)
237*5113495bSYour Name 			can not be met due to other boundary conditions (e.g. FES
238*5113495bSYour Name 			 time/TXOP time/TBTT)
239*5113495bSYour Name 			<enum 58 ucode_flush_request>Flush request initiated by
240*5113495bSYour Name 			the ucode (M3)
241*5113495bSYour Name 			<enum 59 txpcu_resp_frame_flushed>TXPCU uses this code on
242*5113495bSYour Name 			 encountering an error condition (e.g. late MACTX_PHY_DESC
243*5113495bSYour Name 			 or CV error) while generating a response.
244*5113495bSYour Name 			<enum 60 hwsch_sifs_burst_svd_ready_timeout>This flush code
245*5113495bSYour Name 			 is used by HWSCH to indicate that during SIFS bursting,
246*5113495bSYour Name 			an SVD_READY timeout was detected, which resulted in the
247*5113495bSYour Name 			 SIFS burst to be aborted.
248*5113495bSYour Name 			<enum 61 txpcu_phy_data_request_to_early>TXPCU has not been
249*5113495bSYour Name 			 properly initialized when the first data request from the
250*5113495bSYour Name 			 PHY has been seen.
251*5113495bSYour Name 			<enum 62 txpcu_trigger_response_cs_check_fail>TXPCU found
252*5113495bSYour Name 			 that the medium was not idle for the Carries Sense check
253*5113495bSYour Name 			 that PDG indicated was needed for the triggered response
254*5113495bSYour Name 			 frame.
255*5113495bSYour Name 			<enum 63 pdg_ofdma_max_unused_space_violation>PDG found
256*5113495bSYour Name 			out that when trying to assign the RUs among the available
257*5113495bSYour Name 			 users, the number of unused RUs remained above the allowed
258*5113495bSYour Name 			 threshold
259*5113495bSYour Name 			<enum 64 crypto_tx_user_capacity_exceeded>This happens when
260*5113495bSYour Name 			 Crypto receives TLVs for more TX users than it can support
261*5113495bSYour Name 			 at that point of time
262*5113495bSYour Name 			<enum 65 crypto_tx_non_mu_key_type_rcvd>This happens when
263*5113495bSYour Name 			 Crypto receives unsupported Key types (WEP, TKIP) for MU
264*5113495bSYour Name 
265*5113495bSYour Name 			<enum 66 txpcu_cbf_resp_abort>CBF response generation by
266*5113495bSYour Name 			 TXPCU ran into issues due to info not being available from
267*5113495bSYour Name 			 the PHY
268*5113495bSYour Name 			<enum 67 txpcu_phy_nap_received_during_tx>TXPCU received
269*5113495bSYour Name 			 a PHY NAP TLV from rxpcu while a transmission was ongoing.
270*5113495bSYour Name 			The transmission will be terminated with this abort reason.
271*5113495bSYour Name 
272*5113495bSYour Name 			<enum 68 rxpcu_trigger_with_fcs_error>RXPCU found out that
273*5113495bSYour Name 			 the trigger frame that was received and for which the TX
274*5113495bSYour Name 			 path has been activated to generate a response, had an
275*5113495bSYour Name 			FCS error.
276*5113495bSYour Name 			<enum 69 pdg_flreq_coex_bt_higher_priority>Asserted by PDG
277*5113495bSYour Name 			 when COEX indicated to PDG that the transmit request is
278*5113495bSYour Name 			 NOT granted because a higher priority BT activity is ongoing.
279*5113495bSYour Name 
280*5113495bSYour Name 			<enum 70 txpcu_txrx_conflict_detected>TXPCU detected a conflict
281*5113495bSYour Name 			 between an FES transmission and a self-gen response transmission.
282*5113495bSYour Name 			This is when the PHY + RXPCU delays cause a self-gen to
283*5113495bSYour Name 			overlap with the pre-backoff time from HWSCH for the next
284*5113495bSYour Name 			 FES.
285*5113495bSYour Name 			<enum 71 pdg_mu_cts_ru_allocation_corruption>PDG received
286*5113495bSYour Name 			 a MU-RTS trigger for which the CTS RU response setting
287*5113495bSYour Name 			is not valid
288*5113495bSYour Name 			<enum 72 pdg_trig_for_blocked_ru>PDG received a trigger
289*5113495bSYour Name 			based transmission request for an RU size that is blocked
290*5113495bSYour Name 			 by SW.
291*5113495bSYour Name 			<enum 73 pdg_trig_response_mode_corruption>Asserted when
292*5113495bSYour Name 			 PDG gets a TX_FES_SETUP with field "Fes_in_11ax_Trigger_response_config"
293*5113495bSYour Name 			not being in sync with what it was expecting.
294*5113495bSYour Name 			<enum 74 pdg_invalid_trigger_config_received>PDG received
295*5113495bSYour Name 			 OFDMA_TRIGGER_DETAILS and the configuration in there (which
296*5113495bSYour Name 			 RXPCU gets from the trigger frame has invalid field value
297*5113495bSYour Name 			 combinations
298*5113495bSYour Name 			<enum 75 txole_msdu_too_long>This flush request will be
299*5113495bSYour Name 			asserted if the length of a checksum enabled MSDU is more
300*5113495bSYour Name 			 than 2400 bytes.
301*5113495bSYour Name 			<enum 76 txole_inconsistent_mesh>This flush request will
302*5113495bSYour Name 			 be asserted if mesh_enable is set for an MSDU subframe
303*5113495bSYour Name 			while its not set for another MSDU subframe in the same
304*5113495bSYour Name 			AMSDU
305*5113495bSYour Name 			<enum 77 txole_mesh_enable_for_ethernet>This flush request
306*5113495bSYour Name 			 will be asserted if mesh_enable is set for an ethernet
307*5113495bSYour Name 			frame
308*5113495bSYour Name 			<enum 78 txpcu_trig_response_mode_corruption>Asserted when
309*5113495bSYour Name 			 TXPCU gets a TX_FES_SETUP with field "ofdma_triggered_response"
310*5113495bSYour Name 			not being in sync with what it was expecting.
311*5113495bSYour Name 			<enum 79 pdg_11ax_invalid_rate_setup>PDG received an 11ax
312*5113495bSYour Name 			 transmit set of parameters that is not allowed or not supported
313*5113495bSYour Name 
314*5113495bSYour Name 			<enum 80 txpcu_trig_response_info_too_late>TXPCU generates
315*5113495bSYour Name 			 this flush request because trigger response transmission
316*5113495bSYour Name 			 setup info from the SCH was received too late
317*5113495bSYour Name 			<enum 81 wifitx_flush_obss_pd_disabled_for_tx>When HWSCH
318*5113495bSYour Name 			 attempts to transmit a packet having obss_pd disabled within
319*5113495bSYour Name 			 an obss_pd opportunity window this flush code is generated
320*5113495bSYour Name 
321*5113495bSYour Name 			<enum 82 wifitx_flush_srp_disabled_for_tx>When HWSCH attempts
322*5113495bSYour Name 			 to transmit a packet having SRP disabled within an obss_pd
323*5113495bSYour Name 			 opportunity window this flush code is generated
324*5113495bSYour Name 			<enum 83 pdg_flreq_code_srp_sr_missed>In SRP SR, PDG will
325*5113495bSYour Name 			 generate flush if receiving PDG_TX_REQ in a blocking window
326*5113495bSYour Name 			 around SRP SR limit
327*5113495bSYour Name 			<enum 84 pdg_rbo_user_limit_no_data>PDG generates when no
328*5113495bSYour Name 			 data can be sent for the users specified by TX_FES_SETUP
329*5113495bSYour Name 			 field "RBO_must_have_data_user_limit."
330*5113495bSYour Name 			<enum 85 pdg_no_cbf_response_received>Used by PDG for an
331*5113495bSYour Name 			 MU-MIMO sounding plus steering burst when it did not receive
332*5113495bSYour Name 			 CBF from any recipient STA
333*5113495bSYour Name 			<enum 86 pdg_flreq_unexpected_notify_frame>PDG generates
334*5113495bSYour Name 			 when encountering a 'HARD_NOTIFY' or a 'SEMI_HARD_NOTIFY'
335*5113495bSYour Name 			frame unless ignore_tx_notify_setting is set in 'PDG_FES_SETUP'
336*5113495bSYour Name 
337*5113495bSYour Name 			<enum 87 pdg_flush_min_ppdu_time_missed>PDG was asked to
338*5113495bSYour Name 			 start a transmission, but the time required to transmit
339*5113495bSYour Name 			 the PPDU is less than the required threshold (flush_min_ppdu_time)
340*5113495bSYour Name 
341*5113495bSYour Name 			<enum 88 txpcu_flreq_rxpcu_setup_config_error>Used by TXPCU
342*5113495bSYour Name 			 when Tx is complete and it is about to generate 'EXPECTED_RESPONSE'
343*5113495bSYour Name 			but it has not got any 'RXPCU_SETUP_COMPLETE' although 'rxpcu_setup_complete_present'
344*5113495bSYour Name 			was set in 'TX_FES_SETUP'
345*5113495bSYour Name 			<enum 89 txpcu_flreq_late_trig_tlvs>Used by TXPCU when the
346*5113495bSYour Name 			 'RECEIVED_TRIGER_INFO' TLV is sent to SCH after the 'pre_phy_desc'
347*5113495bSYour Name 			timer has expired, if enabled
348*5113495bSYour Name 			<enum 90 pdg_flreq_notify_mpdu_late>Used by PDG when the
349*5113495bSYour Name 			 first 'MPDU_INFO' is not available when sending 'PCU_PPDU_SETUP_START'
350*5113495bSYour Name 			so PDG has assumed a regular MPDU ('FW_tx_notify_frame =
351*5113495bSYour Name 			NO_TX_NOTIFY'), but later the MPDU turned out to be a notify
352*5113495bSYour Name 			 frame, if enabled
353*5113495bSYour Name 			<enum 91 txdma_flreq_sfm_full>TXDMA generates this flush
354*5113495bSYour Name 			 request when it gets 'MPDU_INFO's for a user that it is
355*5113495bSYour Name 			 unable to write into SFM since its SFM allocation is full.
356*5113495bSYour Name 
357*5113495bSYour Name 			<enum 92 txpcu_flreq_pre_phy_desc_late>Used in TXPCU for
358*5113495bSYour Name 			 generating a flush request when 'PRE_PHY_DESC' is received
359*5113495bSYour Name 			 late (determined by a timer)
360*5113495bSYour Name 			<enum 93 pdg_flreq_cannot_fit_trig_response>This flush request
361*5113495bSYour Name 			 code is used by PDG if the trigger response MPDUs cannot
362*5113495bSYour Name 			 be fit to avoid sending only null delimiters for e.g. unassociated
363*5113495bSYour Name 			 UORA and colliding with another STA with valid data.
364*5113495bSYour Name 			<enum 94 pdg_flreq_unexpected_fes_setup>Flush request used
365*5113495bSYour Name 			 by PDG in case of unexpected 'TX_FES_SETUP'
366*5113495bSYour Name 			<enum 95 pdg_flreq_code_mlo_abort>Flush request used by
367*5113495bSYour Name 			PDG in case of MLO constraints forcing an abort
368*5113495bSYour Name 			<enum 96 hwsch_bkoff_trunc_seq_abort>Flush request used
369*5113495bSYour Name 			by HWSCH if an MLO backoff truncation request resulted in
370*5113495bSYour Name 			 a forced abort to avoid windows too close to transmissions
371*5113495bSYour Name 
372*5113495bSYour Name 			<enum 97 txole_flreq_illegal_frag_settings>Flush request
373*5113495bSYour Name 			 used by TXOLE if fragmentation is requested but the settings
374*5113495bSYour Name 			 are illegal
375*5113495bSYour Name 			<enum 98 txpcu_flreq_mac_flex_overwrite_err>Flush request
376*5113495bSYour Name 			 used by TXPCU when required overwrite TLVs are not received
377*5113495bSYour Name 			 from microcode, or when overwrite TLVs are dropped in MAC
378*5113495bSYour Name 			 due to SFM full condition
379*5113495bSYour Name 			<enum 99 txpcu_lmr_req_timeout>Flush request by TXPCU if
380*5113495bSYour Name 			 PHY does not respond to 'MACRX_LMR_READ_REQUEST' or 'MACRX_LMR_DATA_REQUEST'
381*5113495bSYour Name 			on time
382*5113495bSYour Name 			<enum 100 txpcu_lmr_phyrx_err_abort>Flush request by TXPCU
383*5113495bSYour Name 			 if PHY sent 'PHYRX_LMR_TRANSFER_ABORT' or 'PHYRX_LMR_READ_REQUEST_ACK'
384*5113495bSYour Name 			with status anything other than OK
385*5113495bSYour Name 			<enum 101 txpcu_rx_bitmap_ack_mismatch>Flush request by
386*5113495bSYour Name 			TXPCU on getting a mismatched TLV from RXPCU for 'RX_FRAME_*BITMAP_ACK' (1Kbit
387*5113495bSYour Name 			 instead of 256-bit or vice versa)
388*5113495bSYour Name 			<enum 102 txpcu_rx_incorrect_ba_cnt_for_ampdu>Flush request
389*5113495bSYour Name 			 by TXPCU on getting an 'RX_RESPONSE_REQUIRED_INFO' with
390*5113495bSYour Name 			 A-MPDU set, VHT Ack clear and 'response_ba*_cnt' zero,
391*5113495bSYour Name 			to avoid a system hang
392*5113495bSYour Name 			<enum 103 txpcu_flreq_cbf_done_delayed>Flush request by
393*5113495bSYour Name 			TXPCU on not getting a 'MACTX_CBF_DONE' from RXPCU after
394*5113495bSYour Name 			 sending 'RESPONSE_END_STATUS' TLV
395*5113495bSYour Name 			<enum 104 txpcu_flreq_sfm_full>Flush request by TXPCU if
396*5113495bSYour Name 			 SFM indicates 'user_fifo_full'
397*5113495bSYour Name 			<enum 105 pdg_flreq_calc_psdu_length_too_low>PDG was asked
398*5113495bSYour Name 			 to start an MU transmission, but one of the users' RU is
399*5113495bSYour Name 			 such that within the PPDU time the PSDU length that can
400*5113495bSYour Name 			 be fit is too low (based on a threshold in a PDG register)
401*5113495bSYour Name 
402*5113495bSYour Name 			<enum 106 pdg_flush_min_ppdu_time_obss_sr_missed>PDG was
403*5113495bSYour Name 			 asked to start an OBSS PD SR transmission, but the time
404*5113495bSYour Name 			 required to transmit the PPDU is less than the required
405*5113495bSYour Name 			 threshold (flush_min_ppdu_time_obss_pd_sr)
406*5113495bSYour Name 			<enum 107 pdg_flreq_code_txop_abort_obss_sr>PDG was asked
407*5113495bSYour Name 			 to start an OBSS PD SR transmission, but the time required
408*5113495bSYour Name 			 for the FES is more than the OBSS PPDU duration (max_fes_time_obss_pd_sr)
409*5113495bSYour Name 
410*5113495bSYour Name 			<enum 108 pdg_flreq_cv_corr_tlv_timeout>PDG timed out waiting
411*5113495bSYour Name 			 for CV correlation TLVs from microcode
412*5113495bSYour Name 			<enum 109 pdg_flreq_pri_user_cbf_fail>Flush request from
413*5113495bSYour Name 			 PDG if CV correlation is enabled and the 'PHYTX_CV_CORR_STATUS'
414*5113495bSYour Name 			from microcode indicates that the primary user's CBF has
415*5113495bSYour Name 			 failed
416*5113495bSYour Name 			<enum 110 hwsch_sfm_availability_check_fail>HWSCH-issued
417*5113495bSYour Name 			 flush when the SFM availability check fails during a SIFS
418*5113495bSYour Name 			 burst or when fetching part 2 TLVs
419*5113495bSYour Name 			<enum 111 pdg_cannot_pad_response_time>PDG uses this code
420*5113495bSYour Name 			 when the response time to pad up to (required_response_time)
421*5113495bSYour Name 			cannot be met due to the frame length in 'PDG_RESPONSE'
422*5113495bSYour Name 			exceeding the calculated padded length
423*5113495bSYour Name 			<enum 112 ul_mu_rx_early_abort>Flush request to terminate
424*5113495bSYour Name 			 an FES when RXPCU aborted an UL MU reception early because
425*5113495bSYour Name 			 at the end of the "early_termination_window," the required
426*5113495bSYour Name 			 number of users with at least one valid MPDU delimiter
427*5113495bSYour Name 			was not reached.
428*5113495bSYour Name 
429*5113495bSYour Name 			This is unsupported in Beryllium.
430*5113495bSYour Name 			<enum 113 reserved_flush_code_25>Placeholder for future
431*5113495bSYour Name 			needs
432*5113495bSYour Name 			<enum 114 reserved_flush_code_26>TXPCU uses this code when
433*5113495bSYour Name 			 more than the configured maximum CTS2SELF are being sent.
434*5113495bSYour Name 
435*5113495bSYour Name 			<enum 115 reserved_flush_code_27>TXPCU uses this code when
436*5113495bSYour Name 			 at the time of the main PPDU transmission, fewer than the
437*5113495bSYour Name 			 configured minimum CTS2SELF were sent.
438*5113495bSYour Name 			<enum 116 reserved_flush_code_28>Placeholder for future
439*5113495bSYour Name 			needs
440*5113495bSYour Name 			<enum 117 reserved_flush_code_29>Placeholder for future
441*5113495bSYour Name 			needs
442*5113495bSYour Name 			<enum 118 reserved_flush_code_30>Placeholder for future
443*5113495bSYour Name 			needs
444*5113495bSYour Name 			<enum 119 reserved_flush_code_31>Placeholder for future
445*5113495bSYour Name 			needs
446*5113495bSYour Name 			<enum 120 reserved_flush_code_32>Placeholder for future
447*5113495bSYour Name 			needs
448*5113495bSYour Name 			<enum 121 reserved_flush_code_33>Placeholder for future
449*5113495bSYour Name 			needs
450*5113495bSYour Name 			<enum 122 reserved_flush_code_34>Placeholder for future
451*5113495bSYour Name 			needs
452*5113495bSYour Name 			<enum 123 reserved_flush_code_35>Placeholder for future
453*5113495bSYour Name 			needs
454*5113495bSYour Name 			<enum 124 reserved_flush_code_36>Placeholder for future
455*5113495bSYour Name 			needs
456*5113495bSYour Name 			<enum 125 reserved_flush_code_37>Placeholder for future
457*5113495bSYour Name 			needs
458*5113495bSYour Name 			<enum 126 reserved_flush_code_38>Placeholder for future
459*5113495bSYour Name 			needs
460*5113495bSYour Name 			<enum 127 unknown_flush_request_code>Used by SCH when it
461*5113495bSYour Name 			 receives an undefined flush request reason code
462*5113495bSYour Name */
463*5113495bSYour Name 
464*5113495bSYour Name #define TX_FLUSH_REQ_FLUSH_REQ_REASON_OFFSET                                        0x0000000000000000
465*5113495bSYour Name #define TX_FLUSH_REQ_FLUSH_REQ_REASON_LSB                                           0
466*5113495bSYour Name #define TX_FLUSH_REQ_FLUSH_REQ_REASON_MSB                                           7
467*5113495bSYour Name #define TX_FLUSH_REQ_FLUSH_REQ_REASON_MASK                                          0x00000000000000ff
468*5113495bSYour Name 
469*5113495bSYour Name 
470*5113495bSYour Name /* Description		PHYTX_ABORT_REASON
471*5113495bSYour Name 
472*5113495bSYour Name 			Field only valid when Flush_req_reason == TXPCU_PHYTX_ABORT_ERR
473*5113495bSYour Name 
474*5113495bSYour Name 
475*5113495bSYour Name 			<enum 0 no_phytx_error_reported>This value is the default
476*5113495bSYour Name 			 value the MAC will fill in the status TLV (when not PHY
477*5113495bSYour Name 			 abort was received).
478*5113495bSYour Name 
479*5113495bSYour Name 			Note that when PHY generates the PHYTX_ABORT_REQUEST, this
480*5113495bSYour Name 			 value shall never be used.
481*5113495bSYour Name 			<enum 1 error_txtd_ifft_underrun>PHY ran out of transmit
482*5113495bSYour Name 			 data due to transmit underrun - this field is user-specific
483*5113495bSYour Name 			 (see user_number field)
484*5113495bSYour Name 			<enum 2 error_tx_invalid_tlv>
485*5113495bSYour Name 			<enum 3 error_tx_unexpected_tlv>
486*5113495bSYour Name 			<enum 4 error_tx_pkt_end_error>
487*5113495bSYour Name 			<enum 5 error_tx_bw_is_gt_dyn_bw>
488*5113495bSYour Name 			<enum 6 error_txtd_pkt_start_error>
489*5113495bSYour Name 			<enum 7 error_txfd_pre_phy_tlv_ooo>
490*5113495bSYour Name 			<enum 8 error_txtd_mu_data_underrun>
491*5113495bSYour Name 			<enum 9 error_tx_legacy_rate_illegal>
492*5113495bSYour Name 			<enum 10 error_tx_fifo_error>
493*5113495bSYour Name 			<enum 11 error_tx_ack_wd_error>
494*5113495bSYour Name 			<enum 12 error_tx_tpc_miss>
495*5113495bSYour Name 			<enum 13 error_mac_tx_abort>
496*5113495bSYour Name 			<enum 14 error_tx_pcss_phy_desc_wdg_timeout>
497*5113495bSYour Name 			<enum 15 error_unsupported_cbf>
498*5113495bSYour Name 			<enum 16 error_cv_static_bandwidth_mismatch>
499*5113495bSYour Name 			<enum 17 error_cv_dynamic_bandwidth_mismatch>
500*5113495bSYour Name 			<enum 18 error_cv_unsupported_nss_total>
501*5113495bSYour Name 			<enum 19 error_nss_bf_params_mismatch>
502*5113495bSYour Name 			<enum 20 error_txbf_fail>
503*5113495bSYour Name 			<enum 21 error_txbf_snd_fail>This used to be called 'error_illegal_nss.'
504*5113495bSYour Name 
505*5113495bSYour Name 			<enum 22 error_otp_txbf>
506*5113495bSYour Name 			<enum 23 error_tx_inv_chainmask>
507*5113495bSYour Name 			<enum 24 error_cv_index_assign_overload>This error indicates
508*5113495bSYour Name 			 that CV prefetch command indicated a CV index that is not
509*5113495bSYour Name 			 available.
510*5113495bSYour Name 			<enum 25 error_cv_index_delete>This error indicates that
511*5113495bSYour Name 			 CV delete command indicated a CV index that did not contain
512*5113495bSYour Name 			 any valid info
513*5113495bSYour Name 			<enum 26 error_tx_he_rate_illegal>Error found with the HE
514*5113495bSYour Name 			 transmission parameters
515*5113495bSYour Name 			<enum 27 error_tx_pcss_wdg_timeout>
516*5113495bSYour Name 			<enum 28 error_tx_tlv_tag_mismatch>
517*5113495bSYour Name 			<enum 29 error_tx_cck_fifo_flush>
518*5113495bSYour Name 			<enum 30 error_tx_no_mac_pkt_end>
519*5113495bSYour Name 			<enum 31 error_tx_abort_for_mac_war>
520*5113495bSYour Name 			<enum 32 error_tx_stuck>
521*5113495bSYour Name 			<enum 33 error_tx_invalid_uplink_tlv>
522*5113495bSYour Name 			<enum 34 error_txfd_txcck_illegal_tx_rate_error>
523*5113495bSYour Name 			<enum 35 error_txfd_txcck_underrun_error>
524*5113495bSYour Name 			<enum 36 error_txfd_mpi_req_grant_error>
525*5113495bSYour Name 			<enum 37 error_txfd_control_tlv_fifo_ovfl_error>
526*5113495bSYour Name 			<enum 38 error_txfd_tlv_fifo_overflow_error>
527*5113495bSYour Name 			<enum 39 error_txfd_data_fifo_underflow_error>
528*5113495bSYour Name 			<enum 40 error_txfd_data_fifo_overflow_error>
529*5113495bSYour Name 			<enum 41 error_txfd_service_fifo_overflow_error>
530*5113495bSYour Name 			<enum 42 error_txfd_he_sigb_fifo_overflow_error>
531*5113495bSYour Name 			<enum 43 error_txfd_spurious_data_fifo_error>
532*5113495bSYour Name 			<enum 44 error_txfd_he_siga_fifo_ovfl_error>
533*5113495bSYour Name 			<enum 45 error_txfd_unknown_tlv_error>
534*5113495bSYour Name 			<enum 46 error_txfd_mac_response_ordering_error>
535*5113495bSYour Name 			<enum 47 error_txfd_unexpected_mac_pkt_end_error>
536*5113495bSYour Name 			<enum 48 error_txfd_tlv_fifo_rd_hang_error>All FIFO read
537*5113495bSYour Name 			 hang errors use this value.
538*5113495bSYour Name 			<enum 49 error_txfd_tlv_fifo_no_rd_error>All FIFO no read
539*5113495bSYour Name 			 errors use this value.
540*5113495bSYour Name 			<enum 50 error_txfd_ordering_fifo_no_rd_error>
541*5113495bSYour Name 			<enum 51 error_txfd_illegal_cf_tlv_error>
542*5113495bSYour Name 			<enum 52 error_txfd_user_ru_hang_error>
543*5113495bSYour Name 			<enum 53 error_txfd_stream_ru_hang_error>
544*5113495bSYour Name 			<enum 54 error_txfd_num_pad_bits_error>
545*5113495bSYour Name 			<enum 55 error_txfd_phy_abort_ack_wd_to_error>
546*5113495bSYour Name 			<enum 56 error_txfd_pre_pkt_isr_not_done_before_phy_desc_error>
547*5113495bSYour Name 
548*5113495bSYour Name 			<enum 57 error_txfd_bf_weights_not_ready_error>
549*5113495bSYour Name 			<enum 58 error_txfd_req_timer_breach_error>
550*5113495bSYour Name 			<enum 59 error_txfd_wd_to_error>
551*5113495bSYour Name 			<enum 60 error_txfd_legacy_bf_weights_not_ready_error>
552*5113495bSYour Name 			<enum 61 error_txfd_axi_slave_to_error>
553*5113495bSYour Name 			<enum 62 error_txfd_hw_acc_error>
554*5113495bSYour Name 			<enum 63 error_txfd_txb_req_fifo_underrun_error>
555*5113495bSYour Name 			<enum 64 error_txfd_unknown_ru_alloc_error>
556*5113495bSYour Name 			<enum 65 error_txfd_more_user_desc_per_user_tlvs_error>
557*5113495bSYour Name 			<enum 66 error_txfd_ldpc_param_calc_to_error>
558*5113495bSYour Name 			<enum 69 error_txfd_cbf_start_before_expect_cbf_clear_error>
559*5113495bSYour Name 
560*5113495bSYour Name 			<enum 70 error_txfd_out_of_range_cbf_user_id_error>
561*5113495bSYour Name 			<enum 71 error_txfd_less_cbf_data_error>
562*5113495bSYour Name 			<enum 72 error_txfd_more_cbf_data_error>
563*5113495bSYour Name 			<enum 73 error_txfd_cbf_done_not_received_error>
564*5113495bSYour Name 			<enum 74 error_txfd_mpi_cbf_valid_to_error>
565*5113495bSYour Name 			<enum 75 error_txfd_cbf_start_missing_error>
566*5113495bSYour Name 			<enum 76 error_txfd_mimo_ctrl_error>
567*5113495bSYour Name 			<enum 77 error_txfd_cbf_buffer_ovfl_error>
568*5113495bSYour Name 			<enum 78 error_txfd_dma0_hang_error>
569*5113495bSYour Name 			<enum 79 error_txfd_dma1_hang_error>
570*5113495bSYour Name 			<enum 80 error_txfd_b2b_cbf_start_error>
571*5113495bSYour Name 			<enum 81 error_txfd_b2b_cbf_done_error>
572*5113495bSYour Name 			<enum 82 error_txfd_unsaved_cv_error>
573*5113495bSYour Name 			<enum 83 error_txfd_wt_mem_wr_conflict_error>
574*5113495bSYour Name 			<enum 84 error_txfd_wt_mem_rd_conflict_error>
575*5113495bSYour Name 			<enum 85 error_txfd_qre_intf_to_error>
576*5113495bSYour Name 			<enum 86 error_txfd_qre_txbf_stomp_rx_error>
577*5113495bSYour Name 			<enum 87 error_txfd_qre_rx_stomp_txbf_error>
578*5113495bSYour Name 			<enum 88 error_txfd_precoding_start_before_bf_param_clr_error>
579*5113495bSYour Name 
580*5113495bSYour Name 			<enum 89 error_txfd_tone_map_lut_rd_conflict_error>
581*5113495bSYour Name 			<enum 90 error_txfd_precoding_fifo_ovfl_error>
582*5113495bSYour Name 			<enum 91 error_txfd_precoding_fifo_udfl_error>
583*5113495bSYour Name 			<enum 92 error_txfd_txbf_axi_slave_to_error>
584*5113495bSYour Name 			<enum 93 error_txfd_less_prefetch_tlvs_error>
585*5113495bSYour Name 			<enum 94 error_txfd_more_prefetch_tlvs_error>
586*5113495bSYour Name 			<enum 95 error_txfd_prefetch_fifo_ovfl_error>
587*5113495bSYour Name 			<enum 96 error_txfd_prefetch_fifo_udfl_error>
588*5113495bSYour Name 			<enum 97 error_txfd_precoding_error>
589*5113495bSYour Name 			<enum 98 error_txfd_cv_ctrl_state_to_error>
590*5113495bSYour Name 			<enum 99 error_txfd_txbfp_qre_tone_udfl_error>
591*5113495bSYour Name 			<enum 100 error_txfd_less_bf_param_per_user_tlvs_error>
592*5113495bSYour Name 			<enum 101 error_txfd_more_bf_param_per_user_tlvs_error>
593*5113495bSYour Name 			<enum 102 error_txfd_bf_param_common_unexpected_error>
594*5113495bSYour Name 			<enum 103 error_txfd_less_expect_cbf_per_user_tlvs_error>
595*5113495bSYour Name 
596*5113495bSYour Name 			<enum 104 error_txfd_more_expect_cbf_per_user_tlvs_error>
597*5113495bSYour Name 
598*5113495bSYour Name 			<enum 105 error_txfd_precoding_stg1_stg2_wait_to_error>
599*5113495bSYour Name 			<enum 106 error_txfd_expect_cbf_per_user_before_common_error>
600*5113495bSYour Name 
601*5113495bSYour Name 			<enum 107 error_txfd_prefetch_per_user_before_common_error>
602*5113495bSYour Name 
603*5113495bSYour Name 			<enum 108 error_txfd_bf_param_per_user_before_common_error>
604*5113495bSYour Name 
605*5113495bSYour Name 			<enum 109 error_txfd_ndp_cbf_bw_mismatch_error>
606*5113495bSYour Name 			<enum 110 error_txtd_tx_pre_desc_error>
607*5113495bSYour Name 			<enum 111 error_txtd_tx_desc_error>
608*5113495bSYour Name 			<enum 112 error_txtd_start_error>
609*5113495bSYour Name 			<enum 113 error_txtd_sym_error>
610*5113495bSYour Name 			<enum 114 error_txtd_multi_sym_error>
611*5113495bSYour Name 			<enum 115 error_txtd_pre_data_error>
612*5113495bSYour Name 			<enum 116 error_txtd_pkt_data_error>
613*5113495bSYour Name 			<enum 117 error_txtd_pkt_end_error>
614*5113495bSYour Name 			<enum 118 error_txtd_tx_frame_unexp>
615*5113495bSYour Name 			<enum 119 error_txtd_start_unexp>
616*5113495bSYour Name 			<enum 120 error_txtd_fft_error_1>
617*5113495bSYour Name 			<enum 121 error_txtd_fft_error_2>
618*5113495bSYour Name 			<enum 122 error_txtd_uld_sym_cp_len_zero>
619*5113495bSYour Name 			<enum 123 error_txtd_start_done>
620*5113495bSYour Name 			<enum 124 error_txtd_start_nonidle>
621*5113495bSYour Name 			<enum 125 error_txtd_tx_abort_nonidle>
622*5113495bSYour Name 			<enum 126 error_txtd_tx_abort_done>
623*5113495bSYour Name 			<enum 127 error_txtd_tx_abort_idle>
624*5113495bSYour Name 			<enum 128 error_txtd_cck_sample_overflow>
625*5113495bSYour Name 			<enum 129 error_txtd_cck_timeout>
626*5113495bSYour Name 			<enum 130 error_txtd_ofdm_sym_mismatch>
627*5113495bSYour Name 			<enum 131 error_txtd_tx_vld_unalign_error>
628*5113495bSYour Name 			<enum 132 error_txtd_fft_cdc_fifo>This is the merged Rx/Tx
629*5113495bSYour Name 			 CDC FIFO empty/full error code
630*5113495bSYour Name 			<enum 133 error_mac_tb_ppdu_abort>All 'error_txtd_chn' codes
631*5113495bSYour Name 			 use this value as well.
632*5113495bSYour Name 			<enum 136 error_abort_req_from_macrx_enum_05>This code is
633*5113495bSYour Name 			 used to abort the Tx when MAC Rx issues an abort request
634*5113495bSYour Name 			 with code 05 "macrx_abort_too_much_bad_data."
635*5113495bSYour Name 			<enum 137 error_tx_extra_sym_mismatch>
636*5113495bSYour Name 			<enum 138 error_tx_vht_length_not_multiple_of_3>
637*5113495bSYour Name 			<enum 139 error_tx_11b_rate_illegal>
638*5113495bSYour Name 			<enum 140 error_tx_ht_rate_illegal>
639*5113495bSYour Name 			<enum 141 error_tx_vht_rate_illegal>
640*5113495bSYour Name 			<enum 142 error_mac_rf_only_abort>
641*5113495bSYour Name 			<enum 255 error_tx_invalid_error_code>
642*5113495bSYour Name */
643*5113495bSYour Name 
644*5113495bSYour Name #define TX_FLUSH_REQ_PHYTX_ABORT_REASON_OFFSET                                      0x0000000000000000
645*5113495bSYour Name #define TX_FLUSH_REQ_PHYTX_ABORT_REASON_LSB                                         8
646*5113495bSYour Name #define TX_FLUSH_REQ_PHYTX_ABORT_REASON_MSB                                         15
647*5113495bSYour Name #define TX_FLUSH_REQ_PHYTX_ABORT_REASON_MASK                                        0x000000000000ff00
648*5113495bSYour Name 
649*5113495bSYour Name 
650*5113495bSYour Name /* Description		FLUSH_REQ_USER_NUMBER_OR_LINK_ID
651*5113495bSYour Name 
652*5113495bSYour Name 			Field only valid when Flush_req_reason == TXPCU_PHYTX_ABORT_ERR
653*5113495bSYour Name 			 or PDG_FLREQ_CODE_{TXOP, MLO}_ABORT
654*5113495bSYour Name 
655*5113495bSYour Name 			In case of TXPCU_PHYTX_ABORT_ERR, for some errors, the user
656*5113495bSYour Name 			 for which this error was detected can be indicated in this
657*5113495bSYour Name 			 field.
658*5113495bSYour Name 
659*5113495bSYour Name 			In case of PDG_FLREQ_CODE_*_ABORT due to MLO, this field
660*5113495bSYour Name 			 will carry the partner link ID and validity due to which
661*5113495bSYour Name 			 the abort was initiated.
662*5113495bSYour Name 			Bit [5]: partner link ID valid
663*5113495bSYour Name 			Bits [4:3]: set to 0
664*5113495bSYour Name 			Bits [2:0]: partner link ID
665*5113495bSYour Name 			<legal 0-39>
666*5113495bSYour Name */
667*5113495bSYour Name 
668*5113495bSYour Name #define TX_FLUSH_REQ_FLUSH_REQ_USER_NUMBER_OR_LINK_ID_OFFSET                        0x0000000000000000
669*5113495bSYour Name #define TX_FLUSH_REQ_FLUSH_REQ_USER_NUMBER_OR_LINK_ID_LSB                           16
670*5113495bSYour Name #define TX_FLUSH_REQ_FLUSH_REQ_USER_NUMBER_OR_LINK_ID_MSB                           21
671*5113495bSYour Name #define TX_FLUSH_REQ_FLUSH_REQ_USER_NUMBER_OR_LINK_ID_MASK                          0x00000000003f0000
672*5113495bSYour Name 
673*5113495bSYour Name 
674*5113495bSYour Name /* Description		MLO_ABORT_REASON
675*5113495bSYour Name 
676*5113495bSYour Name 			Field valid only when Flush_req_reason == PDG_FLREQ_CODE_{TXOP,
677*5113495bSYour Name 			MLO}_ABORT
678*5113495bSYour Name 
679*5113495bSYour Name 			<enum 0 sw_blocked_self> SW-specified block of the peer
680*5113495bSYour Name 			for self-link
681*5113495bSYour Name 			<enum 1 sw_blocked_partner> SW-specified block of the peer
682*5113495bSYour Name 			 from a partner link
683*5113495bSYour Name 			<enum 2 rx_ongoing> Blocked due to RX ongoing in partner
684*5113495bSYour Name 			 link
685*5113495bSYour Name 			<enum 3 cts2self_truncated> MLO truncated CTS2SELF leading
686*5113495bSYour Name 			 to abort
687*5113495bSYour Name 			<enum 4 max_padding_exceeded> Maximum padding exceeded
688*5113495bSYour Name 			<enum 5 max_overlap_exceeded> Maximum overlap duration exceeded
689*5113495bSYour Name 
690*5113495bSYour Name 			<enum 6 user_collision_threshold_exceeded> User collision
691*5113495bSYour Name 			 threshold for MU exceeded
692*5113495bSYour Name 			<enum 7 sw_blocked_vdev_id> SW-specified block due to VDEV
693*5113495bSYour Name 			 ID collision with a non-MLO broadcast/multicast
694*5113495bSYour Name 			<enum 8 r2r_response_truncated>
695*5113495bSYour Name 			<enum 10 emlsr_blackout> Blocked due to EMLSR black-out
696*5113495bSYour Name 			window
697*5113495bSYour Name 			<enum 16 t2_response_changed> T2 response changed in 'MLO_TX_RESP'
698*5113495bSYour Name 
699*5113495bSYour Name 			<enum 17 ppdu_duration_zero> PPDU duration zero in 'MLO_TX_RESP'
700*5113495bSYour Name 
701*5113495bSYour Name 			<enum 18 ppdu_duration_bigger_than_allowed> PPDU duration
702*5113495bSYour Name 			 bigger than allowed in non-response mode 'MLO_TX_RESP'
703*5113495bSYour Name 			<enum 19 ppdu_padding_not_allowed> PPDU in non-A-MPDU format
704*5113495bSYour Name 			 cannot be padded
705*5113495bSYour Name 			<enum 20 resp_ppdu_duration_truncated> PPDU duration truncated
706*5113495bSYour Name 			 in response mode 'MLO_TX_RESP'
707*5113495bSYour Name 			<enum 21 ppdu_duration_limit> flush generated due to TXOP
708*5113495bSYour Name 			 abort
709*5113495bSYour Name 			<enum 22 overview_mpdu_cnt_zero> flush generated due to
710*5113495bSYour Name 			TXOP abort as MPDU count is zero for all users in 'MPDU_QUEUE_OVERVIEW'
711*5113495bSYour Name 
712*5113495bSYour Name 			<enum 23 overview_not_ready> flush generated due to MLO
713*5113495bSYour Name 			abort as 'MPDU_QUEUE_OVERVIEW' is not ready for all users
714*5113495bSYour Name 			 at PPDU phase
715*5113495bSYour Name 			<enum 24 trigger_frame_mlo_alignment_fail> Trigger frame
716*5113495bSYour Name 			 end-alignment cannot be met, e.g. due to LDPC extra symbol
717*5113495bSYour Name 
718*5113495bSYour Name 			<enum 9 mlo_reserved>
719*5113495bSYour Name */
720*5113495bSYour Name 
721*5113495bSYour Name #define TX_FLUSH_REQ_MLO_ABORT_REASON_OFFSET                                        0x0000000000000000
722*5113495bSYour Name #define TX_FLUSH_REQ_MLO_ABORT_REASON_LSB                                           22
723*5113495bSYour Name #define TX_FLUSH_REQ_MLO_ABORT_REASON_MSB                                           26
724*5113495bSYour Name #define TX_FLUSH_REQ_MLO_ABORT_REASON_MASK                                          0x0000000007c00000
725*5113495bSYour Name 
726*5113495bSYour Name 
727*5113495bSYour Name /* Description		RESERVED_0A
728*5113495bSYour Name 
729*5113495bSYour Name 			<legal 0>
730*5113495bSYour Name */
731*5113495bSYour Name 
732*5113495bSYour Name #define TX_FLUSH_REQ_RESERVED_0A_OFFSET                                             0x0000000000000000
733*5113495bSYour Name #define TX_FLUSH_REQ_RESERVED_0A_LSB                                                27
734*5113495bSYour Name #define TX_FLUSH_REQ_RESERVED_0A_MSB                                                31
735*5113495bSYour Name #define TX_FLUSH_REQ_RESERVED_0A_MASK                                               0x00000000f8000000
736*5113495bSYour Name 
737*5113495bSYour Name 
738*5113495bSYour Name /* Description		TLV64_PADDING
739*5113495bSYour Name 
740*5113495bSYour Name 			Automatic DWORD padding inserted while converting TLV32
741*5113495bSYour Name 			to TLV64 for 64 bit ARCH
742*5113495bSYour Name 			<legal 0>
743*5113495bSYour Name */
744*5113495bSYour Name 
745*5113495bSYour Name #define TX_FLUSH_REQ_TLV64_PADDING_OFFSET                                           0x0000000000000000
746*5113495bSYour Name #define TX_FLUSH_REQ_TLV64_PADDING_LSB                                              32
747*5113495bSYour Name #define TX_FLUSH_REQ_TLV64_PADDING_MSB                                              63
748*5113495bSYour Name #define TX_FLUSH_REQ_TLV64_PADDING_MASK                                             0xffffffff00000000
749*5113495bSYour Name 
750*5113495bSYour Name 
751*5113495bSYour Name 
752*5113495bSYour Name #endif   // TX_FLUSH_REQ
753