1 /*
2  * Copyright (c) 2021 The Linux Foundation. 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 // $ATH_LICENSE_HW_HDR_C$
18 //
19 // DO NOT EDIT!  This file is automatically generated
20 //               These definitions are tied to a particular hardware layout
21 
22 
23 #ifndef _RX_ATTENTION_H_
24 #define _RX_ATTENTION_H_
25 #if !defined(__ASSEMBLER__)
26 #endif
27 
28 
29 // ################ START SUMMARY #################
30 //
31 //	Dword	Fields
32 //	0	rxpcu_mpdu_filter_in_category[1:0], sw_frame_group_id[8:2], reserved_0[15:9], phy_ppdu_id[31:16]
33 //	1	first_mpdu[0], reserved_1a[1], mcast_bcast[2], ast_index_not_found[3], ast_index_timeout[4], power_mgmt[5], non_qos[6], null_data[7], mgmt_type[8], ctrl_type[9], more_data[10], eosp[11], a_msdu_error[12], fragment_flag[13], order[14], cce_match[15], overflow_err[16], msdu_length_err[17], tcp_udp_chksum_fail[18], ip_chksum_fail[19], sa_idx_invalid[20], da_idx_invalid[21], reserved_1b[22], rx_in_tx_decrypt_byp[23], encrypt_required[24], directed[25], buffer_fragment[26], mpdu_length_err[27], tkip_mic_err[28], decrypt_err[29], unencrypted_frame_err[30], fcs_err[31]
34 //	2	flow_idx_timeout[0], flow_idx_invalid[1], wifi_parser_error[2], amsdu_parser_error[3], sa_idx_timeout[4], da_idx_timeout[5], msdu_limit_error[6], da_is_valid[7], da_is_mcbc[8], sa_is_valid[9], decrypt_status_code[12:10], rx_bitmap_not_updated[13], reserved_2[30:14], msdu_done[31]
35 //
36 // ################ END SUMMARY #################
37 
38 #define NUM_OF_DWORDS_RX_ATTENTION 3
39 
40 struct rx_attention {
41              uint32_t rxpcu_mpdu_filter_in_category   :  2, //[1:0]
42                       sw_frame_group_id               :  7, //[8:2]
43                       reserved_0                      :  7, //[15:9]
44                       phy_ppdu_id                     : 16; //[31:16]
45              uint32_t first_mpdu                      :  1, //[0]
46                       reserved_1a                     :  1, //[1]
47                       mcast_bcast                     :  1, //[2]
48                       ast_index_not_found             :  1, //[3]
49                       ast_index_timeout               :  1, //[4]
50                       power_mgmt                      :  1, //[5]
51                       non_qos                         :  1, //[6]
52                       null_data                       :  1, //[7]
53                       mgmt_type                       :  1, //[8]
54                       ctrl_type                       :  1, //[9]
55                       more_data                       :  1, //[10]
56                       eosp                            :  1, //[11]
57                       a_msdu_error                    :  1, //[12]
58                       fragment_flag                   :  1, //[13]
59                       order                           :  1, //[14]
60                       cce_match                       :  1, //[15]
61                       overflow_err                    :  1, //[16]
62                       msdu_length_err                 :  1, //[17]
63                       tcp_udp_chksum_fail             :  1, //[18]
64                       ip_chksum_fail                  :  1, //[19]
65                       sa_idx_invalid                  :  1, //[20]
66                       da_idx_invalid                  :  1, //[21]
67                       reserved_1b                     :  1, //[22]
68                       rx_in_tx_decrypt_byp            :  1, //[23]
69                       encrypt_required                :  1, //[24]
70                       directed                        :  1, //[25]
71                       buffer_fragment                 :  1, //[26]
72                       mpdu_length_err                 :  1, //[27]
73                       tkip_mic_err                    :  1, //[28]
74                       decrypt_err                     :  1, //[29]
75                       unencrypted_frame_err           :  1, //[30]
76                       fcs_err                         :  1; //[31]
77              uint32_t flow_idx_timeout                :  1, //[0]
78                       flow_idx_invalid                :  1, //[1]
79                       wifi_parser_error               :  1, //[2]
80                       amsdu_parser_error              :  1, //[3]
81                       sa_idx_timeout                  :  1, //[4]
82                       da_idx_timeout                  :  1, //[5]
83                       msdu_limit_error                :  1, //[6]
84                       da_is_valid                     :  1, //[7]
85                       da_is_mcbc                      :  1, //[8]
86                       sa_is_valid                     :  1, //[9]
87                       decrypt_status_code             :  3, //[12:10]
88                       rx_bitmap_not_updated           :  1, //[13]
89                       reserved_2                      : 17, //[30:14]
90                       msdu_done                       :  1; //[31]
91 };
92 
93 /*
94 
95 rxpcu_mpdu_filter_in_category
96 
97 			Field indicates what the reason was that this MPDU frame
98 			was allowed to come into the receive path by RXPCU
99 
100 			<enum 0 rxpcu_filter_pass> This MPDU passed the normal
101 			frame filter programming of rxpcu
102 
103 			<enum 1 rxpcu_monitor_client> This MPDU did NOT pass the
104 			regular frame filter and would have been dropped, were it
105 			not for the frame fitting into the 'monitor_client'
106 			category.
107 
108 			<enum 2 rxpcu_monitor_other> This MPDU did NOT pass the
109 			regular frame filter and also did not pass the
110 			rxpcu_monitor_client filter. It would have been dropped
111 			accept that it did pass the 'monitor_other' category.
112 
113 			<legal 0-2>
114 
115 sw_frame_group_id
116 
117 			SW processes frames based on certain classifications.
118 			This field indicates to what sw classification this MPDU is
119 			mapped.
120 
121 			The classification is given in priority order
122 
123 
124 
125 			<enum 0 sw_frame_group_NDP_frame>
126 
127 
128 
129 			<enum 1 sw_frame_group_Multicast_data>
130 
131 			<enum 2 sw_frame_group_Unicast_data>
132 
133 			<enum 3 sw_frame_group_Null_data > This includes mpdus
134 			of type Data Null as well as QoS Data Null
135 
136 
137 
138 			<enum 4 sw_frame_group_mgmt_0000 >
139 
140 			<enum 5 sw_frame_group_mgmt_0001 >
141 
142 			<enum 6 sw_frame_group_mgmt_0010 >
143 
144 			<enum 7 sw_frame_group_mgmt_0011 >
145 
146 			<enum 8 sw_frame_group_mgmt_0100 >
147 
148 			<enum 9 sw_frame_group_mgmt_0101 >
149 
150 			<enum 10 sw_frame_group_mgmt_0110 >
151 
152 			<enum 11 sw_frame_group_mgmt_0111 >
153 
154 			<enum 12 sw_frame_group_mgmt_1000 >
155 
156 			<enum 13 sw_frame_group_mgmt_1001 >
157 
158 			<enum 14 sw_frame_group_mgmt_1010 >
159 
160 			<enum 15 sw_frame_group_mgmt_1011 >
161 
162 			<enum 16 sw_frame_group_mgmt_1100 >
163 
164 			<enum 17 sw_frame_group_mgmt_1101 >
165 
166 			<enum 18 sw_frame_group_mgmt_1110 >
167 
168 			<enum 19 sw_frame_group_mgmt_1111 >
169 
170 
171 
172 			<enum 20 sw_frame_group_ctrl_0000 >
173 
174 			<enum 21 sw_frame_group_ctrl_0001 >
175 
176 			<enum 22 sw_frame_group_ctrl_0010 >
177 
178 			<enum 23 sw_frame_group_ctrl_0011 >
179 
180 			<enum 24 sw_frame_group_ctrl_0100 >
181 
182 			<enum 25 sw_frame_group_ctrl_0101 >
183 
184 			<enum 26 sw_frame_group_ctrl_0110 >
185 
186 			<enum 27 sw_frame_group_ctrl_0111 >
187 
188 			<enum 28 sw_frame_group_ctrl_1000 >
189 
190 			<enum 29 sw_frame_group_ctrl_1001 >
191 
192 			<enum 30 sw_frame_group_ctrl_1010 >
193 
194 			<enum 31 sw_frame_group_ctrl_1011 >
195 
196 			<enum 32 sw_frame_group_ctrl_1100 >
197 
198 			<enum 33 sw_frame_group_ctrl_1101 >
199 
200 			<enum 34 sw_frame_group_ctrl_1110 >
201 
202 			<enum 35 sw_frame_group_ctrl_1111 >
203 
204 
205 
206 			<enum 36 sw_frame_group_unsupported> This covers type 3
207 			and protocol version != 0
208 
209 
210 
211 
212 
213 
214 			<legal 0-37>
215 
216 reserved_0
217 
218 			<legal 0>
219 
220 phy_ppdu_id
221 
222 			A ppdu counter value that PHY increments for every PPDU
223 			received. The counter value wraps around
224 
225 			<legal all>
226 
227 first_mpdu
228 
229 			Indicates the first MSDU of the PPDU.  If both
230 			first_mpdu and last_mpdu are set in the MSDU then this is a
231 			not an A-MPDU frame but a stand alone MPDU.  Interior MPDU
232 			in an A-MPDU shall have both first_mpdu and last_mpdu bits
233 			set to 0.  The PPDU start status will only be valid when
234 			this bit is set.
235 
236 reserved_1a
237 
238 			<legal 0>
239 
240 mcast_bcast
241 
242 			Multicast / broadcast indicator.  Only set when the MAC
243 			address 1 bit 0 is set indicating mcast/bcast and the BSSID
244 			matches one of the 4 BSSID registers. Only set when
245 			first_msdu is set.
246 
247 ast_index_not_found
248 
249 			Only valid when first_msdu is set.
250 
251 
252 
253 			Indicates no AST matching entries within the the max
254 			search count.
255 
256 ast_index_timeout
257 
258 			Only valid when first_msdu is set.
259 
260 
261 
262 			Indicates an unsuccessful search in the address seach
263 			table due to timeout.
264 
265 power_mgmt
266 
267 			Power management bit set in the 802.11 header.  Only set
268 			when first_msdu is set.
269 
270 non_qos
271 
272 			Set if packet is not a non-QoS data frame.  Only set
273 			when first_msdu is set.
274 
275 null_data
276 
277 			Set if frame type indicates either null data or QoS null
278 			data format.  Only set when first_msdu is set.
279 
280 mgmt_type
281 
282 			Set if packet is a management packet.  Only set when
283 			first_msdu is set.
284 
285 ctrl_type
286 
287 			Set if packet is a control packet.  Only set when
288 			first_msdu is set.
289 
290 more_data
291 
292 			Set if more bit in frame control is set.  Only set when
293 			first_msdu is set.
294 
295 eosp
296 
297 			Set if the EOSP (end of service period) bit in the QoS
298 			control field is set.  Only set when first_msdu is set.
299 
300 a_msdu_error
301 
302 			Set if number of MSDUs in A-MSDU is above a threshold or
303 			if the size of the MSDU is invalid.  This receive buffer
304 			will contain all of the remainder of the MSDUs in this MPDU
305 			without decapsulation.
306 
307 fragment_flag
308 
309 			Indicates that this is an 802.11 fragment frame.  This
310 			is set when either the more_frag bit is set in the frame
311 			control or the fragment number is not zero.  Only set when
312 			first_msdu is set.
313 
314 order
315 
316 			Set if the order bit in the frame control is set.  Only
317 			set when first_msdu is set.
318 
319 cce_match
320 
321 			Indicates that this status has a corresponding MSDU that
322 			requires FW processing.  The OLE will have classification
323 			ring mask registers which will indicate the ring(s) for
324 			packets and descriptors which need FW attention.
325 
326 overflow_err
327 
328 			RXPCU Receive FIFO ran out of space to receive the full
329 			MPDU. Therefor this MPDU is terminated early and is thus
330 			corrupted.
331 
332 
333 
334 			This MPDU will not be ACKed.
335 
336 			RXPCU might still be able to correctly receive the
337 			following MPDUs in the PPDU if enough fifo space became
338 			available in time
339 
340 msdu_length_err
341 
342 			Indicates that the MSDU length from the 802.3
343 			encapsulated length field extends beyond the MPDU boundary
344 			or if the length is less than 14 bytes.
345 
346 			Merged with original other_msdu_err: Indicates that the
347 			MSDU threshold was exceeded and thus all the rest of the
348 			MSDUs will not be scattered and will not be decasulated but
349 			will be DMA'ed in RAW format as a single MSDU buffer
350 
351 tcp_udp_chksum_fail
352 
353 			Indicates that the computed checksum (tcp_udp_chksum)
354 			did not match the checksum in the TCP/UDP header.
355 
356 ip_chksum_fail
357 
358 			Indicates that the computed checksum did not match the
359 			checksum in the IP header.
360 
361 sa_idx_invalid
362 
363 			Indicates no matching entry was found in the address
364 			search table for the source MAC address.
365 
366 da_idx_invalid
367 
368 			Indicates no matching entry was found in the address
369 			search table for the destination MAC address.
370 
371 reserved_1b
372 
373 
374 rx_in_tx_decrypt_byp
375 
376 			Indicates that RX packet is not decrypted as Crypto is
377 			busy with TX packet processing.
378 
379 encrypt_required
380 
381 			Indicates that this data type frame is not encrypted
382 			even if the policy for this MPDU requires encryption as
383 			indicated in the peer entry key type.
384 
385 directed
386 
387 			MPDU is a directed packet which means that the RA
388 			matched our STA addresses.  In proxySTA it means that the TA
389 			matched an entry in our address search table with the
390 			corresponding no_ack bit is the address search entry
391 			cleared.
392 
393 buffer_fragment
394 
395 			Indicates that at least one of the rx buffers has been
396 			fragmented.  If set the FW should look at the rx_frag_info
397 			descriptor described below.
398 
399 mpdu_length_err
400 
401 			Indicates that the MPDU was pre-maturely terminated
402 			resulting in a truncated MPDU.  Don't trust the MPDU length
403 			field.
404 
405 tkip_mic_err
406 
407 			Indicates that the MPDU Michael integrity check failed
408 
409 decrypt_err
410 
411 			Indicates that the MPDU decrypt integrity check failed
412 			or CRYPTO received an encrypted frame, but did not get a
413 			valid corresponding key id in the peer entry.
414 
415 unencrypted_frame_err
416 
417 			Copied here by RX OLE from the RX_MPDU_END TLV
418 
419 fcs_err
420 
421 			Indicates that the MPDU FCS check failed
422 
423 flow_idx_timeout
424 
425 			Indicates an unsuccessful flow search due to the
426 			expiring of the search timer.
427 
428 			<legal all>
429 
430 flow_idx_invalid
431 
432 			flow id is not valid
433 
434 			<legal all>
435 
436 wifi_parser_error
437 
438 			Indicates that the WiFi frame has one of the following
439 			errors
440 
441 			o has less than minimum allowed bytes as per standard
442 
443 			o has incomplete VLAN LLC/SNAP (only for non A-MSDUs)
444 
445 			<legal all>
446 
447 amsdu_parser_error
448 
449 			A-MSDU could not be properly de-agregated.
450 
451 			<legal all>
452 
453 sa_idx_timeout
454 
455 			Indicates an unsuccessful MAC source address search due
456 			to the expiring of the search timer.
457 
458 da_idx_timeout
459 
460 			Indicates an unsuccessful MAC destination address search
461 			due to the expiring of the search timer.
462 
463 msdu_limit_error
464 
465 			Indicates that the MSDU threshold was exceeded and thus
466 			all the rest of the MSDUs will not be scattered and will not
467 			be decasulated but will be DMA'ed in RAW format as a single
468 			MSDU buffer
469 
470 da_is_valid
471 
472 			Indicates that OLE found a valid DA entry
473 
474 da_is_mcbc
475 
476 			Field Only valid if da_is_valid is set
477 
478 
479 
480 			Indicates the DA address was a Multicast of Broadcast
481 			address.
482 
483 sa_is_valid
484 
485 			Indicates that OLE found a valid SA entry
486 
487 decrypt_status_code
488 
489 			Field provides insight into the decryption performed
490 
491 
492 
493 			<enum 0 decrypt_ok> Frame had protection enabled and
494 			decrypted properly
495 
496 			<enum 1 decrypt_unprotected_frame > Frame is unprotected
497 			and hence bypassed
498 
499 			<enum 2 decrypt_data_err > Frame has protection enabled
500 			and could not be properly decrypted due to MIC/ICV mismatch
501 			etc.
502 
503 			<enum 3 decrypt_key_invalid > Frame has protection
504 			enabled but the key that was required to decrypt this frame
505 			was not valid
506 
507 			<enum 4 decrypt_peer_entry_invalid > Frame has
508 			protection enabled but the key that was required to decrypt
509 			this frame was not valid
510 
511 			<enum 5 decrypt_other > Reserved for other indications
512 
513 
514 
515 			<legal 0 - 5>
516 
517 rx_bitmap_not_updated
518 
519 			Frame is received, but RXPCU could not update the
520 			receive bitmap due to (temporary) fifo contraints.
521 
522 			<legal all>
523 
524 reserved_2
525 
526 			<legal 0>
527 
528 msdu_done
529 
530 			If set indicates that the RX packet data, RX header
531 			data, RX PPDU start descriptor, RX MPDU start/end
532 			descriptor, RX MSDU start/end descriptors and RX Attention
533 			descriptor are all valid.  This bit must be in the last
534 			octet of the descriptor.
535 */
536 
537 
538 /* Description		RX_ATTENTION_0_RXPCU_MPDU_FILTER_IN_CATEGORY
539 
540 			Field indicates what the reason was that this MPDU frame
541 			was allowed to come into the receive path by RXPCU
542 
543 			<enum 0 rxpcu_filter_pass> This MPDU passed the normal
544 			frame filter programming of rxpcu
545 
546 			<enum 1 rxpcu_monitor_client> This MPDU did NOT pass the
547 			regular frame filter and would have been dropped, were it
548 			not for the frame fitting into the 'monitor_client'
549 			category.
550 
551 			<enum 2 rxpcu_monitor_other> This MPDU did NOT pass the
552 			regular frame filter and also did not pass the
553 			rxpcu_monitor_client filter. It would have been dropped
554 			accept that it did pass the 'monitor_other' category.
555 
556 			<legal 0-2>
557 */
558 #define RX_ATTENTION_0_RXPCU_MPDU_FILTER_IN_CATEGORY_OFFSET          0x00000000
559 #define RX_ATTENTION_0_RXPCU_MPDU_FILTER_IN_CATEGORY_LSB             0
560 #define RX_ATTENTION_0_RXPCU_MPDU_FILTER_IN_CATEGORY_MASK            0x00000003
561 
562 /* Description		RX_ATTENTION_0_SW_FRAME_GROUP_ID
563 
564 			SW processes frames based on certain classifications.
565 			This field indicates to what sw classification this MPDU is
566 			mapped.
567 
568 			The classification is given in priority order
569 
570 
571 
572 			<enum 0 sw_frame_group_NDP_frame>
573 
574 
575 
576 			<enum 1 sw_frame_group_Multicast_data>
577 
578 			<enum 2 sw_frame_group_Unicast_data>
579 
580 			<enum 3 sw_frame_group_Null_data > This includes mpdus
581 			of type Data Null as well as QoS Data Null
582 
583 
584 
585 			<enum 4 sw_frame_group_mgmt_0000 >
586 
587 			<enum 5 sw_frame_group_mgmt_0001 >
588 
589 			<enum 6 sw_frame_group_mgmt_0010 >
590 
591 			<enum 7 sw_frame_group_mgmt_0011 >
592 
593 			<enum 8 sw_frame_group_mgmt_0100 >
594 
595 			<enum 9 sw_frame_group_mgmt_0101 >
596 
597 			<enum 10 sw_frame_group_mgmt_0110 >
598 
599 			<enum 11 sw_frame_group_mgmt_0111 >
600 
601 			<enum 12 sw_frame_group_mgmt_1000 >
602 
603 			<enum 13 sw_frame_group_mgmt_1001 >
604 
605 			<enum 14 sw_frame_group_mgmt_1010 >
606 
607 			<enum 15 sw_frame_group_mgmt_1011 >
608 
609 			<enum 16 sw_frame_group_mgmt_1100 >
610 
611 			<enum 17 sw_frame_group_mgmt_1101 >
612 
613 			<enum 18 sw_frame_group_mgmt_1110 >
614 
615 			<enum 19 sw_frame_group_mgmt_1111 >
616 
617 
618 
619 			<enum 20 sw_frame_group_ctrl_0000 >
620 
621 			<enum 21 sw_frame_group_ctrl_0001 >
622 
623 			<enum 22 sw_frame_group_ctrl_0010 >
624 
625 			<enum 23 sw_frame_group_ctrl_0011 >
626 
627 			<enum 24 sw_frame_group_ctrl_0100 >
628 
629 			<enum 25 sw_frame_group_ctrl_0101 >
630 
631 			<enum 26 sw_frame_group_ctrl_0110 >
632 
633 			<enum 27 sw_frame_group_ctrl_0111 >
634 
635 			<enum 28 sw_frame_group_ctrl_1000 >
636 
637 			<enum 29 sw_frame_group_ctrl_1001 >
638 
639 			<enum 30 sw_frame_group_ctrl_1010 >
640 
641 			<enum 31 sw_frame_group_ctrl_1011 >
642 
643 			<enum 32 sw_frame_group_ctrl_1100 >
644 
645 			<enum 33 sw_frame_group_ctrl_1101 >
646 
647 			<enum 34 sw_frame_group_ctrl_1110 >
648 
649 			<enum 35 sw_frame_group_ctrl_1111 >
650 
651 
652 
653 			<enum 36 sw_frame_group_unsupported> This covers type 3
654 			and protocol version != 0
655 
656 
657 
658 
659 
660 
661 			<legal 0-37>
662 */
663 #define RX_ATTENTION_0_SW_FRAME_GROUP_ID_OFFSET                      0x00000000
664 #define RX_ATTENTION_0_SW_FRAME_GROUP_ID_LSB                         2
665 #define RX_ATTENTION_0_SW_FRAME_GROUP_ID_MASK                        0x000001fc
666 
667 /* Description		RX_ATTENTION_0_RESERVED_0
668 
669 			<legal 0>
670 */
671 #define RX_ATTENTION_0_RESERVED_0_OFFSET                             0x00000000
672 #define RX_ATTENTION_0_RESERVED_0_LSB                                9
673 #define RX_ATTENTION_0_RESERVED_0_MASK                               0x0000fe00
674 
675 /* Description		RX_ATTENTION_0_PHY_PPDU_ID
676 
677 			A ppdu counter value that PHY increments for every PPDU
678 			received. The counter value wraps around
679 
680 			<legal all>
681 */
682 #define RX_ATTENTION_0_PHY_PPDU_ID_OFFSET                            0x00000000
683 #define RX_ATTENTION_0_PHY_PPDU_ID_LSB                               16
684 #define RX_ATTENTION_0_PHY_PPDU_ID_MASK                              0xffff0000
685 
686 /* Description		RX_ATTENTION_1_FIRST_MPDU
687 
688 			Indicates the first MSDU of the PPDU.  If both
689 			first_mpdu and last_mpdu are set in the MSDU then this is a
690 			not an A-MPDU frame but a stand alone MPDU.  Interior MPDU
691 			in an A-MPDU shall have both first_mpdu and last_mpdu bits
692 			set to 0.  The PPDU start status will only be valid when
693 			this bit is set.
694 */
695 #define RX_ATTENTION_1_FIRST_MPDU_OFFSET                             0x00000004
696 #define RX_ATTENTION_1_FIRST_MPDU_LSB                                0
697 #define RX_ATTENTION_1_FIRST_MPDU_MASK                               0x00000001
698 
699 /* Description		RX_ATTENTION_1_RESERVED_1A
700 
701 			<legal 0>
702 */
703 #define RX_ATTENTION_1_RESERVED_1A_OFFSET                            0x00000004
704 #define RX_ATTENTION_1_RESERVED_1A_LSB                               1
705 #define RX_ATTENTION_1_RESERVED_1A_MASK                              0x00000002
706 
707 /* Description		RX_ATTENTION_1_MCAST_BCAST
708 
709 			Multicast / broadcast indicator.  Only set when the MAC
710 			address 1 bit 0 is set indicating mcast/bcast and the BSSID
711 			matches one of the 4 BSSID registers. Only set when
712 			first_msdu is set.
713 */
714 #define RX_ATTENTION_1_MCAST_BCAST_OFFSET                            0x00000004
715 #define RX_ATTENTION_1_MCAST_BCAST_LSB                               2
716 #define RX_ATTENTION_1_MCAST_BCAST_MASK                              0x00000004
717 
718 /* Description		RX_ATTENTION_1_AST_INDEX_NOT_FOUND
719 
720 			Only valid when first_msdu is set.
721 
722 
723 
724 			Indicates no AST matching entries within the the max
725 			search count.
726 */
727 #define RX_ATTENTION_1_AST_INDEX_NOT_FOUND_OFFSET                    0x00000004
728 #define RX_ATTENTION_1_AST_INDEX_NOT_FOUND_LSB                       3
729 #define RX_ATTENTION_1_AST_INDEX_NOT_FOUND_MASK                      0x00000008
730 
731 /* Description		RX_ATTENTION_1_AST_INDEX_TIMEOUT
732 
733 			Only valid when first_msdu is set.
734 
735 
736 
737 			Indicates an unsuccessful search in the address seach
738 			table due to timeout.
739 */
740 #define RX_ATTENTION_1_AST_INDEX_TIMEOUT_OFFSET                      0x00000004
741 #define RX_ATTENTION_1_AST_INDEX_TIMEOUT_LSB                         4
742 #define RX_ATTENTION_1_AST_INDEX_TIMEOUT_MASK                        0x00000010
743 
744 /* Description		RX_ATTENTION_1_POWER_MGMT
745 
746 			Power management bit set in the 802.11 header.  Only set
747 			when first_msdu is set.
748 */
749 #define RX_ATTENTION_1_POWER_MGMT_OFFSET                             0x00000004
750 #define RX_ATTENTION_1_POWER_MGMT_LSB                                5
751 #define RX_ATTENTION_1_POWER_MGMT_MASK                               0x00000020
752 
753 /* Description		RX_ATTENTION_1_NON_QOS
754 
755 			Set if packet is not a non-QoS data frame.  Only set
756 			when first_msdu is set.
757 */
758 #define RX_ATTENTION_1_NON_QOS_OFFSET                                0x00000004
759 #define RX_ATTENTION_1_NON_QOS_LSB                                   6
760 #define RX_ATTENTION_1_NON_QOS_MASK                                  0x00000040
761 
762 /* Description		RX_ATTENTION_1_NULL_DATA
763 
764 			Set if frame type indicates either null data or QoS null
765 			data format.  Only set when first_msdu is set.
766 */
767 #define RX_ATTENTION_1_NULL_DATA_OFFSET                              0x00000004
768 #define RX_ATTENTION_1_NULL_DATA_LSB                                 7
769 #define RX_ATTENTION_1_NULL_DATA_MASK                                0x00000080
770 
771 /* Description		RX_ATTENTION_1_MGMT_TYPE
772 
773 			Set if packet is a management packet.  Only set when
774 			first_msdu is set.
775 */
776 #define RX_ATTENTION_1_MGMT_TYPE_OFFSET                              0x00000004
777 #define RX_ATTENTION_1_MGMT_TYPE_LSB                                 8
778 #define RX_ATTENTION_1_MGMT_TYPE_MASK                                0x00000100
779 
780 /* Description		RX_ATTENTION_1_CTRL_TYPE
781 
782 			Set if packet is a control packet.  Only set when
783 			first_msdu is set.
784 */
785 #define RX_ATTENTION_1_CTRL_TYPE_OFFSET                              0x00000004
786 #define RX_ATTENTION_1_CTRL_TYPE_LSB                                 9
787 #define RX_ATTENTION_1_CTRL_TYPE_MASK                                0x00000200
788 
789 /* Description		RX_ATTENTION_1_MORE_DATA
790 
791 			Set if more bit in frame control is set.  Only set when
792 			first_msdu is set.
793 */
794 #define RX_ATTENTION_1_MORE_DATA_OFFSET                              0x00000004
795 #define RX_ATTENTION_1_MORE_DATA_LSB                                 10
796 #define RX_ATTENTION_1_MORE_DATA_MASK                                0x00000400
797 
798 /* Description		RX_ATTENTION_1_EOSP
799 
800 			Set if the EOSP (end of service period) bit in the QoS
801 			control field is set.  Only set when first_msdu is set.
802 */
803 #define RX_ATTENTION_1_EOSP_OFFSET                                   0x00000004
804 #define RX_ATTENTION_1_EOSP_LSB                                      11
805 #define RX_ATTENTION_1_EOSP_MASK                                     0x00000800
806 
807 /* Description		RX_ATTENTION_1_A_MSDU_ERROR
808 
809 			Set if number of MSDUs in A-MSDU is above a threshold or
810 			if the size of the MSDU is invalid.  This receive buffer
811 			will contain all of the remainder of the MSDUs in this MPDU
812 			without decapsulation.
813 */
814 #define RX_ATTENTION_1_A_MSDU_ERROR_OFFSET                           0x00000004
815 #define RX_ATTENTION_1_A_MSDU_ERROR_LSB                              12
816 #define RX_ATTENTION_1_A_MSDU_ERROR_MASK                             0x00001000
817 
818 /* Description		RX_ATTENTION_1_FRAGMENT_FLAG
819 
820 			Indicates that this is an 802.11 fragment frame.  This
821 			is set when either the more_frag bit is set in the frame
822 			control or the fragment number is not zero.  Only set when
823 			first_msdu is set.
824 */
825 #define RX_ATTENTION_1_FRAGMENT_FLAG_OFFSET                          0x00000004
826 #define RX_ATTENTION_1_FRAGMENT_FLAG_LSB                             13
827 #define RX_ATTENTION_1_FRAGMENT_FLAG_MASK                            0x00002000
828 
829 /* Description		RX_ATTENTION_1_ORDER
830 
831 			Set if the order bit in the frame control is set.  Only
832 			set when first_msdu is set.
833 */
834 #define RX_ATTENTION_1_ORDER_OFFSET                                  0x00000004
835 #define RX_ATTENTION_1_ORDER_LSB                                     14
836 #define RX_ATTENTION_1_ORDER_MASK                                    0x00004000
837 
838 /* Description		RX_ATTENTION_1_CCE_MATCH
839 
840 			Indicates that this status has a corresponding MSDU that
841 			requires FW processing.  The OLE will have classification
842 			ring mask registers which will indicate the ring(s) for
843 			packets and descriptors which need FW attention.
844 */
845 #define RX_ATTENTION_1_CCE_MATCH_OFFSET                              0x00000004
846 #define RX_ATTENTION_1_CCE_MATCH_LSB                                 15
847 #define RX_ATTENTION_1_CCE_MATCH_MASK                                0x00008000
848 
849 /* Description		RX_ATTENTION_1_OVERFLOW_ERR
850 
851 			RXPCU Receive FIFO ran out of space to receive the full
852 			MPDU. Therefor this MPDU is terminated early and is thus
853 			corrupted.
854 
855 
856 
857 			This MPDU will not be ACKed.
858 
859 			RXPCU might still be able to correctly receive the
860 			following MPDUs in the PPDU if enough fifo space became
861 			available in time
862 */
863 #define RX_ATTENTION_1_OVERFLOW_ERR_OFFSET                           0x00000004
864 #define RX_ATTENTION_1_OVERFLOW_ERR_LSB                              16
865 #define RX_ATTENTION_1_OVERFLOW_ERR_MASK                             0x00010000
866 
867 /* Description		RX_ATTENTION_1_MSDU_LENGTH_ERR
868 
869 			Indicates that the MSDU length from the 802.3
870 			encapsulated length field extends beyond the MPDU boundary
871 			or if the length is less than 14 bytes.
872 
873 			Merged with original other_msdu_err: Indicates that the
874 			MSDU threshold was exceeded and thus all the rest of the
875 			MSDUs will not be scattered and will not be decasulated but
876 			will be DMA'ed in RAW format as a single MSDU buffer
877 */
878 #define RX_ATTENTION_1_MSDU_LENGTH_ERR_OFFSET                        0x00000004
879 #define RX_ATTENTION_1_MSDU_LENGTH_ERR_LSB                           17
880 #define RX_ATTENTION_1_MSDU_LENGTH_ERR_MASK                          0x00020000
881 
882 /* Description		RX_ATTENTION_1_TCP_UDP_CHKSUM_FAIL
883 
884 			Indicates that the computed checksum (tcp_udp_chksum)
885 			did not match the checksum in the TCP/UDP header.
886 */
887 #define RX_ATTENTION_1_TCP_UDP_CHKSUM_FAIL_OFFSET                    0x00000004
888 #define RX_ATTENTION_1_TCP_UDP_CHKSUM_FAIL_LSB                       18
889 #define RX_ATTENTION_1_TCP_UDP_CHKSUM_FAIL_MASK                      0x00040000
890 
891 /* Description		RX_ATTENTION_1_IP_CHKSUM_FAIL
892 
893 			Indicates that the computed checksum did not match the
894 			checksum in the IP header.
895 */
896 #define RX_ATTENTION_1_IP_CHKSUM_FAIL_OFFSET                         0x00000004
897 #define RX_ATTENTION_1_IP_CHKSUM_FAIL_LSB                            19
898 #define RX_ATTENTION_1_IP_CHKSUM_FAIL_MASK                           0x00080000
899 
900 /* Description		RX_ATTENTION_1_SA_IDX_INVALID
901 
902 			Indicates no matching entry was found in the address
903 			search table for the source MAC address.
904 */
905 #define RX_ATTENTION_1_SA_IDX_INVALID_OFFSET                         0x00000004
906 #define RX_ATTENTION_1_SA_IDX_INVALID_LSB                            20
907 #define RX_ATTENTION_1_SA_IDX_INVALID_MASK                           0x00100000
908 
909 /* Description		RX_ATTENTION_1_DA_IDX_INVALID
910 
911 			Indicates no matching entry was found in the address
912 			search table for the destination MAC address.
913 */
914 #define RX_ATTENTION_1_DA_IDX_INVALID_OFFSET                         0x00000004
915 #define RX_ATTENTION_1_DA_IDX_INVALID_LSB                            21
916 #define RX_ATTENTION_1_DA_IDX_INVALID_MASK                           0x00200000
917 
918 /* Description		RX_ATTENTION_1_RESERVED_1B
919 
920 */
921 #define RX_ATTENTION_1_RESERVED_1B_OFFSET                            0x00000004
922 #define RX_ATTENTION_1_RESERVED_1B_LSB                               22
923 #define RX_ATTENTION_1_RESERVED_1B_MASK                              0x00400000
924 
925 /* Description		RX_ATTENTION_1_RX_IN_TX_DECRYPT_BYP
926 
927 			Indicates that RX packet is not decrypted as Crypto is
928 			busy with TX packet processing.
929 */
930 #define RX_ATTENTION_1_RX_IN_TX_DECRYPT_BYP_OFFSET                   0x00000004
931 #define RX_ATTENTION_1_RX_IN_TX_DECRYPT_BYP_LSB                      23
932 #define RX_ATTENTION_1_RX_IN_TX_DECRYPT_BYP_MASK                     0x00800000
933 
934 /* Description		RX_ATTENTION_1_ENCRYPT_REQUIRED
935 
936 			Indicates that this data type frame is not encrypted
937 			even if the policy for this MPDU requires encryption as
938 			indicated in the peer entry key type.
939 */
940 #define RX_ATTENTION_1_ENCRYPT_REQUIRED_OFFSET                       0x00000004
941 #define RX_ATTENTION_1_ENCRYPT_REQUIRED_LSB                          24
942 #define RX_ATTENTION_1_ENCRYPT_REQUIRED_MASK                         0x01000000
943 
944 /* Description		RX_ATTENTION_1_DIRECTED
945 
946 			MPDU is a directed packet which means that the RA
947 			matched our STA addresses.  In proxySTA it means that the TA
948 			matched an entry in our address search table with the
949 			corresponding no_ack bit is the address search entry
950 			cleared.
951 */
952 #define RX_ATTENTION_1_DIRECTED_OFFSET                               0x00000004
953 #define RX_ATTENTION_1_DIRECTED_LSB                                  25
954 #define RX_ATTENTION_1_DIRECTED_MASK                                 0x02000000
955 
956 /* Description		RX_ATTENTION_1_BUFFER_FRAGMENT
957 
958 			Indicates that at least one of the rx buffers has been
959 			fragmented.  If set the FW should look at the rx_frag_info
960 			descriptor described below.
961 */
962 #define RX_ATTENTION_1_BUFFER_FRAGMENT_OFFSET                        0x00000004
963 #define RX_ATTENTION_1_BUFFER_FRAGMENT_LSB                           26
964 #define RX_ATTENTION_1_BUFFER_FRAGMENT_MASK                          0x04000000
965 
966 /* Description		RX_ATTENTION_1_MPDU_LENGTH_ERR
967 
968 			Indicates that the MPDU was pre-maturely terminated
969 			resulting in a truncated MPDU.  Don't trust the MPDU length
970 			field.
971 */
972 #define RX_ATTENTION_1_MPDU_LENGTH_ERR_OFFSET                        0x00000004
973 #define RX_ATTENTION_1_MPDU_LENGTH_ERR_LSB                           27
974 #define RX_ATTENTION_1_MPDU_LENGTH_ERR_MASK                          0x08000000
975 
976 /* Description		RX_ATTENTION_1_TKIP_MIC_ERR
977 
978 			Indicates that the MPDU Michael integrity check failed
979 */
980 #define RX_ATTENTION_1_TKIP_MIC_ERR_OFFSET                           0x00000004
981 #define RX_ATTENTION_1_TKIP_MIC_ERR_LSB                              28
982 #define RX_ATTENTION_1_TKIP_MIC_ERR_MASK                             0x10000000
983 
984 /* Description		RX_ATTENTION_1_DECRYPT_ERR
985 
986 			Indicates that the MPDU decrypt integrity check failed
987 			or CRYPTO received an encrypted frame, but did not get a
988 			valid corresponding key id in the peer entry.
989 */
990 #define RX_ATTENTION_1_DECRYPT_ERR_OFFSET                            0x00000004
991 #define RX_ATTENTION_1_DECRYPT_ERR_LSB                               29
992 #define RX_ATTENTION_1_DECRYPT_ERR_MASK                              0x20000000
993 
994 /* Description		RX_ATTENTION_1_UNENCRYPTED_FRAME_ERR
995 
996 			Copied here by RX OLE from the RX_MPDU_END TLV
997 */
998 #define RX_ATTENTION_1_UNENCRYPTED_FRAME_ERR_OFFSET                  0x00000004
999 #define RX_ATTENTION_1_UNENCRYPTED_FRAME_ERR_LSB                     30
1000 #define RX_ATTENTION_1_UNENCRYPTED_FRAME_ERR_MASK                    0x40000000
1001 
1002 /* Description		RX_ATTENTION_1_FCS_ERR
1003 
1004 			Indicates that the MPDU FCS check failed
1005 */
1006 #define RX_ATTENTION_1_FCS_ERR_OFFSET                                0x00000004
1007 #define RX_ATTENTION_1_FCS_ERR_LSB                                   31
1008 #define RX_ATTENTION_1_FCS_ERR_MASK                                  0x80000000
1009 
1010 /* Description		RX_ATTENTION_2_FLOW_IDX_TIMEOUT
1011 
1012 			Indicates an unsuccessful flow search due to the
1013 			expiring of the search timer.
1014 
1015 			<legal all>
1016 */
1017 #define RX_ATTENTION_2_FLOW_IDX_TIMEOUT_OFFSET                       0x00000008
1018 #define RX_ATTENTION_2_FLOW_IDX_TIMEOUT_LSB                          0
1019 #define RX_ATTENTION_2_FLOW_IDX_TIMEOUT_MASK                         0x00000001
1020 
1021 /* Description		RX_ATTENTION_2_FLOW_IDX_INVALID
1022 
1023 			flow id is not valid
1024 
1025 			<legal all>
1026 */
1027 #define RX_ATTENTION_2_FLOW_IDX_INVALID_OFFSET                       0x00000008
1028 #define RX_ATTENTION_2_FLOW_IDX_INVALID_LSB                          1
1029 #define RX_ATTENTION_2_FLOW_IDX_INVALID_MASK                         0x00000002
1030 
1031 /* Description		RX_ATTENTION_2_WIFI_PARSER_ERROR
1032 
1033 			Indicates that the WiFi frame has one of the following
1034 			errors
1035 
1036 			o has less than minimum allowed bytes as per standard
1037 
1038 			o has incomplete VLAN LLC/SNAP (only for non A-MSDUs)
1039 
1040 			<legal all>
1041 */
1042 #define RX_ATTENTION_2_WIFI_PARSER_ERROR_OFFSET                      0x00000008
1043 #define RX_ATTENTION_2_WIFI_PARSER_ERROR_LSB                         2
1044 #define RX_ATTENTION_2_WIFI_PARSER_ERROR_MASK                        0x00000004
1045 
1046 /* Description		RX_ATTENTION_2_AMSDU_PARSER_ERROR
1047 
1048 			A-MSDU could not be properly de-agregated.
1049 
1050 			<legal all>
1051 */
1052 #define RX_ATTENTION_2_AMSDU_PARSER_ERROR_OFFSET                     0x00000008
1053 #define RX_ATTENTION_2_AMSDU_PARSER_ERROR_LSB                        3
1054 #define RX_ATTENTION_2_AMSDU_PARSER_ERROR_MASK                       0x00000008
1055 
1056 /* Description		RX_ATTENTION_2_SA_IDX_TIMEOUT
1057 
1058 			Indicates an unsuccessful MAC source address search due
1059 			to the expiring of the search timer.
1060 */
1061 #define RX_ATTENTION_2_SA_IDX_TIMEOUT_OFFSET                         0x00000008
1062 #define RX_ATTENTION_2_SA_IDX_TIMEOUT_LSB                            4
1063 #define RX_ATTENTION_2_SA_IDX_TIMEOUT_MASK                           0x00000010
1064 
1065 /* Description		RX_ATTENTION_2_DA_IDX_TIMEOUT
1066 
1067 			Indicates an unsuccessful MAC destination address search
1068 			due to the expiring of the search timer.
1069 */
1070 #define RX_ATTENTION_2_DA_IDX_TIMEOUT_OFFSET                         0x00000008
1071 #define RX_ATTENTION_2_DA_IDX_TIMEOUT_LSB                            5
1072 #define RX_ATTENTION_2_DA_IDX_TIMEOUT_MASK                           0x00000020
1073 
1074 /* Description		RX_ATTENTION_2_MSDU_LIMIT_ERROR
1075 
1076 			Indicates that the MSDU threshold was exceeded and thus
1077 			all the rest of the MSDUs will not be scattered and will not
1078 			be decasulated but will be DMA'ed in RAW format as a single
1079 			MSDU buffer
1080 */
1081 #define RX_ATTENTION_2_MSDU_LIMIT_ERROR_OFFSET                       0x00000008
1082 #define RX_ATTENTION_2_MSDU_LIMIT_ERROR_LSB                          6
1083 #define RX_ATTENTION_2_MSDU_LIMIT_ERROR_MASK                         0x00000040
1084 
1085 /* Description		RX_ATTENTION_2_DA_IS_VALID
1086 
1087 			Indicates that OLE found a valid DA entry
1088 */
1089 #define RX_ATTENTION_2_DA_IS_VALID_OFFSET                            0x00000008
1090 #define RX_ATTENTION_2_DA_IS_VALID_LSB                               7
1091 #define RX_ATTENTION_2_DA_IS_VALID_MASK                              0x00000080
1092 
1093 /* Description		RX_ATTENTION_2_DA_IS_MCBC
1094 
1095 			Field Only valid if da_is_valid is set
1096 
1097 
1098 
1099 			Indicates the DA address was a Multicast of Broadcast
1100 			address.
1101 */
1102 #define RX_ATTENTION_2_DA_IS_MCBC_OFFSET                             0x00000008
1103 #define RX_ATTENTION_2_DA_IS_MCBC_LSB                                8
1104 #define RX_ATTENTION_2_DA_IS_MCBC_MASK                               0x00000100
1105 
1106 /* Description		RX_ATTENTION_2_SA_IS_VALID
1107 
1108 			Indicates that OLE found a valid SA entry
1109 */
1110 #define RX_ATTENTION_2_SA_IS_VALID_OFFSET                            0x00000008
1111 #define RX_ATTENTION_2_SA_IS_VALID_LSB                               9
1112 #define RX_ATTENTION_2_SA_IS_VALID_MASK                              0x00000200
1113 
1114 /* Description		RX_ATTENTION_2_DECRYPT_STATUS_CODE
1115 
1116 			Field provides insight into the decryption performed
1117 
1118 
1119 
1120 			<enum 0 decrypt_ok> Frame had protection enabled and
1121 			decrypted properly
1122 
1123 			<enum 1 decrypt_unprotected_frame > Frame is unprotected
1124 			and hence bypassed
1125 
1126 			<enum 2 decrypt_data_err > Frame has protection enabled
1127 			and could not be properly decrypted due to MIC/ICV mismatch
1128 			etc.
1129 
1130 			<enum 3 decrypt_key_invalid > Frame has protection
1131 			enabled but the key that was required to decrypt this frame
1132 			was not valid
1133 
1134 			<enum 4 decrypt_peer_entry_invalid > Frame has
1135 			protection enabled but the key that was required to decrypt
1136 			this frame was not valid
1137 
1138 			<enum 5 decrypt_other > Reserved for other indications
1139 
1140 
1141 
1142 			<legal 0 - 5>
1143 */
1144 #define RX_ATTENTION_2_DECRYPT_STATUS_CODE_OFFSET                    0x00000008
1145 #define RX_ATTENTION_2_DECRYPT_STATUS_CODE_LSB                       10
1146 #define RX_ATTENTION_2_DECRYPT_STATUS_CODE_MASK                      0x00001c00
1147 
1148 /* Description		RX_ATTENTION_2_RX_BITMAP_NOT_UPDATED
1149 
1150 			Frame is received, but RXPCU could not update the
1151 			receive bitmap due to (temporary) fifo contraints.
1152 
1153 			<legal all>
1154 */
1155 #define RX_ATTENTION_2_RX_BITMAP_NOT_UPDATED_OFFSET                  0x00000008
1156 #define RX_ATTENTION_2_RX_BITMAP_NOT_UPDATED_LSB                     13
1157 #define RX_ATTENTION_2_RX_BITMAP_NOT_UPDATED_MASK                    0x00002000
1158 
1159 /* Description		RX_ATTENTION_2_RESERVED_2
1160 
1161 			<legal 0>
1162 */
1163 #define RX_ATTENTION_2_RESERVED_2_OFFSET                             0x00000008
1164 #define RX_ATTENTION_2_RESERVED_2_LSB                                14
1165 #define RX_ATTENTION_2_RESERVED_2_MASK                               0x7fffc000
1166 
1167 /* Description		RX_ATTENTION_2_MSDU_DONE
1168 
1169 			If set indicates that the RX packet data, RX header
1170 			data, RX PPDU start descriptor, RX MPDU start/end
1171 			descriptor, RX MSDU start/end descriptors and RX Attention
1172 			descriptor are all valid.  This bit must be in the last
1173 			octet of the descriptor.
1174 */
1175 #define RX_ATTENTION_2_MSDU_DONE_OFFSET                              0x00000008
1176 #define RX_ATTENTION_2_MSDU_DONE_LSB                                 31
1177 #define RX_ATTENTION_2_MSDU_DONE_MASK                                0x80000000
1178 
1179 
1180 #endif // _RX_ATTENTION_H_
1181