xref: /wlan-driver/fw-api/hw/qcn6432/rx_ppdu_no_ack_report.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1 /*
2  * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
3  *
4  * Permission to use, copy, modify, and/or distribute this software for any
5  * purpose with or without fee is hereby granted, provided that the above
6  * copyright notice and this permission notice appear in all copies.
7  *
8  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15  */
16 
17 #ifndef _RX_PPDU_NO_ACK_REPORT_H_
18 #define _RX_PPDU_NO_ACK_REPORT_H_
19 #if !defined(__ASSEMBLER__)
20 #endif
21 
22 #include "no_ack_report.h"
23 #define NUM_OF_DWORDS_RX_PPDU_NO_ACK_REPORT 4
24 
25 #define NUM_OF_QWORDS_RX_PPDU_NO_ACK_REPORT 2
26 
27 
28 struct rx_ppdu_no_ack_report {
29 #ifndef WIFI_BIT_ORDER_BIG_ENDIAN
30              struct   no_ack_report                                             no_ack_report_details;
31 #else
32              struct   no_ack_report                                             no_ack_report_details;
33 #endif
34 };
35 
36 
37 /* Description		NO_ACK_REPORT_DETAILS
38 
39 			Info indicating why frame did not require a response transmission
40 			 in SIFS time.
41 */
42 
43 
44 /* Description		NO_ACK_TRANSMIT_REASON
45 
46 			Field that indicates why the received frame is not needing
47 			 any transmit response in SIFS time.
48 
49 			The possible responses are listed in order.
50 
51 			<enum 0     NO_ACK_FCS_errors > All received frames have
52 			 FCS errors.
53 			<enum 1     Unicast_no_ack_frame_received > All received
54 			 frames did not require a response.
55 			<enum 2     NO_ACK_Broadcast> Broadcast frame received
56 			<enum 3     NO_ACK_Multicast> Multicast frame received
57 			<enum 4     Not_directed> Frames received are not directed
58 			 to this device (based on addr1)
59 			<enum 5     AST_no_ack> The AST entry indicated that NO
60 			ACK shall be send
61 			<enum 6     PHY_GID_mismatch> PHY dropped the incoming frame
62 			 dur to GID mismatch
63 			<enum 7     PHY_AID_mismatch> PHY dropped the incoming frame
64 			 dur to AID mismatch
65 			<enum 8     NO_ACK_PHY_error> PHY reported an error during
66 			 reception. For details, see the 'phy_error...' fields
67 			<enum 9     RTS_bw_not_available> The requested BW for the
68 			 CTS response frame is not available
69 			<enum 10     NDPA_Frame> An NDPA frame got received
70 			<enum 11     NDP_Frame> An NDP frame got received
71 			<enum 12     Trigger_NAV_blocked> a trigger frame was received,
72 			but due to NAV setting, no response could be generated
73 			<enum 13     Trigger_no_AID> A trigger frame was received,
74 			but this device's AID was not in the list
75 			<enum 14     NO_ACK_MAC_ABORT_REQ > No ACK is needed as
76 			SW asked RXPCU to send a abort_request to the PHYRX
77 			<enum 15     no_response_other> placeholder in case non
78 			of the above properly cover the reasons
79 
80 			Also see the field SR_PPDU_during_OBSS.
81 			<legal 0-15>
82 */
83 
84 #define RX_PPDU_NO_ACK_REPORT_NO_ACK_REPORT_DETAILS_NO_ACK_TRANSMIT_REASON_OFFSET   0x0000000000000000
85 #define RX_PPDU_NO_ACK_REPORT_NO_ACK_REPORT_DETAILS_NO_ACK_TRANSMIT_REASON_LSB      0
86 #define RX_PPDU_NO_ACK_REPORT_NO_ACK_REPORT_DETAILS_NO_ACK_TRANSMIT_REASON_MSB      3
87 #define RX_PPDU_NO_ACK_REPORT_NO_ACK_REPORT_DETAILS_NO_ACK_TRANSMIT_REASON_MASK     0x000000000000000f
88 
89 
90 /* Description		MACRX_ABORT_REASON
91 
92 			Field only valid when No_ack_transmit_reason is set to NO_ACK_MAC_ABORT_REQ
93 
94 
95 			Error field received from MACRX_ABORT_REQUEST.Macrx_abort_reason[2:0]
96 
97 			 <Legal all>
98 */
99 
100 #define RX_PPDU_NO_ACK_REPORT_NO_ACK_REPORT_DETAILS_MACRX_ABORT_REASON_OFFSET       0x0000000000000000
101 #define RX_PPDU_NO_ACK_REPORT_NO_ACK_REPORT_DETAILS_MACRX_ABORT_REASON_LSB          4
102 #define RX_PPDU_NO_ACK_REPORT_NO_ACK_REPORT_DETAILS_MACRX_ABORT_REASON_MSB          7
103 #define RX_PPDU_NO_ACK_REPORT_NO_ACK_REPORT_DETAILS_MACRX_ABORT_REASON_MASK         0x00000000000000f0
104 
105 
106 /* Description		PHYRX_ABORT_REASON
107 
108 			Field only valid when No_ack_transmit_reason is set to NO_ACK_PHY_error
109 
110 
111 			Error field received from PHYRX_ABORT_REQUEST.Phyrx_abort_reason
112 
113 
114 			<Legal all>
115 */
116 
117 #define RX_PPDU_NO_ACK_REPORT_NO_ACK_REPORT_DETAILS_PHYRX_ABORT_REASON_OFFSET       0x0000000000000000
118 #define RX_PPDU_NO_ACK_REPORT_NO_ACK_REPORT_DETAILS_PHYRX_ABORT_REASON_LSB          8
119 #define RX_PPDU_NO_ACK_REPORT_NO_ACK_REPORT_DETAILS_PHYRX_ABORT_REASON_MSB          15
120 #define RX_PPDU_NO_ACK_REPORT_NO_ACK_REPORT_DETAILS_PHYRX_ABORT_REASON_MASK         0x000000000000ff00
121 
122 
123 /* Description		FRAME_CONTROL
124 
125 			frame control field of the received (first properly received)
126 			frame
127 
128 			<Legal all>
129 */
130 
131 #define RX_PPDU_NO_ACK_REPORT_NO_ACK_REPORT_DETAILS_FRAME_CONTROL_OFFSET            0x0000000000000000
132 #define RX_PPDU_NO_ACK_REPORT_NO_ACK_REPORT_DETAILS_FRAME_CONTROL_LSB               16
133 #define RX_PPDU_NO_ACK_REPORT_NO_ACK_REPORT_DETAILS_FRAME_CONTROL_MSB               31
134 #define RX_PPDU_NO_ACK_REPORT_NO_ACK_REPORT_DETAILS_FRAME_CONTROL_MASK              0x00000000ffff0000
135 
136 
137 /* Description		RX_PPDU_DURATION
138 
139 			The length of this PPDU reception in us
140 			<Legal all>
141 */
142 
143 #define RX_PPDU_NO_ACK_REPORT_NO_ACK_REPORT_DETAILS_RX_PPDU_DURATION_OFFSET         0x0000000000000000
144 #define RX_PPDU_NO_ACK_REPORT_NO_ACK_REPORT_DETAILS_RX_PPDU_DURATION_LSB            32
145 #define RX_PPDU_NO_ACK_REPORT_NO_ACK_REPORT_DETAILS_RX_PPDU_DURATION_MSB            55
146 #define RX_PPDU_NO_ACK_REPORT_NO_ACK_REPORT_DETAILS_RX_PPDU_DURATION_MASK           0x00ffffff00000000
147 
148 
149 /* Description		SR_PPDU_DURING_OBSS
150 
151 			Field only valid with SRP Responder support
152 
153 			Indicates that the received frame was sent using SRP as
154 			indicated by the 'SR PPDU' bit in the 'CAS Control' in the
155 			 'HE A-Control' in one of the MPDUs received, and that the
156 			 response could not be generated due to OBSS traffic setting
157 			 the NAV
158 			<legal all>
159 */
160 
161 #define RX_PPDU_NO_ACK_REPORT_NO_ACK_REPORT_DETAILS_SR_PPDU_DURING_OBSS_OFFSET      0x0000000000000000
162 #define RX_PPDU_NO_ACK_REPORT_NO_ACK_REPORT_DETAILS_SR_PPDU_DURING_OBSS_LSB         56
163 #define RX_PPDU_NO_ACK_REPORT_NO_ACK_REPORT_DETAILS_SR_PPDU_DURING_OBSS_MSB         56
164 #define RX_PPDU_NO_ACK_REPORT_NO_ACK_REPORT_DETAILS_SR_PPDU_DURING_OBSS_MASK        0x0100000000000000
165 
166 
167 /* Description		SELFGEN_RESPONSE_REASON_TO_SR_PPDU
168 
169 			Field only valid with SRP Responder support
170 
171 			This field indicates why the received SR PPDU needs a response
172 			 in SIFS time. The e-num used is the same as in the field
173 			 selfgen_response_reason in 'ACK_REPORT' structure although
174 			 some of these will be unused in case of an SR PPDU.
175 
176 			<enum 0     CTS_frame>
177 			<enum 1     ACK_frame>
178 			<enum 2     BA_frame >
179 			<enum 3     Qboost_trigger> Qboost trigger received
180 			<enum 4     PSPOLL_trigger> PSPOLL trigger received
181 			<enum 5     UAPSD_trigger > Unscheduled APSD  trigger received
182 
183 			<enum 6     CBF_frame> the CBF frame needs to be send as
184 			 a result of NDP or BRPOLL
185 			<enum 7     ax_su_trigger> 11ax trigger received for this
186 			 device
187 			<enum 8     ax_wildcard_trigger> 11ax wildcardtrigger has
188 			 been received
189 			<enum 9     ax_unassoc_wildcard_trigger> 11ax wildcard trigger
190 			 for unassociated STAs has been received
191 			<enum 12     eht_su_trigger> EHT R1 trigger received for
192 			 this device
193 			<enum 10     MU_UL_response_to_response>
194 
195 			<enum 11     Ranging_NDP_LMR_frames> Ranging NDP + LMR need
196 			 to be sent in response to ranging NDPA + NDP
197 
198 			<legal 0-12>
199 */
200 
201 #define RX_PPDU_NO_ACK_REPORT_NO_ACK_REPORT_DETAILS_SELFGEN_RESPONSE_REASON_TO_SR_PPDU_OFFSET 0x0000000000000000
202 #define RX_PPDU_NO_ACK_REPORT_NO_ACK_REPORT_DETAILS_SELFGEN_RESPONSE_REASON_TO_SR_PPDU_LSB 57
203 #define RX_PPDU_NO_ACK_REPORT_NO_ACK_REPORT_DETAILS_SELFGEN_RESPONSE_REASON_TO_SR_PPDU_MSB 60
204 #define RX_PPDU_NO_ACK_REPORT_NO_ACK_REPORT_DETAILS_SELFGEN_RESPONSE_REASON_TO_SR_PPDU_MASK 0x1e00000000000000
205 
206 
207 /* Description		RESERVED_1
208 
209 			<legal all>
210 */
211 
212 #define RX_PPDU_NO_ACK_REPORT_NO_ACK_REPORT_DETAILS_RESERVED_1_OFFSET               0x0000000000000000
213 #define RX_PPDU_NO_ACK_REPORT_NO_ACK_REPORT_DETAILS_RESERVED_1_LSB                  61
214 #define RX_PPDU_NO_ACK_REPORT_NO_ACK_REPORT_DETAILS_RESERVED_1_MSB                  63
215 #define RX_PPDU_NO_ACK_REPORT_NO_ACK_REPORT_DETAILS_RESERVED_1_MASK                 0xe000000000000000
216 
217 
218 /* Description		PRE_BT_BROADCAST_STATUS_DETAILS
219 
220 			Same contents as field "bt_broadcast_status_details" for
221 			 the first received COEX_STATUS_BROADCAST tlv during this
222 			 PPDU reception.
223 			After power up, this field is all initialized to 0
224 
225 			Bits: [31:28]: always 0
226 
227 			<legal all>
228 */
229 
230 #define RX_PPDU_NO_ACK_REPORT_NO_ACK_REPORT_DETAILS_PRE_BT_BROADCAST_STATUS_DETAILS_OFFSET 0x0000000000000008
231 #define RX_PPDU_NO_ACK_REPORT_NO_ACK_REPORT_DETAILS_PRE_BT_BROADCAST_STATUS_DETAILS_LSB 0
232 #define RX_PPDU_NO_ACK_REPORT_NO_ACK_REPORT_DETAILS_PRE_BT_BROADCAST_STATUS_DETAILS_MSB 11
233 #define RX_PPDU_NO_ACK_REPORT_NO_ACK_REPORT_DETAILS_PRE_BT_BROADCAST_STATUS_DETAILS_MASK 0x0000000000000fff
234 
235 
236 /* Description		FIRST_BT_BROADCAST_STATUS_DETAILS
237 
238 			Same contents as field "bt_broadcast_status_details" for
239 			 the first received COEX_STATUS_BROADCAST tlv during this
240 			 PPDU reception.
241 
242 			If no COEX_STATUS_BROADCAST tlv is received during this
243 			PPDU reception, this field will be set to 0
244 			<legal all>
245 */
246 
247 #define RX_PPDU_NO_ACK_REPORT_NO_ACK_REPORT_DETAILS_FIRST_BT_BROADCAST_STATUS_DETAILS_OFFSET 0x0000000000000008
248 #define RX_PPDU_NO_ACK_REPORT_NO_ACK_REPORT_DETAILS_FIRST_BT_BROADCAST_STATUS_DETAILS_LSB 12
249 #define RX_PPDU_NO_ACK_REPORT_NO_ACK_REPORT_DETAILS_FIRST_BT_BROADCAST_STATUS_DETAILS_MSB 23
250 #define RX_PPDU_NO_ACK_REPORT_NO_ACK_REPORT_DETAILS_FIRST_BT_BROADCAST_STATUS_DETAILS_MASK 0x0000000000fff000
251 
252 
253 /* Description		RESERVED_2
254 
255 			<legal 0>
256 */
257 
258 #define RX_PPDU_NO_ACK_REPORT_NO_ACK_REPORT_DETAILS_RESERVED_2_OFFSET               0x0000000000000008
259 #define RX_PPDU_NO_ACK_REPORT_NO_ACK_REPORT_DETAILS_RESERVED_2_LSB                  24
260 #define RX_PPDU_NO_ACK_REPORT_NO_ACK_REPORT_DETAILS_RESERVED_2_MSB                  31
261 #define RX_PPDU_NO_ACK_REPORT_NO_ACK_REPORT_DETAILS_RESERVED_2_MASK                 0x00000000ff000000
262 
263 
264 /* Description		SECOND_BT_BROADCAST_STATUS_DETAILS
265 
266 			Same contents as field "bt_broadcast_status_details" for
267 			 the second received COEX_STATUS_BROADCAST tlv during this
268 			 PPDU reception.
269 
270 			If no second COEX_STATUS_BROADCAST tlv is received during
271 			 this PPDU reception, this field will be set to 0
272 			<legal all>
273 */
274 
275 #define RX_PPDU_NO_ACK_REPORT_NO_ACK_REPORT_DETAILS_SECOND_BT_BROADCAST_STATUS_DETAILS_OFFSET 0x0000000000000008
276 #define RX_PPDU_NO_ACK_REPORT_NO_ACK_REPORT_DETAILS_SECOND_BT_BROADCAST_STATUS_DETAILS_LSB 32
277 #define RX_PPDU_NO_ACK_REPORT_NO_ACK_REPORT_DETAILS_SECOND_BT_BROADCAST_STATUS_DETAILS_MSB 43
278 #define RX_PPDU_NO_ACK_REPORT_NO_ACK_REPORT_DETAILS_SECOND_BT_BROADCAST_STATUS_DETAILS_MASK 0x00000fff00000000
279 
280 
281 /* Description		RESERVED_3
282 
283 			<legal 0>
284 */
285 
286 #define RX_PPDU_NO_ACK_REPORT_NO_ACK_REPORT_DETAILS_RESERVED_3_OFFSET               0x0000000000000008
287 #define RX_PPDU_NO_ACK_REPORT_NO_ACK_REPORT_DETAILS_RESERVED_3_LSB                  44
288 #define RX_PPDU_NO_ACK_REPORT_NO_ACK_REPORT_DETAILS_RESERVED_3_MSB                  63
289 #define RX_PPDU_NO_ACK_REPORT_NO_ACK_REPORT_DETAILS_RESERVED_3_MASK                 0xfffff00000000000
290 
291 
292 
293 #endif   // RX_PPDU_NO_ACK_REPORT
294