/* * Copyright (c) 2018 The Linux Foundation. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the * above copyright notice and this permission notice appear in all * copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ #ifndef _RX_ATTENTION_H_ #define _RX_ATTENTION_H_ #if !defined(__ASSEMBLER__) #endif // ################ START SUMMARY ################# // // Dword Fields // 0 rxpcu_mpdu_filter_in_category[1:0], sw_frame_group_id[8:2], reserved_0[15:9], phy_ppdu_id[31:16] // 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] // 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] // // ################ END SUMMARY ################# #define NUM_OF_DWORDS_RX_ATTENTION 3 struct rx_attention { uint32_t rxpcu_mpdu_filter_in_category : 2, //[1:0] sw_frame_group_id : 7, //[8:2] reserved_0 : 7, //[15:9] phy_ppdu_id : 16; //[31:16] uint32_t first_mpdu : 1, //[0] reserved_1a : 1, //[1] mcast_bcast : 1, //[2] ast_index_not_found : 1, //[3] ast_index_timeout : 1, //[4] power_mgmt : 1, //[5] non_qos : 1, //[6] null_data : 1, //[7] mgmt_type : 1, //[8] ctrl_type : 1, //[9] more_data : 1, //[10] eosp : 1, //[11] a_msdu_error : 1, //[12] fragment_flag : 1, //[13] order : 1, //[14] cce_match : 1, //[15] overflow_err : 1, //[16] msdu_length_err : 1, //[17] tcp_udp_chksum_fail : 1, //[18] ip_chksum_fail : 1, //[19] sa_idx_invalid : 1, //[20] da_idx_invalid : 1, //[21] reserved_1b : 1, //[22] rx_in_tx_decrypt_byp : 1, //[23] encrypt_required : 1, //[24] directed : 1, //[25] buffer_fragment : 1, //[26] mpdu_length_err : 1, //[27] tkip_mic_err : 1, //[28] decrypt_err : 1, //[29] unencrypted_frame_err : 1, //[30] fcs_err : 1; //[31] uint32_t flow_idx_timeout : 1, //[0] flow_idx_invalid : 1, //[1] wifi_parser_error : 1, //[2] amsdu_parser_error : 1, //[3] sa_idx_timeout : 1, //[4] da_idx_timeout : 1, //[5] msdu_limit_error : 1, //[6] da_is_valid : 1, //[7] da_is_mcbc : 1, //[8] sa_is_valid : 1, //[9] decrypt_status_code : 3, //[12:10] rx_bitmap_not_updated : 1, //[13] reserved_2 : 17, //[30:14] msdu_done : 1; //[31] }; /* rxpcu_mpdu_filter_in_category Field indicates what the reason was that this MPDU frame was allowed to come into the receive path by RXPCU This MPDU passed the normal frame filter programming of rxpcu This MPDU did NOT pass the regular frame filter and would have been dropped, were it not for the frame fitting into the 'monitor_client' category. This MPDU did NOT pass the regular frame filter and also did not pass the rxpcu_monitor_client filter. It would have been dropped accept that it did pass the 'monitor_other' category. sw_frame_group_id SW processes frames based on certain classifications. This field indicates to what sw classification this MPDU is mapped. The classification is given in priority order This includes mpdus of type Data Null as well as QoS Data Null This covers type 3 and protocol version != 0 reserved_0 phy_ppdu_id A ppdu counter value that PHY increments for every PPDU received. The counter value wraps around first_mpdu Indicates the first MSDU of the PPDU. If both first_mpdu and last_mpdu are set in the MSDU then this is a not an A-MPDU frame but a stand alone MPDU. Interior MPDU in an A-MPDU shall have both first_mpdu and last_mpdu bits set to 0. The PPDU start status will only be valid when this bit is set. reserved_1a mcast_bcast Multicast / broadcast indicator. Only set when the MAC address 1 bit 0 is set indicating mcast/bcast and the BSSID matches one of the 4 BSSID registers. Only set when first_msdu is set. ast_index_not_found Only valid when first_msdu is set. Indicates no AST matching entries within the the max search count. ast_index_timeout Only valid when first_msdu is set. Indicates an unsuccessful search in the address seach table due to timeout. power_mgmt Power management bit set in the 802.11 header. Only set when first_msdu is set. non_qos Set if packet is not a non-QoS data frame. Only set when first_msdu is set. null_data Set if frame type indicates either null data or QoS null data format. Only set when first_msdu is set. mgmt_type Set if packet is a management packet. Only set when first_msdu is set. ctrl_type Set if packet is a control packet. Only set when first_msdu is set. more_data Set if more bit in frame control is set. Only set when first_msdu is set. eosp Set if the EOSP (end of service period) bit in the QoS control field is set. Only set when first_msdu is set. a_msdu_error Set if number of MSDUs in A-MSDU is above a threshold or if the size of the MSDU is invalid. This receive buffer will contain all of the remainder of the MSDUs in this MPDU without decapsulation. fragment_flag Indicates that this is an 802.11 fragment frame. This is set when either the more_frag bit is set in the frame control or the fragment number is not zero. Only set when first_msdu is set. order Set if the order bit in the frame control is set. Only set when first_msdu is set. cce_match Indicates that this status has a corresponding MSDU that requires FW processing. The OLE will have classification ring mask registers which will indicate the ring(s) for packets and descriptors which need FW attention. overflow_err RXPCU Receive FIFO ran out of space to receive the full MPDU. Therefor this MPDU is terminated early and is thus corrupted. This MPDU will not be ACKed. RXPCU might still be able to correctly receive the following MPDUs in the PPDU if enough fifo space became available in time msdu_length_err Indicates that the MSDU length from the 802.3 encapsulated length field extends beyond the MPDU boundary or if the length is less than 14 bytes. Merged with original other_msdu_err: Indicates that the MSDU threshold was exceeded and thus all the rest of the MSDUs will not be scattered and will not be decasulated but will be DMA'ed in RAW format as a single MSDU buffer tcp_udp_chksum_fail Indicates that the computed checksum (tcp_udp_chksum) did not match the checksum in the TCP/UDP header. ip_chksum_fail Indicates that the computed checksum did not match the checksum in the IP header. sa_idx_invalid Indicates no matching entry was found in the address search table for the source MAC address. da_idx_invalid Indicates no matching entry was found in the address search table for the destination MAC address. reserved_1b rx_in_tx_decrypt_byp Indicates that RX packet is not decrypted as Crypto is busy with TX packet processing. encrypt_required Indicates that this data type frame is not encrypted even if the policy for this MPDU requires encryption as indicated in the peer entry key type. directed MPDU is a directed packet which means that the RA matched our STA addresses. In proxySTA it means that the TA matched an entry in our address search table with the corresponding no_ack bit is the address search entry cleared. buffer_fragment Indicates that at least one of the rx buffers has been fragmented. If set the FW should look at the rx_frag_info descriptor described below. mpdu_length_err Indicates that the MPDU was pre-maturely terminated resulting in a truncated MPDU. Don't trust the MPDU length field. tkip_mic_err Indicates that the MPDU Michael integrity check failed decrypt_err Indicates that the MPDU decrypt integrity check failed or CRYPTO received an encrypted frame, but did not get a valid corresponding key id in the peer entry. unencrypted_frame_err Copied here by RX OLE from the RX_MPDU_END TLV fcs_err Indicates that the MPDU FCS check failed flow_idx_timeout Indicates an unsuccessful flow search due to the expiring of the search timer. flow_idx_invalid flow id is not valid wifi_parser_error Indicates that the WiFi frame has one of the following errors o has less than minimum allowed bytes as per standard o has incomplete VLAN LLC/SNAP (only for non A-MSDUs) amsdu_parser_error A-MSDU could not be properly de-agregated. sa_idx_timeout Indicates an unsuccessful MAC source address search due to the expiring of the search timer. da_idx_timeout Indicates an unsuccessful MAC destination address search due to the expiring of the search timer. msdu_limit_error Indicates that the MSDU threshold was exceeded and thus all the rest of the MSDUs will not be scattered and will not be decasulated but will be DMA'ed in RAW format as a single MSDU buffer da_is_valid Indicates that OLE found a valid DA entry da_is_mcbc Field Only valid if da_is_valid is set Indicates the DA address was a Multicast of Broadcast address. sa_is_valid Indicates that OLE found a valid SA entry decrypt_status_code Field provides insight into the decryption performed Frame had protection enabled and decrypted properly Frame is unprotected and hence bypassed Frame has protection enabled and could not be properly decrypted due to MIC/ICV mismatch etc. Frame has protection enabled but the key that was required to decrypt this frame was not valid Frame has protection enabled but the key that was required to decrypt this frame was not valid Reserved for other indications rx_bitmap_not_updated Frame is received, but RXPCU could not update the receive bitmap due to (temporary) fifo contraints. reserved_2 msdu_done If set indicates that the RX packet data, RX header data, RX PPDU start descriptor, RX MPDU start/end descriptor, RX MSDU start/end descriptors and RX Attention descriptor are all valid. This bit must be in the last octet of the descriptor. */ /* Description RX_ATTENTION_0_RXPCU_MPDU_FILTER_IN_CATEGORY Field indicates what the reason was that this MPDU frame was allowed to come into the receive path by RXPCU This MPDU passed the normal frame filter programming of rxpcu This MPDU did NOT pass the regular frame filter and would have been dropped, were it not for the frame fitting into the 'monitor_client' category. This MPDU did NOT pass the regular frame filter and also did not pass the rxpcu_monitor_client filter. It would have been dropped accept that it did pass the 'monitor_other' category. */ #define RX_ATTENTION_0_RXPCU_MPDU_FILTER_IN_CATEGORY_OFFSET 0x00000000 #define RX_ATTENTION_0_RXPCU_MPDU_FILTER_IN_CATEGORY_LSB 0 #define RX_ATTENTION_0_RXPCU_MPDU_FILTER_IN_CATEGORY_MASK 0x00000003 /* Description RX_ATTENTION_0_SW_FRAME_GROUP_ID SW processes frames based on certain classifications. This field indicates to what sw classification this MPDU is mapped. The classification is given in priority order This includes mpdus of type Data Null as well as QoS Data Null This covers type 3 and protocol version != 0 */ #define RX_ATTENTION_0_SW_FRAME_GROUP_ID_OFFSET 0x00000000 #define RX_ATTENTION_0_SW_FRAME_GROUP_ID_LSB 2 #define RX_ATTENTION_0_SW_FRAME_GROUP_ID_MASK 0x000001fc /* Description RX_ATTENTION_0_RESERVED_0 */ #define RX_ATTENTION_0_RESERVED_0_OFFSET 0x00000000 #define RX_ATTENTION_0_RESERVED_0_LSB 9 #define RX_ATTENTION_0_RESERVED_0_MASK 0x0000fe00 /* Description RX_ATTENTION_0_PHY_PPDU_ID A ppdu counter value that PHY increments for every PPDU received. The counter value wraps around */ #define RX_ATTENTION_0_PHY_PPDU_ID_OFFSET 0x00000000 #define RX_ATTENTION_0_PHY_PPDU_ID_LSB 16 #define RX_ATTENTION_0_PHY_PPDU_ID_MASK 0xffff0000 /* Description RX_ATTENTION_1_FIRST_MPDU Indicates the first MSDU of the PPDU. If both first_mpdu and last_mpdu are set in the MSDU then this is a not an A-MPDU frame but a stand alone MPDU. Interior MPDU in an A-MPDU shall have both first_mpdu and last_mpdu bits set to 0. The PPDU start status will only be valid when this bit is set. */ #define RX_ATTENTION_1_FIRST_MPDU_OFFSET 0x00000004 #define RX_ATTENTION_1_FIRST_MPDU_LSB 0 #define RX_ATTENTION_1_FIRST_MPDU_MASK 0x00000001 /* Description RX_ATTENTION_1_RESERVED_1A */ #define RX_ATTENTION_1_RESERVED_1A_OFFSET 0x00000004 #define RX_ATTENTION_1_RESERVED_1A_LSB 1 #define RX_ATTENTION_1_RESERVED_1A_MASK 0x00000002 /* Description RX_ATTENTION_1_MCAST_BCAST Multicast / broadcast indicator. Only set when the MAC address 1 bit 0 is set indicating mcast/bcast and the BSSID matches one of the 4 BSSID registers. Only set when first_msdu is set. */ #define RX_ATTENTION_1_MCAST_BCAST_OFFSET 0x00000004 #define RX_ATTENTION_1_MCAST_BCAST_LSB 2 #define RX_ATTENTION_1_MCAST_BCAST_MASK 0x00000004 /* Description RX_ATTENTION_1_AST_INDEX_NOT_FOUND Only valid when first_msdu is set. Indicates no AST matching entries within the the max search count. */ #define RX_ATTENTION_1_AST_INDEX_NOT_FOUND_OFFSET 0x00000004 #define RX_ATTENTION_1_AST_INDEX_NOT_FOUND_LSB 3 #define RX_ATTENTION_1_AST_INDEX_NOT_FOUND_MASK 0x00000008 /* Description RX_ATTENTION_1_AST_INDEX_TIMEOUT Only valid when first_msdu is set. Indicates an unsuccessful search in the address seach table due to timeout. */ #define RX_ATTENTION_1_AST_INDEX_TIMEOUT_OFFSET 0x00000004 #define RX_ATTENTION_1_AST_INDEX_TIMEOUT_LSB 4 #define RX_ATTENTION_1_AST_INDEX_TIMEOUT_MASK 0x00000010 /* Description RX_ATTENTION_1_POWER_MGMT Power management bit set in the 802.11 header. Only set when first_msdu is set. */ #define RX_ATTENTION_1_POWER_MGMT_OFFSET 0x00000004 #define RX_ATTENTION_1_POWER_MGMT_LSB 5 #define RX_ATTENTION_1_POWER_MGMT_MASK 0x00000020 /* Description RX_ATTENTION_1_NON_QOS Set if packet is not a non-QoS data frame. Only set when first_msdu is set. */ #define RX_ATTENTION_1_NON_QOS_OFFSET 0x00000004 #define RX_ATTENTION_1_NON_QOS_LSB 6 #define RX_ATTENTION_1_NON_QOS_MASK 0x00000040 /* Description RX_ATTENTION_1_NULL_DATA Set if frame type indicates either null data or QoS null data format. Only set when first_msdu is set. */ #define RX_ATTENTION_1_NULL_DATA_OFFSET 0x00000004 #define RX_ATTENTION_1_NULL_DATA_LSB 7 #define RX_ATTENTION_1_NULL_DATA_MASK 0x00000080 /* Description RX_ATTENTION_1_MGMT_TYPE Set if packet is a management packet. Only set when first_msdu is set. */ #define RX_ATTENTION_1_MGMT_TYPE_OFFSET 0x00000004 #define RX_ATTENTION_1_MGMT_TYPE_LSB 8 #define RX_ATTENTION_1_MGMT_TYPE_MASK 0x00000100 /* Description RX_ATTENTION_1_CTRL_TYPE Set if packet is a control packet. Only set when first_msdu is set. */ #define RX_ATTENTION_1_CTRL_TYPE_OFFSET 0x00000004 #define RX_ATTENTION_1_CTRL_TYPE_LSB 9 #define RX_ATTENTION_1_CTRL_TYPE_MASK 0x00000200 /* Description RX_ATTENTION_1_MORE_DATA Set if more bit in frame control is set. Only set when first_msdu is set. */ #define RX_ATTENTION_1_MORE_DATA_OFFSET 0x00000004 #define RX_ATTENTION_1_MORE_DATA_LSB 10 #define RX_ATTENTION_1_MORE_DATA_MASK 0x00000400 /* Description RX_ATTENTION_1_EOSP Set if the EOSP (end of service period) bit in the QoS control field is set. Only set when first_msdu is set. */ #define RX_ATTENTION_1_EOSP_OFFSET 0x00000004 #define RX_ATTENTION_1_EOSP_LSB 11 #define RX_ATTENTION_1_EOSP_MASK 0x00000800 /* Description RX_ATTENTION_1_A_MSDU_ERROR Set if number of MSDUs in A-MSDU is above a threshold or if the size of the MSDU is invalid. This receive buffer will contain all of the remainder of the MSDUs in this MPDU without decapsulation. */ #define RX_ATTENTION_1_A_MSDU_ERROR_OFFSET 0x00000004 #define RX_ATTENTION_1_A_MSDU_ERROR_LSB 12 #define RX_ATTENTION_1_A_MSDU_ERROR_MASK 0x00001000 /* Description RX_ATTENTION_1_FRAGMENT_FLAG Indicates that this is an 802.11 fragment frame. This is set when either the more_frag bit is set in the frame control or the fragment number is not zero. Only set when first_msdu is set. */ #define RX_ATTENTION_1_FRAGMENT_FLAG_OFFSET 0x00000004 #define RX_ATTENTION_1_FRAGMENT_FLAG_LSB 13 #define RX_ATTENTION_1_FRAGMENT_FLAG_MASK 0x00002000 /* Description RX_ATTENTION_1_ORDER Set if the order bit in the frame control is set. Only set when first_msdu is set. */ #define RX_ATTENTION_1_ORDER_OFFSET 0x00000004 #define RX_ATTENTION_1_ORDER_LSB 14 #define RX_ATTENTION_1_ORDER_MASK 0x00004000 /* Description RX_ATTENTION_1_CCE_MATCH Indicates that this status has a corresponding MSDU that requires FW processing. The OLE will have classification ring mask registers which will indicate the ring(s) for packets and descriptors which need FW attention. */ #define RX_ATTENTION_1_CCE_MATCH_OFFSET 0x00000004 #define RX_ATTENTION_1_CCE_MATCH_LSB 15 #define RX_ATTENTION_1_CCE_MATCH_MASK 0x00008000 /* Description RX_ATTENTION_1_OVERFLOW_ERR RXPCU Receive FIFO ran out of space to receive the full MPDU. Therefor this MPDU is terminated early and is thus corrupted. This MPDU will not be ACKed. RXPCU might still be able to correctly receive the following MPDUs in the PPDU if enough fifo space became available in time */ #define RX_ATTENTION_1_OVERFLOW_ERR_OFFSET 0x00000004 #define RX_ATTENTION_1_OVERFLOW_ERR_LSB 16 #define RX_ATTENTION_1_OVERFLOW_ERR_MASK 0x00010000 /* Description RX_ATTENTION_1_MSDU_LENGTH_ERR Indicates that the MSDU length from the 802.3 encapsulated length field extends beyond the MPDU boundary or if the length is less than 14 bytes. Merged with original other_msdu_err: Indicates that the MSDU threshold was exceeded and thus all the rest of the MSDUs will not be scattered and will not be decasulated but will be DMA'ed in RAW format as a single MSDU buffer */ #define RX_ATTENTION_1_MSDU_LENGTH_ERR_OFFSET 0x00000004 #define RX_ATTENTION_1_MSDU_LENGTH_ERR_LSB 17 #define RX_ATTENTION_1_MSDU_LENGTH_ERR_MASK 0x00020000 /* Description RX_ATTENTION_1_TCP_UDP_CHKSUM_FAIL Indicates that the computed checksum (tcp_udp_chksum) did not match the checksum in the TCP/UDP header. */ #define RX_ATTENTION_1_TCP_UDP_CHKSUM_FAIL_OFFSET 0x00000004 #define RX_ATTENTION_1_TCP_UDP_CHKSUM_FAIL_LSB 18 #define RX_ATTENTION_1_TCP_UDP_CHKSUM_FAIL_MASK 0x00040000 /* Description RX_ATTENTION_1_IP_CHKSUM_FAIL Indicates that the computed checksum did not match the checksum in the IP header. */ #define RX_ATTENTION_1_IP_CHKSUM_FAIL_OFFSET 0x00000004 #define RX_ATTENTION_1_IP_CHKSUM_FAIL_LSB 19 #define RX_ATTENTION_1_IP_CHKSUM_FAIL_MASK 0x00080000 /* Description RX_ATTENTION_1_SA_IDX_INVALID Indicates no matching entry was found in the address search table for the source MAC address. */ #define RX_ATTENTION_1_SA_IDX_INVALID_OFFSET 0x00000004 #define RX_ATTENTION_1_SA_IDX_INVALID_LSB 20 #define RX_ATTENTION_1_SA_IDX_INVALID_MASK 0x00100000 /* Description RX_ATTENTION_1_DA_IDX_INVALID Indicates no matching entry was found in the address search table for the destination MAC address. */ #define RX_ATTENTION_1_DA_IDX_INVALID_OFFSET 0x00000004 #define RX_ATTENTION_1_DA_IDX_INVALID_LSB 21 #define RX_ATTENTION_1_DA_IDX_INVALID_MASK 0x00200000 /* Description RX_ATTENTION_1_RESERVED_1B */ #define RX_ATTENTION_1_RESERVED_1B_OFFSET 0x00000004 #define RX_ATTENTION_1_RESERVED_1B_LSB 22 #define RX_ATTENTION_1_RESERVED_1B_MASK 0x00400000 /* Description RX_ATTENTION_1_RX_IN_TX_DECRYPT_BYP Indicates that RX packet is not decrypted as Crypto is busy with TX packet processing. */ #define RX_ATTENTION_1_RX_IN_TX_DECRYPT_BYP_OFFSET 0x00000004 #define RX_ATTENTION_1_RX_IN_TX_DECRYPT_BYP_LSB 23 #define RX_ATTENTION_1_RX_IN_TX_DECRYPT_BYP_MASK 0x00800000 /* Description RX_ATTENTION_1_ENCRYPT_REQUIRED Indicates that this data type frame is not encrypted even if the policy for this MPDU requires encryption as indicated in the peer entry key type. */ #define RX_ATTENTION_1_ENCRYPT_REQUIRED_OFFSET 0x00000004 #define RX_ATTENTION_1_ENCRYPT_REQUIRED_LSB 24 #define RX_ATTENTION_1_ENCRYPT_REQUIRED_MASK 0x01000000 /* Description RX_ATTENTION_1_DIRECTED MPDU is a directed packet which means that the RA matched our STA addresses. In proxySTA it means that the TA matched an entry in our address search table with the corresponding no_ack bit is the address search entry cleared. */ #define RX_ATTENTION_1_DIRECTED_OFFSET 0x00000004 #define RX_ATTENTION_1_DIRECTED_LSB 25 #define RX_ATTENTION_1_DIRECTED_MASK 0x02000000 /* Description RX_ATTENTION_1_BUFFER_FRAGMENT Indicates that at least one of the rx buffers has been fragmented. If set the FW should look at the rx_frag_info descriptor described below. */ #define RX_ATTENTION_1_BUFFER_FRAGMENT_OFFSET 0x00000004 #define RX_ATTENTION_1_BUFFER_FRAGMENT_LSB 26 #define RX_ATTENTION_1_BUFFER_FRAGMENT_MASK 0x04000000 /* Description RX_ATTENTION_1_MPDU_LENGTH_ERR Indicates that the MPDU was pre-maturely terminated resulting in a truncated MPDU. Don't trust the MPDU length field. */ #define RX_ATTENTION_1_MPDU_LENGTH_ERR_OFFSET 0x00000004 #define RX_ATTENTION_1_MPDU_LENGTH_ERR_LSB 27 #define RX_ATTENTION_1_MPDU_LENGTH_ERR_MASK 0x08000000 /* Description RX_ATTENTION_1_TKIP_MIC_ERR Indicates that the MPDU Michael integrity check failed */ #define RX_ATTENTION_1_TKIP_MIC_ERR_OFFSET 0x00000004 #define RX_ATTENTION_1_TKIP_MIC_ERR_LSB 28 #define RX_ATTENTION_1_TKIP_MIC_ERR_MASK 0x10000000 /* Description RX_ATTENTION_1_DECRYPT_ERR Indicates that the MPDU decrypt integrity check failed or CRYPTO received an encrypted frame, but did not get a valid corresponding key id in the peer entry. */ #define RX_ATTENTION_1_DECRYPT_ERR_OFFSET 0x00000004 #define RX_ATTENTION_1_DECRYPT_ERR_LSB 29 #define RX_ATTENTION_1_DECRYPT_ERR_MASK 0x20000000 /* Description RX_ATTENTION_1_UNENCRYPTED_FRAME_ERR Copied here by RX OLE from the RX_MPDU_END TLV */ #define RX_ATTENTION_1_UNENCRYPTED_FRAME_ERR_OFFSET 0x00000004 #define RX_ATTENTION_1_UNENCRYPTED_FRAME_ERR_LSB 30 #define RX_ATTENTION_1_UNENCRYPTED_FRAME_ERR_MASK 0x40000000 /* Description RX_ATTENTION_1_FCS_ERR Indicates that the MPDU FCS check failed */ #define RX_ATTENTION_1_FCS_ERR_OFFSET 0x00000004 #define RX_ATTENTION_1_FCS_ERR_LSB 31 #define RX_ATTENTION_1_FCS_ERR_MASK 0x80000000 /* Description RX_ATTENTION_2_FLOW_IDX_TIMEOUT Indicates an unsuccessful flow search due to the expiring of the search timer. */ #define RX_ATTENTION_2_FLOW_IDX_TIMEOUT_OFFSET 0x00000008 #define RX_ATTENTION_2_FLOW_IDX_TIMEOUT_LSB 0 #define RX_ATTENTION_2_FLOW_IDX_TIMEOUT_MASK 0x00000001 /* Description RX_ATTENTION_2_FLOW_IDX_INVALID flow id is not valid */ #define RX_ATTENTION_2_FLOW_IDX_INVALID_OFFSET 0x00000008 #define RX_ATTENTION_2_FLOW_IDX_INVALID_LSB 1 #define RX_ATTENTION_2_FLOW_IDX_INVALID_MASK 0x00000002 /* Description RX_ATTENTION_2_WIFI_PARSER_ERROR Indicates that the WiFi frame has one of the following errors o has less than minimum allowed bytes as per standard o has incomplete VLAN LLC/SNAP (only for non A-MSDUs) */ #define RX_ATTENTION_2_WIFI_PARSER_ERROR_OFFSET 0x00000008 #define RX_ATTENTION_2_WIFI_PARSER_ERROR_LSB 2 #define RX_ATTENTION_2_WIFI_PARSER_ERROR_MASK 0x00000004 /* Description RX_ATTENTION_2_AMSDU_PARSER_ERROR A-MSDU could not be properly de-agregated. */ #define RX_ATTENTION_2_AMSDU_PARSER_ERROR_OFFSET 0x00000008 #define RX_ATTENTION_2_AMSDU_PARSER_ERROR_LSB 3 #define RX_ATTENTION_2_AMSDU_PARSER_ERROR_MASK 0x00000008 /* Description RX_ATTENTION_2_SA_IDX_TIMEOUT Indicates an unsuccessful MAC source address search due to the expiring of the search timer. */ #define RX_ATTENTION_2_SA_IDX_TIMEOUT_OFFSET 0x00000008 #define RX_ATTENTION_2_SA_IDX_TIMEOUT_LSB 4 #define RX_ATTENTION_2_SA_IDX_TIMEOUT_MASK 0x00000010 /* Description RX_ATTENTION_2_DA_IDX_TIMEOUT Indicates an unsuccessful MAC destination address search due to the expiring of the search timer. */ #define RX_ATTENTION_2_DA_IDX_TIMEOUT_OFFSET 0x00000008 #define RX_ATTENTION_2_DA_IDX_TIMEOUT_LSB 5 #define RX_ATTENTION_2_DA_IDX_TIMEOUT_MASK 0x00000020 /* Description RX_ATTENTION_2_MSDU_LIMIT_ERROR Indicates that the MSDU threshold was exceeded and thus all the rest of the MSDUs will not be scattered and will not be decasulated but will be DMA'ed in RAW format as a single MSDU buffer */ #define RX_ATTENTION_2_MSDU_LIMIT_ERROR_OFFSET 0x00000008 #define RX_ATTENTION_2_MSDU_LIMIT_ERROR_LSB 6 #define RX_ATTENTION_2_MSDU_LIMIT_ERROR_MASK 0x00000040 /* Description RX_ATTENTION_2_DA_IS_VALID Indicates that OLE found a valid DA entry */ #define RX_ATTENTION_2_DA_IS_VALID_OFFSET 0x00000008 #define RX_ATTENTION_2_DA_IS_VALID_LSB 7 #define RX_ATTENTION_2_DA_IS_VALID_MASK 0x00000080 /* Description RX_ATTENTION_2_DA_IS_MCBC Field Only valid if da_is_valid is set Indicates the DA address was a Multicast of Broadcast address. */ #define RX_ATTENTION_2_DA_IS_MCBC_OFFSET 0x00000008 #define RX_ATTENTION_2_DA_IS_MCBC_LSB 8 #define RX_ATTENTION_2_DA_IS_MCBC_MASK 0x00000100 /* Description RX_ATTENTION_2_SA_IS_VALID Indicates that OLE found a valid SA entry */ #define RX_ATTENTION_2_SA_IS_VALID_OFFSET 0x00000008 #define RX_ATTENTION_2_SA_IS_VALID_LSB 9 #define RX_ATTENTION_2_SA_IS_VALID_MASK 0x00000200 /* Description RX_ATTENTION_2_DECRYPT_STATUS_CODE Field provides insight into the decryption performed Frame had protection enabled and decrypted properly Frame is unprotected and hence bypassed Frame has protection enabled and could not be properly decrypted due to MIC/ICV mismatch etc. Frame has protection enabled but the key that was required to decrypt this frame was not valid Frame has protection enabled but the key that was required to decrypt this frame was not valid Reserved for other indications */ #define RX_ATTENTION_2_DECRYPT_STATUS_CODE_OFFSET 0x00000008 #define RX_ATTENTION_2_DECRYPT_STATUS_CODE_LSB 10 #define RX_ATTENTION_2_DECRYPT_STATUS_CODE_MASK 0x00001c00 /* Description RX_ATTENTION_2_RX_BITMAP_NOT_UPDATED Frame is received, but RXPCU could not update the receive bitmap due to (temporary) fifo contraints. */ #define RX_ATTENTION_2_RX_BITMAP_NOT_UPDATED_OFFSET 0x00000008 #define RX_ATTENTION_2_RX_BITMAP_NOT_UPDATED_LSB 13 #define RX_ATTENTION_2_RX_BITMAP_NOT_UPDATED_MASK 0x00002000 /* Description RX_ATTENTION_2_RESERVED_2 */ #define RX_ATTENTION_2_RESERVED_2_OFFSET 0x00000008 #define RX_ATTENTION_2_RESERVED_2_LSB 14 #define RX_ATTENTION_2_RESERVED_2_MASK 0x7fffc000 /* Description RX_ATTENTION_2_MSDU_DONE If set indicates that the RX packet data, RX header data, RX PPDU start descriptor, RX MPDU start/end descriptor, RX MSDU start/end descriptors and RX Attention descriptor are all valid. This bit must be in the last octet of the descriptor. */ #define RX_ATTENTION_2_MSDU_DONE_OFFSET 0x00000008 #define RX_ATTENTION_2_MSDU_DONE_LSB 31 #define RX_ATTENTION_2_MSDU_DONE_MASK 0x80000000 #endif // _RX_ATTENTION_H_