/* * Copyright (c) 2020, 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 _HE_SIG_A_MU_DL_INFO_H_ #define _HE_SIG_A_MU_DL_INFO_H_ #if !defined(__ASSEMBLER__) #endif // ################ START SUMMARY ################# // // Dword Fields // 0 dl_ul_flag[0], mcs_of_sig_b[3:1], dcm_of_sig_b[4], bss_color_id[10:5], spatial_reuse[14:11], transmit_bw[17:15], num_sig_b_symbols[21:18], comp_mode_sig_b[22], cp_ltf_size[24:23], doppler_indication[25], reserved_0a[31:26] // 1 txop_duration[6:0], reserved_1a[7], num_ltf_symbols[10:8], ldpc_extra_symbol[11], stbc[12], packet_extension_a_factor[14:13], packet_extension_pe_disambiguity[15], crc[19:16], tail[25:20], reserved_1b[31:26] // // ################ END SUMMARY ################# #define NUM_OF_DWORDS_HE_SIG_A_MU_DL_INFO 2 struct he_sig_a_mu_dl_info { uint32_t dl_ul_flag : 1, //[0] mcs_of_sig_b : 3, //[3:1] dcm_of_sig_b : 1, //[4] bss_color_id : 6, //[10:5] spatial_reuse : 4, //[14:11] transmit_bw : 3, //[17:15] num_sig_b_symbols : 4, //[21:18] comp_mode_sig_b : 1, //[22] cp_ltf_size : 2, //[24:23] doppler_indication : 1, //[25] reserved_0a : 6; //[31:26] uint32_t txop_duration : 7, //[6:0] reserved_1a : 1, //[7] num_ltf_symbols : 3, //[10:8] ldpc_extra_symbol : 1, //[11] stbc : 1, //[12] packet_extension_a_factor : 2, //[14:13] packet_extension_pe_disambiguity: 1, //[15] crc : 4, //[19:16] tail : 6, //[25:20] reserved_1b : 6; //[31:26] }; /* dl_ul_flag Differentiates between DL and UL transmission NOTE: This is unsupported for HE MU format (including MU_SU) Tx in Napier and Hastings80. mcs_of_sig_b Indicates the MCS of HE-SIG-B dcm_of_sig_b Indicates whether dual sub-carrier modulation is applied to HE-SIG-B 0: No DCM for HE_SIG_B 1: DCM for HE_SIG_B bss_color_id BSS color ID Field Used by MAC HW spatial_reuse Spatial reuse For 20MHz one SR field corresponding to entire 20MHz (other 3 fields indicate identical values) For 40MHz two SR fields for each 20MHz (other 2 fields indicate identical values) For 80MHz four SR fields for each 20MHz For 160MHz four SR fields for each 40MHz transmit_bw Bandwidth of the PPDU. 20 Mhz 40 Mhz 80 MHz non-preamble puncturing mode 160 MHz and 80+80 MHz non-preamble puncturing mode for preamble puncturing in 80 MHz, where in the preamble only the secondary 20 MHz is punctured for preamble puncturing in 80 MHz, where in the preamble only one of the two 20 MHz sub-channels in secondary 40 MHz is punctured. for preamble puncturing in 160 MHz or 80+80 MHz, where in the primary 80 MHz of the preamble only the secondary 20 MHz is punctured. for preamble puncturing in 160 MHz or 80+80 MHz, where in the primary 80 MHz of the preamble the primary 40 MHz is present. On RX side, Field Used by MAC HW num_sig_b_symbols Number of symbols For OFDMA, the actual number of symbols is 1 larger then indicated in this field. For MU-MIMO this is equal to the number of users - 1: the following encoding is used: 1 => 2 users 2 => 3 users Etc. comp_mode_sig_b Indicates the compression mode of HE-SIG-B 0: Regular [uncomp mode] 1: compressed mode (full-BW MU-MIMO only) cp_ltf_size Indicates the CP and HE-LTF type 4xLTF + 0.8 us CP 2x LTF + 0.8 µs CP 2x LTF + 1.6 µs CP 4x LTF + 3.2 µs CP NOTE: for MU no proprietary modes (for now) doppler_indication 0: No Doppler support 1: Doppler support reserved_0a txop_duration Indicates the remaining time in the current TXOP Field Used by MAC HW reserved_1a Note: spec indicates this shall be set to 1 num_ltf_symbols Indicates the number of HE-LTF symbols 0: 1 LTF 1: 2 LTFs 2: 4 LTFs 3: 6 LTFs 4: 8 LTFs ldpc_extra_symbol If LDPC, 0: LDPC extra symbol not present 1: LDPC extra symbol present Else Set to 1 stbc Indicates whether STBC is applied 0: No STBC 1: STBC packet_extension_a_factor the packet extension duration of the trigger-based PPDU response with these two bits indicating the a-factor packet_extension_pe_disambiguity the packet extension duration of the trigger-based PPDU response with this bit indicating the PE-Disambiguity crc CRC for HE-SIG-A contents. tail reserved_1b */ /* Description HE_SIG_A_MU_DL_INFO_0_DL_UL_FLAG Differentiates between DL and UL transmission NOTE: This is unsupported for HE MU format (including MU_SU) Tx in Napier and Hastings80. */ #define HE_SIG_A_MU_DL_INFO_0_DL_UL_FLAG_OFFSET 0x00000000 #define HE_SIG_A_MU_DL_INFO_0_DL_UL_FLAG_LSB 0 #define HE_SIG_A_MU_DL_INFO_0_DL_UL_FLAG_MASK 0x00000001 /* Description HE_SIG_A_MU_DL_INFO_0_MCS_OF_SIG_B Indicates the MCS of HE-SIG-B */ #define HE_SIG_A_MU_DL_INFO_0_MCS_OF_SIG_B_OFFSET 0x00000000 #define HE_SIG_A_MU_DL_INFO_0_MCS_OF_SIG_B_LSB 1 #define HE_SIG_A_MU_DL_INFO_0_MCS_OF_SIG_B_MASK 0x0000000e /* Description HE_SIG_A_MU_DL_INFO_0_DCM_OF_SIG_B Indicates whether dual sub-carrier modulation is applied to HE-SIG-B 0: No DCM for HE_SIG_B 1: DCM for HE_SIG_B */ #define HE_SIG_A_MU_DL_INFO_0_DCM_OF_SIG_B_OFFSET 0x00000000 #define HE_SIG_A_MU_DL_INFO_0_DCM_OF_SIG_B_LSB 4 #define HE_SIG_A_MU_DL_INFO_0_DCM_OF_SIG_B_MASK 0x00000010 /* Description HE_SIG_A_MU_DL_INFO_0_BSS_COLOR_ID BSS color ID Field Used by MAC HW */ #define HE_SIG_A_MU_DL_INFO_0_BSS_COLOR_ID_OFFSET 0x00000000 #define HE_SIG_A_MU_DL_INFO_0_BSS_COLOR_ID_LSB 5 #define HE_SIG_A_MU_DL_INFO_0_BSS_COLOR_ID_MASK 0x000007e0 /* Description HE_SIG_A_MU_DL_INFO_0_SPATIAL_REUSE Spatial reuse For 20MHz one SR field corresponding to entire 20MHz (other 3 fields indicate identical values) For 40MHz two SR fields for each 20MHz (other 2 fields indicate identical values) For 80MHz four SR fields for each 20MHz For 160MHz four SR fields for each 40MHz */ #define HE_SIG_A_MU_DL_INFO_0_SPATIAL_REUSE_OFFSET 0x00000000 #define HE_SIG_A_MU_DL_INFO_0_SPATIAL_REUSE_LSB 11 #define HE_SIG_A_MU_DL_INFO_0_SPATIAL_REUSE_MASK 0x00007800 /* Description HE_SIG_A_MU_DL_INFO_0_TRANSMIT_BW Bandwidth of the PPDU. 20 Mhz 40 Mhz 80 MHz non-preamble puncturing mode 160 MHz and 80+80 MHz non-preamble puncturing mode for preamble puncturing in 80 MHz, where in the preamble only the secondary 20 MHz is punctured for preamble puncturing in 80 MHz, where in the preamble only one of the two 20 MHz sub-channels in secondary 40 MHz is punctured. for preamble puncturing in 160 MHz or 80+80 MHz, where in the primary 80 MHz of the preamble only the secondary 20 MHz is punctured. for preamble puncturing in 160 MHz or 80+80 MHz, where in the primary 80 MHz of the preamble the primary 40 MHz is present. On RX side, Field Used by MAC HW */ #define HE_SIG_A_MU_DL_INFO_0_TRANSMIT_BW_OFFSET 0x00000000 #define HE_SIG_A_MU_DL_INFO_0_TRANSMIT_BW_LSB 15 #define HE_SIG_A_MU_DL_INFO_0_TRANSMIT_BW_MASK 0x00038000 /* Description HE_SIG_A_MU_DL_INFO_0_NUM_SIG_B_SYMBOLS Number of symbols For OFDMA, the actual number of symbols is 1 larger then indicated in this field. For MU-MIMO this is equal to the number of users - 1: the following encoding is used: 1 => 2 users 2 => 3 users Etc. */ #define HE_SIG_A_MU_DL_INFO_0_NUM_SIG_B_SYMBOLS_OFFSET 0x00000000 #define HE_SIG_A_MU_DL_INFO_0_NUM_SIG_B_SYMBOLS_LSB 18 #define HE_SIG_A_MU_DL_INFO_0_NUM_SIG_B_SYMBOLS_MASK 0x003c0000 /* Description HE_SIG_A_MU_DL_INFO_0_COMP_MODE_SIG_B Indicates the compression mode of HE-SIG-B 0: Regular [uncomp mode] 1: compressed mode (full-BW MU-MIMO only) */ #define HE_SIG_A_MU_DL_INFO_0_COMP_MODE_SIG_B_OFFSET 0x00000000 #define HE_SIG_A_MU_DL_INFO_0_COMP_MODE_SIG_B_LSB 22 #define HE_SIG_A_MU_DL_INFO_0_COMP_MODE_SIG_B_MASK 0x00400000 /* Description HE_SIG_A_MU_DL_INFO_0_CP_LTF_SIZE Indicates the CP and HE-LTF type 4xLTF + 0.8 us CP 2x LTF + 0.8 µs CP 2x LTF + 1.6 µs CP 4x LTF + 3.2 µs CP NOTE: for MU no proprietary modes (for now) */ #define HE_SIG_A_MU_DL_INFO_0_CP_LTF_SIZE_OFFSET 0x00000000 #define HE_SIG_A_MU_DL_INFO_0_CP_LTF_SIZE_LSB 23 #define HE_SIG_A_MU_DL_INFO_0_CP_LTF_SIZE_MASK 0x01800000 /* Description HE_SIG_A_MU_DL_INFO_0_DOPPLER_INDICATION 0: No Doppler support 1: Doppler support */ #define HE_SIG_A_MU_DL_INFO_0_DOPPLER_INDICATION_OFFSET 0x00000000 #define HE_SIG_A_MU_DL_INFO_0_DOPPLER_INDICATION_LSB 25 #define HE_SIG_A_MU_DL_INFO_0_DOPPLER_INDICATION_MASK 0x02000000 /* Description HE_SIG_A_MU_DL_INFO_0_RESERVED_0A */ #define HE_SIG_A_MU_DL_INFO_0_RESERVED_0A_OFFSET 0x00000000 #define HE_SIG_A_MU_DL_INFO_0_RESERVED_0A_LSB 26 #define HE_SIG_A_MU_DL_INFO_0_RESERVED_0A_MASK 0xfc000000 /* Description HE_SIG_A_MU_DL_INFO_1_TXOP_DURATION Indicates the remaining time in the current TXOP Field Used by MAC HW */ #define HE_SIG_A_MU_DL_INFO_1_TXOP_DURATION_OFFSET 0x00000004 #define HE_SIG_A_MU_DL_INFO_1_TXOP_DURATION_LSB 0 #define HE_SIG_A_MU_DL_INFO_1_TXOP_DURATION_MASK 0x0000007f /* Description HE_SIG_A_MU_DL_INFO_1_RESERVED_1A Note: spec indicates this shall be set to 1 */ #define HE_SIG_A_MU_DL_INFO_1_RESERVED_1A_OFFSET 0x00000004 #define HE_SIG_A_MU_DL_INFO_1_RESERVED_1A_LSB 7 #define HE_SIG_A_MU_DL_INFO_1_RESERVED_1A_MASK 0x00000080 /* Description HE_SIG_A_MU_DL_INFO_1_NUM_LTF_SYMBOLS Indicates the number of HE-LTF symbols 0: 1 LTF 1: 2 LTFs 2: 4 LTFs 3: 6 LTFs 4: 8 LTFs */ #define HE_SIG_A_MU_DL_INFO_1_NUM_LTF_SYMBOLS_OFFSET 0x00000004 #define HE_SIG_A_MU_DL_INFO_1_NUM_LTF_SYMBOLS_LSB 8 #define HE_SIG_A_MU_DL_INFO_1_NUM_LTF_SYMBOLS_MASK 0x00000700 /* Description HE_SIG_A_MU_DL_INFO_1_LDPC_EXTRA_SYMBOL If LDPC, 0: LDPC extra symbol not present 1: LDPC extra symbol present Else Set to 1 */ #define HE_SIG_A_MU_DL_INFO_1_LDPC_EXTRA_SYMBOL_OFFSET 0x00000004 #define HE_SIG_A_MU_DL_INFO_1_LDPC_EXTRA_SYMBOL_LSB 11 #define HE_SIG_A_MU_DL_INFO_1_LDPC_EXTRA_SYMBOL_MASK 0x00000800 /* Description HE_SIG_A_MU_DL_INFO_1_STBC Indicates whether STBC is applied 0: No STBC 1: STBC */ #define HE_SIG_A_MU_DL_INFO_1_STBC_OFFSET 0x00000004 #define HE_SIG_A_MU_DL_INFO_1_STBC_LSB 12 #define HE_SIG_A_MU_DL_INFO_1_STBC_MASK 0x00001000 /* Description HE_SIG_A_MU_DL_INFO_1_PACKET_EXTENSION_A_FACTOR the packet extension duration of the trigger-based PPDU response with these two bits indicating the a-factor */ #define HE_SIG_A_MU_DL_INFO_1_PACKET_EXTENSION_A_FACTOR_OFFSET 0x00000004 #define HE_SIG_A_MU_DL_INFO_1_PACKET_EXTENSION_A_FACTOR_LSB 13 #define HE_SIG_A_MU_DL_INFO_1_PACKET_EXTENSION_A_FACTOR_MASK 0x00006000 /* Description HE_SIG_A_MU_DL_INFO_1_PACKET_EXTENSION_PE_DISAMBIGUITY the packet extension duration of the trigger-based PPDU response with this bit indicating the PE-Disambiguity */ #define HE_SIG_A_MU_DL_INFO_1_PACKET_EXTENSION_PE_DISAMBIGUITY_OFFSET 0x00000004 #define HE_SIG_A_MU_DL_INFO_1_PACKET_EXTENSION_PE_DISAMBIGUITY_LSB 15 #define HE_SIG_A_MU_DL_INFO_1_PACKET_EXTENSION_PE_DISAMBIGUITY_MASK 0x00008000 /* Description HE_SIG_A_MU_DL_INFO_1_CRC CRC for HE-SIG-A contents. */ #define HE_SIG_A_MU_DL_INFO_1_CRC_OFFSET 0x00000004 #define HE_SIG_A_MU_DL_INFO_1_CRC_LSB 16 #define HE_SIG_A_MU_DL_INFO_1_CRC_MASK 0x000f0000 /* Description HE_SIG_A_MU_DL_INFO_1_TAIL */ #define HE_SIG_A_MU_DL_INFO_1_TAIL_OFFSET 0x00000004 #define HE_SIG_A_MU_DL_INFO_1_TAIL_LSB 20 #define HE_SIG_A_MU_DL_INFO_1_TAIL_MASK 0x03f00000 /* Description HE_SIG_A_MU_DL_INFO_1_RESERVED_1B */ #define HE_SIG_A_MU_DL_INFO_1_RESERVED_1B_OFFSET 0x00000004 #define HE_SIG_A_MU_DL_INFO_1_RESERVED_1B_LSB 26 #define HE_SIG_A_MU_DL_INFO_1_RESERVED_1B_MASK 0xfc000000 #endif // _HE_SIG_A_MU_DL_INFO_H_