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