1 /* 2 * Copyright (c) 2016-2019, 2021 The Linux Foundation. All rights reserved. 3 * 4 * Permission to use, copy, modify, and/or distribute this software for 5 * any purpose with or without fee is hereby granted, provided that the 6 * above copyright notice and this permission notice appear in all 7 * copies. 8 * 9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL 10 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED 11 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 12 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 13 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 14 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 15 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 16 * PERFORMANCE OF THIS SOFTWARE. 17 */ 18 19 #include "dp_ratetable.h" 20 #include "qdf_module.h" 21 #include "cdp_txrx_mon_struct.h" 22 23 enum { 24 MODE_11A = 0, /* 11a Mode */ 25 MODE_11G = 1, /* 11b/g Mode */ 26 MODE_11B = 2, /* 11b Mode */ 27 MODE_11GONLY = 3, /* 11g only Mode */ 28 MODE_11NA_HT20 = 4, /* 11a HT20 mode */ 29 MODE_11NG_HT20 = 5, /* 11g HT20 mode */ 30 MODE_11NA_HT40 = 6, /* 11a HT40 mode */ 31 MODE_11NG_HT40 = 7, /* 11g HT40 mode */ 32 MODE_11AC_VHT20 = 8, 33 MODE_11AC_VHT40 = 9, 34 MODE_11AC_VHT80 = 10, 35 MODE_11AC_VHT20_2G = 11, 36 MODE_11AC_VHT40_2G = 12, 37 MODE_11AC_VHT80_2G = 13, 38 MODE_11AC_VHT80_80 = 14, 39 MODE_11AC_VHT160 = 15, 40 MODE_11AX_HE20 = 16, 41 MODE_11AX_HE40 = 17, 42 MODE_11AX_HE80 = 18, 43 MODE_11AX_HE80_80 = 19, 44 MODE_11AX_HE160 = 20, 45 MODE_11AX_HE20_2G = 21, 46 MODE_11AX_HE40_2G = 22, 47 MODE_11AX_HE80_2G = 23, 48 /* MODE_UNKNOWN should not be used within the host / target interface. 49 * Thus, it is permissible for ODE_UNKNOWN to be conditionally-defined, 50 * taking different values when compiling for different targets. 51 */ 52 MODE_UNKNOWN, 53 MODE_UNKNOWN_NO_160MHZ_SUPPORT = 14, /* not needed? */ 54 MODE_UNKNOWN_160MHZ_SUPPORT = MODE_UNKNOWN, /* not needed? */ 55 } DP_PHY_MODE; 56 57 /* The following would span more than one octet 58 * when 160MHz BW defined for VHT 59 * Also it's important to maintain the ordering of this enum 60 * else it would break other rate adapation functions 61 */ 62 63 enum DP_CMN_RATECODE_PREAM_TYPE { 64 DP_CMN_RATECODE_PREAM_OFDM, 65 DP_CMN_RATECODE_PREAM_CCK, 66 DP_CMN_RATECODE_PREAM_HT, 67 DP_CMN_RATECODE_PREAM_VHT, 68 DP_CMN_RATECODE_PREAM_HE, 69 DP_CMN_RATECODE_PREAM_COUNT, 70 }; 71 72 /* 73 * @validmodemask : bit mask where 1 indicates the rate is valid for that mode 74 * @DP_CMN_MODULATION : modulation CCK/OFDM/MCS 75 * @propmask : bit mask of rate property. NSS/STBC/TXBF/LDPC 76 * @ratekbps : Rate in Kbits per second 77 * @ratebpdsgi : Rate in kbits per second if HT SGI is enabled 78 * @ratekbpsdgi : Rate in kbits per second if 1.6us GI is enabled 79 * @ratekbpsqgi : Rate in kbits per second if 3.2us GI is enabled 80 * @ratekbpsdcm : Rate in kbits per second if DCM is applied 81 * @userratekabps : User rate in KBits per second 82 * @dot11rate : Value that goes into supported rates info element of MLME 83 * @ratecode : rate that goes into hw descriptors 84 */ 85 const struct DP_CMN_RATE_TABLE { 86 struct { 87 uint32_t validmodemask; 88 enum DP_CMN_MODULATION_TYPE phy; 89 uint32_t ratekbps; 90 uint32_t ratekbpssgi; 91 uint32_t ratekbpsdgi; 92 uint32_t ratekbpsqgi; 93 uint32_t ratekbpsdcm; 94 uint32_t userratekbps; 95 uint16_t ratecode; 96 } info[DP_RATE_TABLE_SIZE]; 97 } DP_CMN_RATE_TABLE; 98 99 /*Use the highest bit to indicate the invalid bcc rates accorss 100 *different PHYMODE 101 */ 102 #define INVALID_BCC_RATE BIT(MODE_UNKNOWN) 103 104 #define CCK_MODE_VALID_MASK ((1 << MODE_11G) | (1 << MODE_11B) | \ 105 (1 << MODE_11NG_HT20) | (1 << MODE_11NG_HT40) | \ 106 (1 << MODE_11AC_VHT40_2G) | (1 << MODE_11AC_VHT20_2G) |\ 107 (1 << MODE_11AC_VHT80_2G)) 108 109 #define OFDM_MODE_VALID_MASK ((1 << MODE_11A) | (1 << MODE_11G) | \ 110 (1 << MODE_11GONLY) | (1 << MODE_11NA_HT20) | \ 111 (1 << MODE_11NG_HT20) \ 112 | (1 << MODE_11NA_HT40) | (1 << MODE_11NG_HT40) \ 113 | (1 << MODE_11AC_VHT40) | (1 << MODE_11AC_VHT20) | \ 114 (1 << MODE_11AC_VHT80) \ 115 | (1 << MODE_11AC_VHT40_2G) | (1 << MODE_11AC_VHT20_2G) | \ 116 (1 << MODE_11AC_VHT80_2G) \ 117 | (1 << MODE_11AC_VHT160) | (1 << MODE_11AC_VHT80_80)) 118 119 #define HT20_MODE_VALID_MASK ((1 << MODE_11NA_HT20) | \ 120 (1 << MODE_11NG_HT20) \ 121 | (1 << MODE_11NA_HT40) | (1 << MODE_11NG_HT40) \ 122 | (1 << MODE_11AC_VHT40) | (1 << MODE_11AC_VHT20) | \ 123 (1 << MODE_11AC_VHT80) \ 124 | (1 << MODE_11AC_VHT40_2G) | (1 << MODE_11AC_VHT20_2G) | \ 125 (1 << MODE_11AC_VHT80_2G) \ 126 | (1 << MODE_11AC_VHT160) | (1 << MODE_11AC_VHT80_80)) 127 128 #define HT40_MODE_VALID_MASK ((1 << MODE_11NA_HT40) | \ 129 (1 << MODE_11NG_HT40) \ 130 | (1 << MODE_11AC_VHT40) | (1 << MODE_11AC_VHT80) \ 131 | (1 << MODE_11AC_VHT40_2G) | (1 << MODE_11AC_VHT80_2G) \ 132 | (1 << MODE_11AC_VHT160) | (1 << MODE_11AC_VHT80_80)) 133 134 #define VHT20_MODE_VALID_MASK ((1 << MODE_11AC_VHT20) | \ 135 (1 << MODE_11AC_VHT40) | (1 << MODE_11AC_VHT80) | \ 136 (1 << MODE_11AC_VHT40_2G) | (1 << MODE_11AC_VHT20_2G) | \ 137 (1 << MODE_11AC_VHT80_2G) | \ 138 (1 << MODE_11AC_VHT160) | (1 << MODE_11AC_VHT80_80)) 139 140 #define VHT40_MODE_VALID_MASK ((1 << MODE_11AC_VHT40) | \ 141 (1 << MODE_11AC_VHT80) | \ 142 (1 << MODE_11AC_VHT40_2G) | (1 << MODE_11AC_VHT80_2G) | \ 143 (1 << MODE_11AC_VHT160) | (1 << MODE_11AC_VHT80_80)) 144 145 #define VHT80_MODE_VALID_MASK ((1 << MODE_11AC_VHT80) | \ 146 (1 << MODE_11AC_VHT80_2G) | \ 147 (1 << MODE_11AC_VHT160) | (1 << MODE_11AC_VHT80_80)) 148 149 #define VHT160_MODE_VALID_MASK ((1 << MODE_11AC_VHT160) | \ 150 (1 << MODE_11AC_VHT80_80)) 151 152 #define VHT20_LDPC_ONLY_MASKS (VHT20_MODE_VALID_MASK | INVALID_BCC_RATE) 153 #define VHT40_LDPC_ONLY_MASKS (VHT40_MODE_VALID_MASK | INVALID_BCC_RATE) 154 #define VHT80_LDPC_ONLY_MASKS (VHT80_MODE_VALID_MASK | INVALID_BCC_RATE) 155 #define VHT160_LDPC_ONLY_MASKS (VHT160_MODE_VALID_MASK | INVALID_BCC_RATE) 156 157 #define VHT_INVALID_MCS (0xFF) 158 #define VHT_INVALID_RATES_MASK 0 159 160 #define HE20_MODE_VALID_MASK ((1 << MODE_11AX_HE20) |\ 161 (1 << MODE_11AX_HE40) | \ 162 (1 << MODE_11AX_HE80) | (1 << MODE_11AX_HE20_2G) | \ 163 (1 << MODE_11AX_HE40_2G) | \ 164 (1 << MODE_11AX_HE80_2G) | (1 << MODE_11AX_HE80_80) | \ 165 (1 << MODE_11AX_HE160)) 166 167 #define HE40_MODE_VALID_MASK ((1 << MODE_11AX_HE40) | \ 168 (1 << MODE_11AX_HE80) | (1 << MODE_11AX_HE40_2G) | \ 169 (1 << MODE_11AX_HE80_2G) | (1 << MODE_11AX_HE80_80) | \ 170 (1 << MODE_11AX_HE160)) 171 172 #define HE80_MODE_VALID_MASK ((1 << MODE_11AX_HE80) | \ 173 (1 << MODE_11AX_HE80_2G) | \ 174 (1 << MODE_11AX_HE80_80) | (1 << MODE_11AX_HE160)) 175 176 #define HE160_MODE_VALID_MASK ((1 << MODE_11AX_HE80_80) | \ 177 (1 << MODE_11AX_HE160)) 178 179 #define HE20_LDPC_ONLY_MASKS (HE20_MODE_VALID_MASK | INVALID_BCC_RATE) 180 #define HE40_LDPC_ONLY_MASKS (HE40_MODE_VALID_MASK | INVALID_BCC_RATE) 181 #define HE80_LDPC_ONLY_MASKS (HE80_MODE_VALID_MASK | INVALID_BCC_RATE) 182 #define HE160_LDPC_ONLY_MASKS (HE160_MODE_VALID_MASK | INVALID_BCC_RATE) 183 184 #define HE_INVALID_RATES_MASK 0 185 186 static const struct DP_CMN_RATE_TABLE dp_11abgnratetable = { 187 { 188 /* When number of spatial strams > 4 or 11AX support is enabled */ 189 190 /* 0 11 Mb */ { CCK_MODE_VALID_MASK, DP_CMN_MOD_IEEE80211_T_CCK, 191 11000, 11000, 0, 0, 0, 11000, 192 0x100 }, 193 /* 1 5.5 Mb */ { CCK_MODE_VALID_MASK, DP_CMN_MOD_IEEE80211_T_CCK, 194 5500, 5500, 0, 0, 0, 5500, 0x101 195 }, 196 /* 2 2 Mb */ { CCK_MODE_VALID_MASK, DP_CMN_MOD_IEEE80211_T_CCK, 197 2000, 2000, 0, 0, 0, 2000, 0x102 198 }, 199 /* 3 1 Mb */ { CCK_MODE_VALID_MASK, DP_CMN_MOD_IEEE80211_T_CCK, 200 1000, 1000, 0, 0, 0, 1000, 0x103 201 }, 202 /* 4 48 Mb */ { OFDM_MODE_VALID_MASK, DP_CMN_MOD_IEEE80211_T_OFDM, 203 48000, 48000, 0, 0, 0, 48000, 204 0x000 }, 205 /* 5 24 Mb */ { OFDM_MODE_VALID_MASK, DP_CMN_MOD_IEEE80211_T_OFDM, 206 24000, 24000, 0, 0, 0, 24000, 207 0x001 }, 208 /* 6 12 Mb */ { OFDM_MODE_VALID_MASK, DP_CMN_MOD_IEEE80211_T_OFDM, 209 12000, 12000, 0, 0, 0, 12000, 210 0x002 }, 211 /* 7 6 Mb */ { OFDM_MODE_VALID_MASK, DP_CMN_MOD_IEEE80211_T_OFDM, 212 6000, 6000, 0, 0, 0, 6000, 213 0x003 }, 214 /* 8 54 Mb */ { OFDM_MODE_VALID_MASK, DP_CMN_MOD_IEEE80211_T_OFDM, 215 54000, 54000, 0, 0, 0, 54000, 216 0x004 }, 217 /* 9 36 Mb */ { OFDM_MODE_VALID_MASK, DP_CMN_MOD_IEEE80211_T_OFDM, 218 36000, 36000, 0, 0, 0, 36000, 219 0x005 }, 220 /* 10 18 Mb */ { OFDM_MODE_VALID_MASK, 221 DP_CMN_MOD_IEEE80211_T_OFDM, 222 18000, 18000, 0, 0, 0, 18000, 223 0x006 }, 224 /* 11 9 Mb */ { OFDM_MODE_VALID_MASK, 225 DP_CMN_MOD_IEEE80211_T_OFDM, 226 9000, 9000, 0, 0, 0, 9000, 227 0x007}, 228 229 /* 12 MCS-00 */ { HT20_MODE_VALID_MASK, 230 DP_CMN_MOD_IEEE80211_T_HT_20, 6500, 231 7200, 0, 0, 0, 6500, 0x200 }, 232 /* 13 MCS-01 */ { HT20_MODE_VALID_MASK, 233 DP_CMN_MOD_IEEE80211_T_HT_20, 13000, 234 14400, 0, 0, 0, 13000, 0x201 }, 235 /* 14 MCS-02 */ { HT20_MODE_VALID_MASK, 236 DP_CMN_MOD_IEEE80211_T_HT_20, 19500, 237 21700, 0, 0, 0, 19500, 0x202 }, 238 /* 15 MCS-03 */ { HT20_MODE_VALID_MASK, 239 DP_CMN_MOD_IEEE80211_T_HT_20, 26000, 240 28900, 0, 0, 0, 26000, 0x203 }, 241 /* 16 MCS-04 */ { HT20_MODE_VALID_MASK, 242 DP_CMN_MOD_IEEE80211_T_HT_20, 39000, 243 43300, 0, 0, 0, 39000, 0x204 }, 244 /* 17 MCS-05 */ { HT20_MODE_VALID_MASK, 245 DP_CMN_MOD_IEEE80211_T_HT_20, 52000, 246 57800, 0, 0, 0, 52000, 0x205 }, 247 /* 18 MCS-06 */ { HT20_MODE_VALID_MASK, 248 DP_CMN_MOD_IEEE80211_T_HT_20, 58500, 249 65000, 0, 0, 0, 58500, 0x206 }, 250 /* 19 MCS-07 */ { HT20_MODE_VALID_MASK, 251 DP_CMN_MOD_IEEE80211_T_HT_20, 65000, 252 72200, 0, 0, 0, 65000, 0x207 }, 253 /* When number of spatial streams > 1 */ 254 /* 20 MCS-00 */ { HT20_MODE_VALID_MASK, 255 DP_CMN_MOD_IEEE80211_T_HT_20, 13000, 256 14400, 0, 0, 0, 13000, 0x220 }, 257 /* 21 MCS-01 */ { HT20_MODE_VALID_MASK, 258 DP_CMN_MOD_IEEE80211_T_HT_20, 26000, 259 28900, 0, 0, 0, 26000, 0x221 }, 260 /* 22 MCS-02 */ { HT20_MODE_VALID_MASK, 261 DP_CMN_MOD_IEEE80211_T_HT_20, 39000, 262 43300, 0, 0, 0, 39000, 0x222 }, 263 /* 23 MCS-03 */ { HT20_MODE_VALID_MASK, 264 DP_CMN_MOD_IEEE80211_T_HT_20, 52000, 265 57800, 0, 0, 0, 52000, 0x223 }, 266 /* 24 MCS-04 */ { HT20_MODE_VALID_MASK, 267 DP_CMN_MOD_IEEE80211_T_HT_20, 78000, 268 86700, 0, 0, 0, 78000, 0x224 }, 269 /* 25 MCS-05 */ { HT20_MODE_VALID_MASK, 270 DP_CMN_MOD_IEEE80211_T_HT_20, 104000, 271 115600, 0, 0, 0, 104000, 0x225 }, 272 /* 26 MCS-06 */ { HT20_MODE_VALID_MASK, 273 DP_CMN_MOD_IEEE80211_T_HT_20, 117000, 274 130000, 0, 0, 0, 117000, 0x226 }, 275 /* 27 MCS-07 */ { HT20_MODE_VALID_MASK, 276 DP_CMN_MOD_IEEE80211_T_HT_20, 130000, 277 144000, 0, 0, 0, 130000, 0x227 }, 278 /* When number of spatial streams > 2 */ 279 /* 28 MCS-00 */ { HT20_MODE_VALID_MASK, 280 DP_CMN_MOD_IEEE80211_T_HT_20, 19500, 281 21700, 0, 0, 0, 19500, 0x240 }, 282 /* 29 MCS-01 */ { HT20_MODE_VALID_MASK, 283 DP_CMN_MOD_IEEE80211_T_HT_20, 39000, 284 43300, 0, 0, 0, 39000, 0x241 }, 285 /* 30 MCS-02 */ { HT20_MODE_VALID_MASK, 286 DP_CMN_MOD_IEEE80211_T_HT_20, 58500, 287 65000, 0, 0, 0, 58500, 0x242 }, 288 /* 31 MCS-03 */ { HT20_MODE_VALID_MASK, 289 DP_CMN_MOD_IEEE80211_T_HT_20, 78000, 290 86700, 0, 0, 0, 78000, 0x243 }, 291 /* 32 MCS-04 */ { HT20_MODE_VALID_MASK, 292 DP_CMN_MOD_IEEE80211_T_HT_20, 117000, 293 130000, 0, 0, 0, 117000, 0x244 }, 294 /* 33 MCS-05 */ { HT20_MODE_VALID_MASK, 295 DP_CMN_MOD_IEEE80211_T_HT_20, 156000, 296 173300, 0, 0, 0, 156000, 0x245 }, 297 /* 34 MCS-06 */ { HT20_MODE_VALID_MASK, 298 DP_CMN_MOD_IEEE80211_T_HT_20, 175500, 299 195000, 0, 0, 0, 175500, 0x246 }, 300 /* 35 MCS-07 */ { HT20_MODE_VALID_MASK, 301 DP_CMN_MOD_IEEE80211_T_HT_20, 195000, 302 216700, 0, 0, 0, 195000, 0x247 }, 303 /* When number of spatial streams > 3 */ 304 /* 36 MCS-00 */ { HT20_MODE_VALID_MASK, 305 DP_CMN_MOD_IEEE80211_T_HT_20, 26000, 306 28900, 0, 0, 0, 26000, 0x260 }, 307 /* 37 MCS-01 */ { HT20_MODE_VALID_MASK, 308 DP_CMN_MOD_IEEE80211_T_HT_20, 52000, 309 57800, 0, 0, 0, 52000, 0x261 }, 310 /* 38 MCS-02 */ { HT20_MODE_VALID_MASK, 311 DP_CMN_MOD_IEEE80211_T_HT_20, 78000, 312 86700, 0, 0, 0, 78000, 0x262 }, 313 /* 39 MCS-03 */ { HT20_MODE_VALID_MASK, 314 DP_CMN_MOD_IEEE80211_T_HT_20, 104000, 315 115600, 0, 0, 0, 104000, 0x263 }, 316 /* 40 MCS-04 */ { HT20_MODE_VALID_MASK, 317 DP_CMN_MOD_IEEE80211_T_HT_20, 156000, 318 173300, 0, 0, 0, 156000, 0x264 }, 319 /* 41 MCS-05 */ { HT20_MODE_VALID_MASK, 320 DP_CMN_MOD_IEEE80211_T_HT_20, 208000, 321 231100, 0, 0, 0, 208000, 0x265 }, 322 /* 42 MCS-06 */ { HT20_MODE_VALID_MASK, 323 DP_CMN_MOD_IEEE80211_T_HT_20, 234000, 324 260000, 0, 0, 0, 234000, 0x266 }, 325 /* 43 MCS-07 */ { HT20_MODE_VALID_MASK, 326 DP_CMN_MOD_IEEE80211_T_HT_20, 260000, 327 288900, 0, 0, 0, 260000, 0x267 }, 328 329 /* 11n HT40 rates */ 330 /* 44 MCS-00 */ { HT40_MODE_VALID_MASK, 331 DP_CMN_MOD_IEEE80211_T_HT_40, 13500, 332 15000, 0, 0, 0, 13500, 0x200 }, 333 /* 45 MCS-01 */ { HT40_MODE_VALID_MASK, 334 DP_CMN_MOD_IEEE80211_T_HT_40, 27000, 335 30000, 0, 0, 0, 27000, 0x201 }, 336 /* 46 MCS-02 */ { HT40_MODE_VALID_MASK, 337 DP_CMN_MOD_IEEE80211_T_HT_40, 40500, 338 45000, 0, 0, 0, 40500, 0x202 }, 339 /* 47 MCS-03 */ { HT40_MODE_VALID_MASK, 340 DP_CMN_MOD_IEEE80211_T_HT_40, 54000, 341 60000, 0, 0, 0, 54000, 0x203 }, 342 /* 48 MCS-04 */ { HT40_MODE_VALID_MASK, 343 DP_CMN_MOD_IEEE80211_T_HT_40, 81500, 344 90000, 0, 0, 0, 81500, 0x204 }, 345 /* 49 MCS-05 */ { HT40_MODE_VALID_MASK, 346 DP_CMN_MOD_IEEE80211_T_HT_40, 108000, 347 120000, 0, 0, 0, 108000, 0x205 }, 348 /* 50 MCS-06 */ { HT40_MODE_VALID_MASK, 349 DP_CMN_MOD_IEEE80211_T_HT_40, 121500, 350 135000, 0, 0, 0, 121500, 0x206 }, 351 /* 51 MCS-07 */ { HT40_MODE_VALID_MASK, 352 DP_CMN_MOD_IEEE80211_T_HT_40, 135000, 353 150000, 0, 0, 0, 135000, 0x207 }, 354 /* When number of spatial streams > 1 */ 355 /* 52 MCS-00 */ { HT40_MODE_VALID_MASK, 356 DP_CMN_MOD_IEEE80211_T_HT_40, 27000, 357 30000, 0, 0, 0, 27000, 0x220 }, 358 /* 53 MCS-01 */ { HT40_MODE_VALID_MASK, 359 DP_CMN_MOD_IEEE80211_T_HT_40, 54000, 360 60000, 0, 0, 0, 54000, 0x221 }, 361 /* 54 MCS-02 */ { HT40_MODE_VALID_MASK, 362 DP_CMN_MOD_IEEE80211_T_HT_40, 81000, 363 90000, 0, 0, 0, 81000, 0x222 }, 364 /* 55 MCS-03 */ { HT40_MODE_VALID_MASK, 365 DP_CMN_MOD_IEEE80211_T_HT_40, 108000, 366 120000, 0, 0, 0, 108000, 0x223 }, 367 /* 56 MCS-04 */ { HT40_MODE_VALID_MASK, 368 DP_CMN_MOD_IEEE80211_T_HT_40, 162000, 369 180000, 0, 0, 0, 162000, 0x224 }, 370 /* 57 MCS-05 */ { HT40_MODE_VALID_MASK, 371 DP_CMN_MOD_IEEE80211_T_HT_40, 216000, 372 240000, 0, 0, 0, 216000, 0x225 }, 373 /* 58 MCS-06 */ { HT40_MODE_VALID_MASK, 374 DP_CMN_MOD_IEEE80211_T_HT_40, 243000, 375 270000, 0, 0, 0, 243000, 0x226 }, 376 /* 59 MCS-07 */ { HT40_MODE_VALID_MASK, 377 DP_CMN_MOD_IEEE80211_T_HT_40, 270000, 378 300000, 0, 0, 0, 270000, 0x227 }, 379 /* When number of spatial streams > 2 */ 380 /* 60 MCS-00 */ { HT40_MODE_VALID_MASK, 381 DP_CMN_MOD_IEEE80211_T_HT_40, 40500, 382 45000, 0, 0, 0, 40500, 0x240 }, 383 /* 61 MCS-01 */ { HT40_MODE_VALID_MASK, 384 DP_CMN_MOD_IEEE80211_T_HT_40, 81000, 385 90000, 0, 0, 0, 81000, 0x241 }, 386 /* 62 MCS-02 */ { HT40_MODE_VALID_MASK, 387 DP_CMN_MOD_IEEE80211_T_HT_40, 121500, 388 135000, 0, 0, 0, 121500, 0x242 }, 389 /* 63 MCS-03 */ { HT40_MODE_VALID_MASK, 390 DP_CMN_MOD_IEEE80211_T_HT_40, 162000, 391 180000, 0, 0, 0, 162000, 0x243 }, 392 /* 64 MCS-04 */ { HT40_MODE_VALID_MASK, 393 DP_CMN_MOD_IEEE80211_T_HT_40, 243000, 394 270000, 0, 0, 0, 243000, 0x244 }, 395 /* 65 MCS-05 */ { HT40_MODE_VALID_MASK, 396 DP_CMN_MOD_IEEE80211_T_HT_40, 324000, 397 360000, 0, 0, 0, 324000, 0x245 }, 398 /* 66 MCS-06 */ { HT40_MODE_VALID_MASK, 399 DP_CMN_MOD_IEEE80211_T_HT_40, 364500, 400 405000, 0, 0, 0, 364500, 0x246 }, 401 /* 67 MCS-07 */ { HT40_MODE_VALID_MASK, 402 DP_CMN_MOD_IEEE80211_T_HT_40, 405000, 403 450000, 0, 0, 0, 405000, 0x247 }, 404 /* When number of spatial streams > 3 */ 405 /* 68 MCS-00 */ { HT40_MODE_VALID_MASK, 406 DP_CMN_MOD_IEEE80211_T_HT_40, 54000, 407 60000, 0, 0, 0, 54000, 0x260 }, 408 /* 69 MCS-01 */ { HT40_MODE_VALID_MASK, 409 DP_CMN_MOD_IEEE80211_T_HT_40, 108000, 410 120000, 0, 0, 0, 108000, 0x261 }, 411 /* 70 MCS-02 */ { HT40_MODE_VALID_MASK, 412 DP_CMN_MOD_IEEE80211_T_HT_40, 162000, 413 180000, 0, 0, 0, 162000, 0x262 }, 414 /* 71 MCS-03 */ { HT40_MODE_VALID_MASK, 415 DP_CMN_MOD_IEEE80211_T_HT_40, 216000, 416 240000, 0, 0, 0, 216000, 0x263 }, 417 /* 72 MCS-04 */ { HT40_MODE_VALID_MASK, 418 DP_CMN_MOD_IEEE80211_T_HT_40, 324000, 419 360000, 0, 0, 0, 324000, 0x264 }, 420 /* 73 MCS-05 */ { HT40_MODE_VALID_MASK, 421 DP_CMN_MOD_IEEE80211_T_HT_40, 432000, 422 480000, 0, 0, 0, 432000, 0x265 }, 423 /* 74 MCS-06 */ { HT40_MODE_VALID_MASK, 424 DP_CMN_MOD_IEEE80211_T_HT_40, 486000, 425 540000, 0, 0, 0, 486000, 0x266 }, 426 /* 75 MCS-07 */ { HT40_MODE_VALID_MASK, 427 DP_CMN_MOD_IEEE80211_T_HT_40, 540000, 428 600000, 0, 0, 0, 540000, 0x267 }, 429 430 /* 11ac VHT20 rates */ 431 /* 76 MCS-00 */ { VHT20_MODE_VALID_MASK, 432 DP_CMN_MOD_IEEE80211_T_VHT_20, 6500, 433 7200, 0, 0, 0, 6500, 0x300 }, 434 /* 77 MCS-01 */ { VHT20_MODE_VALID_MASK, 435 DP_CMN_MOD_IEEE80211_T_VHT_20, 13000, 436 14400, 0, 0, 0, 13000, 0x301 }, 437 /* 78 MCS-02 */ { VHT20_MODE_VALID_MASK, 438 DP_CMN_MOD_IEEE80211_T_VHT_20, 19500, 439 21700, 0, 0, 0, 19500, 0x302 }, 440 /* 79 MCS-03 */ { VHT20_MODE_VALID_MASK, 441 DP_CMN_MOD_IEEE80211_T_VHT_20, 26000, 442 28900, 0, 0, 0, 26000, 0x303 }, 443 /* 80 MCS-04 */ { VHT20_MODE_VALID_MASK, 444 DP_CMN_MOD_IEEE80211_T_VHT_20, 39000, 445 43300, 0, 0, 0, 39000, 0x304 }, 446 /* 81 MCS-05 */ { VHT20_MODE_VALID_MASK, 447 DP_CMN_MOD_IEEE80211_T_VHT_20, 52000, 448 57800, 0, 0, 0, 52000, 0x305 }, 449 /* 82 MCS-06 */ { VHT20_MODE_VALID_MASK, 450 DP_CMN_MOD_IEEE80211_T_VHT_20, 58500, 451 65000, 0, 0, 0, 58500, 0x306 }, 452 /* 83 MCS-07 */ { VHT20_MODE_VALID_MASK, 453 DP_CMN_MOD_IEEE80211_T_VHT_20, 65000, 454 72200, 0, 0, 0, 65000, 0x307 }, 455 /* 84 MCS-08 */ { VHT20_MODE_VALID_MASK, 456 DP_CMN_MOD_IEEE80211_T_VHT_20, 78000, 457 86700, 0, 0, 0, 78000, 0x308 }, 458 /* 85 MCS-09 */ { VHT20_LDPC_ONLY_MASKS, 459 DP_CMN_MOD_IEEE80211_T_VHT_20, 86500, 460 96000, 0, 0, 0, 86500, 0x309 }, 461 /* When we support very hight throughput MCS */ 462 /* 86 MCS-10 */ { VHT20_LDPC_ONLY_MASKS, 463 DP_CMN_MOD_IEEE80211_T_VHT_20, 464 97500, 108300, 0, 0, 0, 465 97500, 0x30a}, 466 /* 87 MCS-11 */ { VHT20_LDPC_ONLY_MASKS, 467 DP_CMN_MOD_IEEE80211_T_VHT_20, 468 108300, 120400, 0, 0, 0, 469 108300, 0x30b}, 470 471 /* When number of spatial streams > 1 */ 472 /* 88 MCS-00 */ { VHT20_MODE_VALID_MASK, 473 DP_CMN_MOD_IEEE80211_T_VHT_20, 13000, 474 14400, 0, 0, 0, 13000, 0x320 }, 475 /* 89 MCS-01 */ { VHT20_MODE_VALID_MASK, 476 DP_CMN_MOD_IEEE80211_T_VHT_20, 26000, 477 28900, 0, 0, 0, 26000, 0x321 }, 478 /* 90 MCS-02 */ { VHT20_MODE_VALID_MASK, 479 DP_CMN_MOD_IEEE80211_T_VHT_20, 39000, 480 43300, 0, 0, 0, 39000, 0x322 }, 481 /* 91 MCS-03 */ { VHT20_MODE_VALID_MASK, 482 DP_CMN_MOD_IEEE80211_T_VHT_20, 52000, 483 57800, 0, 0, 0, 52000, 0x323 }, 484 /* 92 MCS-04 */ { VHT20_MODE_VALID_MASK, 485 DP_CMN_MOD_IEEE80211_T_VHT_20, 78000, 486 86700, 0, 0, 0, 78000, 0x324 }, 487 /* 93 MCS-05 */ { VHT20_MODE_VALID_MASK, 488 DP_CMN_MOD_IEEE80211_T_VHT_20, 104000, 489 115600, 0, 0, 0, 104000, 0x325 }, 490 /* 94 MCS-06 */ { VHT20_MODE_VALID_MASK, 491 DP_CMN_MOD_IEEE80211_T_VHT_20, 117000, 492 130000, 0, 0, 0, 117000, 0x326 }, 493 /* 95 MCS-07 */ { VHT20_MODE_VALID_MASK, 494 DP_CMN_MOD_IEEE80211_T_VHT_20, 130000, 495 144400, 0, 0, 0, 130000, 0x327 }, 496 /* 96 MCS-08 */ { VHT20_MODE_VALID_MASK, 497 DP_CMN_MOD_IEEE80211_T_VHT_20, 156000, 498 173300, 0, 0, 0, 156000, 0x328 }, 499 /* 97 MCS-09 */ { VHT20_LDPC_ONLY_MASKS, 500 DP_CMN_MOD_IEEE80211_T_VHT_20, 173000, 501 192000, 0, 0, 0, 173000, 0x329 }, 502 /* 98 MCS-10 */ { VHT20_LDPC_ONLY_MASKS, 503 DP_CMN_MOD_IEEE80211_T_VHT_20, 504 195000, 216700, 0, 0, 0, 505 195000, 0x32a }, 506 /* 99 MCS-11 */ { VHT20_LDPC_ONLY_MASKS, 507 DP_CMN_MOD_IEEE80211_T_VHT_20, 508 216700, 240700, 0, 0, 0, 509 216700, 0x32b }, 510 511 /* when number of spatial streams > 2 */ 512 /* 100 MCS-00 */ { VHT20_MODE_VALID_MASK, 513 DP_CMN_MOD_IEEE80211_T_VHT_20, 19500, 514 21700, 0, 0, 0, 19500, 0x340 }, 515 /* 101 MCS-01 */ { VHT20_MODE_VALID_MASK, 516 DP_CMN_MOD_IEEE80211_T_VHT_20, 39000, 517 43300, 0, 0, 0, 39000, 0x341 }, 518 /* 102 MCS-02 */ { VHT20_MODE_VALID_MASK, 519 DP_CMN_MOD_IEEE80211_T_VHT_20, 58500, 520 65000, 0, 0, 0, 58500, 0x342 }, 521 /* 103 MCS-03 */ { VHT20_MODE_VALID_MASK, 522 DP_CMN_MOD_IEEE80211_T_VHT_20, 78000, 523 86700, 0, 0, 0, 78000, 0x343 }, 524 /* 104 MCS-04 */ { VHT20_MODE_VALID_MASK, 525 DP_CMN_MOD_IEEE80211_T_VHT_20, 117000, 526 130000, 0, 0, 0, 117000, 0x344 }, 527 /* 105 MCS-05 */ { VHT20_MODE_VALID_MASK, 528 DP_CMN_MOD_IEEE80211_T_VHT_20, 156000, 529 173300, 0, 0, 0, 156000, 0x345 }, 530 /* 106 MCS-06 */ { VHT20_MODE_VALID_MASK, 531 DP_CMN_MOD_IEEE80211_T_VHT_20, 175500, 532 195000, 0, 0, 0, 175500, 0x346 }, 533 /* 107 MCS-07 */ { VHT20_MODE_VALID_MASK, 534 DP_CMN_MOD_IEEE80211_T_VHT_20, 195000, 535 216700, 0, 0, 0, 195000, 0x347 }, 536 /* 108 MCS-08 */ { VHT20_MODE_VALID_MASK, 537 DP_CMN_MOD_IEEE80211_T_VHT_20, 234000, 538 260000, 0, 0, 0, 234000, 0x348 }, 539 /* 109 MCS-09 */ { VHT20_MODE_VALID_MASK, 540 DP_CMN_MOD_IEEE80211_T_VHT_20, 260000, 541 288900, 0, 0, 0, 260000, 0x349 }, 542 /* 110 MCS-10 */ { VHT20_LDPC_ONLY_MASKS, 543 DP_CMN_MOD_IEEE80211_T_VHT_20, 544 292500, 325000, 0, 0, 0, 545 292500, 0x34a}, 546 /* 111 MCS-11 */ { VHT20_LDPC_ONLY_MASKS, 547 DP_CMN_MOD_IEEE80211_T_VHT_20, 548 325000, 361100, 0, 0, 0, 549 325000, 0x34b}, 550 551 /* when number of spatial streams > 3 */ 552 /* 112 MCS-00 */ { VHT20_MODE_VALID_MASK, 553 DP_CMN_MOD_IEEE80211_T_VHT_20, 26000, 554 28900, 0, 0, 0, 26000, 0x360 }, 555 /* 113 MCS-01 */ { VHT20_MODE_VALID_MASK, 556 DP_CMN_MOD_IEEE80211_T_VHT_20, 52000, 557 57800, 0, 0, 0, 52000, 0x361 }, 558 /* 114 MCS-02 */ { VHT20_MODE_VALID_MASK, 559 DP_CMN_MOD_IEEE80211_T_VHT_20, 78000, 560 86700, 0, 0, 0, 78000, 0x362 }, 561 /* 115 MCS-03 */ { VHT20_MODE_VALID_MASK, 562 DP_CMN_MOD_IEEE80211_T_VHT_20, 104000, 563 115600, 0, 0, 0, 104000, 0x363 }, 564 /* 116 MCS-04 */ { VHT20_MODE_VALID_MASK, 565 DP_CMN_MOD_IEEE80211_T_VHT_20, 156000, 566 173300, 0, 0, 0, 156000, 0x364 }, 567 /* 117 MCS-05 */ { VHT20_MODE_VALID_MASK, 568 DP_CMN_MOD_IEEE80211_T_VHT_20, 208000, 569 231100, 0, 0, 0, 208000, 0x365 }, 570 /* 118 MCS-06 */ { VHT20_MODE_VALID_MASK, 571 DP_CMN_MOD_IEEE80211_T_VHT_20, 234000, 572 260000, 0, 0, 0, 234000, 0x366 }, 573 /* 119 MCS-07 */ { VHT20_MODE_VALID_MASK, 574 DP_CMN_MOD_IEEE80211_T_VHT_20, 260000, 575 288900, 0, 0, 0, 260000, 0x367 }, 576 /* 120 MCS-08 */ { VHT20_MODE_VALID_MASK, 577 DP_CMN_MOD_IEEE80211_T_VHT_20, 312000, 578 346700, 0, 0, 0, 312000, 0x368 }, 579 /* 121 MCS-09 */ { VHT20_LDPC_ONLY_MASKS, 580 DP_CMN_MOD_IEEE80211_T_VHT_20, 344000, 581 378400, 0, 0, 0, 344000, 0x369 }, 582 /* 122 MCS-10 */ { VHT20_LDPC_ONLY_MASKS, 583 DP_CMN_MOD_IEEE80211_T_VHT_20, 584 390000, 433300, 0, 0, 0, 390000, 585 0x36a}, 586 /* 123 MCS-11 */ { VHT20_LDPC_ONLY_MASKS, 587 DP_CMN_MOD_IEEE80211_T_VHT_20, 433300, 588 481500, 0, 0, 0, 433300, 0x36b}, 589 590 /* when number of spatial streams > 4 */ 591 /* 124 MCS-00 */ { VHT20_LDPC_ONLY_MASKS, 592 DP_CMN_MOD_IEEE80211_T_VHT_20, 32500, 593 36100, 0, 0, 0, 32500, 0x380 }, 594 /* 125 MCS-01 */ { VHT20_LDPC_ONLY_MASKS, 595 DP_CMN_MOD_IEEE80211_T_VHT_20, 65000, 596 72200, 0, 0, 0, 65000, 0x381 }, 597 /* 126 MCS-02 */ { VHT20_LDPC_ONLY_MASKS, 598 DP_CMN_MOD_IEEE80211_T_VHT_20, 97500, 599 108300, 0, 0, 0, 97500, 0x382 }, 600 /* 127 MCS-03 */ { VHT20_LDPC_ONLY_MASKS, 601 DP_CMN_MOD_IEEE80211_T_VHT_20, 130000, 602 144400, 0, 0, 0, 130000, 0x383 }, 603 /* 128 MCS-04 */ { VHT20_LDPC_ONLY_MASKS, 604 DP_CMN_MOD_IEEE80211_T_VHT_20, 195000, 605 216700, 0, 0, 0, 195000, 0x384 }, 606 /* 129 MCS-05 */ { VHT20_LDPC_ONLY_MASKS, 607 DP_CMN_MOD_IEEE80211_T_VHT_20, 260000, 608 288900, 0, 0, 0, 260000, 0x385 }, 609 /* 130 MCS-06 */ { VHT20_LDPC_ONLY_MASKS, 610 DP_CMN_MOD_IEEE80211_T_VHT_20, 292500, 611 325000, 0, 0, 0, 292500, 0x386 }, 612 /* 131 MCS-07 */ { VHT20_LDPC_ONLY_MASKS, 613 DP_CMN_MOD_IEEE80211_T_VHT_20, 325000, 614 361100, 0, 0, 0, 325000, 0x387 }, 615 /* 132 MCS-08 */ { VHT20_LDPC_ONLY_MASKS, 616 DP_CMN_MOD_IEEE80211_T_VHT_20, 390000, 617 433300, 0, 0, 0, 390000, 0x388 }, 618 /* 133 MCS-09 */ { VHT20_LDPC_ONLY_MASKS, 619 DP_CMN_MOD_IEEE80211_T_VHT_20, 433300, 620 481500, 0, 0, 0, 433300, 0x389 }, 621 /* 134 MCS-10 */ { VHT20_LDPC_ONLY_MASKS, 622 DP_CMN_MOD_IEEE80211_T_VHT_20, 487500, 623 541700, 0, 0, 0, 487500, 0x38a }, 624 /* 135 MCS-11 */ { VHT20_LDPC_ONLY_MASKS, 625 DP_CMN_MOD_IEEE80211_T_VHT_20, 541700, 626 601900, 0, 0, 0, 541700, 0x38b }, 627 628 /* When number of spatial streams > 5 */ 629 /* 136 MCS-00 */ { VHT20_LDPC_ONLY_MASKS, 630 DP_CMN_MOD_IEEE80211_T_VHT_20, 39000, 631 43300, 0, 0, 0, 39000, 0x3a0 }, 632 /* 137 MCS-01 */ { VHT20_LDPC_ONLY_MASKS, 633 DP_CMN_MOD_IEEE80211_T_VHT_20, 78000, 634 86700, 0, 0, 0, 78000, 0x3a1 }, 635 /* 138 MCS-02 */ { VHT20_LDPC_ONLY_MASKS, 636 DP_CMN_MOD_IEEE80211_T_VHT_20, 117000, 637 130000, 0, 0, 0, 117000, 0x3a2 }, 638 /* 139 MCS-03 */ { VHT20_LDPC_ONLY_MASKS, 639 DP_CMN_MOD_IEEE80211_T_VHT_20, 156000, 640 173300, 0, 0, 0, 156000, 0x3a3 }, 641 /* 140 MCS-04 */ { VHT20_LDPC_ONLY_MASKS, 642 DP_CMN_MOD_IEEE80211_T_VHT_20, 234000, 643 260000, 0, 0, 0, 234000, 0x3a4 }, 644 /* 141 MCS-05 */ { VHT20_LDPC_ONLY_MASKS, 645 DP_CMN_MOD_IEEE80211_T_VHT_20, 312000, 646 346700, 0, 0, 0, 312000, 0x3a5 }, 647 /* 142 MCS-06 */ { VHT20_LDPC_ONLY_MASKS, 648 DP_CMN_MOD_IEEE80211_T_VHT_20, 351000, 649 390000, 0, 0, 0, 351000, 0x3a6 }, 650 /* 143 MCS-07 */ { VHT20_LDPC_ONLY_MASKS, 651 DP_CMN_MOD_IEEE80211_T_VHT_20, 390000, 652 433300, 0, 0, 0, 390000, 0x3a7 }, 653 /* 144 MCS-08 */ { VHT20_LDPC_ONLY_MASKS, 654 DP_CMN_MOD_IEEE80211_T_VHT_20, 468000, 655 520000, 0, 0, 0, 468000, 0x3a8 }, 656 /* 145 MCS-09 */ { VHT20_LDPC_ONLY_MASKS, 657 DP_CMN_MOD_IEEE80211_T_VHT_20, 520000, 658 577800, 0, 0, 0, 520000, 0x3a9 }, 659 /* 146 MCS-10 */ { VHT20_LDPC_ONLY_MASKS, 660 DP_CMN_MOD_IEEE80211_T_VHT_20, 661 585000, 650000, 0, 0, 0, 662 585000, 0x3aa }, 663 /* 147 MCS-11 */ { VHT20_LDPC_ONLY_MASKS, 664 DP_CMN_MOD_IEEE80211_T_VHT_20, 665 650000, 722200, 0, 0, 666 0, 650000, 0x3ab }, 667 668 /* when number of spatial streams > 6 */ 669 /* 148 MCS-00 */ { VHT20_LDPC_ONLY_MASKS, 670 DP_CMN_MOD_IEEE80211_T_VHT_20, 45500, 671 50600, 0, 0, 0, 45500, 0x3c0 }, 672 /* 149 MCS-01 */ { VHT20_LDPC_ONLY_MASKS, 673 DP_CMN_MOD_IEEE80211_T_VHT_20, 91000, 674 101100, 0, 0, 0, 91000, 0x3c1 }, 675 /* 150 MCS-02 */ { VHT20_LDPC_ONLY_MASKS, 676 DP_CMN_MOD_IEEE80211_T_VHT_20, 136500, 677 151700, 0, 0, 0, 136500, 0x3c2 }, 678 /* 151 MCS-03 */ { VHT20_LDPC_ONLY_MASKS, 679 DP_CMN_MOD_IEEE80211_T_VHT_20, 182000, 680 202200, 0, 0, 0, 182000, 0x3c3 }, 681 /* 152 MCS-04 */ { VHT20_LDPC_ONLY_MASKS, 682 DP_CMN_MOD_IEEE80211_T_VHT_20, 273000, 683 303300, 0, 0, 0, 273000, 0x3c4 }, 684 /* 153 MCS-05 */ { VHT20_LDPC_ONLY_MASKS, 685 DP_CMN_MOD_IEEE80211_T_VHT_20, 364000, 686 404400, 0, 0, 0, 364000, 0x3c5 }, 687 /* 154 MCS-06 */ { VHT20_LDPC_ONLY_MASKS, 688 DP_CMN_MOD_IEEE80211_T_VHT_20, 409500, 689 455000, 0, 0, 0, 409500, 0x3c6 }, 690 /* 155 MCS-07 */ { VHT20_LDPC_ONLY_MASKS, 691 DP_CMN_MOD_IEEE80211_T_VHT_20, 455000, 692 505600, 0, 0, 0, 455000, 0x3c7 }, 693 /* 156 MCS-08 */ { VHT20_LDPC_ONLY_MASKS, 694 DP_CMN_MOD_IEEE80211_T_VHT_20, 546000, 695 606700, 0, 0, 0, 546000, 0x3c8 }, 696 /* 157 MCS-09 */ { VHT20_LDPC_ONLY_MASKS, 697 DP_CMN_MOD_IEEE80211_T_VHT_20, 606700, 698 674100, 0, 0, 0, 606700, 0x3c9 }, 699 /* 158 MCS-10 */ { VHT20_LDPC_ONLY_MASKS, 700 DP_CMN_MOD_IEEE80211_T_VHT_20, 682500, 701 758300, 0, 0, 0, 682500, 0x3ca }, 702 /* 159 MCS-11 */ { VHT20_LDPC_ONLY_MASKS, 703 DP_CMN_MOD_IEEE80211_T_VHT_20, 758300, 704 842600, 0, 0, 0, 758300, 0x3cb }, 705 706 /* when number of spatial streams > 7 */ 707 /* 160 MCS-00 */ { VHT20_LDPC_ONLY_MASKS, 708 DP_CMN_MOD_IEEE80211_T_VHT_20, 52000, 709 57800, 0, 0, 0, 52000, 0x3e0 }, 710 /* 161 MCS-01 */ { VHT20_LDPC_ONLY_MASKS, 711 DP_CMN_MOD_IEEE80211_T_VHT_20, 104000, 712 115600, 0, 0, 0, 104000, 0x3e1 }, 713 /* 162 MCS-02 */ { VHT20_LDPC_ONLY_MASKS, 714 DP_CMN_MOD_IEEE80211_T_VHT_20, 156000, 715 173300, 0, 0, 0, 156000, 0x3e2 }, 716 /* 163 MCS-03 */ { VHT20_LDPC_ONLY_MASKS, 717 DP_CMN_MOD_IEEE80211_T_VHT_20, 208000, 718 231100, 0, 0, 0, 208000, 0x3e3 }, 719 /* 164 MCS-04 */ { VHT20_LDPC_ONLY_MASKS, 720 DP_CMN_MOD_IEEE80211_T_VHT_20, 312000, 721 346700, 0, 0, 0, 312000, 0x3e4 }, 722 /* 165 MCS-05 */ { VHT20_LDPC_ONLY_MASKS, 723 DP_CMN_MOD_IEEE80211_T_VHT_20, 416000, 724 462200, 0, 0, 0, 416000, 0x3e5 }, 725 /* 166 MCS-06 */ { VHT20_LDPC_ONLY_MASKS, 726 DP_CMN_MOD_IEEE80211_T_VHT_20, 468000, 727 520000, 0, 0, 0, 468000, 0x3e6 }, 728 /* 167 MCS-07 */ { VHT20_LDPC_ONLY_MASKS, 729 DP_CMN_MOD_IEEE80211_T_VHT_20, 520000, 730 577800, 0, 0, 0, 520000, 0x3e7 }, 731 /* 168 MCS-08 */ { VHT20_LDPC_ONLY_MASKS, 732 DP_CMN_MOD_IEEE80211_T_VHT_20, 624000, 733 693300, 0, 0, 0, 624000, 0x3e8 }, 734 /* 169 MCS-09 */ { VHT20_LDPC_ONLY_MASKS, 735 DP_CMN_MOD_IEEE80211_T_VHT_20, 693300, 736 770400, 0, 0, 0, 693300, 0x3e9 }, 737 /* 170 MCS-10 */ { VHT20_LDPC_ONLY_MASKS, 738 DP_CMN_MOD_IEEE80211_T_VHT_20, 780000, 739 866700, 0, 0, 0, 780000, 0x3ea }, 740 /* 171 MCS-11 */ { VHT20_LDPC_ONLY_MASKS, 741 DP_CMN_MOD_IEEE80211_T_VHT_20, 866700, 742 963000, 0, 0, 0, 866700, 0x3eb }, 743 744 /* 11ac VHT40 rates */ 745 /* 172 MCS-00 */ { VHT40_MODE_VALID_MASK, 746 DP_CMN_MOD_IEEE80211_T_VHT_40, 13500, 747 15000, 0, 0, 0, 13500, 0x300 }, 748 /* 173 MCS-01 */ { VHT40_MODE_VALID_MASK, 749 DP_CMN_MOD_IEEE80211_T_VHT_40, 27000, 750 30000, 0, 0, 0, 27000, 0x301 }, 751 /* 174 MCS-02 */ { VHT40_MODE_VALID_MASK, 752 DP_CMN_MOD_IEEE80211_T_VHT_40, 40500, 753 45000, 0, 0, 0, 40500, 0x302 }, 754 /* 175 MCS-03 */ { VHT40_MODE_VALID_MASK, 755 DP_CMN_MOD_IEEE80211_T_VHT_40, 54000, 756 60000, 0, 0, 0, 54000, 0x303 }, 757 /* 176 MCS-04 */ { VHT40_MODE_VALID_MASK, 758 DP_CMN_MOD_IEEE80211_T_VHT_40, 81000, 759 90000, 0, 0, 0, 81000, 0x304 }, 760 /* 177 MCS-05 */ { VHT40_MODE_VALID_MASK, 761 DP_CMN_MOD_IEEE80211_T_VHT_40, 108000, 762 120000, 0, 0, 0, 108000, 0x305 }, 763 /* 178 MCS-06 */ { VHT40_MODE_VALID_MASK, 764 DP_CMN_MOD_IEEE80211_T_VHT_40, 121500, 765 135000, 0, 0, 0, 121500, 0x306 }, 766 /* 179 MCS-07 */ { VHT40_MODE_VALID_MASK, 767 DP_CMN_MOD_IEEE80211_T_VHT_40, 135000, 768 150000, 0, 0, 0, 135000, 0x307 }, 769 /* 180 MCS-08 */ { VHT40_MODE_VALID_MASK, 770 DP_CMN_MOD_IEEE80211_T_VHT_40, 162000, 771 180000, 0, 0, 0, 162000, 0x308 }, 772 /* 181 MCS-09 */ { VHT40_MODE_VALID_MASK, 773 DP_CMN_MOD_IEEE80211_T_VHT_40, 180000, 774 200000, 0, 0, 0, 180000, 0x309 }, 775 /* 182 MCS-10 */ { VHT40_LDPC_ONLY_MASKS, 776 DP_CMN_MOD_IEEE80211_T_VHT_40, 202500, 777 225000, 0, 0, 0, 202500, 0x30a }, 778 /* 183 MCS-11 */ { VHT40_LDPC_ONLY_MASKS, 779 DP_CMN_MOD_IEEE80211_T_VHT_40, 225000, 780 250000, 0, 0, 0, 225000, 0x30b }, 781 782 /* when number of spatial streams > 1 */ 783 /* 184 MCS-00 */ { VHT40_MODE_VALID_MASK, 784 DP_CMN_MOD_IEEE80211_T_VHT_40, 27000, 785 30000, 0, 0, 0, 27000, 0x320 }, 786 /* 185 MCS-01 */ { VHT40_MODE_VALID_MASK, 787 DP_CMN_MOD_IEEE80211_T_VHT_40, 54000, 788 60000, 0, 0, 0, 54000, 0x321 }, 789 /* 186 MCS-02 */ { VHT40_MODE_VALID_MASK, 790 DP_CMN_MOD_IEEE80211_T_VHT_40, 81000, 791 90000, 0, 0, 0, 81000, 0x322 }, 792 /* 187 MCS-03 */ { VHT40_MODE_VALID_MASK, 793 DP_CMN_MOD_IEEE80211_T_VHT_40, 108000, 794 120000, 0, 0, 0, 108000, 0x323 }, 795 /* 188 MCS-04 */ { VHT40_MODE_VALID_MASK, 796 DP_CMN_MOD_IEEE80211_T_VHT_40, 162000, 797 180000, 0, 0, 0, 162000, 0x324 }, 798 /* 189 MCS-05 */ { VHT40_MODE_VALID_MASK, 799 DP_CMN_MOD_IEEE80211_T_VHT_40, 216000, 800 240000, 0, 0, 0, 216000, 0x325 }, 801 /* 190 MCS-06 */ { VHT40_MODE_VALID_MASK, 802 DP_CMN_MOD_IEEE80211_T_VHT_40, 243000, 803 270000, 0, 0, 0, 243000, 0x326 }, 804 /* 191 MCS-07 */ { VHT40_MODE_VALID_MASK, 805 DP_CMN_MOD_IEEE80211_T_VHT_40, 270000, 806 300000, 0, 0, 0, 270000, 0x327 }, 807 /* 192 MCS-08 */ { VHT40_MODE_VALID_MASK, 808 DP_CMN_MOD_IEEE80211_T_VHT_40, 324000, 809 360000, 0, 0, 0, 324000, 0x328 }, 810 /* 193 MCS-09 */ { VHT40_MODE_VALID_MASK, 811 DP_CMN_MOD_IEEE80211_T_VHT_40, 360000, 812 400000, 0, 0, 0, 360000, 0x329 }, 813 /* 194 MCS-10 */ { VHT40_LDPC_ONLY_MASKS, 814 DP_CMN_MOD_IEEE80211_T_VHT_40, 405000, 815 450000, 0, 0, 0, 405000, 0x32a }, 816 /* 195 MCS-11 */ { VHT40_LDPC_ONLY_MASKS, 817 DP_CMN_MOD_IEEE80211_T_VHT_40, 450000, 818 500000, 0, 0, 0, 450000, 0x32b }, 819 820 /* When number of spatial streams > 2 use below rate*/ 821 /* 196 MCS-00 */ { VHT40_MODE_VALID_MASK, 822 DP_CMN_MOD_IEEE80211_T_VHT_40, 40500, 823 45000, 0, 0, 0, 40500, 0x340 }, 824 /* 197 MCS-01 */ { VHT40_MODE_VALID_MASK, 825 DP_CMN_MOD_IEEE80211_T_VHT_40, 81000, 826 90000, 0, 0, 0, 81000, 0x341 }, 827 /* 198 MCS-02 */ { VHT40_MODE_VALID_MASK, 828 DP_CMN_MOD_IEEE80211_T_VHT_40, 121500, 829 135000, 0, 0, 0, 121500, 0x342 }, 830 /* 199 MCS-03 */ { VHT40_MODE_VALID_MASK, 831 DP_CMN_MOD_IEEE80211_T_VHT_40, 162000, 832 180000, 0, 0, 0, 162000, 0x343 }, 833 /* 200 MCS-04 */ { VHT40_MODE_VALID_MASK, 834 DP_CMN_MOD_IEEE80211_T_VHT_40, 243000, 835 270000, 0, 0, 0, 243000, 0x344 }, 836 /* 201 MCS-05 */ { VHT40_MODE_VALID_MASK, 837 DP_CMN_MOD_IEEE80211_T_VHT_40, 324000, 838 360000, 0, 0, 0, 324000, 0x345 }, 839 /* 202 MCS-06 */ { VHT40_MODE_VALID_MASK, 840 DP_CMN_MOD_IEEE80211_T_VHT_40, 364500, 841 405000, 0, 0, 0, 364500, 0x346 }, 842 /* 203 MCS-07 */ { VHT40_MODE_VALID_MASK, 843 DP_CMN_MOD_IEEE80211_T_VHT_40, 405000, 844 450000, 0, 0, 0, 405000, 0x347 }, 845 /* 204 MCS-08 */ { VHT40_MODE_VALID_MASK, 846 DP_CMN_MOD_IEEE80211_T_VHT_40, 486000, 847 540000, 0, 0, 0, 486000, 0x348 }, 848 /* 205 MCS-09 */ { VHT40_MODE_VALID_MASK, 849 DP_CMN_MOD_IEEE80211_T_VHT_40, 540000, 850 600000, 0, 0, 0, 540000, 0x349 }, 851 /* 206 MCS-10 */ { VHT40_LDPC_ONLY_MASKS, 852 DP_CMN_MOD_IEEE80211_T_VHT_40, 607500, 853 675000, 0, 0, 0, 607500, 0x34a}, 854 /* 207 MCS-11 */ { VHT40_LDPC_ONLY_MASKS, 855 DP_CMN_MOD_IEEE80211_T_VHT_40, 675000, 856 750000, 0, 0, 0, 675000, 0x34b}, 857 858 /* When number of spatial streams > 3 use below rates */ 859 /* 208 MCS-00 */ { VHT40_MODE_VALID_MASK, 860 DP_CMN_MOD_IEEE80211_T_VHT_40, 54000, 861 60000, 0, 0, 0, 54000, 0x360}, 862 /* 209 MCS-01 */ { VHT40_MODE_VALID_MASK, 863 DP_CMN_MOD_IEEE80211_T_VHT_40, 108000, 864 120000, 0, 0, 0, 108000, 0x361}, 865 /* 210 MCS-02 */ { VHT40_MODE_VALID_MASK, 866 DP_CMN_MOD_IEEE80211_T_VHT_40, 162000, 867 180000, 0, 0, 0, 162000, 0x362}, 868 /* 211 MCS-03 */ { VHT40_MODE_VALID_MASK, 869 DP_CMN_MOD_IEEE80211_T_VHT_40, 216000, 870 240000, 0, 0, 0, 216000, 0x363}, 871 /* 212 MCS-04 */ { VHT40_MODE_VALID_MASK, 872 DP_CMN_MOD_IEEE80211_T_VHT_40, 324000, 873 260000, 0, 0, 0, 324000, 0x364}, 874 /* 213 MCS-05 */ { VHT40_MODE_VALID_MASK, 875 DP_CMN_MOD_IEEE80211_T_VHT_40, 432000, 876 480000, 0, 0, 0, 432000, 0x365}, 877 /* 214 MCS-06 */ { VHT40_MODE_VALID_MASK, 878 DP_CMN_MOD_IEEE80211_T_VHT_40, 486000, 879 540000, 0, 0, 0, 486000, 0x366}, 880 /* 215 MCS-07 */ { VHT40_MODE_VALID_MASK, 881 DP_CMN_MOD_IEEE80211_T_VHT_40, 540000, 882 600000, 0, 0, 0, 540000, 0x367}, 883 /* 216 MCS-08 */ { VHT40_MODE_VALID_MASK, 884 DP_CMN_MOD_IEEE80211_T_VHT_40, 648000, 885 720000, 0, 0, 0, 648000, 0x368}, 886 /* 217 MCS-09 */ { VHT40_MODE_VALID_MASK, 887 DP_CMN_MOD_IEEE80211_T_VHT_40, 720000, 888 800000, 0, 0, 0, 720000, 0x369}, 889 /* 218 MCS-10 */ { VHT40_LDPC_ONLY_MASKS, 890 DP_CMN_MOD_IEEE80211_T_VHT_40, 810000, 891 900000, 0, 0, 0, 810000, 0x36a }, 892 /* 219 MCS-11 */ { VHT40_LDPC_ONLY_MASKS, 893 DP_CMN_MOD_IEEE80211_T_VHT_40, 900000, 894 1000000, 0, 0, 0, 900000, 0x36b }, 895 896 /* when number of spatial streams > 4 use below rates */ 897 /* 220 MCS-00 */ { VHT40_LDPC_ONLY_MASKS, 898 DP_CMN_MOD_IEEE80211_T_VHT_40, 67500, 899 75000, 0, 0, 0, 67500, 0x380 }, 900 /* 221 MCS-01 */ { VHT40_LDPC_ONLY_MASKS, 901 DP_CMN_MOD_IEEE80211_T_VHT_40, 135000, 902 150000, 0, 0, 0, 135000, 0x381 }, 903 /* 222 MCS-02 */ { VHT40_LDPC_ONLY_MASKS, 904 DP_CMN_MOD_IEEE80211_T_VHT_40, 202500, 905 225000, 0, 0, 0, 202500, 0x382 }, 906 /* 223 MCS-03 */ { VHT40_LDPC_ONLY_MASKS, 907 DP_CMN_MOD_IEEE80211_T_VHT_40, 270000, 908 300000, 0, 0, 0, 270000, 0x383 }, 909 /* 224 MCS-04 */ { VHT40_LDPC_ONLY_MASKS, 910 DP_CMN_MOD_IEEE80211_T_VHT_40, 405000, 911 450000, 0, 0, 0, 405000, 0x384 }, 912 /* 225 MCS-05 */ { VHT40_LDPC_ONLY_MASKS, 913 DP_CMN_MOD_IEEE80211_T_VHT_40, 540000, 914 600000, 0, 0, 0, 540000, 0x385 }, 915 /* 226 MCS-06 */ { VHT40_LDPC_ONLY_MASKS, 916 DP_CMN_MOD_IEEE80211_T_VHT_40, 607500, 917 675000, 0, 0, 0, 607500, 0x386 }, 918 /* 227 MCS-07 */ { VHT40_LDPC_ONLY_MASKS, 919 DP_CMN_MOD_IEEE80211_T_VHT_40, 675000, 920 750000, 0, 0, 0, 675000, 0x387 }, 921 /* 228 MCS-08 */ { VHT40_LDPC_ONLY_MASKS, 922 DP_CMN_MOD_IEEE80211_T_VHT_40, 923 810000, 900000, 0, 0, 0, 810000, 924 0x388 }, 925 /* 229 MCS-09 */ { VHT40_LDPC_ONLY_MASKS, 926 DP_CMN_MOD_IEEE80211_T_VHT_40, 927 900000, 1000000, 0, 0, 0, 900000, 928 0x389 }, 929 /* 230 MCS-10 */ { VHT40_LDPC_ONLY_MASKS, 930 DP_CMN_MOD_IEEE80211_T_VHT_40, 931 1012500, 1125000, 0, 0, 0, 1012500, 932 0x38a }, 933 /* 231 MCS-11 */ { VHT40_LDPC_ONLY_MASKS, 934 DP_CMN_MOD_IEEE80211_T_VHT_40, 935 1125000, 1250000, 0, 0, 0, 1125000, 936 0x38b }, 937 938 /* when number of spatial streams > 5 use below rates*/ 939 /* 232 MCS-00 */ { VHT40_LDPC_ONLY_MASKS, 940 DP_CMN_MOD_IEEE80211_T_VHT_40, 941 81000, 90000, 0, 0, 0, 81000, 0x3a0 942 }, 943 /* 233 MCS-01 */ { VHT40_LDPC_ONLY_MASKS, 944 DP_CMN_MOD_IEEE80211_T_VHT_40, 945 162000, 180000, 0, 0, 0, 162000, 946 0x3a1 }, 947 /* 234 MCS-02 */ { VHT40_LDPC_ONLY_MASKS, 948 DP_CMN_MOD_IEEE80211_T_VHT_40, 949 243000, 270000, 0, 0, 0, 243000, 950 0x3a2 }, 951 /* 235 MCS-03 */ { VHT40_LDPC_ONLY_MASKS, 952 DP_CMN_MOD_IEEE80211_T_VHT_40, 953 324000, 360000, 0, 0, 0, 324000, 954 0x3a3 }, 955 /* 236 MCS-04 */ { VHT40_LDPC_ONLY_MASKS, 956 DP_CMN_MOD_IEEE80211_T_VHT_40, 957 486000, 540000, 0, 0, 0, 486000, 958 0x3a4 }, 959 /* 237 MCS-05 */ { VHT40_LDPC_ONLY_MASKS, 960 DP_CMN_MOD_IEEE80211_T_VHT_40, 961 648000, 720000, 0, 0, 0, 648000, 962 0x3a5 }, 963 /* 238 MCS-06 */ { VHT40_LDPC_ONLY_MASKS, 964 DP_CMN_MOD_IEEE80211_T_VHT_40, 965 729000, 815000, 0, 0, 0, 729000, 966 0x3a6 }, 967 /* 239 MCS-07 */ { VHT40_LDPC_ONLY_MASKS, 968 DP_CMN_MOD_IEEE80211_T_VHT_40, 969 810000, 900000, 0, 0, 0, 810000, 970 0x3a7 }, 971 /* 240 MCS-08 */ { VHT40_LDPC_ONLY_MASKS, 972 DP_CMN_MOD_IEEE80211_T_VHT_40, 973 972000, 1080000, 0, 0, 0, 972000, 974 0x3a8 }, 975 /* 241 MCS-09 */ { VHT40_LDPC_ONLY_MASKS, 976 DP_CMN_MOD_IEEE80211_T_VHT_40, 977 1080000, 1200000, 0, 0, 0, 1080000, 978 0x3a9 }, 979 /* 242 MCS-10 */ { VHT40_LDPC_ONLY_MASKS, 980 DP_CMN_MOD_IEEE80211_T_VHT_40, 981 1215000, 1350000, 0, 0, 0, 1215000, 982 0x3aa }, 983 /* 243 MCS-11 */ { VHT40_LDPC_ONLY_MASKS, 984 DP_CMN_MOD_IEEE80211_T_VHT_40, 985 1350000, 1500000, 0, 0, 0, 1350000, 986 0x3ab }, 987 988 /* when number of spatial streams > 6 use below rates */ 989 /* 244 MCS-00 */ { VHT40_LDPC_ONLY_MASKS, 990 DP_CMN_MOD_IEEE80211_T_VHT_40, 991 94500, 105000, 0, 0, 0, 94500, 0x3c0 992 }, 993 /* 245 MCS-01 */ { VHT40_LDPC_ONLY_MASKS, 994 DP_CMN_MOD_IEEE80211_T_VHT_40, 995 189000, 210000, 0, 0, 0, 189000, 996 0x3c1 }, 997 /* 246 MCS-02 */ { VHT40_LDPC_ONLY_MASKS, 998 DP_CMN_MOD_IEEE80211_T_VHT_40, 999 283500, 315000, 0, 0, 0, 283500, 1000 0x3c2 }, 1001 /* 247 MCS-03 */ { VHT40_LDPC_ONLY_MASKS, 1002 DP_CMN_MOD_IEEE80211_T_VHT_40, 1003 378000, 420000, 0, 0, 0, 378000, 1004 0x3c3 }, 1005 /* 248 MCS-04 */ { VHT40_LDPC_ONLY_MASKS, 1006 DP_CMN_MOD_IEEE80211_T_VHT_40, 1007 567000, 630000, 0, 0, 0, 567000, 1008 0x3c4 }, 1009 /* 249 MCS-05 */ { VHT40_LDPC_ONLY_MASKS, 1010 DP_CMN_MOD_IEEE80211_T_VHT_40, 1011 756000, 840000, 0, 0, 0, 756000, 1012 0x3c5 }, 1013 /* 250 MCS-06 */ { VHT40_LDPC_ONLY_MASKS, 1014 DP_CMN_MOD_IEEE80211_T_VHT_40, 1015 850500, 945000, 0, 0, 0, 850500, 1016 0x3c6 }, 1017 /* 251 MCS-07 */ { VHT40_LDPC_ONLY_MASKS, 1018 DP_CMN_MOD_IEEE80211_T_VHT_40, 1019 945000, 1050000, 0, 0, 0, 945000, 1020 0x3c7 }, 1021 /* 252 MCS-08 */ { VHT40_LDPC_ONLY_MASKS, 1022 DP_CMN_MOD_IEEE80211_T_VHT_40, 1023 1134000, 1260000, 0, 0, 0, 1134000, 1024 0x3c8 }, 1025 /* 253 MCS-09 */ { VHT40_LDPC_ONLY_MASKS, 1026 DP_CMN_MOD_IEEE80211_T_VHT_40, 1027 1260000, 1400000, 0, 0, 0, 1260000, 1028 0x3c9 }, 1029 /* 254 MCS-10 */ { VHT40_LDPC_ONLY_MASKS, 1030 DP_CMN_MOD_IEEE80211_T_VHT_40, 1031 1417500, 1575000, 0, 0, 0, 1417500, 1032 0x3ca }, 1033 /* 255 MCS-11 */ { VHT40_LDPC_ONLY_MASKS, 1034 DP_CMN_MOD_IEEE80211_T_VHT_40, 1035 1575000, 1750000, 0, 0, 0, 1575000, 1036 0x3cb }, 1037 1038 /* when number of spatial streams > 7 use below rates */ 1039 /* 256 MCS-00 */ { VHT40_LDPC_ONLY_MASKS, 1040 DP_CMN_MOD_IEEE80211_T_VHT_40, 1041 108000, 120000, 0, 0, 0, 108000, 1042 0x3e0 }, 1043 /* 257 MCS-01 */ { VHT40_LDPC_ONLY_MASKS, 1044 DP_CMN_MOD_IEEE80211_T_VHT_40, 1045 216000, 240000, 0, 0, 0, 216000, 1046 0x3e1 }, 1047 /* 258 MCS-02 */ { VHT40_LDPC_ONLY_MASKS, 1048 DP_CMN_MOD_IEEE80211_T_VHT_40, 1049 324000, 360000, 0, 0, 0, 324000, 1050 0x3e2 }, 1051 /* 259 MCS-03 */ { VHT40_LDPC_ONLY_MASKS, 1052 DP_CMN_MOD_IEEE80211_T_VHT_40, 1053 432000, 480000, 0, 0, 0, 432000, 1054 0x3e3 }, 1055 /* 260 MCS-04 */ { VHT40_LDPC_ONLY_MASKS, 1056 DP_CMN_MOD_IEEE80211_T_VHT_40, 1057 648000, 720000, 0, 0, 0, 648000, 1058 0x3e4 }, 1059 /* 261 MCS-05 */ { VHT40_LDPC_ONLY_MASKS, 1060 DP_CMN_MOD_IEEE80211_T_VHT_40, 1061 864000, 960000, 0, 0, 0, 864000, 1062 0x3e5 }, 1063 /* 262 MCS-06 */ { VHT40_LDPC_ONLY_MASKS, 1064 DP_CMN_MOD_IEEE80211_T_VHT_40, 1065 972000, 1080000, 0, 0, 0, 972000, 1066 0x3e6 }, 1067 /* 263 MCS-07 */ { VHT40_LDPC_ONLY_MASKS, 1068 DP_CMN_MOD_IEEE80211_T_VHT_40, 1069 1080000, 1200000, 0, 0, 0, 1080000, 1070 0x3e7 }, 1071 /* 264 MCS-08 */ { VHT40_LDPC_ONLY_MASKS, 1072 DP_CMN_MOD_IEEE80211_T_VHT_40, 1073 1296000, 1440000, 0, 0, 0, 1296000, 1074 0x3e8 }, 1075 /* 265 MCS-09 */ { VHT40_LDPC_ONLY_MASKS, 1076 DP_CMN_MOD_IEEE80211_T_VHT_40, 1077 1440000, 1600000, 0, 0, 0, 1440000, 1078 0x3e9 }, 1079 /* 266 MCS-10 */ { VHT40_LDPC_ONLY_MASKS, 1080 DP_CMN_MOD_IEEE80211_T_VHT_40, 1081 1620000, 1800000, 0, 0, 0, 1620000, 1082 0x3ea }, 1083 /* 267 MCS-11 */ { VHT40_LDPC_ONLY_MASKS, 1084 DP_CMN_MOD_IEEE80211_T_VHT_40, 1085 1800000, 2000000, 0, 0, 0, 1800000, 1086 0x3eb }, 1087 1088 /* 11ac VHT80 rates 1089 */ 1090 /* 268 MCS-00 */ { VHT80_MODE_VALID_MASK, 1091 DP_CMN_MOD_IEEE80211_T_VHT_80, 1092 29300, 32500, 0, 0, 0, 29300, 1093 0x300}, 1094 /* 269 MCS-01 */ { VHT80_MODE_VALID_MASK, 1095 DP_CMN_MOD_IEEE80211_T_VHT_80, 1096 58500, 65000, 0, 0, 0, 58500, 1097 0x301}, 1098 /* 270 MCS-02 */ { VHT80_MODE_VALID_MASK, 1099 DP_CMN_MOD_IEEE80211_T_VHT_80, 1100 87800, 97500, 0, 0, 0, 87800, 1101 0x302}, 1102 /* 271 MCS-03 */ { VHT80_MODE_VALID_MASK, 1103 DP_CMN_MOD_IEEE80211_T_VHT_80, 1104 117000, 130000, 0, 0, 0, 117000, 1105 0x303}, 1106 /* 272 MCS-04 */ { VHT80_MODE_VALID_MASK, 1107 DP_CMN_MOD_IEEE80211_T_VHT_80, 1108 175500, 195000, 0, 0, 0, 175500, 1109 0x304}, 1110 /* 273 MCS-05 */ { VHT80_MODE_VALID_MASK, 1111 DP_CMN_MOD_IEEE80211_T_VHT_80, 1112 234000, 260000, 0, 0, 0, 234000, 1113 0x305}, 1114 /* 274 MCS-06 */ { VHT80_MODE_VALID_MASK, 1115 DP_CMN_MOD_IEEE80211_T_VHT_80, 1116 263300, 292500, 0, 0, 0, 263300, 1117 0x306}, 1118 /* 275 MCS-07 */ { VHT80_MODE_VALID_MASK, 1119 DP_CMN_MOD_IEEE80211_T_VHT_80, 1120 292500, 325000, 0, 0, 0, 292500, 1121 0x307}, 1122 /* 276 MCS-08 */ { VHT80_MODE_VALID_MASK, 1123 DP_CMN_MOD_IEEE80211_T_VHT_80, 1124 351000, 390000, 0, 0, 0, 351000, 1125 0x308}, 1126 /* 277 MCS-09 */ { VHT80_MODE_VALID_MASK, 1127 DP_CMN_MOD_IEEE80211_T_VHT_80, 1128 390000, 433300, 0, 0, 0, 390000, 1129 0x309}, 1130 /* 278 MCS-10 */ { VHT80_LDPC_ONLY_MASKS, 1131 DP_CMN_MOD_IEEE80211_T_VHT_80, 1132 438800, 487500, 0, 0, 0, 438800, 1133 0x30a}, 1134 /* 279 MCS-11 */ { VHT80_LDPC_ONLY_MASKS, 1135 DP_CMN_MOD_IEEE80211_T_VHT_80, 1136 487500, 541700, 0, 0, 0, 487500, 1137 0x30b}, 1138 1139 /* When number of spatial streams > 1 use below rates*/ 1140 /* 280 MCS-00 */ { VHT80_MODE_VALID_MASK, 1141 DP_CMN_MOD_IEEE80211_T_VHT_80, 1142 58500, 65000, 0, 0, 0, 58500, 1143 0x320}, 1144 /* 281 MCS-01 */ { VHT80_MODE_VALID_MASK, 1145 DP_CMN_MOD_IEEE80211_T_VHT_80, 1146 117000, 130000, 0, 0, 0, 117000, 1147 0x321}, 1148 /* 282 MCS-02 */ { VHT80_MODE_VALID_MASK, 1149 DP_CMN_MOD_IEEE80211_T_VHT_80, 1150 175500, 195000, 0, 0, 0, 175500, 1151 0x322}, 1152 /* 283 MCS-03 */ { VHT80_MODE_VALID_MASK, 1153 DP_CMN_MOD_IEEE80211_T_VHT_80, 1154 234000, 260000, 0, 0, 0, 234000, 1155 0x323}, 1156 /* 284 MCS-04 */ { VHT80_MODE_VALID_MASK, 1157 DP_CMN_MOD_IEEE80211_T_VHT_80, 1158 351000, 390000, 0, 0, 0, 351000, 1159 0x324}, 1160 /* 285 MCS-05 */ { VHT80_MODE_VALID_MASK, 1161 DP_CMN_MOD_IEEE80211_T_VHT_80, 1162 468000, 520000, 0, 0, 0, 468000, 1163 0x325}, 1164 /* 286 MCS-06 */ { VHT80_MODE_VALID_MASK, 1165 DP_CMN_MOD_IEEE80211_T_VHT_80, 1166 526500, 585000, 0, 0, 0, 526500, 1167 0x326}, 1168 /* 287 MCS-07 */ { VHT80_MODE_VALID_MASK, 1169 DP_CMN_MOD_IEEE80211_T_VHT_80, 1170 585000, 650000, 0, 0, 0, 585000, 1171 0x327}, 1172 /* 288 MCS-08 */ { VHT80_MODE_VALID_MASK, 1173 DP_CMN_MOD_IEEE80211_T_VHT_80, 1174 702000, 780000, 0, 0, 0, 702000, 1175 0x328}, 1176 /* 289 MCS-09 */ { VHT80_MODE_VALID_MASK, 1177 DP_CMN_MOD_IEEE80211_T_VHT_80, 1178 780000, 866700, 0, 0, 0, 780000, 1179 0x329}, 1180 /* 290 MCS-10 */ { VHT80_LDPC_ONLY_MASKS, 1181 DP_CMN_MOD_IEEE80211_T_VHT_80, 1182 877500, 975000, 0, 0, 0, 877500, 1183 0x32a}, 1184 /* 291 MCS-11 */ { VHT80_LDPC_ONLY_MASKS, 1185 DP_CMN_MOD_IEEE80211_T_VHT_80, 1186 975000, 1083300, 0, 0, 0, 975000, 1187 0x32b}, 1188 1189 /* When number of spatial streams > 2 use below rates */ 1190 /* 292 MCS-00 */ { VHT80_MODE_VALID_MASK, 1191 DP_CMN_MOD_IEEE80211_T_VHT_80, 1192 87800, 97500, 0, 0, 0, 87800, 0x340 1193 }, 1194 /* 293 MCS-01 */ { VHT80_MODE_VALID_MASK, 1195 DP_CMN_MOD_IEEE80211_T_VHT_80, 1196 175500, 195000, 0, 0, 0, 175500, 1197 0x341 }, 1198 /* 294 MCS-02 */ { VHT80_MODE_VALID_MASK, 1199 DP_CMN_MOD_IEEE80211_T_VHT_80, 1200 263300, 292500, 0, 0, 0, 263300, 1201 0x342 }, 1202 /* 295 MCS-03 */ { VHT80_MODE_VALID_MASK, 1203 DP_CMN_MOD_IEEE80211_T_VHT_80, 1204 351000, 390000, 0, 0, 0, 351000, 1205 0x343 }, 1206 /* 296 MCS-04 */ { VHT80_MODE_VALID_MASK, 1207 DP_CMN_MOD_IEEE80211_T_VHT_80, 1208 526500, 585000, 0, 0, 0, 526500, 1209 0x344 }, 1210 /* 297 MCS-05 */ { VHT80_MODE_VALID_MASK, 1211 DP_CMN_MOD_IEEE80211_T_VHT_80, 1212 702000, 780000, 0, 0, 0, 702000, 1213 0x345 }, 1214 /* 298 MCS-06 */ { VHT_INVALID_RATES_MASK, 1215 DP_CMN_MOD_IEEE80211_T_VHT_80, 1216 789800, 877500, 0, 0, 0, 789800, 1217 0x346 }, 1218 /* 299 MCS-07 */ { VHT80_MODE_VALID_MASK, 1219 DP_CMN_MOD_IEEE80211_T_VHT_80, 1220 877500, 975000, 0, 0, 0, 877500, 1221 0x347 }, 1222 /* 300 MCS-08 */ { VHT80_MODE_VALID_MASK, 1223 DP_CMN_MOD_IEEE80211_T_VHT_80, 1224 1053000, 1170000, 0, 0, 0, 1053000, 1225 0x348 }, 1226 /* 301 MCS-09 */ { VHT80_MODE_VALID_MASK, 1227 DP_CMN_MOD_IEEE80211_T_VHT_80, 1228 1170000, 1300000, 0, 0, 0, 1170000, 1229 0x349 }, 1230 /* 302 MCS-10 */ { VHT80_LDPC_ONLY_MASKS, 1231 DP_CMN_MOD_IEEE80211_T_VHT_80, 1232 1316300, 1462500, 0, 0, 0, 1316300, 1233 0x34a }, 1234 /* 303 MCS-11 */ { VHT80_LDPC_ONLY_MASKS, 1235 DP_CMN_MOD_IEEE80211_T_VHT_80, 1236 1462500, 1625000, 0, 0, 0, 1462500, 1237 0x34b }, 1238 /* When number of spatial streams > 3 use below rates */ 1239 /* 304 MCS-00 */ { VHT80_MODE_VALID_MASK, 1240 DP_CMN_MOD_IEEE80211_T_VHT_80, 1241 117000, 130000, 0, 0, 0, 117000, 1242 0x360 }, 1243 /* 305 MCS-01 */ { VHT80_MODE_VALID_MASK, 1244 DP_CMN_MOD_IEEE80211_T_VHT_80, 1245 234000, 260000, 0, 0, 0, 234000, 1246 0x361 }, 1247 /* 306 MCS-02 */ { VHT80_MODE_VALID_MASK, 1248 DP_CMN_MOD_IEEE80211_T_VHT_80, 1249 351000, 390000, 0, 0, 0, 351000, 1250 0x362 }, 1251 /* 307 MCS-03 */ { VHT80_MODE_VALID_MASK, 1252 DP_CMN_MOD_IEEE80211_T_VHT_80, 1253 468000, 520000, 0, 0, 0, 468000, 1254 0x363 }, 1255 /* 308 MCS-04 */ { VHT80_MODE_VALID_MASK, 1256 DP_CMN_MOD_IEEE80211_T_VHT_80, 1257 702000, 780000, 0, 0, 0, 702000, 1258 0x364 }, 1259 /* 309 MCS-05 */ { VHT80_MODE_VALID_MASK, 1260 DP_CMN_MOD_IEEE80211_T_VHT_80, 1261 936000, 1040000, 0, 0, 0, 936000, 1262 0x365 }, 1263 /* 310 MCS-06 */ { VHT80_MODE_VALID_MASK, 1264 DP_CMN_MOD_IEEE80211_T_VHT_80, 1265 1053000, 1170000, 0, 0, 0, 1053000, 1266 0x366 }, 1267 /* 311 MCS-07 */ { VHT80_MODE_VALID_MASK, 1268 DP_CMN_MOD_IEEE80211_T_VHT_80, 1269 1170000, 1300000, 0, 0, 0, 1170000, 1270 0x367 }, 1271 /* 312 MCS-08 */ { VHT80_MODE_VALID_MASK, 1272 DP_CMN_MOD_IEEE80211_T_VHT_80, 1273 1404000, 1560000, 0, 0, 0, 1404000, 1274 0x368 }, 1275 /* 313 MCS-09 */ { VHT80_MODE_VALID_MASK, 1276 DP_CMN_MOD_IEEE80211_T_VHT_80, 1277 1560000, 1733000, 0, 0, 0, 1560000, 1278 0x369 }, 1279 /* 314 MCS-08 */ { VHT80_LDPC_ONLY_MASKS, 1280 DP_CMN_MOD_IEEE80211_T_VHT_80, 1281 1755000, 1950000, 0, 0, 0, 1755000, 1282 0x36a }, 1283 /* 315 MCS-09 */ { VHT80_LDPC_ONLY_MASKS, 1284 DP_CMN_MOD_IEEE80211_T_VHT_80, 1285 1950000, 2166700, 0, 0, 0, 1950000, 1286 0x36b }, 1287 /* When number of spatial streams > 4 use below rates */ 1288 /* 316 MCS-00 */ { VHT80_LDPC_ONLY_MASKS, 1289 DP_CMN_MOD_IEEE80211_T_VHT_80, 1290 146300, 162500, 0, 0, 0, 146300, 1291 0x380 }, 1292 /* 317 MCS-01 */ { VHT80_LDPC_ONLY_MASKS, 1293 DP_CMN_MOD_IEEE80211_T_VHT_80, 1294 292500, 325000, 0, 0, 0, 292500, 1295 0x381 }, 1296 /* 318 MCS-02 */ { VHT80_LDPC_ONLY_MASKS, 1297 DP_CMN_MOD_IEEE80211_T_VHT_80, 1298 438800, 487500, 0, 0, 0, 438800, 1299 0x382 }, 1300 /* 319 MCS-03 */ { VHT80_LDPC_ONLY_MASKS, 1301 DP_CMN_MOD_IEEE80211_T_VHT_80, 1302 585000, 650000, 0, 0, 0, 585000, 1303 0x383 }, 1304 /* 320 MCS-04 */ { VHT80_LDPC_ONLY_MASKS, 1305 DP_CMN_MOD_IEEE80211_T_VHT_80, 1306 877500, 975000, 0, 0, 0, 877500, 1307 0x384 }, 1308 /* 321 MCS-05 */ { VHT80_LDPC_ONLY_MASKS, 1309 DP_CMN_MOD_IEEE80211_T_VHT_80, 1310 1170000, 1300000, 0, 0, 0, 1170000, 1311 0x385 }, 1312 /* 322 MCS-06 */ { VHT80_LDPC_ONLY_MASKS, 1313 DP_CMN_MOD_IEEE80211_T_VHT_80, 1314 1316300, 1462500, 0, 0, 0, 1316300, 1315 0x386 }, 1316 /* 323 MCS-07 */ { VHT80_LDPC_ONLY_MASKS, 1317 DP_CMN_MOD_IEEE80211_T_VHT_80, 1318 1462500, 1625000, 0, 0, 0, 1462500, 1319 0x387 }, 1320 /* 324 MCS-08 */ { VHT80_LDPC_ONLY_MASKS, 1321 DP_CMN_MOD_IEEE80211_T_VHT_80, 1322 1755000, 1950000, 0, 0, 0, 1755000, 1323 0x388 }, 1324 /* 325 MCS-09 */ { VHT80_LDPC_ONLY_MASKS, 1325 DP_CMN_MOD_IEEE80211_T_VHT_80, 1326 1950000, 2166700, 0, 0, 0, 1950000, 1327 0x389 }, 1328 /* 326 MCS-10 */ { VHT80_LDPC_ONLY_MASKS, 1329 DP_CMN_MOD_IEEE80211_T_VHT_80, 1330 2193800, 2437500, 0, 0, 0, 2193800, 1331 0x38a }, 1332 /* 327 MCS-11 */ { VHT80_LDPC_ONLY_MASKS, 1333 DP_CMN_MOD_IEEE80211_T_VHT_80, 1334 2437500, 2708300, 0, 0, 0, 2437500, 1335 0x38b }, 1336 /* When number of spatial streams > 5 use below rates */ 1337 /* 328 MCS-00 */ { VHT80_LDPC_ONLY_MASKS, 1338 DP_CMN_MOD_IEEE80211_T_VHT_80, 1339 175500, 195000, 0, 0, 0, 175500, 1340 0x3a0 }, 1341 /* 329 MCS-01 */ { VHT80_LDPC_ONLY_MASKS, 1342 DP_CMN_MOD_IEEE80211_T_VHT_80, 1343 351000, 390000, 0, 0, 0, 351000, 1344 0x3a1 }, 1345 /* 330 MCS-02 */ { VHT80_LDPC_ONLY_MASKS, 1346 DP_CMN_MOD_IEEE80211_T_VHT_80, 1347 526500, 585500, 0, 0, 0, 526500, 1348 0x3a2 }, 1349 /* 331 MCS-03 */ { VHT80_LDPC_ONLY_MASKS, 1350 DP_CMN_MOD_IEEE80211_T_VHT_80, 1351 702000, 780000, 0, 0, 0, 702000, 1352 0x3a3 }, 1353 /* 332 MCS-04 */ { VHT80_LDPC_ONLY_MASKS, 1354 DP_CMN_MOD_IEEE80211_T_VHT_80, 1355 1053000, 1170000, 0, 0, 0, 1053000, 1356 0x3a4 }, 1357 /* 333 MCS-05 */ { VHT80_LDPC_ONLY_MASKS, 1358 DP_CMN_MOD_IEEE80211_T_VHT_80, 1359 1404000, 1560000, 0, 0, 0, 1404000, 1360 0x3a5 }, 1361 /* 334 MCS-06 */ { VHT80_LDPC_ONLY_MASKS, 1362 DP_CMN_MOD_IEEE80211_T_VHT_80, 1363 1579500, 1755000, 0, 0, 0, 1579500, 1364 0x3a6 }, 1365 /* 335 MCS-07 */ { VHT80_LDPC_ONLY_MASKS, 1366 DP_CMN_MOD_IEEE80211_T_VHT_80, 1367 1755000, 1950000, 0, 0, 0, 1755000, 1368 0x3a7 }, 1369 /* 336 MCS-08 */ { VHT80_LDPC_ONLY_MASKS, 1370 DP_CMN_MOD_IEEE80211_T_VHT_80, 1371 2106000, 2340000, 0, 0, 0, 2106000, 1372 0x3a8 }, 1373 /* 337 MCS-09 */ { VHT80_LDPC_ONLY_MASKS, 1374 DP_CMN_MOD_IEEE80211_T_VHT_80, 1375 2340000, 2600000, 0, 0, 0, 2340000, 1376 0x3a9 }, 1377 /* 338 MCS-10 */ { VHT80_LDPC_ONLY_MASKS, 1378 DP_CMN_MOD_IEEE80211_T_VHT_80, 1379 2632500, 2925000, 0, 0, 0, 2632500, 1380 0x3aa }, 1381 /* 339 MCS-11 */ { VHT80_LDPC_ONLY_MASKS, 1382 DP_CMN_MOD_IEEE80211_T_VHT_80, 1383 2925000, 3250000, 0, 0, 0, 2925000, 1384 0x3ab }, 1385 /* When number of spatial streams > 6 use below rates*/ 1386 /* 340 MCS-00 */ { VHT80_LDPC_ONLY_MASKS, 1387 DP_CMN_MOD_IEEE80211_T_VHT_80, 1388 204800, 227500, 0, 0, 0, 204800, 1389 0x3c0 }, 1390 /* 341 MCS-01 */ { VHT80_LDPC_ONLY_MASKS, 1391 DP_CMN_MOD_IEEE80211_T_VHT_80, 1392 409500, 455000, 0, 0, 0, 409500, 1393 0x3c1 }, 1394 /* 342 MCS-02 */ { VHT80_LDPC_ONLY_MASKS, 1395 DP_CMN_MOD_IEEE80211_T_VHT_80, 1396 614300, 682500, 0, 0, 0, 614300, 1397 0x3c2 }, 1398 /* 343 MCS-03 */ { VHT80_LDPC_ONLY_MASKS, 1399 DP_CMN_MOD_IEEE80211_T_VHT_80, 1400 819000, 910000, 0, 0, 0, 819000, 1401 0x3c3 }, 1402 /* 344 MCS-04 */ { VHT80_LDPC_ONLY_MASKS, 1403 DP_CMN_MOD_IEEE80211_T_VHT_80, 1404 1288500, 1365000, 0, 0, 0, 1288500, 1405 0x3c4 }, 1406 /* 345 MCS-05 */ { VHT80_LDPC_ONLY_MASKS, 1407 DP_CMN_MOD_IEEE80211_T_VHT_80, 1408 1638000, 1820000, 0, 0, 0, 1638000, 1409 0x3c5 }, 1410 /* 346 MCS-06 */ { VHT80_LDPC_ONLY_MASKS, 1411 DP_CMN_MOD_IEEE80211_T_VHT_80, 1412 1842800, 2047500, 0, 0, 0, 1842800, 1413 0x3c6 }, 1414 /* 347 MCS-07 */ { VHT80_LDPC_ONLY_MASKS, 1415 DP_CMN_MOD_IEEE80211_T_VHT_80, 1416 2047500, 2275000, 0, 0, 0, 2047500, 1417 0x3c7 }, 1418 /* 348 MCS-08 */ { VHT80_LDPC_ONLY_MASKS, 1419 DP_CMN_MOD_IEEE80211_T_VHT_80, 1420 2457000, 2730000, 0, 0, 0, 2457000, 1421 0x3c8 }, 1422 /* 349 MCS-09 */ { VHT80_LDPC_ONLY_MASKS, 1423 DP_CMN_MOD_IEEE80211_T_VHT_80, 1424 2730000, 3033300, 0, 0, 0, 2730000, 1425 0x3c9 }, 1426 /* 350 MCS-10 */ { VHT80_LDPC_ONLY_MASKS, 1427 DP_CMN_MOD_IEEE80211_T_VHT_80, 1428 3071300, 3412500, 0, 0, 0, 3071300, 1429 0x3ca }, 1430 /* 351 MCS-11 */ { VHT80_LDPC_ONLY_MASKS, 1431 DP_CMN_MOD_IEEE80211_T_VHT_80, 1432 3412500, 3791700, 0, 0, 0, 3412500, 1433 0x3cb }, 1434 /* When number of spatial streams > 7 use below rates*/ 1435 /* 352 MCS-00 */ { VHT80_LDPC_ONLY_MASKS, 1436 DP_CMN_MOD_IEEE80211_T_VHT_80, 1437 234000, 260000, 0, 0, 0, 234000, 1438 0x3e0 }, 1439 /* 353 MCS-01 */ { VHT80_LDPC_ONLY_MASKS, 1440 DP_CMN_MOD_IEEE80211_T_VHT_80, 1441 468000, 520000, 0, 0, 0, 468000, 1442 0x3e1}, 1443 /* 354 MCS-02 */ { VHT80_LDPC_ONLY_MASKS, 1444 DP_CMN_MOD_IEEE80211_T_VHT_80, 1445 702000, 780000, 0, 0, 0, 702000, 1446 0x3e2}, 1447 /* 355 MCS-03 */ { VHT80_LDPC_ONLY_MASKS, 1448 DP_CMN_MOD_IEEE80211_T_VHT_80, 1449 936000, 1040000, 0, 0, 0, 936000, 1450 0x3e3}, 1451 /* 356 MCS-04 */ { VHT80_LDPC_ONLY_MASKS, 1452 DP_CMN_MOD_IEEE80211_T_VHT_80, 1453 1404000, 1560000, 0, 0, 0, 1404000, 1454 0x3e4}, 1455 /* 357 MCS-05 */ { VHT80_LDPC_ONLY_MASKS, 1456 DP_CMN_MOD_IEEE80211_T_VHT_80, 1457 1872000, 2080000, 0, 0, 0, 1872000, 1458 0x3e5}, 1459 /* 358 MCS-06 */ { VHT80_LDPC_ONLY_MASKS, 1460 DP_CMN_MOD_IEEE80211_T_VHT_80, 1461 2106000, 2340000, 0, 0, 0, 2106000, 1462 0x3e6}, 1463 /* 359 MCS-07 */ { VHT80_LDPC_ONLY_MASKS, 1464 DP_CMN_MOD_IEEE80211_T_VHT_80, 1465 2340000, 2600000, 0, 0, 0, 2340000, 1466 0x3e7}, 1467 /* 360 MCS-08 */ { VHT80_LDPC_ONLY_MASKS, 1468 DP_CMN_MOD_IEEE80211_T_VHT_80, 1469 2808000, 3120000, 0, 0, 0, 2808000, 1470 0x3e8}, 1471 /* 361 MCS-09 */ { VHT80_LDPC_ONLY_MASKS, 1472 DP_CMN_MOD_IEEE80211_T_VHT_80, 1473 3120000, 3466700, 0, 0, 0, 3120000, 1474 0x3e9}, 1475 /* 362 MCS-10 */ { VHT80_LDPC_ONLY_MASKS, 1476 DP_CMN_MOD_IEEE80211_T_VHT_80, 1477 3510000, 3900000, 0, 0, 0, 3510000, 1478 0x3ea}, 1479 /* 363 MCS-11 */ { VHT80_LDPC_ONLY_MASKS, 1480 DP_CMN_MOD_IEEE80211_T_VHT_80, 1481 3900000, 4333300, 0, 0, 0, 3900000, 1482 0x3eb}, 1483 1484 /* 11ac VHT160 rates 1485 */ 1486 /* 364 MCS-00 */ { VHT160_MODE_VALID_MASK, 1487 DP_CMN_MOD_IEEE80211_T_VHT_160, 1488 58500, 65000, 0, 0, 0, 58500, 1489 0x300}, 1490 /* 365 MCS-01 */ { VHT160_MODE_VALID_MASK, 1491 DP_CMN_MOD_IEEE80211_T_VHT_160, 1492 117000, 130000, 0, 0, 0, 117000, 1493 0x301}, 1494 /* 366 MCS-02 */ { VHT160_MODE_VALID_MASK, 1495 DP_CMN_MOD_IEEE80211_T_VHT_160, 1496 175500, 195000, 0, 0, 0, 175500, 1497 0x302}, 1498 /* 367 MCS-03 */ { VHT160_MODE_VALID_MASK, 1499 DP_CMN_MOD_IEEE80211_T_VHT_160, 1500 234000, 260000, 0, 0, 0, 234000, 1501 0x303}, 1502 /* 368 MCS-04 */ { VHT160_MODE_VALID_MASK, 1503 DP_CMN_MOD_IEEE80211_T_VHT_160, 1504 351000, 390000, 0, 0, 0, 351000, 1505 0x304}, 1506 /* 369 MCS-05 */ { VHT160_MODE_VALID_MASK, 1507 DP_CMN_MOD_IEEE80211_T_VHT_160, 1508 468000, 520000, 0, 0, 0, 468000, 1509 0x305}, 1510 /* 370 MCS-06 */ { VHT160_MODE_VALID_MASK, 1511 DP_CMN_MOD_IEEE80211_T_VHT_160, 1512 526500, 585000, 0, 0, 0, 526500, 1513 0x306}, 1514 /* 371 MCS-07 */ { VHT160_MODE_VALID_MASK, 1515 DP_CMN_MOD_IEEE80211_T_VHT_160, 1516 585000, 650000, 0, 0, 0, 585000, 1517 0x307}, 1518 /* 372 MCS-08 */ { VHT160_MODE_VALID_MASK, 1519 DP_CMN_MOD_IEEE80211_T_VHT_160, 1520 702000, 780000, 0, 0, 0, 702000, 1521 0x308}, 1522 /* 373 MCS-09 */ { VHT160_MODE_VALID_MASK, 1523 DP_CMN_MOD_IEEE80211_T_VHT_160, 1524 780000, 866700, 0, 0, 0, 780000, 1525 0x309}, 1526 /* 374 MCS-10 */ { VHT160_LDPC_ONLY_MASKS, 1527 DP_CMN_MOD_IEEE80211_T_VHT_160, 1528 877500, 975000, 0, 0, 0, 877500, 1529 0x30a }, 1530 /* 375 MCS-11 */ { VHT160_LDPC_ONLY_MASKS, 1531 DP_CMN_MOD_IEEE80211_T_VHT_160, 1532 975000, 1083300, 0, 0, 0, 975000, 1533 0x30b }, 1534 /* If maximum number of spatial streams supported 1535 * at 160MHZ > 1 use below rates 1536 */ 1537 /* 376 MCS-00 */ { VHT160_MODE_VALID_MASK, 1538 DP_CMN_MOD_IEEE80211_T_VHT_160, 1539 117000, 130000, 0, 0, 0, 117000, 1540 0x320}, 1541 /* 377 MCS-01 */ { VHT160_MODE_VALID_MASK, 1542 DP_CMN_MOD_IEEE80211_T_VHT_160, 1543 234000, 260000, 0, 0, 0, 234000, 1544 0x321}, 1545 /* 378 MCS-02 */ { VHT160_MODE_VALID_MASK, 1546 DP_CMN_MOD_IEEE80211_T_VHT_160, 1547 351000, 390000, 0, 0, 0, 351000, 1548 0x322}, 1549 /* 379 MCS-03 */ { VHT160_MODE_VALID_MASK, 1550 DP_CMN_MOD_IEEE80211_T_VHT_160, 1551 468000, 520000, 0, 0, 0, 468000, 1552 0x323}, 1553 /* 380 MCS-04 */ { VHT160_MODE_VALID_MASK, 1554 DP_CMN_MOD_IEEE80211_T_VHT_160, 1555 702000, 780000, 0, 0, 0, 702000, 1556 0x324}, 1557 /* 381 MCS-05 */ { VHT160_MODE_VALID_MASK, 1558 DP_CMN_MOD_IEEE80211_T_VHT_160, 1559 936000, 1040000, 0, 0, 0, 936000, 1560 0x325}, 1561 /* 382 MCS-06 */ { VHT160_MODE_VALID_MASK, 1562 DP_CMN_MOD_IEEE80211_T_VHT_160, 1563 1053000, 1170000, 0, 0, 0, 1053000, 1564 0x326}, 1565 /* 383 MCS-07 */ { VHT160_MODE_VALID_MASK, 1566 DP_CMN_MOD_IEEE80211_T_VHT_160, 1567 1170000, 1300000, 0, 0, 0, 1170000, 1568 0x327}, 1569 /* 384 MCS-08 */ { VHT160_MODE_VALID_MASK, 1570 DP_CMN_MOD_IEEE80211_T_VHT_160, 1571 1404000, 1560000, 0, 0, 0, 1404000, 1572 0x328}, 1573 /* 385 MCS-09 */ { VHT160_MODE_VALID_MASK, 1574 DP_CMN_MOD_IEEE80211_T_VHT_160, 1575 1560000, 1733300, 0, 0, 0, 1560000, 1576 0x329}, 1577 /* 386 MCS-10 */ { VHT160_LDPC_ONLY_MASKS, 1578 DP_CMN_MOD_IEEE80211_T_VHT_160, 1579 1755000, 1950000, 0, 0, 0, 1755000, 1580 0x32a}, 1581 /* 387 MCS-11 */ { VHT160_LDPC_ONLY_MASKS, 1582 DP_CMN_MOD_IEEE80211_T_VHT_160, 1583 1950000, 2166700, 0, 0, 0, 1950000, 1584 0x32b}, 1585 /* If maximum number of spatial streams supported 1586 * at 160MHZ > 2 use below rates 1587 */ 1588 /* 388 MCS-00 */ { VHT160_MODE_VALID_MASK, 1589 DP_CMN_MOD_IEEE80211_T_VHT_160, 1590 175500, 195000, 0, 0, 0, 175500, 1591 0x340 }, 1592 /* 389 MCS-01 */ { VHT160_MODE_VALID_MASK, 1593 DP_CMN_MOD_IEEE80211_T_VHT_160, 1594 351000, 390000, 0, 0, 0, 351000, 1595 0x341 }, 1596 /* 390 MCS-02 */ { VHT160_MODE_VALID_MASK, 1597 DP_CMN_MOD_IEEE80211_T_VHT_160, 1598 526500, 585000, 0, 0, 0, 526500, 1599 0x342 }, 1600 /* 391 MCS-03 */ { VHT160_MODE_VALID_MASK, 1601 DP_CMN_MOD_IEEE80211_T_VHT_160, 1602 702000, 780000, 0, 0, 0, 702000, 1603 0x343 }, 1604 /* 392 MCS-04 */ { VHT160_MODE_VALID_MASK, 1605 DP_CMN_MOD_IEEE80211_T_VHT_160, 1606 1053000, 1170000, 0, 0, 0, 1053000, 1607 0x344 }, 1608 /* 393 MCS-05 */ { VHT160_MODE_VALID_MASK, 1609 DP_CMN_MOD_IEEE80211_T_VHT_160, 1610 1404000, 1560000, 0, 0, 0, 1404000, 1611 0x345 }, 1612 /* 394 MCS-06 */ { VHT160_MODE_VALID_MASK, 1613 DP_CMN_MOD_IEEE80211_T_VHT_160, 1614 1579500, 1755000, 0, 0, 0, 1579500, 1615 0x346 }, 1616 /* 395 MCS-07 */ { VHT160_MODE_VALID_MASK, 1617 DP_CMN_MOD_IEEE80211_T_VHT_160, 1618 1755000, 1755000, 0, 0, 0, 1755000, 1619 0x347 }, 1620 /* 396 MCS-08 */ { VHT160_MODE_VALID_MASK, 1621 DP_CMN_MOD_IEEE80211_T_VHT_160, 1622 2106000, 2340000, 0, 0, 0, 2106000, 1623 0x348 }, 1624 /* 397 MCS-09 */ { VHT160_MODE_VALID_MASK, 1625 DP_CMN_MOD_IEEE80211_T_VHT_160, 1626 2340000, 2600000, 0, 0, 0, 2340000, 1627 0x349 }, 1628 /* 398 MCS-10 */ { VHT160_LDPC_ONLY_MASKS, 1629 DP_CMN_MOD_IEEE80211_T_VHT_160, 1630 2632500, 2925000, 0, 0, 0, 2632500, 1631 0x34a }, 1632 /* 399 MCS-11 */ { VHT160_LDPC_ONLY_MASKS, 1633 DP_CMN_MOD_IEEE80211_T_VHT_160, 1634 2925000, 3250000, 0, 0, 0, 2925000, 1635 0x34b }, 1636 /* If maximum number of spatial streams supported 1637 * at 160MHZ > 3 use below rates 1638 */ 1639 /* 400 MCS-00 */ { VHT160_MODE_VALID_MASK, 1640 DP_CMN_MOD_IEEE80211_T_VHT_160, 1641 234000, 260000, 0, 0, 0, 234000, 1642 0x360 }, 1643 /* 401 MCS-01 */ { VHT160_MODE_VALID_MASK, 1644 DP_CMN_MOD_IEEE80211_T_VHT_160, 1645 468000, 520000, 0, 0, 0, 468000, 1646 0x361 }, 1647 /* 402 MCS-02 */ { VHT160_MODE_VALID_MASK, 1648 DP_CMN_MOD_IEEE80211_T_VHT_160, 1649 702000, 780000, 0, 0, 0, 702000, 1650 0x362 }, 1651 /* 403 MCS-03 */ { VHT160_MODE_VALID_MASK, 1652 DP_CMN_MOD_IEEE80211_T_VHT_160, 1653 936000, 1040000, 0, 0, 0, 936000, 1654 0x363 }, 1655 /* 404 MCS-04 */ { VHT160_MODE_VALID_MASK, 1656 DP_CMN_MOD_IEEE80211_T_VHT_160, 1657 1404000, 1560000, 0, 0, 0, 1404000, 1658 0x364 }, 1659 /* 405 MCS-05 */ { VHT160_MODE_VALID_MASK, 1660 DP_CMN_MOD_IEEE80211_T_VHT_160, 1661 1872000, 2080000, 0, 0, 0, 1872000, 1662 0x365 }, 1663 /* 406 MCS-06 */ { VHT160_MODE_VALID_MASK, 1664 DP_CMN_MOD_IEEE80211_T_VHT_160, 1665 2106000, 2340000, 0, 0, 0, 2106000, 1666 0x366 }, 1667 /* 407 MCS-07 */ { VHT160_MODE_VALID_MASK, 1668 DP_CMN_MOD_IEEE80211_T_VHT_160, 1669 2340000, 2600000, 0, 0, 0, 2340000, 1670 0x367 }, 1671 /* 408 MCS-08 */ { VHT160_MODE_VALID_MASK, 1672 DP_CMN_MOD_IEEE80211_T_VHT_160, 1673 2808000, 3120000, 0, 0, 0, 2808000, 1674 0x368 }, 1675 /* 409 MCS-09 */ { VHT160_LDPC_ONLY_MASKS, 1676 DP_CMN_MOD_IEEE80211_T_VHT_160, 1677 3120000, 3466700, 0, 0, 0, 3120000, 1678 0x369 }, 1679 /* 410 MCS-10 */ { VHT160_LDPC_ONLY_MASKS, 1680 DP_CMN_MOD_IEEE80211_T_VHT_160, 1681 3510000, 3900000, 0, 0, 0, 3510000, 1682 0x36a }, 1683 /* 411 MCS-11 */ { VHT160_LDPC_ONLY_MASKS, 1684 DP_CMN_MOD_IEEE80211_T_VHT_160, 1685 3900000, 4333300, 0, 0, 0, 3900000, 1686 0x36b }, 1687 1688 /* 11ax RU242 rates 1689 */ 1690 /* 412 MCS-00 */ { HE20_MODE_VALID_MASK, 1691 DP_CMN_MOD_IEEE80211_T_HE_20, 1692 8600, 8900, 8100, 7300, 4300, 8600, 0x400}, 1693 /* 413 MCS-01 */ { HE20_MODE_VALID_MASK, 1694 DP_CMN_MOD_IEEE80211_T_HE_20, 1695 17200, 17700, 16300, 14600, 8600, 17200, 1696 0x401}, 1697 /* 414 MCS-02 */ { HE20_MODE_VALID_MASK, 1698 DP_CMN_MOD_IEEE80211_T_HE_20, 1699 25800, 26600, 24400, 21900, 0, 25800, 1700 0x402}, 1701 /* 415 MCS-03 */ { HE20_MODE_VALID_MASK, 1702 DP_CMN_MOD_IEEE80211_T_HE_20, 1703 34400, 35500, 32500, 29300, 17700, 34400, 1704 0x403}, 1705 /* 416 MCS-04 */ { HE20_MODE_VALID_MASK, 1706 DP_CMN_MOD_IEEE80211_T_HE_20, 1707 51600, 53200, 48800, 43900, 25800, 51600, 1708 0x404}, 1709 /* 417 MCS-05 */ { HE20_MODE_VALID_MASK, 1710 DP_CMN_MOD_IEEE80211_T_HE_20, 1711 68800, 70900, 65000, 58500, 0, 68800, 1712 0x405}, 1713 /* 418 MCS-06 */ { HE20_MODE_VALID_MASK, 1714 DP_CMN_MOD_IEEE80211_T_HE_20, 1715 77400, 79800, 73100, 65800, 0, 77400, 1716 0x406}, 1717 /* 419 MCS-07 */ { HE20_MODE_VALID_MASK, 1718 DP_CMN_MOD_IEEE80211_T_HE_20, 1719 86000, 88600, 81300, 73100, 0, 86000, 1720 0x407}, 1721 /* 420 MCS-08 */ { HE20_MODE_VALID_MASK, 1722 DP_CMN_MOD_IEEE80211_T_HE_20, 1723 103200, 106400, 97500, 87800, 0, 103200, 1724 0x408}, 1725 /* 421 MCS-09 */ { HE20_MODE_VALID_MASK, 1726 DP_CMN_MOD_IEEE80211_T_HE_20, 1727 114700, 118200, 108300, 97500, 0, 114700, 1728 0x409}, 1729 /* 422 MCS-10 */ { HE20_LDPC_ONLY_MASKS, 1730 DP_CMN_MOD_IEEE80211_T_HE_20, 1731 129000, 133000, 121900, 109700, 0, 129000, 1732 0x40a}, 1733 /* 423 MCS-11 */ { HE20_LDPC_ONLY_MASKS, 1734 DP_CMN_MOD_IEEE80211_T_HE_20, 1735 143400, 147700, 135400, 121900, 0, 143400, 1736 0x40b}, 1737 /* 424 MCS-12 */ { HE20_LDPC_ONLY_MASKS, 1738 DP_CMN_MOD_IEEE80211_T_HE_20, 1739 154900, 159500, 146300, 131600, 0, 154900, 1740 0x40c}, 1741 /* 425 MCS-13 */ { HE20_LDPC_ONLY_MASKS, 1742 DP_CMN_MOD_IEEE80211_T_HE_20, 1743 172100, 177300, 162500, 146300, 0, 172100, 1744 0x40d}, 1745 /* When number spatial streams > 1 use below rates */ 1746 /* 426 MCS-00 */ { HE20_MODE_VALID_MASK, 1747 DP_CMN_MOD_IEEE80211_T_HE_20, 1748 17200, 17700, 16300, 14600, 8600, 17200, 1749 0x420}, 1750 /* 427 MCS-01 */ { HE20_MODE_VALID_MASK, 1751 DP_CMN_MOD_IEEE80211_T_HE_20, 1752 34400, 35500, 32500, 29300, 17700, 34400, 1753 0x421}, 1754 /* 428 MCS-02 */ { HE20_MODE_VALID_MASK, 1755 DP_CMN_MOD_IEEE80211_T_HE_20, 1756 51600, 53200, 48800, 43900, 0, 51600, 1757 0x422}, 1758 /* 429 MCS-03 */ { HE20_MODE_VALID_MASK, 1759 DP_CMN_MOD_IEEE80211_T_HE_20, 1760 68800, 70900, 65000, 58500, 34400, 68800, 1761 0x423}, 1762 /* 430 MCS-04 */ { HE20_MODE_VALID_MASK, 1763 DP_CMN_MOD_IEEE80211_T_HE_20, 1764 103200, 106400, 97500, 87800, 51600, 103200, 1765 0x424}, 1766 /* 431 MCS-05 */ { HE20_MODE_VALID_MASK, 1767 DP_CMN_MOD_IEEE80211_T_HE_20, 1768 137600, 141800, 130000, 117000, 0, 137600, 1769 0x425}, 1770 /* 432 MCS-06 */ { HE20_MODE_VALID_MASK, 1771 DP_CMN_MOD_IEEE80211_T_HE_20, 1772 154900, 159500, 146300, 131600, 0, 154900, 1773 0x426}, 1774 /* 433 MCS-07 */ { HE20_MODE_VALID_MASK, 1775 DP_CMN_MOD_IEEE80211_T_HE_20, 1776 172100, 177300, 162500, 146300, 0, 172100, 1777 0x427}, 1778 /* 434 MCS-08 */ { HE20_MODE_VALID_MASK, 1779 DP_CMN_MOD_IEEE80211_T_HE_20, 1780 206500, 212700, 195000, 175500, 0, 206500, 1781 0x428}, 1782 /* 435 MCS-09 */ { HE20_MODE_VALID_MASK, 1783 DP_CMN_MOD_IEEE80211_T_HE_20, 1784 229400, 236400, 216700, 195000, 0, 229400, 1785 0x429}, 1786 /* 436 MCS-10 */ { HE20_LDPC_ONLY_MASKS, 1787 DP_CMN_MOD_IEEE80211_T_HE_20, 1788 258100, 265900, 243800, 219400, 0, 258100, 1789 0x42a}, 1790 /* 437 MCS-11 */ { HE20_LDPC_ONLY_MASKS, 1791 DP_CMN_MOD_IEEE80211_T_HE_20, 1792 286800, 295500, 270800, 243800, 0, 286800, 1793 0x42b}, 1794 /* 438 MCS-12 */ { HE20_LDPC_ONLY_MASKS, 1795 DP_CMN_MOD_IEEE80211_T_HE_20, 1796 309700, 319100, 292500, 263300, 0, 309700, 1797 0x42c}, 1798 /* 439 MCS-13 */ { HE20_LDPC_ONLY_MASKS, 1799 DP_CMN_MOD_IEEE80211_T_HE_20, 1800 344100, 354500, 325000, 292500, 0, 344100, 1801 0x42d}, 1802 1803 /* When number of spatial streams > 2 1804 * use below rates 1805 */ 1806 /* 440 MCS-00 */ { HE20_MODE_VALID_MASK, 1807 DP_CMN_MOD_IEEE80211_T_HE_20, 1808 25800, 26600, 24400, 21900, 12900, 25800, 1809 0x440}, 1810 /* 441 MCS-01 */ { HE20_MODE_VALID_MASK, 1811 DP_CMN_MOD_IEEE80211_T_HE_20, 1812 51600, 53200, 48800, 43900, 25800, 51600, 1813 0x441}, 1814 /* 442 MCS-02 */ { HE20_MODE_VALID_MASK, 1815 DP_CMN_MOD_IEEE80211_T_HE_20, 1816 77400, 79800, 73100, 65800, 0, 77400, 1817 0x442}, 1818 /* 443 MCS-03 */ { HE20_MODE_VALID_MASK, 1819 DP_CMN_MOD_IEEE80211_T_HE_20, 1820 103200, 106400, 97500, 87800, 51600, 103200, 1821 0x443}, 1822 /* 444 MCS-04 */ { HE20_MODE_VALID_MASK, 1823 DP_CMN_MOD_IEEE80211_T_HE_20, 1824 154900, 159500, 146300, 131600, 77400, 154900, 1825 0x444}, 1826 /* 445 MCS-05 */ { HE20_MODE_VALID_MASK, 1827 DP_CMN_MOD_IEEE80211_T_HE_20, 1828 206500, 212700, 195000, 175500, 0, 206500, 1829 0x445}, 1830 /* 446 MCS-06 */ { HE20_MODE_VALID_MASK, 1831 DP_CMN_MOD_IEEE80211_T_HE_20, 1832 232300, 239300, 219400, 197400, 0, 232300, 1833 0x446}, 1834 /* 447 MCS-07 */ { HE20_MODE_VALID_MASK, 1835 DP_CMN_MOD_IEEE80211_T_HE_20, 1836 258100, 265900, 243800, 219400, 0, 258100, 1837 0x447}, 1838 /* 448 MCS-08 */ { HE20_MODE_VALID_MASK, 1839 DP_CMN_MOD_IEEE80211_T_HE_20, 1840 309700, 319100, 292500, 263300, 0, 309700, 1841 0x448}, 1842 /* 449 MCS-09 */ { HE20_MODE_VALID_MASK, 1843 DP_CMN_MOD_IEEE80211_T_HE_20, 1844 344100, 354500, 325000, 292500, 0, 344100, 1845 0x449}, 1846 /* 450 MCS-10 */ { HE20_LDPC_ONLY_MASKS, 1847 DP_CMN_MOD_IEEE80211_T_HE_20, 1848 387100, 398900, 365600, 329100, 0, 387100, 1849 0x44a}, 1850 /* 451 MCS-11 */ { HE20_LDPC_ONLY_MASKS, 1851 DP_CMN_MOD_IEEE80211_T_HE_20, 1852 430100, 443200, 406300, 365600, 0, 430100, 1853 0x44b}, 1854 /* 452 MCS-12 */ { HE20_LDPC_ONLY_MASKS, 1855 DP_CMN_MOD_IEEE80211_T_HE_20, 1856 464600, 478600, 438800, 394900, 0, 464600, 1857 0x44c}, 1858 /* 453 MCS-13 */ { HE20_LDPC_ONLY_MASKS, 1859 DP_CMN_MOD_IEEE80211_T_HE_20, 1860 516200, 531800, 487500, 438800, 0, 516200, 1861 0x44d}, 1862 1863 /* When number of spatial streams > 3 1864 * use below rates 1865 */ 1866 /* 454 MCS-00 */ { HE20_MODE_VALID_MASK, 1867 DP_CMN_MOD_IEEE80211_T_HE_20, 1868 34400, 35500, 32500, 29300, 17700, 34400, 1869 0x460}, 1870 /* 455 MCS-01 */ { HE20_MODE_VALID_MASK, 1871 DP_CMN_MOD_IEEE80211_T_HE_20, 1872 68800, 70900, 65000, 58500, 34400, 68800, 1873 0x461}, 1874 /* 456 MCS-02 */ { HE20_MODE_VALID_MASK, 1875 DP_CMN_MOD_IEEE80211_T_HE_20, 1876 103200, 106400, 97500, 87800, 0, 103200, 1877 0x462}, 1878 /* 457 MCS-03 */ { HE20_MODE_VALID_MASK, 1879 DP_CMN_MOD_IEEE80211_T_HE_20, 1880 137600, 141800, 130000, 117000, 68800, 137600, 1881 0x463}, 1882 /* 458 MCS-04 */ { HE20_MODE_VALID_MASK, 1883 DP_CMN_MOD_IEEE80211_T_HE_20, 1884 206500, 212700, 195000, 175500, 103200, 206500, 1885 0x464}, 1886 /* 459 MCS-05 */ { HE20_MODE_VALID_MASK, 1887 DP_CMN_MOD_IEEE80211_T_HE_20, 1888 275300, 283600, 260000, 234000, 0, 275300, 1889 0x465}, 1890 /* 460 MCS-06 */ { HE20_MODE_VALID_MASK, 1891 DP_CMN_MOD_IEEE80211_T_HE_20, 1892 309700, 319100, 292500, 263300, 0, 309700, 1893 0x466}, 1894 /* 461 MCS-07 */ { HE20_MODE_VALID_MASK, 1895 DP_CMN_MOD_IEEE80211_T_HE_20, 1896 344100, 354500, 325000, 292500, 0, 344100, 1897 0x467}, 1898 /* 462 MCS-08 */ { HE20_MODE_VALID_MASK, 1899 DP_CMN_MOD_IEEE80211_T_HE_20, 1900 412900, 425500, 390000, 351000, 0, 412900, 1901 0x468}, 1902 /* 463 MCS-09 */ { HE20_MODE_VALID_MASK, 1903 DP_CMN_MOD_IEEE80211_T_HE_20, 1904 455800, 472700, 433300, 390000, 0, 455800, 1905 0x469}, 1906 /* 464 MCS-10 */ { HE20_LDPC_ONLY_MASKS, 1907 DP_CMN_MOD_IEEE80211_T_HE_20, 1908 516200, 531800, 487500, 438800, 0, 516200, 1909 0x46a}, 1910 /* 465 MCS-11 */ { HE20_LDPC_ONLY_MASKS, 1911 DP_CMN_MOD_IEEE80211_T_HE_20, 1912 573500, 590900, 541700, 487500, 0, 573500, 1913 0x46b}, 1914 /* 466 MCS-12 */ { HE20_LDPC_ONLY_MASKS, 1915 DP_CMN_MOD_IEEE80211_T_HE_20, 1916 619400, 638200, 585000, 526500, 0, 619400, 1917 0x46c}, 1918 /* 467 MCS-13 */ { HE20_LDPC_ONLY_MASKS, 1919 DP_CMN_MOD_IEEE80211_T_HE_20, 1920 688200, 709100, 650000, 585000, 0, 688200, 1921 0x46d}, 1922 1923 /* When number of spatial streams > 4 1924 * use below rates 1925 */ 1926 /* 468 MCS-00 */ { HE20_LDPC_ONLY_MASKS, 1927 DP_CMN_MOD_IEEE80211_T_HE_20, 1928 43000, 43300, 40600, 36600, 21500, 43000, 1929 0x480}, 1930 /* 469 MCS-01 */ { HE20_LDPC_ONLY_MASKS, 1931 DP_CMN_MOD_IEEE80211_T_HE_20, 1932 86000, 88600, 81300, 73100, 43000, 86000, 1933 0x481}, 1934 /* 470 MCS-02 */ { HE20_LDPC_ONLY_MASKS, 1935 DP_CMN_MOD_IEEE80211_T_HE_20, 1936 129000, 133000, 121900, 109700, 0, 129000, 1937 0x482}, 1938 /* 471 MCS-03 */ { HE20_LDPC_ONLY_MASKS, 1939 DP_CMN_MOD_IEEE80211_T_HE_20, 1940 172100, 177300, 162500, 146300, 86000, 172100, 1941 0x483}, 1942 /* 472 MCS-04 */ { HE20_LDPC_ONLY_MASKS, 1943 DP_CMN_MOD_IEEE80211_T_HE_20, 1944 258100, 265900, 243800, 219400, 129000, 258100, 1945 0x484}, 1946 /* 473 MCS-05 */ { HE20_LDPC_ONLY_MASKS, 1947 DP_CMN_MOD_IEEE80211_T_HE_20, 1948 344100, 354500, 325000, 292500, 0, 344100, 1949 0x485}, 1950 /* 474 MCS-06 */ { HE20_LDPC_ONLY_MASKS, 1951 DP_CMN_MOD_IEEE80211_T_HE_20, 1952 387100, 398900, 365600, 329100, 0, 387100, 1953 0x486}, 1954 /* 475 MCS-07 */ { HE20_LDPC_ONLY_MASKS, 1955 DP_CMN_MOD_IEEE80211_T_HE_20, 1956 430100, 443200, 406300, 365600, 0, 430100, 1957 0x487}, 1958 /* 476 MCS-08 */ { HE20_LDPC_ONLY_MASKS, 1959 DP_CMN_MOD_IEEE80211_T_HE_20, 1960 516200, 531800, 487500, 438800, 0, 516200, 1961 0x488}, 1962 /* 477 MCS-09 */ { HE20_LDPC_ONLY_MASKS, 1963 DP_CMN_MOD_IEEE80211_T_HE_20, 1964 573500, 590900, 541700, 487500, 0, 573500, 1965 0x489}, 1966 /* 478 MCS-10 */ { HE20_LDPC_ONLY_MASKS, 1967 DP_CMN_MOD_IEEE80211_T_HE_20, 1968 645200, 664800, 609400, 548400, 0, 645200, 1969 0x48a}, 1970 /* 479 MCS-11 */ { HE20_LDPC_ONLY_MASKS, 1971 DP_CMN_MOD_IEEE80211_T_HE_20, 1972 716900, 738600, 677100, 609400, 0, 716900, 1973 0x48b}, 1974 /* 480 MCS-12 */ { HE20_LDPC_ONLY_MASKS, 1975 DP_CMN_MOD_IEEE80211_T_HE_20, 1976 774300, 797700, 731300, 658100, 0, 774300, 1977 0x48c}, 1978 /* 481 MCS-13 */ { HE20_LDPC_ONLY_MASKS, 1979 DP_CMN_MOD_IEEE80211_T_HE_20, 1980 860300, 886400, 812500, 731300, 0, 860300, 1981 0x48d}, 1982 1983 /* When number of spatial streams > 5 1984 * use below rates 1985 */ 1986 /* 482 MCS-00 */ { HE20_LDPC_ONLY_MASKS, 1987 DP_CMN_MOD_IEEE80211_T_HE_20, 1988 51600, 53200, 48800, 43900, 25800, 51600, 1989 0x4a0}, 1990 /* 483 MCS-01 */ { HE20_LDPC_ONLY_MASKS, 1991 DP_CMN_MOD_IEEE80211_T_HE_20, 1992 103200, 106400, 97500, 87800, 51600, 103200, 1993 0x4a1}, 1994 /* 484 MCS-02 */ { HE20_LDPC_ONLY_MASKS, 1995 DP_CMN_MOD_IEEE80211_T_HE_20, 1996 154900, 159500, 146300, 131600, 0, 154900, 1997 0x4a2}, 1998 /* 485 MCS-03 */ { HE20_LDPC_ONLY_MASKS, 1999 DP_CMN_MOD_IEEE80211_T_HE_20, 2000 206500, 212700, 195000, 175500, 103200, 206500, 2001 0x4a3}, 2002 /* 486 MCS-04 */ { HE20_LDPC_ONLY_MASKS, 2003 DP_CMN_MOD_IEEE80211_T_HE_20, 2004 309700, 319100, 292500, 263300, 154900, 309700, 2005 0x4a4}, 2006 /* 487 MCS-05 */ { HE20_LDPC_ONLY_MASKS, 2007 DP_CMN_MOD_IEEE80211_T_HE_20, 2008 412900, 425500, 390000, 351000, 0, 412900, 2009 0x4a5}, 2010 /* 488 MCS-06 */ { HE20_LDPC_ONLY_MASKS, 2011 DP_CMN_MOD_IEEE80211_T_HE_20, 2012 464600, 478600, 438000, 394900, 0, 464600, 2013 0x4a6}, 2014 /* 489 MCS-07 */ { HE20_LDPC_ONLY_MASKS, 2015 DP_CMN_MOD_IEEE80211_T_HE_20, 2016 516200, 531800, 487500, 438800, 0, 516200, 2017 0x4a7}, 2018 /* 490 MCS-08 */ { HE20_LDPC_ONLY_MASKS, 2019 DP_CMN_MOD_IEEE80211_T_HE_20, 2020 619400, 638200, 585000, 526500, 0, 619400, 2021 0x4a8}, 2022 /* 491 MCS-09 */ { HE20_LDPC_ONLY_MASKS, 2023 DP_CMN_MOD_IEEE80211_T_HE_20, 2024 688200, 709100, 650000, 585000, 0, 688200, 2025 0x4a9}, 2026 /* 492 MCS-10 */ { HE20_LDPC_ONLY_MASKS, 2027 DP_CMN_MOD_IEEE80211_T_HE_20, 2028 774300, 797700, 731300, 658100, 0, 774300, 2029 0x4aa}, 2030 /* 493 MCS-11 */ { HE20_LDPC_ONLY_MASKS, 2031 DP_CMN_MOD_IEEE80211_T_HE_20, 2032 860300, 886400, 812500, 731300, 0, 860300, 2033 0x4ab}, 2034 /* 494 MCS-12 */ { HE20_LDPC_ONLY_MASKS, 2035 DP_CMN_MOD_IEEE80211_T_HE_20, 2036 929100, 957300, 877500, 789800, 0, 929100, 2037 0x4ac}, 2038 /* 495 MCS-13 */ { HE20_LDPC_ONLY_MASKS, 2039 DP_CMN_MOD_IEEE80211_T_HE_20, 2040 1032400, 1063600, 975000, 877500, 0, 1032400, 2041 0x4ad}, 2042 2043 /* When number of spatial streams > 6 2044 * use below rates 2045 */ 2046 /* 496 MCS-00 */ { HE20_LDPC_ONLY_MASKS, 2047 DP_CMN_MOD_IEEE80211_T_HE_20, 2048 60200, 62000, 56900, 51200, 30100, 60200, 2049 0x4c0}, 2050 /* 497 MCS-01 */ { HE20_LDPC_ONLY_MASKS, 2051 DP_CMN_MOD_IEEE80211_T_HE_20, 2052 120400, 124100, 113800, 102400, 60200, 120400, 2053 0x4c1}, 2054 /* 498 MCS-02 */ { HE20_LDPC_ONLY_MASKS, 2055 DP_CMN_MOD_IEEE80211_T_HE_20, 2056 180700, 186100, 170600, 153600, 0, 180700, 2057 0x4c2}, 2058 /* 499 MCS-03 */ { HE20_LDPC_ONLY_MASKS, 2059 DP_CMN_MOD_IEEE80211_T_HE_20, 2060 240900, 248200, 227500, 204800, 120400, 240900, 2061 0x4c3}, 2062 /* 500 MCS-04 */ { HE20_LDPC_ONLY_MASKS, 2063 DP_CMN_MOD_IEEE80211_T_HE_20, 2064 361300, 372300, 341300, 307100, 180700, 361300, 2065 0x4c4}, 2066 /* 501 MCS-05 */ { HE20_LDPC_ONLY_MASKS, 2067 DP_CMN_MOD_IEEE80211_T_HE_20, 2068 481800, 496400, 455000, 409500, 0, 481800, 2069 0x4c5}, 2070 /* 502 MCS-06 */ { HE20_LDPC_ONLY_MASKS, 2071 DP_CMN_MOD_IEEE80211_T_HE_20, 2072 542000, 558400, 511900, 460700, 0, 542000, 2073 0x4c6}, 2074 /* 503 MCS-07 */ { HE20_LDPC_ONLY_MASKS, 2075 DP_CMN_MOD_IEEE80211_T_HE_20, 2076 602200, 620500, 568800, 511900, 0, 602200, 2077 0x4c7}, 2078 /* 504 MCS-08 */ { HE20_LDPC_ONLY_MASKS, 2079 DP_CMN_MOD_IEEE80211_T_HE_20, 2080 722600, 744500, 682500, 614300, 0, 722600, 2081 0x4c8}, 2082 /* 505 MCS-09 */ { HE20_LDPC_ONLY_MASKS, 2083 DP_CMN_MOD_IEEE80211_T_HE_20, 2084 802900, 827300, 758300, 682500, 0, 802900, 2085 0x4c9}, 2086 /* 506 MCS-10 */ { HE20_LDPC_ONLY_MASKS, 2087 DP_CMN_MOD_IEEE80211_T_HE_20, 2088 903300, 930700, 853100, 767800, 0, 903300, 2089 0x4ca}, 2090 /* 507 MCS-11 */ { HE20_LDPC_ONLY_MASKS, 2091 DP_CMN_MOD_IEEE80211_T_HE_20, 2092 1003700, 1034100, 947900, 853100, 0, 1003700, 2093 0x4cb}, 2094 /* 508 MCS-12 */ { HE20_LDPC_ONLY_MASKS, 2095 DP_CMN_MOD_IEEE80211_T_HE_20, 2096 1084000, 1116800, 1023800, 921400, 0, 1084000, 2097 0x4cc}, 2098 /* 509 MCS-13 */ { HE20_LDPC_ONLY_MASKS, 2099 DP_CMN_MOD_IEEE80211_T_HE_20, 2100 1204400, 1240900, 1137500, 1023800, 0, 1204400, 2101 0x4cd}, 2102 2103 /* When number of spatial streams > 7 2104 * use below rates 2105 */ 2106 /* 510 MCS-00 */ { HE20_LDPC_ONLY_MASKS, 2107 DP_CMN_MOD_IEEE80211_T_HE_20, 2108 68800, 70900, 65000, 58500, 34400, 68800, 2109 0x4e0}, 2110 /* 511 MCS-01 */ { HE20_LDPC_ONLY_MASKS, 2111 DP_CMN_MOD_IEEE80211_T_HE_20, 2112 137600, 141800, 130000, 117000, 68800, 137600, 2113 0x4e1}, 2114 /* 512 MCS-02 */ { HE20_LDPC_ONLY_MASKS, 2115 DP_CMN_MOD_IEEE80211_T_HE_20, 2116 206500, 212700, 195000, 175500, 0, 206500, 2117 0x4e2}, 2118 /* 513 MCS-03 */ { HE20_LDPC_ONLY_MASKS, 2119 DP_CMN_MOD_IEEE80211_T_HE_20, 2120 275300, 283600, 260000, 234000, 137600, 275300, 2121 0x4e3}, 2122 /* 514 MCS-04 */ { HE20_LDPC_ONLY_MASKS, 2123 DP_CMN_MOD_IEEE80211_T_HE_20, 2124 412900, 425500, 390000, 351000, 206500, 412900, 2125 0x4e4}, 2126 /* 515 MCS-05 */ { HE20_LDPC_ONLY_MASKS, 2127 DP_CMN_MOD_IEEE80211_T_HE_20, 2128 550600, 567300, 520000, 468000, 0, 550600, 2129 0x4e5}, 2130 /* 516 MCS-06 */ { HE20_LDPC_ONLY_MASKS, 2131 DP_CMN_MOD_IEEE80211_T_HE_20, 2132 619400, 638200, 585000, 526500, 0, 619400, 2133 0x4e6}, 2134 /* 517 MCS-07 */ { HE20_LDPC_ONLY_MASKS, 2135 DP_CMN_MOD_IEEE80211_T_HE_20, 2136 688200, 709100, 650000, 585000, 0, 688200, 2137 0x4e7}, 2138 /* 518 MCS-08 */ { HE20_LDPC_ONLY_MASKS, 2139 DP_CMN_MOD_IEEE80211_T_HE_20, 2140 825900, 850900, 780000, 702000, 0, 825900, 2141 0x4e8}, 2142 /* 519 MCS-09 */ { HE20_LDPC_ONLY_MASKS, 2143 DP_CMN_MOD_IEEE80211_T_HE_20, 2144 917600, 945500, 866700, 780000, 0, 917600, 2145 0x4e9}, 2146 /* 520 MCS-10 */ { HE20_LDPC_ONLY_MASKS, 2147 DP_CMN_MOD_IEEE80211_T_HE_20, 2148 1032400, 1063600, 975000, 877500, 0, 1032400, 2149 0x4ea}, 2150 /* 521 MCS-11 */ { HE20_LDPC_ONLY_MASKS, 2151 DP_CMN_MOD_IEEE80211_T_HE_20, 2152 1147100, 1181800, 1083300, 975000, 0, 1147100, 2153 0x4eb}, 2154 /* 522 MCS-12 */ { HE20_LDPC_ONLY_MASKS, 2155 DP_CMN_MOD_IEEE80211_T_HE_20, 2156 1238800, 1276400, 1170000, 1053000, 0, 1238800, 2157 0x4ec}, 2158 /* 523 MCS-13 */ { HE20_LDPC_ONLY_MASKS, 2159 DP_CMN_MOD_IEEE80211_T_HE_20, 2160 1376500, 1418200, 1300000, 1170000, 0, 1376500, 2161 0x4ed}, 2162 2163 /* 11ax RU484 rates 2164 */ 2165 /* 524 MCS-00 */ { HE40_LDPC_ONLY_MASKS, 2166 DP_CMN_MOD_IEEE80211_T_HE_40, 2167 17200, 17700, 16300, 14600, 8600, 17200, 0x400 2168 }, 2169 /* 525 MCS-01 */ { HE40_LDPC_ONLY_MASKS, 2170 DP_CMN_MOD_IEEE80211_T_HE_40, 2171 34400, 35500, 32500, 29300, 17700, 34400, 0x401 2172 }, 2173 /* 526 MCS-02 */ { HE40_LDPC_ONLY_MASKS, 2174 DP_CMN_MOD_IEEE80211_T_HE_40, 2175 51600, 53200, 48800, 43900, 25800, 51600, 0x402 2176 }, 2177 /* 527 MCS-03 */ { HE40_LDPC_ONLY_MASKS, 2178 DP_CMN_MOD_IEEE80211_T_HE_40, 2179 68800, 70900, 65000, 58500, 0, 68800, 0x403 2180 }, 2181 /* 528 MCS-04 */ { HE40_LDPC_ONLY_MASKS, 2182 DP_CMN_MOD_IEEE80211_T_HE_40, 2183 103200, 106400, 97500, 87800, 0, 103200, 2184 0x404 }, 2185 /* 529 MCS-05 */ { HE40_LDPC_ONLY_MASKS, 2186 DP_CMN_MOD_IEEE80211_T_HE_40, 2187 137600, 141800, 130000, 117000, 0, 137600, 2188 0x405 }, 2189 /* 530 MCS-06 */ { HE40_LDPC_ONLY_MASKS, 2190 DP_CMN_MOD_IEEE80211_T_HE_40, 2191 154900, 159500, 146300, 131600, 0, 154900, 2192 0x406 }, 2193 /* 531 MCS-07 */ { HE40_LDPC_ONLY_MASKS, 2194 DP_CMN_MOD_IEEE80211_T_HE_40, 2195 172100, 177300, 162500, 146300, 0, 172100, 2196 0x407 }, 2197 /* 532 MCS-08 */ { HE40_LDPC_ONLY_MASKS, 2198 DP_CMN_MOD_IEEE80211_T_HE_40, 2199 206500, 212700, 195000, 175500, 0, 206500, 2200 0x408 }, 2201 /* 533 MCS-09 */ { HE40_LDPC_ONLY_MASKS, 2202 DP_CMN_MOD_IEEE80211_T_HE_40, 2203 229400, 236400, 216700, 195000, 0, 229400, 2204 0x409 }, 2205 /* 534 MCS-10 */ { HE40_LDPC_ONLY_MASKS, 2206 DP_CMN_MOD_IEEE80211_T_HE_40, 2207 258100, 265900, 243800, 219400, 0, 258100, 2208 0x40a }, 2209 /* 535 MCS-11 */ { HE40_LDPC_ONLY_MASKS, 2210 DP_CMN_MOD_IEEE80211_T_HE_40, 2211 286800, 295500, 270800, 243800, 0, 286800, 2212 0x40b }, 2213 /* 536 MCS-12 */ { HE40_LDPC_ONLY_MASKS, 2214 DP_CMN_MOD_IEEE80211_T_HE_40, 2215 309700, 319100, 292500, 263300, 0, 309700, 2216 0x40c }, 2217 /* 537 MCS-13 */ { HE40_LDPC_ONLY_MASKS, 2218 DP_CMN_MOD_IEEE80211_T_HE_40, 2219 344100, 354500, 325000, 292500, 0, 344100, 2220 0x40d }, 2221 /* When number of spatial streams > 1 2222 * use below rates 2223 */ 2224 /* 538 MCS-00 */ { HE40_LDPC_ONLY_MASKS, 2225 DP_CMN_MOD_IEEE80211_T_HE_40, 2226 34400, 35500, 32500, 29300, 17700, 34400, 0x420 2227 }, 2228 /* 539 MCS-01 */ { HE40_LDPC_ONLY_MASKS, 2229 DP_CMN_MOD_IEEE80211_T_HE_40, 2230 68800, 70900, 65000, 58500, 34400, 68800, 0x421 2231 }, 2232 /* 540 MCS-02 */ { HE40_LDPC_ONLY_MASKS, 2233 DP_CMN_MOD_IEEE80211_T_HE_40, 2234 103200, 106400, 97500, 87800, 0, 103200, 2235 0x422 }, 2236 /* 541 MCS-03 */ { HE40_LDPC_ONLY_MASKS, 2237 DP_CMN_MOD_IEEE80211_T_HE_40, 2238 137600, 141800, 130000, 117000, 68800, 137600, 2239 0x423 }, 2240 /* 542 MCS-04 */ { HE40_LDPC_ONLY_MASKS, 2241 DP_CMN_MOD_IEEE80211_T_HE_40, 2242 206500, 212700, 195000, 175500, 103200, 206500, 2243 0x424 }, 2244 /* 543 MCS-05 */ { HE40_LDPC_ONLY_MASKS, 2245 DP_CMN_MOD_IEEE80211_T_HE_40, 2246 275300, 283600, 260000, 234000, 0, 275300, 2247 0x425 }, 2248 /* 544 MCS-06 */ { HE40_LDPC_ONLY_MASKS, 2249 DP_CMN_MOD_IEEE80211_T_HE_40, 2250 309700, 319100, 292500, 263300, 0, 309700, 2251 0x426 }, 2252 /* 545 MCS-07 */ { HE40_LDPC_ONLY_MASKS, 2253 DP_CMN_MOD_IEEE80211_T_HE_40, 2254 344100, 354500, 325000, 292500, 0, 344100, 2255 0x427 }, 2256 /* 546 MCS-08 */ { HE40_LDPC_ONLY_MASKS, 2257 DP_CMN_MOD_IEEE80211_T_HE_40, 2258 412900, 425500, 390000, 351000, 0, 412900, 2259 0x428 }, 2260 /* 547 MCS-09 */ { HE40_LDPC_ONLY_MASKS, 2261 DP_CMN_MOD_IEEE80211_T_HE_40, 2262 455800, 472700, 433300, 390000, 0, 455800, 2263 0x429 }, 2264 /* 548 MCS-10 */ { HE40_LDPC_ONLY_MASKS, 2265 DP_CMN_MOD_IEEE80211_T_HE_40, 2266 516200, 531800, 487500, 438800, 0, 516200, 2267 0x42a }, 2268 /* 549 MCS-11 */ { HE40_LDPC_ONLY_MASKS, 2269 DP_CMN_MOD_IEEE80211_T_HE_40, 2270 573500, 590900, 541700, 487500, 0, 573500, 2271 0x42b }, 2272 /* 550 MCS-12 */ { HE40_LDPC_ONLY_MASKS, 2273 DP_CMN_MOD_IEEE80211_T_HE_40, 2274 619400, 638200, 585000, 526500, 0, 619400, 2275 0x42c }, 2276 /* 551 MCS-13 */ { HE40_LDPC_ONLY_MASKS, 2277 DP_CMN_MOD_IEEE80211_T_HE_40, 2278 688200, 709100, 650000, 585000, 0, 688200, 2279 0x42d }, 2280 2281 /* When number of spatial streams > 2 2282 * use below rates 2283 */ 2284 /* 552 MCS-00 */ { HE40_LDPC_ONLY_MASKS, 2285 DP_CMN_MOD_IEEE80211_T_HE_40, 2286 51600, 53200, 48800, 43900, 25800, 51600, 0x440 2287 }, 2288 /* 553 MCS-01 */ { HE40_LDPC_ONLY_MASKS, 2289 DP_CMN_MOD_IEEE80211_T_HE_40, 2290 103200, 106400, 97500, 87800, 51600, 103200, 2291 0x441 }, 2292 /* 554 MCS-02 */ { HE40_LDPC_ONLY_MASKS, 2293 DP_CMN_MOD_IEEE80211_T_HE_40, 2294 154900, 159500, 146300, 131600, 0, 154900, 2295 0x442 }, 2296 /* 555 MCS-03 */ { HE40_LDPC_ONLY_MASKS, 2297 DP_CMN_MOD_IEEE80211_T_HE_40, 2298 206500, 212700, 195000, 175500, 103200, 206500, 2299 0x443 }, 2300 /* 556 MCS-04 */ { HE40_LDPC_ONLY_MASKS, 2301 DP_CMN_MOD_IEEE80211_T_HE_40, 2302 309700, 319100, 292500, 263300, 154900, 309700, 2303 0x444 }, 2304 /* 557 MCS-05 */ { HE40_LDPC_ONLY_MASKS, 2305 DP_CMN_MOD_IEEE80211_T_HE_40, 2306 412900, 425500, 390000, 351000, 0, 412900, 2307 0x445 }, 2308 /* 558 MCS-06 */ { HE40_LDPC_ONLY_MASKS, 2309 DP_CMN_MOD_IEEE80211_T_HE_40, 2310 464600, 478600, 438000, 394900, 0, 464600, 2311 0x446 }, 2312 /* 559 MCS-07 */ { HE40_LDPC_ONLY_MASKS, 2313 DP_CMN_MOD_IEEE80211_T_HE_40, 2314 516200, 531800, 487500, 438800, 0, 516200, 2315 0x447 }, 2316 /* 560 MCS-08 */ { HE40_LDPC_ONLY_MASKS, 2317 DP_CMN_MOD_IEEE80211_T_HE_40, 2318 619400, 638200, 585000, 526500, 0, 619400, 2319 0x448 }, 2320 /* 561 MCS-09 */ { HE40_LDPC_ONLY_MASKS, 2321 DP_CMN_MOD_IEEE80211_T_HE_40, 2322 688200, 709100, 650000, 585000, 0, 688200, 2323 0x449 }, 2324 /* 562 MCS-10 */ { HE40_LDPC_ONLY_MASKS, 2325 DP_CMN_MOD_IEEE80211_T_HE_40, 2326 774300, 797700, 731300, 658100, 0, 774300, 2327 0x44a }, 2328 /* 563 MCS-11 */ { HE40_LDPC_ONLY_MASKS, 2329 DP_CMN_MOD_IEEE80211_T_HE_40, 2330 860300, 886400, 812500, 731300, 0, 860300, 2331 0x44b }, 2332 /* 564 MCS-12 */ { HE40_LDPC_ONLY_MASKS, 2333 DP_CMN_MOD_IEEE80211_T_HE_40, 2334 929100, 957300, 877500, 789800, 0, 929100, 2335 0x44c }, 2336 /* 565 MCS-13 */ { HE40_LDPC_ONLY_MASKS, 2337 DP_CMN_MOD_IEEE80211_T_HE_40, 2338 1032400, 1063600, 975000, 877500, 0, 1032400, 2339 0x44d }, 2340 2341 /* When number of spatial streams > 3 2342 * use below rates 2343 */ 2344 /* 566 MCS-00 */ { HE40_LDPC_ONLY_MASKS, 2345 DP_CMN_MOD_IEEE80211_T_HE_40, 2346 68800, 70900, 65000, 58500, 34400, 68800, 0x460 2347 }, 2348 /* 567 MCS-01 */ { HE40_LDPC_ONLY_MASKS, 2349 DP_CMN_MOD_IEEE80211_T_HE_40, 2350 137600, 141800, 130000, 117000, 68800, 137600, 2351 0x461 }, 2352 /* 568 MCS-02 */ { HE40_LDPC_ONLY_MASKS, 2353 DP_CMN_MOD_IEEE80211_T_HE_40, 2354 206500, 212700, 195000, 175500, 0, 206500, 2355 0x462 }, 2356 /* 569 MCS-03 */ { HE40_LDPC_ONLY_MASKS, 2357 DP_CMN_MOD_IEEE80211_T_HE_40, 2358 275300, 283600, 260000, 234000, 137600, 275300, 2359 0x463 }, 2360 /* 570 MCS-04 */ { HE40_LDPC_ONLY_MASKS, 2361 DP_CMN_MOD_IEEE80211_T_HE_40, 2362 412900, 425500, 390000, 351000, 206500, 412900, 2363 0x464 }, 2364 /* 571 MCS-05 */ { HE40_LDPC_ONLY_MASKS, 2365 DP_CMN_MOD_IEEE80211_T_HE_40, 2366 550600, 567300, 520000, 468000, 0, 550600, 2367 0x465 }, 2368 /* 572 MCS-06 */ { HE40_LDPC_ONLY_MASKS, 2369 DP_CMN_MOD_IEEE80211_T_HE_40, 2370 619400, 638200, 585000, 526500, 0, 619400, 2371 0x466 }, 2372 /* 573 MCS-07 */ { HE40_LDPC_ONLY_MASKS, 2373 DP_CMN_MOD_IEEE80211_T_HE_40, 2374 688200, 709100, 650000, 585000, 0, 688200, 2375 0x467 }, 2376 /* 574 MCS-08 */ { HE40_LDPC_ONLY_MASKS, 2377 DP_CMN_MOD_IEEE80211_T_HE_40, 2378 825900, 850900, 780000, 702000, 0, 825900, 2379 0x468 }, 2380 /* 575 MCS-09 */ { HE40_LDPC_ONLY_MASKS, 2381 DP_CMN_MOD_IEEE80211_T_HE_40, 2382 917600, 945500, 866700, 780000, 0, 917600, 2383 0x469 }, 2384 /* 576 MCS-10 */ { HE40_LDPC_ONLY_MASKS, 2385 DP_CMN_MOD_IEEE80211_T_HE_40, 2386 1032400, 1063600, 975000, 877500, 0, 1032400, 2387 0x46a }, 2388 /* 577 MCS-11 */ { HE40_LDPC_ONLY_MASKS, 2389 DP_CMN_MOD_IEEE80211_T_HE_40, 2390 1147100, 1181800, 1083300, 975000, 0, 1147100, 2391 0x46b }, 2392 /* 578 MCS-12 */ { HE40_LDPC_ONLY_MASKS, 2393 DP_CMN_MOD_IEEE80211_T_HE_40, 2394 1238800, 1276400, 1170000, 1053000, 0, 1238800, 2395 0x46c }, 2396 /* 579 MCS-13 */ { HE40_LDPC_ONLY_MASKS, 2397 DP_CMN_MOD_IEEE80211_T_HE_40, 2398 1376500, 1418200, 1300000, 1170000, 0, 1376500, 2399 0x46d }, 2400 2401 /* When number of spatial streams > 4 2402 * use below rates 2403 */ 2404 /* 580 MCS-00 */ { HE40_LDPC_ONLY_MASKS, 2405 DP_CMN_MOD_IEEE80211_T_HE_40, 2406 86000, 88600, 81300, 73100, 43000, 86000, 0x480 2407 }, 2408 /* 581 MCS-01 */ { HE40_LDPC_ONLY_MASKS, 2409 DP_CMN_MOD_IEEE80211_T_HE_40, 2410 172100, 177300, 162500, 146300, 86000, 172100, 2411 0x481 }, 2412 /* 582 MCS-02 */ { HE40_LDPC_ONLY_MASKS, 2413 DP_CMN_MOD_IEEE80211_T_HE_40, 2414 258100, 265900, 243800, 219400, 0, 258100, 2415 0x482 }, 2416 /* 583 MCS-03 */ { HE40_LDPC_ONLY_MASKS, 2417 DP_CMN_MOD_IEEE80211_T_HE_40, 2418 344100, 354500, 325000, 292500, 172100, 344100, 2419 0x483 }, 2420 /* 584 MCS-04 */ { HE40_LDPC_ONLY_MASKS, 2421 DP_CMN_MOD_IEEE80211_T_HE_40, 2422 516200, 531800, 487500, 438800, 258100, 516200, 2423 0x484 }, 2424 /* 585 MCS-05 */ { HE40_LDPC_ONLY_MASKS, 2425 DP_CMN_MOD_IEEE80211_T_HE_40, 2426 688200, 709100, 650000, 585000, 0, 688200, 2427 0x485 }, 2428 /* 586 MCS-06 */ { HE40_LDPC_ONLY_MASKS, 2429 DP_CMN_MOD_IEEE80211_T_HE_40, 2430 774300, 797700, 731300, 658100, 0, 774300, 2431 0x486 }, 2432 /* 587 MCS-07 */ { HE40_LDPC_ONLY_MASKS, 2433 DP_CMN_MOD_IEEE80211_T_HE_40, 2434 860300, 886400, 812500, 731300, 0, 860300, 2435 0x487 }, 2436 /* 588 MCS-08 */ { HE40_LDPC_ONLY_MASKS, 2437 DP_CMN_MOD_IEEE80211_T_HE_40, 2438 1032400, 1063600, 975000, 877500, 0, 1032400, 2439 0x488 }, 2440 /* 589 MCS-09 */ { HE40_LDPC_ONLY_MASKS, 2441 DP_CMN_MOD_IEEE80211_T_HE_40, 2442 1147100, 1181800, 1083300, 975000, 0, 1147100, 2443 0x489 }, 2444 /* 590 MCS-10 */ { HE40_LDPC_ONLY_MASKS, 2445 DP_CMN_MOD_IEEE80211_T_HE_40, 2446 1290400, 1329500, 1218800, 1096900, 0, 1290400, 2447 0x48a }, 2448 /* 591 MCS-11 */ { HE40_LDPC_ONLY_MASKS, 2449 DP_CMN_MOD_IEEE80211_T_HE_40, 2450 1433800, 1477300, 1354200, 1218800, 0, 1433800, 2451 0x48b }, 2452 /* 592 MCS-12 */ { HE40_LDPC_ONLY_MASKS, 2453 DP_CMN_MOD_IEEE80211_T_HE_40, 2454 1548500, 1595500, 1462500, 1316300, 0, 1548500, 2455 0x48c }, 2456 /* 593 MCS-13 */ { HE40_LDPC_ONLY_MASKS, 2457 DP_CMN_MOD_IEEE80211_T_HE_40, 2458 1720600, 1772700, 1625000, 1462500, 0, 1720600, 2459 0x48d }, 2460 2461 /* When number of spatial streams > 5 2462 * use below rates 2463 */ 2464 /* 594 MCS-00 */ { HE40_LDPC_ONLY_MASKS, 2465 DP_CMN_MOD_IEEE80211_T_HE_40, 2466 103200, 106400, 97500, 87800, 51600, 103200, 2467 0x4a0 }, 2468 /* 595 MCS-01 */ { HE40_LDPC_ONLY_MASKS, 2469 DP_CMN_MOD_IEEE80211_T_HE_40, 2470 206500, 212700, 195000, 175500, 103200, 206500, 2471 0x4a1 }, 2472 /* 596 MCS-02 */ { HE40_LDPC_ONLY_MASKS, 2473 DP_CMN_MOD_IEEE80211_T_HE_40, 2474 309700, 319100, 292500, 263300, 0, 309700, 2475 0x4a2 }, 2476 /* 597 MCS-03 */ { HE40_LDPC_ONLY_MASKS, 2477 DP_CMN_MOD_IEEE80211_T_HE_40, 2478 412900, 425500, 390000, 351000, 206500, 412900, 2479 0x4a3 }, 2480 /* 598 MCS-04 */ { HE40_LDPC_ONLY_MASKS, 2481 DP_CMN_MOD_IEEE80211_T_HE_40, 2482 619400, 638200, 585000, 526500, 309700, 619400, 2483 0x4a4 }, 2484 /* 599 MCS-05 */ { HE40_LDPC_ONLY_MASKS, 2485 DP_CMN_MOD_IEEE80211_T_HE_40, 2486 825900, 850900, 780000, 702000, 0, 825900, 2487 0x4a5 }, 2488 /* 600 MCS-06 */ { HE40_LDPC_ONLY_MASKS, 2489 DP_CMN_MOD_IEEE80211_T_HE_40, 2490 929100, 957300, 877500, 789800, 0, 929100, 2491 0x4a6 }, 2492 /* 601 MCS-07 */ { HE40_LDPC_ONLY_MASKS, 2493 DP_CMN_MOD_IEEE80211_T_HE_40, 2494 1032400, 1063600, 975000, 877500, 0, 1032400, 2495 0x4a7 }, 2496 /* 602 MCS-08 */ { HE40_LDPC_ONLY_MASKS, 2497 DP_CMN_MOD_IEEE80211_T_HE_40, 2498 1238800, 1276400, 1170000, 1053000, 0, 1238800, 2499 0x4a8 }, 2500 /* 603 MCS-09 */ { HE40_LDPC_ONLY_MASKS, 2501 DP_CMN_MOD_IEEE80211_T_HE_40, 2502 1376500, 1418200, 1300000, 1170000, 0, 1376500, 2503 0x4a9 }, 2504 /* 604 MCS-10 */ { HE40_LDPC_ONLY_MASKS, 2505 DP_CMN_MOD_IEEE80211_T_HE_40, 2506 1548500, 1595500, 1462500, 1316300, 0, 1548500, 2507 0x4aa }, 2508 /* 605 MCS-11 */ { HE40_LDPC_ONLY_MASKS, 2509 DP_CMN_MOD_IEEE80211_T_HE_40, 2510 1720600, 1772700, 1625000, 1462500, 0, 1720600, 2511 0x4ab }, 2512 /* 606 MCS-12 */ { HE40_LDPC_ONLY_MASKS, 2513 DP_CMN_MOD_IEEE80211_T_HE_40, 2514 1858200, 1914500, 1755000, 1579500, 0, 1858200, 2515 0x4ac }, 2516 /* 607 MCS-13 */ { HE40_LDPC_ONLY_MASKS, 2517 DP_CMN_MOD_IEEE80211_T_HE_40, 2518 2064700, 2127300, 1950000, 1755000, 0, 2064700, 2519 0x4ad }, 2520 /* When number spatial streams > 6 2521 * use below rates 2522 */ 2523 /* 608 MCS-00 */ { HE40_LDPC_ONLY_MASKS, 2524 DP_CMN_MOD_IEEE80211_T_HE_40, 2525 120400, 124100, 113800, 102400, 60200, 120400, 2526 0x4c0 }, 2527 /* 609 MCS-01 */ { HE40_LDPC_ONLY_MASKS, 2528 DP_CMN_MOD_IEEE80211_T_HE_40, 2529 240900, 248200, 227500, 204800, 120400, 240900, 2530 0x4c1 }, 2531 /* 610 MCS-02 */ { HE40_LDPC_ONLY_MASKS, 2532 DP_CMN_MOD_IEEE80211_T_HE_40, 2533 361300, 372300, 341300, 307100, 180600, 361300, 2534 0x4c2 }, 2535 /* 611 MCS-03 */ { HE40_LDPC_ONLY_MASKS, 2536 DP_CMN_MOD_IEEE80211_T_HE_40, 2537 481800, 496400, 455000, 409500, 0, 481800, 2538 0x4c3 }, 2539 /* 612 MCS-04 */ { HE40_LDPC_ONLY_MASKS, 2540 DP_CMN_MOD_IEEE80211_T_HE_40, 2541 722600, 744500, 682500, 614300, 0, 722600, 2542 0x4c4 }, 2543 /* 613 MCS-05 */ { HE40_LDPC_ONLY_MASKS, 2544 DP_CMN_MOD_IEEE80211_T_HE_40, 2545 963500, 992700, 910000, 819000, 0, 963500, 2546 0x4c5 }, 2547 /* 614 MCS-06 */ { HE40_LDPC_ONLY_MASKS, 2548 DP_CMN_MOD_IEEE80211_T_HE_40, 2549 1084000, 1116800, 1023800, 921400, 0, 1084000, 2550 0x4c6 }, 2551 /* 615 MCS-07 */ { HE40_LDPC_ONLY_MASKS, 2552 DP_CMN_MOD_IEEE80211_T_HE_40, 2553 1204400, 1240900, 1137500, 1023800, 0, 1204400, 2554 0x4c7 }, 2555 /* 616 MCS-08 */ { HE40_LDPC_ONLY_MASKS, 2556 DP_CMN_MOD_IEEE80211_T_HE_40, 2557 1445300, 1489100, 1365000, 1228500, 0, 1445300, 2558 0x4c8 }, 2559 /* 617 MCS-09 */ { HE40_LDPC_ONLY_MASKS, 2560 DP_CMN_MOD_IEEE80211_T_HE_40, 2561 1605900, 1654500, 1516700, 1365000, 0, 1605900, 2562 0x4c9 }, 2563 /* 618 MCS-10 */ { HE40_LDPC_ONLY_MASKS, 2564 DP_CMN_MOD_IEEE80211_T_HE_40, 2565 1806600, 1861400, 1706300, 1535600, 0, 1806600, 2566 0x4ca }, 2567 /* 619 MCS-11 */ { HE40_LDPC_ONLY_MASKS, 2568 DP_CMN_MOD_IEEE80211_T_HE_40, 2569 2007400, 2068200, 1895800, 1706300, 0, 2007400, 2570 0x4cb }, 2571 /* 620 MCS-12 */ { HE40_LDPC_ONLY_MASKS, 2572 DP_CMN_MOD_IEEE80211_T_HE_40, 2573 2167900, 2233600, 2047500, 1842800, 0, 2167900, 2574 0x4cc }, 2575 /* 621 MCS-13 */ { HE40_LDPC_ONLY_MASKS, 2576 DP_CMN_MOD_IEEE80211_T_HE_40, 2577 2408800, 2481800, 2275000, 2047500, 0, 2408800, 2578 0x4cd }, 2579 2580 /* When number of spatial streams > 7 2581 * use below rates 2582 */ 2583 /* 622 MCS-00 */ { HE40_LDPC_ONLY_MASKS, 2584 DP_CMN_MOD_IEEE80211_T_HE_40, 2585 137600, 141800, 130000, 117000, 68800, 137600, 2586 0x4e0 }, 2587 /* 623 MCS-01 */ { HE40_LDPC_ONLY_MASKS, 2588 DP_CMN_MOD_IEEE80211_T_HE_40, 2589 275300, 283600, 260000, 234000, 137600, 275300, 2590 0x4e1 }, 2591 /* 624 MCS-02 */ { HE40_LDPC_ONLY_MASKS, 2592 DP_CMN_MOD_IEEE80211_T_HE_40, 2593 412900, 425500, 390000, 351000, 206500, 412900, 2594 0x4e2 }, 2595 /* 625 MCS-03 */ { HE40_LDPC_ONLY_MASKS, 2596 DP_CMN_MOD_IEEE80211_T_HE_40, 2597 550600, 567300, 520000, 468000, 0, 550600, 2598 0x4e3 }, 2599 /* 626 MCS-04 */ { HE40_LDPC_ONLY_MASKS, 2600 DP_CMN_MOD_IEEE80211_T_HE_40, 2601 825900, 850900, 780000, 702000, 0, 825900, 2602 0x4e4 }, 2603 /* 627 MCS-05 */ { HE40_LDPC_ONLY_MASKS, 2604 DP_CMN_MOD_IEEE80211_T_HE_40, 2605 1101200, 1134500, 1040000, 936000, 0, 1101200, 2606 0x4e5 }, 2607 /* 628 MCS-06 */ { HE40_LDPC_ONLY_MASKS, 2608 DP_CMN_MOD_IEEE80211_T_HE_40, 2609 1238800, 1276400, 1170000, 1053000, 0, 1238800, 2610 0x4e6 }, 2611 /* 629 MCS-07 */ { HE40_LDPC_ONLY_MASKS, 2612 DP_CMN_MOD_IEEE80211_T_HE_40, 2613 1376500, 1418200, 1300000, 1170000, 0, 1376500, 2614 0x4e7 }, 2615 /* 630 MCS-08 */ { HE40_LDPC_ONLY_MASKS, 2616 DP_CMN_MOD_IEEE80211_T_HE_40, 2617 1651800, 1701800, 1560000, 1404000, 0, 1651800, 2618 0x4e8 }, 2619 /* 631 MCS-09 */ { HE40_LDPC_ONLY_MASKS, 2620 DP_CMN_MOD_IEEE80211_T_HE_40, 2621 1835300, 1890900, 1733300, 1560000, 0, 1835300, 2622 0x4e9 }, 2623 /* 632 MCS-10 */ { HE40_LDPC_ONLY_MASKS, 2624 DP_CMN_MOD_IEEE80211_T_HE_40, 2625 2064700, 2127300, 1950000, 1755000, 0, 2064700, 2626 0x4ea }, 2627 /* 633 MCS-11 */ { HE40_LDPC_ONLY_MASKS, 2628 DP_CMN_MOD_IEEE80211_T_HE_40, 2629 2294100, 2363600, 2166700, 1950000, 0, 2294100, 2630 0x4eb }, 2631 /* 634 MCS-12 */ { HE40_LDPC_ONLY_MASKS, 2632 DP_CMN_MOD_IEEE80211_T_HE_40, 2633 2477600, 2552700, 2340000, 2106000, 0, 2477600, 2634 0x4ec }, 2635 /* 635 MCS-13 */ { HE40_LDPC_ONLY_MASKS, 2636 DP_CMN_MOD_IEEE80211_T_HE_40, 2637 2752900, 2836400, 2600000, 2340000, 0, 2752900, 2638 0x4ed }, 2639 2640 /* 11ax RU996 rates 2641 */ 2642 /* 636 MCS-00 */ { HE80_LDPC_ONLY_MASKS, 2643 DP_CMN_MOD_IEEE80211_T_HE_80, 2644 36000, 37100, 34000, 30600, 18000, 36000, 0x400 2645 }, 2646 /* 637 MCS-01 */ { HE80_LDPC_ONLY_MASKS, 2647 DP_CMN_MOD_IEEE80211_T_HE_80, 2648 72100, 74200, 68100, 61300, 36000, 72100, 0x401 2649 }, 2650 /* 638 MCS-02 */ { HE80_LDPC_ONLY_MASKS, 2651 DP_CMN_MOD_IEEE80211_T_HE_80, 2652 108100, 111400, 102100, 91900, 0, 108100, 2653 0x402 }, 2654 /* 639 MCS-03 */ { HE80_LDPC_ONLY_MASKS, 2655 DP_CMN_MOD_IEEE80211_T_HE_80, 2656 144100, 148500, 136100, 122500, 72100, 144100, 2657 0x403 }, 2658 /* 640 MCS-04 */ { HE80_LDPC_ONLY_MASKS, 2659 DP_CMN_MOD_IEEE80211_T_HE_80, 2660 216200, 222700, 204200, 183800, 108100, 216200, 2661 0x404 }, 2662 /* 641 MCS-05 */ { HE80_LDPC_ONLY_MASKS, 2663 DP_CMN_MOD_IEEE80211_T_HE_80, 2664 288200, 297000, 272200, 245000, 0, 288200, 2665 0x405 }, 2666 /* 642 MCS-06 */ { HE80_LDPC_ONLY_MASKS, 2667 DP_CMN_MOD_IEEE80211_T_HE_80, 2668 324300, 334100, 306300, 275600, 0, 324300, 2669 0x406 }, 2670 /* 643 MCS-07 */ { HE80_LDPC_ONLY_MASKS, 2671 DP_CMN_MOD_IEEE80211_T_HE_80, 2672 360300, 371200, 340300, 306300, 0, 360300, 2673 0x407 }, 2674 /* 644 MCS-08 */ { HE80_LDPC_ONLY_MASKS, 2675 DP_CMN_MOD_IEEE80211_T_HE_80, 2676 432400, 445500, 408300, 367500, 0, 432400, 2677 0x408 }, 2678 /* 645 MCS-09 */ { HE80_LDPC_ONLY_MASKS, 2679 DP_CMN_MOD_IEEE80211_T_HE_80, 2680 480400, 494900, 453700, 408300, 0, 480400, 2681 0x409 }, 2682 /* 646 MCS-10 */ { HE80_LDPC_ONLY_MASKS, 2683 DP_CMN_MOD_IEEE80211_T_HE_80, 2684 540400, 556800, 510400, 459400, 0, 540400, 2685 0x40a }, 2686 /* 647 MCS-11 */ { HE80_LDPC_ONLY_MASKS, 2687 DP_CMN_MOD_IEEE80211_T_HE_80, 2688 600500, 618700, 567100, 510400, 0, 600500, 2689 0x40b }, 2690 /* 648 MCS-12 */ { HE80_LDPC_ONLY_MASKS, 2691 DP_CMN_MOD_IEEE80211_T_HE_80, 2692 648500, 668200, 612500, 551300, 0, 648500, 2693 0x40c }, 2694 /* 649 MCS-13 */ { HE80_LDPC_ONLY_MASKS, 2695 DP_CMN_MOD_IEEE80211_T_HE_80, 2696 720600, 742400, 680600, 612500, 0, 720600, 2697 0x40d }, 2698 /* When number spatial streams > 1 2699 * use below rates 2700 */ 2701 /* 650 MCS-00 */ { HE80_LDPC_ONLY_MASKS, 2702 DP_CMN_MOD_IEEE80211_T_HE_80, 2703 72100, 74200, 68100, 61300, 36000, 72100, 0x420 2704 }, 2705 /* 651 MCS-01 */ { HE80_LDPC_ONLY_MASKS, 2706 DP_CMN_MOD_IEEE80211_T_HE_80, 2707 144100, 148500, 136100, 122500, 72100, 144100, 2708 0x421 }, 2709 /* 652 MCS-02 */ { HE80_LDPC_ONLY_MASKS, 2710 DP_CMN_MOD_IEEE80211_T_HE_80, 2711 216200, 222700, 204200, 183800, 0, 216200, 2712 0x422 }, 2713 /* 653 MCS-03 */ { HE80_LDPC_ONLY_MASKS, 2714 DP_CMN_MOD_IEEE80211_T_HE_80, 2715 288200, 297000, 272200, 245000, 144100, 288200, 2716 0x423 }, 2717 /* 654 MCS-04 */ { HE80_LDPC_ONLY_MASKS, 2718 DP_CMN_MOD_IEEE80211_T_HE_80, 2719 432400, 445500, 408300, 367500, 216200, 432400, 2720 0x424 }, 2721 /* 655 MCS-05 */ { HE80_LDPC_ONLY_MASKS, 2722 DP_CMN_MOD_IEEE80211_T_HE_80, 2723 576500, 593900, 544400, 490000, 0, 576500, 2724 0x425 }, 2725 /* 656 MCS-06 */ { HE80_LDPC_ONLY_MASKS, 2726 DP_CMN_MOD_IEEE80211_T_HE_80, 2727 648500, 668200, 612500, 551300, 0, 648500, 2728 0x426 }, 2729 /* 657 MCS-07 */ { HE80_LDPC_ONLY_MASKS, 2730 DP_CMN_MOD_IEEE80211_T_HE_80, 2731 720600, 742400, 680600, 612500, 0, 720600, 2732 0x427 }, 2733 /* 658 MCS-08 */ { HE80_LDPC_ONLY_MASKS, 2734 DP_CMN_MOD_IEEE80211_T_HE_80, 2735 864700, 890900, 816700, 735000, 0, 864700, 2736 0x428 }, 2737 /* 659 MCS-09 */ { HE80_LDPC_ONLY_MASKS, 2738 DP_CMN_MOD_IEEE80211_T_HE_80, 2739 960800, 989900, 907400, 816700, 0, 960800, 2740 0x429 }, 2741 /* 660 MCS-10 */ { HE80_LDPC_ONLY_MASKS, 2742 DP_CMN_MOD_IEEE80211_T_HE_80, 2743 1080900, 1113600, 1020800, 918800, 0, 1080900, 2744 0x42a }, 2745 /* 661 MCS-11 */ { HE80_LDPC_ONLY_MASKS, 2746 DP_CMN_MOD_IEEE80211_T_HE_80, 2747 1201000, 1237400, 1134300, 1020800, 0, 1201000, 2748 0x42b }, 2749 /* 662 MCS-12 */ { HE80_LDPC_ONLY_MASKS, 2750 DP_CMN_MOD_IEEE80211_T_HE_80, 2751 1297100, 1336400, 1225000, 1102500, 0, 1297100, 2752 0x42c }, 2753 /* 663 MCS-13 */ { HE80_LDPC_ONLY_MASKS, 2754 DP_CMN_MOD_IEEE80211_T_HE_80, 2755 1441200, 1484800, 1361100, 1225000, 0, 1441200, 2756 0x42d }, 2757 2758 /* When number of spatial streams > 2 2759 * use below rates 2760 */ 2761 /* 664 MCS-00 */ { HE80_LDPC_ONLY_MASKS, 2762 DP_CMN_MOD_IEEE80211_T_HE_80, 2763 108100, 111400, 102100, 91900, 54000, 108100, 2764 0x440 }, 2765 /* 665 MCS-01 */ { HE80_LDPC_ONLY_MASKS, 2766 DP_CMN_MOD_IEEE80211_T_HE_80, 2767 216200, 222700, 204200, 183800, 108100, 216200, 2768 0x441 }, 2769 /* 666 MCS-02 */ { HE80_LDPC_ONLY_MASKS, 2770 DP_CMN_MOD_IEEE80211_T_HE_80, 2771 324300, 334100, 306300, 275600, 0, 324300, 2772 0x442 }, 2773 /* 667 MCS-03 */ { HE80_LDPC_ONLY_MASKS, 2774 DP_CMN_MOD_IEEE80211_T_HE_80, 2775 432400, 445500, 408300, 367500, 0, 432400, 2776 0x443 }, 2777 /* 668 MCS-04 */ { HE80_LDPC_ONLY_MASKS, 2778 DP_CMN_MOD_IEEE80211_T_HE_80, 2779 648500, 668200, 612500, 551300, 0, 648500, 2780 0x444 }, 2781 /* 669 MCS-05 */ { HE80_LDPC_ONLY_MASKS, 2782 DP_CMN_MOD_IEEE80211_T_HE_80, 2783 864700, 890900, 816700, 735000, 0, 864700, 2784 0x445 }, 2785 /* 670 MCS-06 */ { HE80_LDPC_ONLY_MASKS, 2786 DP_CMN_MOD_IEEE80211_T_HE_80, 2787 972800, 1002300, 918800, 826900, 0, 972800, 2788 0x446 }, 2789 /* 671 MCS-07 */ { HE80_LDPC_ONLY_MASKS, 2790 DP_CMN_MOD_IEEE80211_T_HE_80, 2791 1080900, 1113600, 1020800, 918800, 0, 1080900, 2792 0x447 }, 2793 /* 672 MCS-08 */ { HE80_LDPC_ONLY_MASKS, 2794 DP_CMN_MOD_IEEE80211_T_HE_80, 2795 1297100, 1336400, 1225000, 1102500, 0, 1297100, 2796 0x448 }, 2797 /* 673 MCS-09 */ { HE80_LDPC_ONLY_MASKS, 2798 DP_CMN_MOD_IEEE80211_T_HE_80, 2799 1441200, 1484800, 1361100, 1225000, 0, 1441200, 2800 0x449 }, 2801 /* 674 MCS-10 */ { HE80_LDPC_ONLY_MASKS, 2802 DP_CMN_MOD_IEEE80211_T_HE_80, 2803 1621300, 1670500, 1531300, 1378100, 0, 1621300, 2804 0x44a }, 2805 /* 675 MCS-11 */ { HE80_LDPC_ONLY_MASKS, 2806 DP_CMN_MOD_IEEE80211_T_HE_80, 2807 1801500, 1856100, 1701400, 1531300, 0, 1801500, 2808 0x44b }, 2809 /* 676 MCS-12 */ { HE80_LDPC_ONLY_MASKS, 2810 DP_CMN_MOD_IEEE80211_T_HE_80, 2811 1945600, 2004500, 1837500, 1653800, 0, 1945600, 2812 0x44c }, 2813 /* 677 MCS-13 */ { HE80_LDPC_ONLY_MASKS, 2814 DP_CMN_MOD_IEEE80211_T_HE_80, 2815 2161800, 2227300, 2041700, 1837500, 0, 2161800, 2816 0x44d }, 2817 2818 /* When number of spatial streams > 3 2819 * use below rates 2820 */ 2821 /* 678 MCS-00 */ { HE80_LDPC_ONLY_MASKS, 2822 DP_CMN_MOD_IEEE80211_T_HE_80, 2823 144100, 148500, 136100, 122500, 72100, 144100, 2824 0x460 }, 2825 /* 679 MCS-01 */ { HE80_LDPC_ONLY_MASKS, 2826 DP_CMN_MOD_IEEE80211_T_HE_80, 2827 288200, 297000, 272200, 245000, 144100, 288200, 2828 0x461 }, 2829 /* 680 MCS-02 */ { HE80_LDPC_ONLY_MASKS, 2830 DP_CMN_MOD_IEEE80211_T_HE_80, 2831 432400, 445500, 408300, 367500, 0, 432400, 2832 0x462 }, 2833 /* 681 MCS-03 */ { HE80_LDPC_ONLY_MASKS, 2834 DP_CMN_MOD_IEEE80211_T_HE_80, 2835 576500, 593900, 544400, 490000, 288200, 576500, 2836 0x463 }, 2837 /* 682 MCS-04 */ { HE80_LDPC_ONLY_MASKS, 2838 DP_CMN_MOD_IEEE80211_T_HE_80, 2839 864700, 890900, 816700, 735000, 432400, 864700, 2840 0x464 }, 2841 /* 683 MCS-05 */ { HE80_LDPC_ONLY_MASKS, 2842 DP_CMN_MOD_IEEE80211_T_HE_80, 2843 1152900, 1187900, 1088900, 980000, 0, 1152900, 2844 0x465 }, 2845 /* 684 MCS-06 */ { HE80_LDPC_ONLY_MASKS, 2846 DP_CMN_MOD_IEEE80211_T_HE_80, 2847 1297100, 1336400, 1225000, 1102500, 0, 1297100, 2848 0x466 }, 2849 /* 685 MCS-07 */ { HE80_LDPC_ONLY_MASKS, 2850 DP_CMN_MOD_IEEE80211_T_HE_80, 2851 1441200, 1484800, 1361100, 1225000, 0, 1441200, 2852 0x467 }, 2853 /* 686 MCS-08 */ { HE80_LDPC_ONLY_MASKS, 2854 DP_CMN_MOD_IEEE80211_T_HE_80, 2855 1729400, 1781800, 1633300, 1470000, 0, 1729400, 2856 0x468 }, 2857 /* 687 MCS-09 */ { HE80_LDPC_ONLY_MASKS, 2858 DP_CMN_MOD_IEEE80211_T_HE_80, 2859 1921600, 1979800, 1814800, 1633300, 0, 1921600, 2860 0x469 }, 2861 /* 688 MCS-10 */ { HE80_LDPC_ONLY_MASKS, 2862 DP_CMN_MOD_IEEE80211_T_HE_80, 2863 2161800, 2227300, 2041700, 1837500, 0, 2161800, 2864 0x46a }, 2865 /* 689 MCS-11 */ { HE80_LDPC_ONLY_MASKS, 2866 DP_CMN_MOD_IEEE80211_T_HE_80, 2867 2401900, 2474700, 2268500, 2041700, 0, 2401900, 2868 0x46b }, 2869 /* 690 MCS-12 */ { HE80_LDPC_ONLY_MASKS, 2870 DP_CMN_MOD_IEEE80211_T_HE_80, 2871 2594100, 2672700, 2450000, 2205000, 0, 2594100, 2872 0x46c }, 2873 /* 691 MCS-13 */ { HE80_LDPC_ONLY_MASKS, 2874 DP_CMN_MOD_IEEE80211_T_HE_80, 2875 2882400, 2969700, 2722200, 2450000, 0, 2882400, 2876 0x46d }, 2877 2878 /* When number spatial streams > 4 2879 * use below rates 2880 */ 2881 /* 692 MCS-00 */ { HE80_LDPC_ONLY_MASKS, 2882 DP_CMN_MOD_IEEE80211_T_HE_80, 2883 180100, 185600, 170100, 153100, 90100, 180100, 2884 0x480 }, 2885 /* 693 MCS-01 */ { HE80_LDPC_ONLY_MASKS, 2886 DP_CMN_MOD_IEEE80211_T_HE_80, 2887 360300, 371200, 340300, 306300, 180100, 360300, 2888 0x481 }, 2889 /* 694 MCS-02 */ { HE80_LDPC_ONLY_MASKS, 2890 DP_CMN_MOD_IEEE80211_T_HE_80, 2891 540400, 556800, 510400, 459400, 0, 540400, 2892 0x482 }, 2893 /* 695 MCS-03 */ { HE80_LDPC_ONLY_MASKS, 2894 DP_CMN_MOD_IEEE80211_T_HE_80, 2895 720600, 742400, 680600, 612500, 0, 720600, 2896 0x483 }, 2897 /* 696 MCS-04 */ { HE80_LDPC_ONLY_MASKS, 2898 DP_CMN_MOD_IEEE80211_T_HE_80, 2899 1080900, 1113600, 1020800, 918800, 0, 1080900, 2900 0x484 }, 2901 /* 697 MCS-05 */ { HE80_LDPC_ONLY_MASKS, 2902 DP_CMN_MOD_IEEE80211_T_HE_80, 2903 1441200, 1484800, 1361100, 1225000, 0, 1441200, 2904 0x485 }, 2905 /* 698 MCS-06 */ { HE80_LDPC_ONLY_MASKS, 2906 DP_CMN_MOD_IEEE80211_T_HE_80, 2907 1621300, 1670500, 1531300, 1378100, 0, 1621300, 2908 0x486 }, 2909 /* 699 MCS-07 */ { HE80_LDPC_ONLY_MASKS, 2910 DP_CMN_MOD_IEEE80211_T_HE_80, 2911 1801500, 1856100, 1701400, 1531300, 0, 1801500, 2912 0x487 }, 2913 /* 700 MCS-08 */ { HE80_LDPC_ONLY_MASKS, 2914 DP_CMN_MOD_IEEE80211_T_HE_80, 2915 2161800, 2227300, 2041700, 1837500, 0, 2161800, 2916 0x488 }, 2917 /* 701 MCS-09 */ { HE80_LDPC_ONLY_MASKS, 2918 DP_CMN_MOD_IEEE80211_T_HE_80, 2919 2402000, 2474700, 2268500, 2041700, 0, 2402000, 2920 0x489 }, 2921 /* 702 MCS-10 */ { HE80_LDPC_ONLY_MASKS, 2922 DP_CMN_MOD_IEEE80211_T_HE_80, 2923 2702200, 2784100, 2552100, 2296900, 0, 2702200, 2924 0x48a }, 2925 /* 703 MCS-11 */ { HE80_LDPC_ONLY_MASKS, 2926 DP_CMN_MOD_IEEE80211_T_HE_80, 2927 3002500, 3093400, 2835600, 2552100, 0, 3002500, 2928 0x48b }, 2929 /* 704 MCS-12 */ { HE80_LDPC_ONLY_MASKS, 2930 DP_CMN_MOD_IEEE80211_T_HE_80, 2931 3242600, 3340900, 3062500, 2756300, 0, 3242600, 2932 0x48c }, 2933 /* 705 MCS-13 */ { HE80_LDPC_ONLY_MASKS, 2934 DP_CMN_MOD_IEEE80211_T_HE_80, 2935 3602900, 3712100, 3402800, 3062500, 0, 3602900, 2936 0x48d }, 2937 2938 /* When number of spatial streams > 5 2939 * use below rates 2940 */ 2941 /* 706 MCS-00 */ { HE80_LDPC_ONLY_MASKS, 2942 DP_CMN_MOD_IEEE80211_T_HE_80, 2943 216200, 222700, 204200, 183800, 108100, 216200, 2944 0x4a0 }, 2945 /* 707 MCS-01 */ { HE80_LDPC_ONLY_MASKS, 2946 DP_CMN_MOD_IEEE80211_T_HE_80, 2947 432400, 445500, 408300, 367500, 216200, 432400, 2948 0x4a1 }, 2949 /* 708 MCS-02 */ { HE80_LDPC_ONLY_MASKS, 2950 DP_CMN_MOD_IEEE80211_T_HE_80, 2951 648500, 668200, 612500, 551300, 0, 648500, 2952 0x4a2 }, 2953 /* 709 MCS-03 */ { HE80_LDPC_ONLY_MASKS, 2954 DP_CMN_MOD_IEEE80211_T_HE_80, 2955 864700, 890900, 816700, 735000, 432400, 864700, 2956 0x4a3 }, 2957 /* 710 MCS-04 */ { HE80_LDPC_ONLY_MASKS, 2958 DP_CMN_MOD_IEEE80211_T_HE_80, 2959 1297100, 1336400, 1225000, 1102500, 648500, 1297100, 2960 0x4a4 }, 2961 /* 711 MCS-05 */ { HE80_LDPC_ONLY_MASKS, 2962 DP_CMN_MOD_IEEE80211_T_HE_80, 2963 1729400, 1781800, 1633300, 1470000, 0, 1729400, 2964 0x4a5 }, 2965 /* 712 MCS-06 */ { HE80_LDPC_ONLY_MASKS, 2966 DP_CMN_MOD_IEEE80211_T_HE_80, 2967 1945600, 2004500, 1837500, 1653800, 0, 1945600, 2968 0x4a6 }, 2969 /* 713 MCS-07 */ { HE80_LDPC_ONLY_MASKS, 2970 DP_CMN_MOD_IEEE80211_T_HE_80, 2971 2161800, 2227300, 2041700, 1837500, 0, 2161800, 2972 0x4a7 }, 2973 /* 714 MCS-08 */ { HE80_LDPC_ONLY_MASKS, 2974 DP_CMN_MOD_IEEE80211_T_HE_80, 2975 2594100, 2672700, 2450000, 2205000, 0, 2594100, 2976 0x4a8 }, 2977 /* 715 MCS-09 */ { HE80_LDPC_ONLY_MASKS, 2978 DP_CMN_MOD_IEEE80211_T_HE_80, 2979 2882400, 2969700, 2722200, 2450000, 0, 2882400, 2980 0x4a9 }, 2981 /* 716 MCS-10 */ { HE80_LDPC_ONLY_MASKS, 2982 DP_CMN_MOD_IEEE80211_T_HE_80, 2983 3242600, 3340900, 3062500, 2756300, 0, 3242600, 2984 0x4aa }, 2985 /* 717 MCS-11 */ { HE80_LDPC_ONLY_MASKS, 2986 DP_CMN_MOD_IEEE80211_T_HE_80, 2987 3602900, 3712100, 3402800, 3062500, 0, 3602900, 2988 0x4ab }, 2989 /* 718 MCS-12 */ { HE80_LDPC_ONLY_MASKS, 2990 DP_CMN_MOD_IEEE80211_T_HE_80, 2991 3891200, 4009100, 3675000, 3307500, 0, 3891200, 2992 0x4ac }, 2993 /* 719 MCS-13 */ { HE80_LDPC_ONLY_MASKS, 2994 DP_CMN_MOD_IEEE80211_T_HE_80, 2995 4323500, 4454500, 4083300, 3675000, 0, 4323500, 2996 0x4ad }, 2997 2998 /* When number of spatial streams > 6 2999 * use below rates 3000 */ 3001 /* 720 MCS-00 */ { HE80_LDPC_ONLY_MASKS, 3002 DP_CMN_MOD_IEEE80211_T_HE_80, 3003 252200, 259800, 238200, 214400, 129900, 252200, 3004 0x4c0 }, 3005 /* 721 MCS-01 */ { HE80_LDPC_ONLY_MASKS, 3006 DP_CMN_MOD_IEEE80211_T_HE_80, 3007 504400, 519700, 476400, 428800, 252200, 504400, 3008 0x4c1 }, 3009 /* 722 MCS-02 */ { HE80_LDPC_ONLY_MASKS, 3010 DP_CMN_MOD_IEEE80211_T_HE_80, 3011 756600, 779500, 714600, 643100, 0, 756600, 3012 0x4c2 }, 3013 /* 723 MCS-03 */ { HE80_LDPC_ONLY_MASKS, 3014 DP_CMN_MOD_IEEE80211_T_HE_80, 3015 1008800, 1039400, 952800, 857500, 504400, 1008800, 3016 0x4c3 }, 3017 /* 724 MCS-04 */ { HE80_LDPC_ONLY_MASKS, 3018 DP_CMN_MOD_IEEE80211_T_HE_80, 3019 1513200, 1559100, 1429200, 1286300, 756600, 1513200, 3020 0x4c4 }, 3021 /* 725 MCS-05 */ { HE80_LDPC_ONLY_MASKS, 3022 DP_CMN_MOD_IEEE80211_T_HE_80, 3023 2017600, 2078800, 1905600, 1715000, 0, 2017600, 3024 0x4c5 }, 3025 /* 726 MCS-06 */ { HE80_LDPC_ONLY_MASKS, 3026 DP_CMN_MOD_IEEE80211_T_HE_80, 3027 2269900, 2338600, 2143800, 1929400, 0, 2269900, 3028 0x4c6 }, 3029 /* 727 MCS-07 */ { HE80_LDPC_ONLY_MASKS, 3030 DP_CMN_MOD_IEEE80211_T_HE_80, 3031 2522100, 2598500, 2381900, 2143800, 0, 2522100, 3032 0x4c7 }, 3033 /* 728 MCS-08 */ { HE80_LDPC_ONLY_MASKS, 3034 DP_CMN_MOD_IEEE80211_T_HE_80, 3035 3026500, 3118200, 2858300, 2572500, 0, 3026500, 3036 0x4c8 }, 3037 /* 729 MCS-09 */ { HE80_LDPC_ONLY_MASKS, 3038 DP_CMN_MOD_IEEE80211_T_HE_80, 3039 3362700, 3464600, 3175900, 2858300, 0, 3362700, 3040 0x4c9 }, 3041 /* 730 MCS-10 */ { HE80_LDPC_ONLY_MASKS, 3042 DP_CMN_MOD_IEEE80211_T_HE_80, 3043 3783100, 3897700, 3572900, 3215600, 0, 3783100, 3044 0x4ca }, 3045 /* 731 MCS-11 */ { HE80_LDPC_ONLY_MASKS, 3046 DP_CMN_MOD_IEEE80211_T_HE_80, 3047 4203400, 4330800, 3969900, 3572900, 0, 4203400, 3048 0x4cb }, 3049 /* 732 MCS-12 */ { HE80_LDPC_ONLY_MASKS, 3050 DP_CMN_MOD_IEEE80211_T_HE_80, 3051 4539700, 4677300, 4287500, 3858800, 0, 4539700, 3052 0x4cc }, 3053 /* 733 MCS-13 */ { HE80_LDPC_ONLY_MASKS, 3054 DP_CMN_MOD_IEEE80211_T_HE_80, 3055 5044100, 5197000, 4763900, 4287500, 0, 5044100, 3056 0x4cd }, 3057 3058 /* When number of spatial streams > 7 3059 * use below rates 3060 */ 3061 /* 734 MCS-00 */ { HE80_LDPC_ONLY_MASKS, 3062 DP_CMN_MOD_IEEE80211_T_HE_80, 3063 288200, 297000, 272200, 245000, 144100, 288200, 3064 0x4e0 }, 3065 /* 735 MCS-01 */ { HE80_LDPC_ONLY_MASKS, 3066 DP_CMN_MOD_IEEE80211_T_HE_80, 3067 576500, 593900, 544400, 490000, 288200, 576500, 3068 0x4e1 }, 3069 /* 736 MCS-02 */ { HE80_LDPC_ONLY_MASKS, 3070 DP_CMN_MOD_IEEE80211_T_HE_80, 3071 864700, 890900, 816700, 735000, 0, 864700, 3072 0x4e2 }, 3073 /* 737 MCS-03 */ { HE80_LDPC_ONLY_MASKS, 3074 DP_CMN_MOD_IEEE80211_T_HE_80, 3075 1152900, 1187900, 1088900, 980000, 576500, 1152900, 3076 0x4e3 }, 3077 /* 738 MCS-04 */ { HE80_LDPC_ONLY_MASKS, 3078 DP_CMN_MOD_IEEE80211_T_HE_80, 3079 1729400, 1781800, 1633300, 1470000, 864700, 1729400, 3080 0x4e4 }, 3081 /* 739 MCS-05 */ { HE80_LDPC_ONLY_MASKS, 3082 DP_CMN_MOD_IEEE80211_T_HE_80, 3083 2305900, 2375800, 2177800, 1960000, 0, 2305900, 3084 0x4e5 }, 3085 /* 740 MCS-06 */ { HE80_LDPC_ONLY_MASKS, 3086 DP_CMN_MOD_IEEE80211_T_HE_80, 3087 2594100, 2672700, 2450000, 2205000, 0, 2594100, 3088 0x4e6 }, 3089 /* 741 MCS-07 */ { HE80_LDPC_ONLY_MASKS, 3090 DP_CMN_MOD_IEEE80211_T_HE_80, 3091 2882400, 2969700, 2722200, 2450000, 0, 2882400, 3092 0x4e7 }, 3093 /* 742 MCS-08 */ { HE80_LDPC_ONLY_MASKS, 3094 DP_CMN_MOD_IEEE80211_T_HE_80, 3095 3458800, 3563600, 3266700, 2940000, 0, 3458800, 3096 0x4e8 }, 3097 /* 743 MCS-09 */ { HE80_LDPC_ONLY_MASKS, 3098 DP_CMN_MOD_IEEE80211_T_HE_80, 3099 3843100, 3959600, 3629600, 3266700, 0, 3843100, 3100 0x4e9 }, 3101 /* 744 MCS-10 */ { HE80_LDPC_ONLY_MASKS, 3102 DP_CMN_MOD_IEEE80211_T_HE_80, 3103 4323500, 4454500, 4083300, 3675000, 0, 4323500, 3104 0x4ea }, 3105 /* 745 MCS-11 */ { HE80_LDPC_ONLY_MASKS, 3106 DP_CMN_MOD_IEEE80211_T_HE_80, 3107 4803900, 4949500, 4537000, 4083300, 0, 4803900, 3108 0x4eb }, 3109 /* 746 MCS-12 */ { HE80_LDPC_ONLY_MASKS, 3110 DP_CMN_MOD_IEEE80211_T_HE_80, 3111 5188200, 5345500, 4900000, 4410000, 0, 5188200, 3112 0x4ec }, 3113 /* 747 MCS-13 */ { HE80_LDPC_ONLY_MASKS, 3114 DP_CMN_MOD_IEEE80211_T_HE_80, 3115 5764700, 5939400, 5444400, 4900000, 0, 5764700, 3116 0x4ed }, 3117 3118 /* 11ax RU996x2 rates 3119 */ 3120 /* 748 MCS-00 */ { HE160_LDPC_ONLY_MASKS, 3121 DP_CMN_MOD_IEEE80211_T_HE_160, 3122 72100, 74200, 68100, 61300, 36000, 72100, 3123 0x400}, 3124 /* 749 MCS-01 */ { HE160_LDPC_ONLY_MASKS, 3125 DP_CMN_MOD_IEEE80211_T_HE_160, 3126 144100, 148500, 136100, 122500, 72100, 144100, 3127 0x401}, 3128 /* 750 MCS-02 */ { HE160_LDPC_ONLY_MASKS, 3129 DP_CMN_MOD_IEEE80211_T_HE_160, 3130 216200, 222700, 204200, 183800, 0, 216200, 3131 0x402}, 3132 /* 751 MCS-03 */ { HE160_LDPC_ONLY_MASKS, 3133 DP_CMN_MOD_IEEE80211_T_HE_160, 3134 288200, 297000, 272200, 245000, 144100, 288200, 3135 0x403}, 3136 /* 752 MCS-04 */ { HE160_LDPC_ONLY_MASKS, 3137 DP_CMN_MOD_IEEE80211_T_HE_160, 3138 432400, 445500, 408300, 367500, 216200, 432400, 3139 0x404}, 3140 /* 753 MCS-05 */ { HE160_LDPC_ONLY_MASKS, 3141 DP_CMN_MOD_IEEE80211_T_HE_160, 3142 576500, 593900, 544400, 490000, 0, 576500, 3143 0x405}, 3144 /* 754 MCS-06 */ { HE160_LDPC_ONLY_MASKS, 3145 DP_CMN_MOD_IEEE80211_T_HE_160, 3146 648500, 668200, 612500, 551300, 0, 648500, 3147 0x406}, 3148 /* 755 MCS-07 */ { HE160_LDPC_ONLY_MASKS, 3149 DP_CMN_MOD_IEEE80211_T_HE_160, 3150 720600, 742400, 680600, 612500, 0, 720600, 3151 0x407}, 3152 /* 756 MCS-08 */ { HE160_LDPC_ONLY_MASKS, 3153 DP_CMN_MOD_IEEE80211_T_HE_160, 3154 864700, 890900, 816700, 735000, 0, 864700, 3155 0x408}, 3156 /* 757 MCS-09 */ { HE160_LDPC_ONLY_MASKS, 3157 DP_CMN_MOD_IEEE80211_T_HE_160, 3158 960800, 989900, 907400, 816700, 0, 960800, 3159 0x409}, 3160 /* 758 MCS-10 */ { HE160_LDPC_ONLY_MASKS, 3161 DP_CMN_MOD_IEEE80211_T_HE_160, 3162 1080900, 1113600, 1020800, 918800, 0, 1080900, 3163 0x40a}, 3164 /* 759 MCS-11 */ { HE160_LDPC_ONLY_MASKS, 3165 DP_CMN_MOD_IEEE80211_T_HE_160, 3166 1201000, 1237400, 1134300, 1020800, 0, 1201000, 3167 0x40b}, 3168 /* 760 MCS-12 */ { HE160_LDPC_ONLY_MASKS, 3169 DP_CMN_MOD_IEEE80211_T_HE_160, 3170 1297100, 1336400, 1225000, 1102500, 0, 1297100, 3171 0x40c}, 3172 /* 761 MCS-13 */ { HE160_LDPC_ONLY_MASKS, 3173 DP_CMN_MOD_IEEE80211_T_HE_160, 3174 1441200, 1484800, 1361100, 1225000, 0, 1441200, 3175 0x40d}, 3176 /* When maximum spatial streams supported at 160MHZ > 1 3177 * use below rates 3178 */ 3179 /* 762 MCS-00 */ { HE160_LDPC_ONLY_MASKS, 3180 DP_CMN_MOD_IEEE80211_T_HE_160, 3181 144100, 148500, 136100, 122500, 72100, 144100, 3182 0x420}, 3183 /* 763 MCS-01 */ { HE160_LDPC_ONLY_MASKS, 3184 DP_CMN_MOD_IEEE80211_T_HE_160, 3185 288200, 297000, 272200, 245000, 144100, 288200, 3186 0x421}, 3187 /* 764 MCS-02 */ { HE160_LDPC_ONLY_MASKS, 3188 DP_CMN_MOD_IEEE80211_T_HE_160, 3189 432400, 445500, 408300, 367500, 0, 432400, 3190 0x422}, 3191 /* 765 MCS-03 */ { HE160_LDPC_ONLY_MASKS, 3192 DP_CMN_MOD_IEEE80211_T_HE_160, 3193 576500, 593900, 544400, 490000, 288200, 576500, 3194 0x423}, 3195 /* 766 MCS-04 */ { HE160_LDPC_ONLY_MASKS, 3196 DP_CMN_MOD_IEEE80211_T_HE_160, 3197 864700, 890900, 816700, 735000, 432400, 864700, 3198 0x424}, 3199 /* 767 MCS-05 */ { HE160_LDPC_ONLY_MASKS, 3200 DP_CMN_MOD_IEEE80211_T_HE_160, 3201 1152900, 1187900, 1088900, 980000, 0, 1152900, 3202 0x425}, 3203 /* 768 MCS-06 */ { HE160_LDPC_ONLY_MASKS, 3204 DP_CMN_MOD_IEEE80211_T_HE_160, 3205 1297100, 1336400, 1225000, 1102500, 0, 1297100, 3206 0x426}, 3207 /* 779 MCS-07 */ { HE160_LDPC_ONLY_MASKS, 3208 DP_CMN_MOD_IEEE80211_T_HE_160, 3209 1441200, 1484800, 1361100, 1225000, 0, 1441200, 3210 0x427}, 3211 /* 780 MCS-08 */ { HE160_LDPC_ONLY_MASKS, 3212 DP_CMN_MOD_IEEE80211_T_HE_160, 3213 1729400, 1781800, 1633300, 1470000, 0, 1729400, 3214 0x428}, 3215 /* 781 MCS-09 */ { HE160_LDPC_ONLY_MASKS, 3216 DP_CMN_MOD_IEEE80211_T_HE_160, 3217 1921600, 1979800, 1814800, 1633300, 0, 1921600, 3218 0x429}, 3219 /* 782 MCS-10 */ { HE160_LDPC_ONLY_MASKS, 3220 DP_CMN_MOD_IEEE80211_T_HE_160, 3221 2161800, 2227300, 2041700, 1837500, 0, 2161800, 3222 0x42a}, 3223 /* 783 MCS-11 */ { HE160_LDPC_ONLY_MASKS, 3224 DP_CMN_MOD_IEEE80211_T_HE_160, 3225 2401900, 2474700, 2268500, 2041700, 0, 2401900, 3226 0x42b}, 3227 /* 784 MCS-12 */ { HE160_LDPC_ONLY_MASKS, 3228 DP_CMN_MOD_IEEE80211_T_HE_160, 3229 2594100, 2672700, 2450000, 2205000, 0, 2594100, 3230 0x42c}, 3231 /* 785 MCS-13 */ { HE160_LDPC_ONLY_MASKS, 3232 DP_CMN_MOD_IEEE80211_T_HE_160, 3233 2882400, 2969700, 2722200, 2450000, 0, 2882400, 3234 0x42d}, 3235 3236 /* When maximum spatial streams supported at 160MHZ > 2 3237 * use below rates 3238 */ 3239 /* 786 MCS-00 */ { HE160_LDPC_ONLY_MASKS, 3240 DP_CMN_MOD_IEEE80211_T_HE_160, 3241 216200, 222700, 204200, 183800, 108100, 216200, 3242 0x440}, 3243 /* 787 MCS-01 */ { HE160_LDPC_ONLY_MASKS, 3244 DP_CMN_MOD_IEEE80211_T_HE_160, 3245 432400, 445500, 408300, 367500, 216200, 432400, 3246 0x441}, 3247 /* 788 MCS-02 */ { HE160_LDPC_ONLY_MASKS, 3248 DP_CMN_MOD_IEEE80211_T_HE_160, 3249 648500, 668200, 612500, 551300, 0, 648500, 3250 0x442}, 3251 /* 789 MCS-03 */ { HE160_LDPC_ONLY_MASKS, 3252 DP_CMN_MOD_IEEE80211_T_HE_160, 3253 864700, 890900, 816700, 735000, 432400, 864700, 3254 0x443}, 3255 /* 790 MCS-04 */ { HE160_LDPC_ONLY_MASKS, 3256 DP_CMN_MOD_IEEE80211_T_HE_160, 3257 1297100, 1336400, 1225000, 1102500, 648500, 1297100, 3258 0x444}, 3259 /* 791 MCS-05 */ { HE160_LDPC_ONLY_MASKS, 3260 DP_CMN_MOD_IEEE80211_T_HE_160, 3261 1729400, 1781800, 1633300, 1470000, 0, 1729400, 3262 0x445}, 3263 /* 792 MCS-06 */ { HE160_LDPC_ONLY_MASKS, 3264 DP_CMN_MOD_IEEE80211_T_HE_160, 3265 1945600, 2004500, 1837500, 1653800, 0, 1945600, 3266 0x446}, 3267 /* 793 MCS-07 */ { HE160_LDPC_ONLY_MASKS, 3268 DP_CMN_MOD_IEEE80211_T_HE_160, 3269 2161800, 2227300, 2041700, 1837500, 0, 2161800, 3270 0x447}, 3271 /* 794 MCS-08 */ { HE160_LDPC_ONLY_MASKS, 3272 DP_CMN_MOD_IEEE80211_T_HE_160, 3273 2594100, 2672700, 2450000, 2205000, 0, 2594100, 3274 0x448}, 3275 /* 795 MCS-09 */ { HE160_LDPC_ONLY_MASKS, 3276 DP_CMN_MOD_IEEE80211_T_HE_160, 3277 2882400, 2969700, 2722200, 2450000, 0, 2882400, 3278 0x449}, 3279 /* 796 MCS-10 */ { HE160_LDPC_ONLY_MASKS, 3280 DP_CMN_MOD_IEEE80211_T_HE_160, 3281 3242600, 3340900, 3062500, 2756300, 0, 3242600, 3282 0x44a}, 3283 /* 797 MCS-11 */ { HE160_LDPC_ONLY_MASKS, 3284 DP_CMN_MOD_IEEE80211_T_HE_160, 3285 3602900, 3712100, 3402800, 3062500, 0, 3602900, 3286 0x44b}, 3287 /* 798 MCS-12 */ { HE160_LDPC_ONLY_MASKS, 3288 DP_CMN_MOD_IEEE80211_T_HE_160, 3289 3891200, 4009100, 3675000, 3307500, 0, 3891200, 3290 0x44c}, 3291 /* 799 MCS-13 */ { HE160_LDPC_ONLY_MASKS, 3292 DP_CMN_MOD_IEEE80211_T_HE_160, 3293 4323500, 4454500, 4083300, 3675000, 0, 4323500, 3294 0x44d}, 3295 3296 /* When maximum spatial streams supported at 160MHZ > 3 3297 * use below rates 3298 */ 3299 /* 800 MCS-00 */ { HE160_LDPC_ONLY_MASKS, 3300 DP_CMN_MOD_IEEE80211_T_HE_160, 3301 288200, 297000, 272200, 245000, 144100, 288200, 3302 0x460}, 3303 /* 801 MCS-01 */ { HE160_LDPC_ONLY_MASKS, 3304 DP_CMN_MOD_IEEE80211_T_HE_160, 3305 576500, 593900, 544400, 490000, 288200, 576500, 3306 0x461}, 3307 /* 802 MCS-02 */ { HE160_LDPC_ONLY_MASKS, 3308 DP_CMN_MOD_IEEE80211_T_HE_160, 3309 864700, 890900, 816700, 735000, 0, 864700, 3310 0x462}, 3311 /* 803 MCS-03 */ { HE160_LDPC_ONLY_MASKS, 3312 DP_CMN_MOD_IEEE80211_T_HE_160, 3313 1152900, 1187900, 1088900, 980000, 576500, 1152900, 3314 0x463}, 3315 /* 804 MCS-04 */ { HE160_LDPC_ONLY_MASKS, 3316 DP_CMN_MOD_IEEE80211_T_HE_160, 3317 1729400, 1781800, 1633300, 1470000, 864700, 1729400, 3318 0x464}, 3319 /* 805 MCS-05 */ { HE160_LDPC_ONLY_MASKS, 3320 DP_CMN_MOD_IEEE80211_T_HE_160, 3321 2305900, 2375800, 2177800, 1960000, 0, 2305900, 3322 0x465}, 3323 /* 806 MCS-06 */ { HE160_LDPC_ONLY_MASKS, 3324 DP_CMN_MOD_IEEE80211_T_HE_160, 3325 2594100, 2672700, 2450000, 2205000, 0, 2594100, 3326 0x466}, 3327 /* 807 MCS-07 */ { HE160_LDPC_ONLY_MASKS, 3328 DP_CMN_MOD_IEEE80211_T_HE_160, 3329 2882400, 2969700, 2722200, 2450000, 0, 2882400, 3330 0x467}, 3331 /* 808 MCS-08 */ { HE160_LDPC_ONLY_MASKS, 3332 DP_CMN_MOD_IEEE80211_T_HE_160, 3333 3458800, 3563600, 3266700, 2940000, 0, 3458800, 3334 0x468}, 3335 /* 809 MCS-09 */ { HE160_LDPC_ONLY_MASKS, 3336 DP_CMN_MOD_IEEE80211_T_HE_160, 3337 3843100, 3959600, 3629600, 3266700, 0, 3843100, 3338 0x469}, 3339 /* 810 MCS-10 */ { HE160_LDPC_ONLY_MASKS, 3340 DP_CMN_MOD_IEEE80211_T_HE_160, 3341 4323500, 4454500, 4083300, 3675000, 0, 4323500, 3342 0x46a}, 3343 /* 811 MCS-11 */ { HE160_LDPC_ONLY_MASKS, 3344 DP_CMN_MOD_IEEE80211_T_HE_160, 3345 4803900, 4949500, 4537000, 4083300, 0, 4803900, 3346 0x46b}, 3347 /* 812 MCS-12 */ { HE160_LDPC_ONLY_MASKS, 3348 DP_CMN_MOD_IEEE80211_T_HE_160, 3349 5188200, 5345500, 4900000, 4410000, 0, 5188200, 3350 0x46c}, 3351 /* 813 MCS-13 */ { HE160_LDPC_ONLY_MASKS, 3352 DP_CMN_MOD_IEEE80211_T_HE_160, 3353 5764700, 5939400, 5444400, 4900000, 0, 5764700, 3354 0x46d} 3355 }, 3356 }; 3357 3358 static const uint16_t _rc_idx[DP_CMN_MOD_IEEE80211_T_MAX_PHY] = { 3359 CCK_RATE_TABLE_INDEX, 3360 OFDM_RATE_TABLE_INDEX, 3361 HT_20_RATE_TABLE_INDEX, 3362 HT_40_RATE_TABLE_INDEX, 3363 VHT_20_RATE_TABLE_INDEX, 3364 VHT_40_RATE_TABLE_INDEX, 3365 VHT_80_RATE_TABLE_INDEX, 3366 VHT_160_RATE_TABLE_INDEX, 3367 HE_20_RATE_TABLE_INDEX, 3368 HE_40_RATE_TABLE_INDEX, 3369 HE_80_RATE_TABLE_INDEX, 3370 HE_160_RATE_TABLE_INDEX, 3371 }; 3372 3373 /* 3374 * dp_getmodulation - return rate modulation given code spatial width 3375 * @pream_type - preamble type 3376 * @width - bandwidth 3377 * 3378 * return - modulation type 3379 */ 3380 enum DP_CMN_MODULATION_TYPE dp_getmodulation( 3381 uint16_t pream_type, 3382 uint8_t width) 3383 { 3384 static const enum DP_CMN_MODULATION_TYPE _vht_bw_mod[] = { 3385 DP_CMN_MOD_IEEE80211_T_VHT_20, 3386 DP_CMN_MOD_IEEE80211_T_VHT_40, 3387 DP_CMN_MOD_IEEE80211_T_VHT_80, 3388 DP_CMN_MOD_IEEE80211_T_VHT_160 3389 }; 3390 3391 static const enum DP_CMN_MODULATION_TYPE _he_bw_mod[] = { 3392 DP_CMN_MOD_IEEE80211_T_HE_20, 3393 DP_CMN_MOD_IEEE80211_T_HE_40, 3394 DP_CMN_MOD_IEEE80211_T_HE_80, 3395 DP_CMN_MOD_IEEE80211_T_HE_160 3396 }; 3397 3398 enum DP_CMN_MODULATION_TYPE modulation; 3399 3400 CMN_DP_ASSERT(width < CMN_BW_CNT); 3401 3402 switch (pream_type) { 3403 case DP_CMN_RATECODE_PREAM_HT: 3404 if (width) 3405 modulation = DP_CMN_MOD_IEEE80211_T_HT_40; 3406 else 3407 modulation = DP_CMN_MOD_IEEE80211_T_HT_20; 3408 break; 3409 3410 case DP_CMN_RATECODE_PREAM_CCK: 3411 modulation = DP_CMN_MOD_IEEE80211_T_CCK; 3412 break; 3413 3414 case DP_CMN_RATECODE_PREAM_VHT: 3415 modulation = _vht_bw_mod[width]; 3416 break; 3417 3418 case DP_CMN_RATECODE_PREAM_HE: 3419 modulation = _he_bw_mod[width]; 3420 break; 3421 3422 default: 3423 modulation = DP_CMN_MOD_IEEE80211_T_OFDM; 3424 break; 3425 } 3426 3427 return modulation; 3428 } 3429 3430 /* dp_getrateindex - calculate ratekbps 3431 * @mcs - MCS index 3432 * @nss - NSS 1...8 3433 * preamble - preamble 3434 * @bw - Transmission Bandwidth 3435 * @rix: rate index to be populated 3436 * @ratecode: ratecode 3437 * 3438 * return - rate in kbps 3439 */ 3440 uint32_t 3441 dp_getrateindex(uint32_t gi, uint16_t mcs, uint8_t nss, uint8_t preamble, 3442 uint8_t bw, uint32_t *rix, uint16_t *ratecode) 3443 { 3444 uint32_t ratekbps = 0, res = RT_INVALID_INDEX; /* represents failure */ 3445 uint16_t rc; 3446 enum DP_CMN_MODULATION_TYPE mod; 3447 3448 /* For error case, where idx exceeds bountry limit */ 3449 *ratecode = 0; 3450 mod = dp_getmodulation(preamble, bw); 3451 rc = mcs; 3452 3453 /* get the base of corresponding rate table entry */ 3454 res = _rc_idx[mod]; 3455 3456 switch (preamble) { 3457 case DP_CMN_RATECODE_PREAM_HE: 3458 res += rc + nss * NUM_HE_MCS; 3459 break; 3460 3461 case DP_CMN_RATECODE_PREAM_VHT: 3462 res += rc + nss * NUM_VHT_MCS; 3463 break; 3464 3465 case DP_CMN_RATECODE_PREAM_HT: 3466 res += rc + nss * NUM_HT_MCS; 3467 break; 3468 3469 case DP_CMN_RATECODE_PREAM_CCK: 3470 rc &= ~HW_RATECODE_CCK_SHORT_PREAM_MASK; 3471 res += rc; 3472 break; 3473 3474 case DP_CMN_RATECODE_PREAM_OFDM: 3475 res += rc; 3476 break; 3477 3478 default: 3479 break; 3480 } 3481 if (res >= DP_RATE_TABLE_SIZE) 3482 goto done; 3483 3484 if (!gi) { 3485 ratekbps = dp_11abgnratetable.info[res].userratekbps; 3486 } else { 3487 switch (gi) { 3488 case CDP_SGI_0_4_US: 3489 ratekbps = dp_11abgnratetable.info[res].ratekbpssgi; 3490 break; 3491 case CDP_SGI_1_6_US: 3492 ratekbps = dp_11abgnratetable.info[res].ratekbpsdgi; 3493 break; 3494 case CDP_SGI_3_2_US: 3495 ratekbps = dp_11abgnratetable.info[res].ratekbpsqgi; 3496 break; 3497 } 3498 } 3499 *ratecode = dp_11abgnratetable.info[res].ratecode; 3500 done: 3501 *rix = res; 3502 3503 return ratekbps; 3504 } 3505 3506 qdf_export_symbol(dp_getrateindex); 3507 3508 /* dp_rate_idx_to_kbps - get rate kbps from index 3509 * @rate_idx - rate index 3510 * @gintval - guard interval 3511 * 3512 * return - rate index in kbps with help of ratetable 3513 */ 3514 int dp_rate_idx_to_kbps(uint8_t rate_idx, uint8_t gintval) 3515 { 3516 if (rate_idx >= DP_RATE_TABLE_SIZE) 3517 return 0; 3518 3519 if (!gintval) 3520 return RT_GET_RAW_KBPS(&dp_11abgnratetable, rate_idx); 3521 else 3522 return RT_GET_SGI_KBPS(&dp_11abgnratetable, rate_idx); 3523 return 0; 3524 } 3525 3526 qdf_export_symbol(dp_rate_idx_to_kbps); 3527