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 _PHYRX_HE_SIG_B2_OFDMA_H_ 27 #define _PHYRX_HE_SIG_B2_OFDMA_H_ 28 #if !defined(__ASSEMBLER__) 29 #endif 30 31 #include "he_sig_b2_ofdma_info.h" 32 #define NUM_OF_DWORDS_PHYRX_HE_SIG_B2_OFDMA 2 33 34 #define NUM_OF_QWORDS_PHYRX_HE_SIG_B2_OFDMA 1 35 36 37 struct phyrx_he_sig_b2_ofdma { 38 #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 39 struct he_sig_b2_ofdma_info phyrx_he_sig_b2_ofdma_info_details; 40 #else 41 struct he_sig_b2_ofdma_info phyrx_he_sig_b2_ofdma_info_details; 42 #endif 43 }; 44 45 46 /* Description PHYRX_HE_SIG_B2_OFDMA_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 PHYRX_HE_SIG_B2_OFDMA_PHYRX_HE_SIG_B2_OFDMA_INFO_DETAILS_STA_ID_OFFSET 0x0000000000000000 59 #define PHYRX_HE_SIG_B2_OFDMA_PHYRX_HE_SIG_B2_OFDMA_INFO_DETAILS_STA_ID_LSB 0 60 #define PHYRX_HE_SIG_B2_OFDMA_PHYRX_HE_SIG_B2_OFDMA_INFO_DETAILS_STA_ID_MSB 10 61 #define PHYRX_HE_SIG_B2_OFDMA_PHYRX_HE_SIG_B2_OFDMA_INFO_DETAILS_STA_ID_MASK 0x00000000000007ff 62 63 64 /* Description NSTS 65 66 MAC RX side usage only: 67 68 Number of spatial streams for this user 69 70 <enum 0 1_spatial_stream>Single spatial stream 71 <enum 1 2_spatial_streams>2 spatial streams 72 <enum 2 3_spatial_streams>3 spatial streams 73 <enum 3 4_spatial_streams>4 spatial streams 74 <enum 4 5_spatial_streams>5 spatial streams 75 <enum 5 6_spatial_streams>6 spatial streams 76 <enum 6 7_spatial_streams>7 spatial streams 77 <enum 7 8_spatial_streams>8 spatial streams 78 */ 79 80 #define PHYRX_HE_SIG_B2_OFDMA_PHYRX_HE_SIG_B2_OFDMA_INFO_DETAILS_NSTS_OFFSET 0x0000000000000000 81 #define PHYRX_HE_SIG_B2_OFDMA_PHYRX_HE_SIG_B2_OFDMA_INFO_DETAILS_NSTS_LSB 11 82 #define PHYRX_HE_SIG_B2_OFDMA_PHYRX_HE_SIG_B2_OFDMA_INFO_DETAILS_NSTS_MSB 13 83 #define PHYRX_HE_SIG_B2_OFDMA_PHYRX_HE_SIG_B2_OFDMA_INFO_DETAILS_NSTS_MASK 0x0000000000003800 84 85 86 /* Description TXBF 87 88 Indicates whether beamforming is applied 89 0: No beamforming 90 1: beamforming 91 <legal all> 92 */ 93 94 #define PHYRX_HE_SIG_B2_OFDMA_PHYRX_HE_SIG_B2_OFDMA_INFO_DETAILS_TXBF_OFFSET 0x0000000000000000 95 #define PHYRX_HE_SIG_B2_OFDMA_PHYRX_HE_SIG_B2_OFDMA_INFO_DETAILS_TXBF_LSB 14 96 #define PHYRX_HE_SIG_B2_OFDMA_PHYRX_HE_SIG_B2_OFDMA_INFO_DETAILS_TXBF_MSB 14 97 #define PHYRX_HE_SIG_B2_OFDMA_PHYRX_HE_SIG_B2_OFDMA_INFO_DETAILS_TXBF_MASK 0x0000000000004000 98 99 100 /* Description STA_MCS 101 102 Indicates the data MCS 103 */ 104 105 #define PHYRX_HE_SIG_B2_OFDMA_PHYRX_HE_SIG_B2_OFDMA_INFO_DETAILS_STA_MCS_OFFSET 0x0000000000000000 106 #define PHYRX_HE_SIG_B2_OFDMA_PHYRX_HE_SIG_B2_OFDMA_INFO_DETAILS_STA_MCS_LSB 15 107 #define PHYRX_HE_SIG_B2_OFDMA_PHYRX_HE_SIG_B2_OFDMA_INFO_DETAILS_STA_MCS_MSB 18 108 #define PHYRX_HE_SIG_B2_OFDMA_PHYRX_HE_SIG_B2_OFDMA_INFO_DETAILS_STA_MCS_MASK 0x0000000000078000 109 110 111 /* Description STA_DCM 112 113 Indicates whether dual sub-carrier modulation is applied 114 115 0: No DCM 116 1:DCM 117 <legal all> 118 */ 119 120 #define PHYRX_HE_SIG_B2_OFDMA_PHYRX_HE_SIG_B2_OFDMA_INFO_DETAILS_STA_DCM_OFFSET 0x0000000000000000 121 #define PHYRX_HE_SIG_B2_OFDMA_PHYRX_HE_SIG_B2_OFDMA_INFO_DETAILS_STA_DCM_LSB 19 122 #define PHYRX_HE_SIG_B2_OFDMA_PHYRX_HE_SIG_B2_OFDMA_INFO_DETAILS_STA_DCM_MSB 19 123 #define PHYRX_HE_SIG_B2_OFDMA_PHYRX_HE_SIG_B2_OFDMA_INFO_DETAILS_STA_DCM_MASK 0x0000000000080000 124 125 126 /* Description STA_CODING 127 128 Distinguishes between BCC/LDPC 129 130 0: BCC 131 1: LDPC 132 <legal all> 133 */ 134 135 #define PHYRX_HE_SIG_B2_OFDMA_PHYRX_HE_SIG_B2_OFDMA_INFO_DETAILS_STA_CODING_OFFSET 0x0000000000000000 136 #define PHYRX_HE_SIG_B2_OFDMA_PHYRX_HE_SIG_B2_OFDMA_INFO_DETAILS_STA_CODING_LSB 20 137 #define PHYRX_HE_SIG_B2_OFDMA_PHYRX_HE_SIG_B2_OFDMA_INFO_DETAILS_STA_CODING_MSB 20 138 #define PHYRX_HE_SIG_B2_OFDMA_PHYRX_HE_SIG_B2_OFDMA_INFO_DETAILS_STA_CODING_MASK 0x0000000000100000 139 140 141 /* Description RESERVED_0 142 143 <legal 0> 144 */ 145 146 #define PHYRX_HE_SIG_B2_OFDMA_PHYRX_HE_SIG_B2_OFDMA_INFO_DETAILS_RESERVED_0_OFFSET 0x0000000000000000 147 #define PHYRX_HE_SIG_B2_OFDMA_PHYRX_HE_SIG_B2_OFDMA_INFO_DETAILS_RESERVED_0_LSB 21 148 #define PHYRX_HE_SIG_B2_OFDMA_PHYRX_HE_SIG_B2_OFDMA_INFO_DETAILS_RESERVED_0_MSB 30 149 #define PHYRX_HE_SIG_B2_OFDMA_PHYRX_HE_SIG_B2_OFDMA_INFO_DETAILS_RESERVED_0_MASK 0x000000007fe00000 150 151 152 /* Description RX_INTEGRITY_CHECK_PASSED 153 154 TX side: Set to 0 155 RX side: Set to 1 if PHY determines the CRC check of the 156 codeblock containing this HE-SIG-B user info has passed, 157 else set to 0 158 159 <legal all> 160 */ 161 162 #define PHYRX_HE_SIG_B2_OFDMA_PHYRX_HE_SIG_B2_OFDMA_INFO_DETAILS_RX_INTEGRITY_CHECK_PASSED_OFFSET 0x0000000000000000 163 #define PHYRX_HE_SIG_B2_OFDMA_PHYRX_HE_SIG_B2_OFDMA_INFO_DETAILS_RX_INTEGRITY_CHECK_PASSED_LSB 31 164 #define PHYRX_HE_SIG_B2_OFDMA_PHYRX_HE_SIG_B2_OFDMA_INFO_DETAILS_RX_INTEGRITY_CHECK_PASSED_MSB 31 165 #define PHYRX_HE_SIG_B2_OFDMA_PHYRX_HE_SIG_B2_OFDMA_INFO_DETAILS_RX_INTEGRITY_CHECK_PASSED_MASK 0x0000000080000000 166 167 168 /* Description USER_ORDER 169 170 RX side: Set to 0 171 TX side: Ordering index of the User field 172 Gaps between the ordering indices of User fields indicate 173 that the microcode shall generate "unallocated RU" User 174 fields (STAID=2046) to fill the gaps. 175 <legal all> 176 */ 177 178 #define PHYRX_HE_SIG_B2_OFDMA_PHYRX_HE_SIG_B2_OFDMA_INFO_DETAILS_USER_ORDER_OFFSET 0x0000000000000000 179 #define PHYRX_HE_SIG_B2_OFDMA_PHYRX_HE_SIG_B2_OFDMA_INFO_DETAILS_USER_ORDER_LSB 32 180 #define PHYRX_HE_SIG_B2_OFDMA_PHYRX_HE_SIG_B2_OFDMA_INFO_DETAILS_USER_ORDER_MSB 39 181 #define PHYRX_HE_SIG_B2_OFDMA_PHYRX_HE_SIG_B2_OFDMA_INFO_DETAILS_USER_ORDER_MASK 0x000000ff00000000 182 183 184 /* Description CC_MASK 185 186 RX side: Set to 0 187 TX side: Indicates what content channel this User field 188 can go to 189 Bit 0: content channel 0 190 Bit 1: content channel 1 191 The other bits are unused, but could repeat the above pattern 192 for compatibility with 'EHT_SIG_USR_OFDMA_INFO.' 193 <legal all> 194 */ 195 196 #define PHYRX_HE_SIG_B2_OFDMA_PHYRX_HE_SIG_B2_OFDMA_INFO_DETAILS_CC_MASK_OFFSET 0x0000000000000000 197 #define PHYRX_HE_SIG_B2_OFDMA_PHYRX_HE_SIG_B2_OFDMA_INFO_DETAILS_CC_MASK_LSB 40 198 #define PHYRX_HE_SIG_B2_OFDMA_PHYRX_HE_SIG_B2_OFDMA_INFO_DETAILS_CC_MASK_MSB 47 199 #define PHYRX_HE_SIG_B2_OFDMA_PHYRX_HE_SIG_B2_OFDMA_INFO_DETAILS_CC_MASK_MASK 0x0000ff0000000000 200 201 202 /* Description RESERVED_1A 203 204 <legal 0> 205 */ 206 207 #define PHYRX_HE_SIG_B2_OFDMA_PHYRX_HE_SIG_B2_OFDMA_INFO_DETAILS_RESERVED_1A_OFFSET 0x0000000000000000 208 #define PHYRX_HE_SIG_B2_OFDMA_PHYRX_HE_SIG_B2_OFDMA_INFO_DETAILS_RESERVED_1A_LSB 48 209 #define PHYRX_HE_SIG_B2_OFDMA_PHYRX_HE_SIG_B2_OFDMA_INFO_DETAILS_RESERVED_1A_MSB 63 210 #define PHYRX_HE_SIG_B2_OFDMA_PHYRX_HE_SIG_B2_OFDMA_INFO_DETAILS_RESERVED_1A_MASK 0xffff000000000000 211 212 213 214 #endif // PHYRX_HE_SIG_B2_OFDMA 215