1 2 /* Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. 3 * 4 * Permission to use, copy, modify, and/or distribute this software for any 5 * purpose with or without fee is hereby granted, provided that the above 6 * copyright notice and this permission notice appear in all copies. 7 * 8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 11 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 12 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 13 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 15 */ 16 17 18 19 20 21 22 23 24 25 26 #ifndef _MACTX_HE_SIG_B2_MU_H_ 27 #define _MACTX_HE_SIG_B2_MU_H_ 28 #if !defined(__ASSEMBLER__) 29 #endif 30 31 #include "he_sig_b2_mu_info.h" 32 #define NUM_OF_DWORDS_MACTX_HE_SIG_B2_MU 2 33 34 #define NUM_OF_QWORDS_MACTX_HE_SIG_B2_MU 1 35 36 37 struct mactx_he_sig_b2_mu { 38 #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 39 struct he_sig_b2_mu_info mactx_he_sig_b2_mu_info_details; 40 #else 41 struct he_sig_b2_mu_info mactx_he_sig_b2_mu_info_details; 42 #endif 43 }; 44 45 46 /* Description MACTX_HE_SIG_B2_MU_INFO_DETAILS 47 48 See detailed description of the STRUCT 49 */ 50 51 52 /* Description STA_ID 53 54 Identifies the STA that is addressed. Details of STA ID 55 are TBD 56 */ 57 58 #define MACTX_HE_SIG_B2_MU_MACTX_HE_SIG_B2_MU_INFO_DETAILS_STA_ID_OFFSET 0x0000000000000000 59 #define MACTX_HE_SIG_B2_MU_MACTX_HE_SIG_B2_MU_INFO_DETAILS_STA_ID_LSB 0 60 #define MACTX_HE_SIG_B2_MU_MACTX_HE_SIG_B2_MU_INFO_DETAILS_STA_ID_MSB 10 61 #define MACTX_HE_SIG_B2_MU_MACTX_HE_SIG_B2_MU_INFO_DETAILS_STA_ID_MASK 0x00000000000007ff 62 63 64 /* Description STA_SPATIAL_CONFIG 65 66 Number of assigned spatial streams and their corresponding 67 index. 68 Total number of spatial streams assigned for the MU-MIMO 69 allocation is also signaled. 70 */ 71 72 #define MACTX_HE_SIG_B2_MU_MACTX_HE_SIG_B2_MU_INFO_DETAILS_STA_SPATIAL_CONFIG_OFFSET 0x0000000000000000 73 #define MACTX_HE_SIG_B2_MU_MACTX_HE_SIG_B2_MU_INFO_DETAILS_STA_SPATIAL_CONFIG_LSB 11 74 #define MACTX_HE_SIG_B2_MU_MACTX_HE_SIG_B2_MU_INFO_DETAILS_STA_SPATIAL_CONFIG_MSB 14 75 #define MACTX_HE_SIG_B2_MU_MACTX_HE_SIG_B2_MU_INFO_DETAILS_STA_SPATIAL_CONFIG_MASK 0x0000000000007800 76 77 78 /* Description STA_MCS 79 80 Indicates the data MCS 81 */ 82 83 #define MACTX_HE_SIG_B2_MU_MACTX_HE_SIG_B2_MU_INFO_DETAILS_STA_MCS_OFFSET 0x0000000000000000 84 #define MACTX_HE_SIG_B2_MU_MACTX_HE_SIG_B2_MU_INFO_DETAILS_STA_MCS_LSB 15 85 #define MACTX_HE_SIG_B2_MU_MACTX_HE_SIG_B2_MU_INFO_DETAILS_STA_MCS_MSB 18 86 #define MACTX_HE_SIG_B2_MU_MACTX_HE_SIG_B2_MU_INFO_DETAILS_STA_MCS_MASK 0x0000000000078000 87 88 89 /* Description RESERVED_SET_TO_1 90 91 <legal 1> 92 */ 93 94 #define MACTX_HE_SIG_B2_MU_MACTX_HE_SIG_B2_MU_INFO_DETAILS_RESERVED_SET_TO_1_OFFSET 0x0000000000000000 95 #define MACTX_HE_SIG_B2_MU_MACTX_HE_SIG_B2_MU_INFO_DETAILS_RESERVED_SET_TO_1_LSB 19 96 #define MACTX_HE_SIG_B2_MU_MACTX_HE_SIG_B2_MU_INFO_DETAILS_RESERVED_SET_TO_1_MSB 19 97 #define MACTX_HE_SIG_B2_MU_MACTX_HE_SIG_B2_MU_INFO_DETAILS_RESERVED_SET_TO_1_MASK 0x0000000000080000 98 99 100 /* Description STA_CODING 101 102 Distinguishes between BCC/LDPC 103 104 0: BCC 105 1: LDPC 106 <legal all> 107 */ 108 109 #define MACTX_HE_SIG_B2_MU_MACTX_HE_SIG_B2_MU_INFO_DETAILS_STA_CODING_OFFSET 0x0000000000000000 110 #define MACTX_HE_SIG_B2_MU_MACTX_HE_SIG_B2_MU_INFO_DETAILS_STA_CODING_LSB 20 111 #define MACTX_HE_SIG_B2_MU_MACTX_HE_SIG_B2_MU_INFO_DETAILS_STA_CODING_MSB 20 112 #define MACTX_HE_SIG_B2_MU_MACTX_HE_SIG_B2_MU_INFO_DETAILS_STA_CODING_MASK 0x0000000000100000 113 114 115 /* Description RESERVED_0A 116 117 <legal 0> 118 */ 119 120 #define MACTX_HE_SIG_B2_MU_MACTX_HE_SIG_B2_MU_INFO_DETAILS_RESERVED_0A_OFFSET 0x0000000000000000 121 #define MACTX_HE_SIG_B2_MU_MACTX_HE_SIG_B2_MU_INFO_DETAILS_RESERVED_0A_LSB 21 122 #define MACTX_HE_SIG_B2_MU_MACTX_HE_SIG_B2_MU_INFO_DETAILS_RESERVED_0A_MSB 27 123 #define MACTX_HE_SIG_B2_MU_MACTX_HE_SIG_B2_MU_INFO_DETAILS_RESERVED_0A_MASK 0x000000000fe00000 124 125 126 /* Description NSTS 127 128 MAC RX side usage only: 129 Needed by RXPCU. Provided by PHY so that RXPCU does not 130 need to have the RU number decoding logic. 131 132 Number of spatial streams for this user 133 134 <enum 0 1_spatial_stream>Single spatial stream 135 <enum 1 2_spatial_streams>2 spatial streams 136 <enum 2 3_spatial_streams>3 spatial streams 137 <enum 3 4_spatial_streams>4 spatial streams 138 <enum 4 5_spatial_streams>5 spatial streams 139 <enum 5 6_spatial_streams>6 spatial streams 140 <enum 6 7_spatial_streams>7 spatial streams 141 <enum 7 8_spatial_streams>8 spatial streams 142 */ 143 144 #define MACTX_HE_SIG_B2_MU_MACTX_HE_SIG_B2_MU_INFO_DETAILS_NSTS_OFFSET 0x0000000000000000 145 #define MACTX_HE_SIG_B2_MU_MACTX_HE_SIG_B2_MU_INFO_DETAILS_NSTS_LSB 28 146 #define MACTX_HE_SIG_B2_MU_MACTX_HE_SIG_B2_MU_INFO_DETAILS_NSTS_MSB 30 147 #define MACTX_HE_SIG_B2_MU_MACTX_HE_SIG_B2_MU_INFO_DETAILS_NSTS_MASK 0x0000000070000000 148 149 150 /* Description RX_INTEGRITY_CHECK_PASSED 151 152 TX side: Set to 0 153 RX side: Set to 1 if PHY determines the CRC check of the 154 codeblock containing this HE-SIG-B user info has passed, 155 else set to 0 156 157 <legal all> 158 */ 159 160 #define MACTX_HE_SIG_B2_MU_MACTX_HE_SIG_B2_MU_INFO_DETAILS_RX_INTEGRITY_CHECK_PASSED_OFFSET 0x0000000000000000 161 #define MACTX_HE_SIG_B2_MU_MACTX_HE_SIG_B2_MU_INFO_DETAILS_RX_INTEGRITY_CHECK_PASSED_LSB 31 162 #define MACTX_HE_SIG_B2_MU_MACTX_HE_SIG_B2_MU_INFO_DETAILS_RX_INTEGRITY_CHECK_PASSED_MSB 31 163 #define MACTX_HE_SIG_B2_MU_MACTX_HE_SIG_B2_MU_INFO_DETAILS_RX_INTEGRITY_CHECK_PASSED_MASK 0x0000000080000000 164 165 166 /* Description USER_ORDER 167 168 RX side: Set to 0 169 TX side: Ordering index of the User field 170 Gaps between the ordering indices of User fields indicate 171 that the microcode shall generate "unallocated RU" User 172 fields (STAID=2046) to fill the gaps. 173 <legal all> 174 */ 175 176 #define MACTX_HE_SIG_B2_MU_MACTX_HE_SIG_B2_MU_INFO_DETAILS_USER_ORDER_OFFSET 0x0000000000000000 177 #define MACTX_HE_SIG_B2_MU_MACTX_HE_SIG_B2_MU_INFO_DETAILS_USER_ORDER_LSB 32 178 #define MACTX_HE_SIG_B2_MU_MACTX_HE_SIG_B2_MU_INFO_DETAILS_USER_ORDER_MSB 39 179 #define MACTX_HE_SIG_B2_MU_MACTX_HE_SIG_B2_MU_INFO_DETAILS_USER_ORDER_MASK 0x000000ff00000000 180 181 182 /* Description CC_MASK 183 184 RX side: Set to 0 185 TX side: Indicates what content channel this User field 186 can go to 187 Bit 0: content channel 0 188 Bit 1: content channel 1 189 The other bits are unused, but could repeat the above pattern 190 for compatibility with 'EHT_SIG_USR_MU_MIMO_INFO.' 191 <legal all> 192 */ 193 194 #define MACTX_HE_SIG_B2_MU_MACTX_HE_SIG_B2_MU_INFO_DETAILS_CC_MASK_OFFSET 0x0000000000000000 195 #define MACTX_HE_SIG_B2_MU_MACTX_HE_SIG_B2_MU_INFO_DETAILS_CC_MASK_LSB 40 196 #define MACTX_HE_SIG_B2_MU_MACTX_HE_SIG_B2_MU_INFO_DETAILS_CC_MASK_MSB 47 197 #define MACTX_HE_SIG_B2_MU_MACTX_HE_SIG_B2_MU_INFO_DETAILS_CC_MASK_MASK 0x0000ff0000000000 198 199 200 /* Description RESERVED_1A 201 202 <legal 0> 203 */ 204 205 #define MACTX_HE_SIG_B2_MU_MACTX_HE_SIG_B2_MU_INFO_DETAILS_RESERVED_1A_OFFSET 0x0000000000000000 206 #define MACTX_HE_SIG_B2_MU_MACTX_HE_SIG_B2_MU_INFO_DETAILS_RESERVED_1A_LSB 48 207 #define MACTX_HE_SIG_B2_MU_MACTX_HE_SIG_B2_MU_INFO_DETAILS_RESERVED_1A_MSB 63 208 #define MACTX_HE_SIG_B2_MU_MACTX_HE_SIG_B2_MU_INFO_DETAILS_RESERVED_1A_MASK 0xffff000000000000 209 210 211 212 #endif // MACTX_HE_SIG_B2_MU 213