/* * Copyright (c) 2016-2017 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. */ // $ATH_LICENSE_HW_HDR_C$ // // DO NOT EDIT! This file is automatically generated // These definitions are tied to a particular hardware layout #ifndef _RX_MSDU_DESC_INFO_H_ #define _RX_MSDU_DESC_INFO_H_ #if !defined(__ASSEMBLER__) #endif // ################ START SUMMARY ################# // // Dword Fields // 0 first_msdu_in_mpdu_flag[0], last_msdu_in_mpdu_flag[1], msdu_continuation[2], msdu_length[16:3], reo_destination_indication[21:17], msdu_drop[22], sa_is_valid[23], sa_idx_timeout[24], da_is_valid[25], da_is_mcbc[26], da_idx_timeout[27], reserved_0a[31:28] // 1 reserved_1a[31:0] // // ################ END SUMMARY ################# #define NUM_OF_DWORDS_RX_MSDU_DESC_INFO 2 struct rx_msdu_desc_info { uint32_t first_msdu_in_mpdu_flag : 1, //[0] last_msdu_in_mpdu_flag : 1, //[1] msdu_continuation : 1, //[2] msdu_length : 14, //[16:3] reo_destination_indication : 5, //[21:17] msdu_drop : 1, //[22] sa_is_valid : 1, //[23] sa_idx_timeout : 1, //[24] da_is_valid : 1, //[25] da_is_mcbc : 1, //[26] da_idx_timeout : 1, //[27] reserved_0a : 4; //[31:28] uint32_t reserved_1a : 32; //[31:0] }; /* first_msdu_in_mpdu_flag This is not the first MSDU in the MPDU. This MSDU is the first one in the MPDU. last_msdu_in_mpdu_flag Consumer: WBM/REO/SW/FW Producer: RXDMA There are more MSDUs linked to this MSDU that belongs to this MPDU this MSDU is the last one in the MPDU. This setting is only allowed in combination with 'Msdu_continuation' set to 0. This implies that when an msdu is spread out over multiple buffers and thus msdu_continuation is set, only for the very last buffer of the msdu, can the 'last_msdu_in_mpdu_flag' be set. When both first_msdu_in_mpdu_flag and last_msdu_in_mpdu_flag are set, the MPDU that this MSDU belongs to only contains a single MSDU. msdu_continuation When set, this MSDU buffer was not able to hold the entire MSDU. The next buffer will therefor contain additional information related to this MSDU. msdu_length Field is only valid in combination with the 'first_msdu_in_mpdu_flag ' being set. When the 'first_msdu_in_mpdu_flag ' is not set, this field shall be 0. Full MSDU length in bytes after decapsulation. This field is still valid for MPDU frames without A-MSDU. It still represents MSDU length after decapsulation Or in case of RAW MPDUs, it indicates the length of the entire MPDU (without FCS field) reo_destination_indication The ID of the REO exit ring where the MSDU frame shall push after (MPDU level) reordering has finished. Reo will push the frame into the REO2TCL ring Reo will push the frame into the REO2SW1 ring Reo will push the frame into the REO2SW1 ring Reo will push the frame into the REO2SW1 ring Reo will push the frame into the REO2SW1 ring Reo will push the frame into the REO_release ring Reo will push the frame into the REO2FW ring REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this msdu_drop When set, REO shall drop this MSDU and not forward it to any other ring... sa_is_valid Indicates that OLE found a valid SA entry for this MSDU sa_idx_timeout Indicates an unsuccessful MAC source address search due to the expiring of the search timer for this MSDU da_is_valid Indicates that OLE found a valid DA entry for this MSDU da_is_mcbc Field Only valid if da_is_valid is set Indicates the DA address was a Multicast of Broadcast address for this MSDU da_idx_timeout Indicates an unsuccessful MAC destination address search due to the expiring of the search timer for this MSDU reserved_0a reserved_1a */ /* Description RX_MSDU_DESC_INFO_0_FIRST_MSDU_IN_MPDU_FLAG This is not the first MSDU in the MPDU. This MSDU is the first one in the MPDU. */ #define RX_MSDU_DESC_INFO_0_FIRST_MSDU_IN_MPDU_FLAG_OFFSET 0x00000000 #define RX_MSDU_DESC_INFO_0_FIRST_MSDU_IN_MPDU_FLAG_LSB 0 #define RX_MSDU_DESC_INFO_0_FIRST_MSDU_IN_MPDU_FLAG_MASK 0x00000001 /* Description RX_MSDU_DESC_INFO_0_LAST_MSDU_IN_MPDU_FLAG Consumer: WBM/REO/SW/FW Producer: RXDMA There are more MSDUs linked to this MSDU that belongs to this MPDU this MSDU is the last one in the MPDU. This setting is only allowed in combination with 'Msdu_continuation' set to 0. This implies that when an msdu is spread out over multiple buffers and thus msdu_continuation is set, only for the very last buffer of the msdu, can the 'last_msdu_in_mpdu_flag' be set. When both first_msdu_in_mpdu_flag and last_msdu_in_mpdu_flag are set, the MPDU that this MSDU belongs to only contains a single MSDU. */ #define RX_MSDU_DESC_INFO_0_LAST_MSDU_IN_MPDU_FLAG_OFFSET 0x00000000 #define RX_MSDU_DESC_INFO_0_LAST_MSDU_IN_MPDU_FLAG_LSB 1 #define RX_MSDU_DESC_INFO_0_LAST_MSDU_IN_MPDU_FLAG_MASK 0x00000002 /* Description RX_MSDU_DESC_INFO_0_MSDU_CONTINUATION When set, this MSDU buffer was not able to hold the entire MSDU. The next buffer will therefor contain additional information related to this MSDU. */ #define RX_MSDU_DESC_INFO_0_MSDU_CONTINUATION_OFFSET 0x00000000 #define RX_MSDU_DESC_INFO_0_MSDU_CONTINUATION_LSB 2 #define RX_MSDU_DESC_INFO_0_MSDU_CONTINUATION_MASK 0x00000004 /* Description RX_MSDU_DESC_INFO_0_MSDU_LENGTH Field is only valid in combination with the 'first_msdu_in_mpdu_flag ' being set. When the 'first_msdu_in_mpdu_flag ' is not set, this field shall be 0. Full MSDU length in bytes after decapsulation. This field is still valid for MPDU frames without A-MSDU. It still represents MSDU length after decapsulation Or in case of RAW MPDUs, it indicates the length of the entire MPDU (without FCS field) */ #define RX_MSDU_DESC_INFO_0_MSDU_LENGTH_OFFSET 0x00000000 #define RX_MSDU_DESC_INFO_0_MSDU_LENGTH_LSB 3 #define RX_MSDU_DESC_INFO_0_MSDU_LENGTH_MASK 0x0001fff8 /* Description RX_MSDU_DESC_INFO_0_REO_DESTINATION_INDICATION The ID of the REO exit ring where the MSDU frame shall push after (MPDU level) reordering has finished. Reo will push the frame into the REO2TCL ring Reo will push the frame into the REO2SW1 ring Reo will push the frame into the REO2SW1 ring Reo will push the frame into the REO2SW1 ring Reo will push the frame into the REO2SW1 ring Reo will push the frame into the REO_release ring Reo will push the frame into the REO2FW ring REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this */ #define RX_MSDU_DESC_INFO_0_REO_DESTINATION_INDICATION_OFFSET 0x00000000 #define RX_MSDU_DESC_INFO_0_REO_DESTINATION_INDICATION_LSB 17 #define RX_MSDU_DESC_INFO_0_REO_DESTINATION_INDICATION_MASK 0x003e0000 /* Description RX_MSDU_DESC_INFO_0_MSDU_DROP When set, REO shall drop this MSDU and not forward it to any other ring... */ #define RX_MSDU_DESC_INFO_0_MSDU_DROP_OFFSET 0x00000000 #define RX_MSDU_DESC_INFO_0_MSDU_DROP_LSB 22 #define RX_MSDU_DESC_INFO_0_MSDU_DROP_MASK 0x00400000 /* Description RX_MSDU_DESC_INFO_0_SA_IS_VALID Indicates that OLE found a valid SA entry for this MSDU */ #define RX_MSDU_DESC_INFO_0_SA_IS_VALID_OFFSET 0x00000000 #define RX_MSDU_DESC_INFO_0_SA_IS_VALID_LSB 23 #define RX_MSDU_DESC_INFO_0_SA_IS_VALID_MASK 0x00800000 /* Description RX_MSDU_DESC_INFO_0_SA_IDX_TIMEOUT Indicates an unsuccessful MAC source address search due to the expiring of the search timer for this MSDU */ #define RX_MSDU_DESC_INFO_0_SA_IDX_TIMEOUT_OFFSET 0x00000000 #define RX_MSDU_DESC_INFO_0_SA_IDX_TIMEOUT_LSB 24 #define RX_MSDU_DESC_INFO_0_SA_IDX_TIMEOUT_MASK 0x01000000 /* Description RX_MSDU_DESC_INFO_0_DA_IS_VALID Indicates that OLE found a valid DA entry for this MSDU */ #define RX_MSDU_DESC_INFO_0_DA_IS_VALID_OFFSET 0x00000000 #define RX_MSDU_DESC_INFO_0_DA_IS_VALID_LSB 25 #define RX_MSDU_DESC_INFO_0_DA_IS_VALID_MASK 0x02000000 /* Description RX_MSDU_DESC_INFO_0_DA_IS_MCBC Field Only valid if da_is_valid is set Indicates the DA address was a Multicast of Broadcast address for this MSDU */ #define RX_MSDU_DESC_INFO_0_DA_IS_MCBC_OFFSET 0x00000000 #define RX_MSDU_DESC_INFO_0_DA_IS_MCBC_LSB 26 #define RX_MSDU_DESC_INFO_0_DA_IS_MCBC_MASK 0x04000000 /* Description RX_MSDU_DESC_INFO_0_DA_IDX_TIMEOUT Indicates an unsuccessful MAC destination address search due to the expiring of the search timer for this MSDU */ #define RX_MSDU_DESC_INFO_0_DA_IDX_TIMEOUT_OFFSET 0x00000000 #define RX_MSDU_DESC_INFO_0_DA_IDX_TIMEOUT_LSB 27 #define RX_MSDU_DESC_INFO_0_DA_IDX_TIMEOUT_MASK 0x08000000 /* Description RX_MSDU_DESC_INFO_0_RESERVED_0A */ #define RX_MSDU_DESC_INFO_0_RESERVED_0A_OFFSET 0x00000000 #define RX_MSDU_DESC_INFO_0_RESERVED_0A_LSB 28 #define RX_MSDU_DESC_INFO_0_RESERVED_0A_MASK 0xf0000000 /* Description RX_MSDU_DESC_INFO_1_RESERVED_1A */ #define RX_MSDU_DESC_INFO_1_RESERVED_1A_OFFSET 0x00000004 #define RX_MSDU_DESC_INFO_1_RESERVED_1A_LSB 0 #define RX_MSDU_DESC_INFO_1_RESERVED_1A_MASK 0xffffffff #endif // _RX_MSDU_DESC_INFO_H_