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