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