iwlwifi: mvm: update definitions due to new rate & flags

As a part of preparing to the new rate & flags version
Update the relevant definitions and use them.

Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Link: https://lore.kernel.org/r/iwlwifi.20211017123741.5862bf4f14c4.Ib476b5443faa085539b79d49a0aebd81a213b42f@changeid
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
This commit is contained in:
Miri Korenblit 2021-10-17 12:40:14 +03:00 committed by Luca Coelho
parent 12d60c1efc
commit 48c6ebc13c
9 changed files with 147 additions and 147 deletions

View File

@ -248,7 +248,7 @@ enum {
}; };
/* /*
* rate_n_flags bit fields * rate_n_flags bit fields version 1
* *
* The 32-bit value has different layouts in the low 8 bites depending on the * The 32-bit value has different layouts in the low 8 bites depending on the
* format. There are three formats, HT, VHT and legacy (11abg, with subformats * format. There are three formats, HT, VHT and legacy (11abg, with subformats
@ -266,15 +266,15 @@ enum {
/* Bit 8: (1) HT format, (0) legacy or VHT format */ /* Bit 8: (1) HT format, (0) legacy or VHT format */
#define RATE_MCS_HT_POS 8 #define RATE_MCS_HT_POS 8
#define RATE_MCS_HT_MSK (1 << RATE_MCS_HT_POS) #define RATE_MCS_HT_MSK_V1 BIT(RATE_MCS_HT_POS)
/* Bit 9: (1) CCK, (0) OFDM. HT (bit 8) must be "0" for this bit to be valid */ /* Bit 9: (1) CCK, (0) OFDM. HT (bit 8) must be "0" for this bit to be valid */
#define RATE_MCS_CCK_POS 9 #define RATE_MCS_CCK_POS_V1 9
#define RATE_MCS_CCK_MSK (1 << RATE_MCS_CCK_POS) #define RATE_MCS_CCK_MSK_V1 BIT(RATE_MCS_CCK_POS_V1)
/* Bit 26: (1) VHT format, (0) legacy format in bits 8:0 */ /* Bit 26: (1) VHT format, (0) legacy format in bits 8:0 */
#define RATE_MCS_VHT_POS 26 #define RATE_MCS_VHT_POS_V1 26
#define RATE_MCS_VHT_MSK (1 << RATE_MCS_VHT_POS) #define RATE_MCS_VHT_MSK_V1 BIT(RATE_MCS_VHT_POS_V1)
/* /*
@ -300,15 +300,15 @@ enum {
* streams and 16-23 have three streams. We could also support MCS 32 * streams and 16-23 have three streams. We could also support MCS 32
* which is the duplicate 20 MHz MCS (bit 5 set, all others zero.) * which is the duplicate 20 MHz MCS (bit 5 set, all others zero.)
*/ */
#define RATE_HT_MCS_RATE_CODE_MSK 0x7 #define RATE_HT_MCS_RATE_CODE_MSK_V1 0x7
#define RATE_HT_MCS_NSS_POS 3 #define RATE_HT_MCS_NSS_POS_V1 3
#define RATE_HT_MCS_NSS_MSK (3 << RATE_HT_MCS_NSS_POS) #define RATE_HT_MCS_NSS_MSK_V1 (3 << RATE_HT_MCS_NSS_POS_V1)
/* Bit 10: (1) Use Green Field preamble */ /* Bit 10: (1) Use Green Field preamble */
#define RATE_HT_MCS_GF_POS 10 #define RATE_HT_MCS_GF_POS 10
#define RATE_HT_MCS_GF_MSK (1 << RATE_HT_MCS_GF_POS) #define RATE_HT_MCS_GF_MSK (1 << RATE_HT_MCS_GF_POS)
#define RATE_HT_MCS_INDEX_MSK 0x3f #define RATE_HT_MCS_INDEX_MSK_V1 0x3f
/* /*
* Very High-throughput (VHT) rate format for bits 7:0 * Very High-throughput (VHT) rate format for bits 7:0
@ -347,26 +347,26 @@ enum {
* 110) 11 Mbps * 110) 11 Mbps
* (bit 7 is 0) * (bit 7 is 0)
*/ */
#define RATE_LEGACY_RATE_MSK 0xff #define RATE_LEGACY_RATE_MSK_V1 0xff
/* Bit 10 - OFDM HE */ /* Bit 10 - OFDM HE */
#define RATE_MCS_HE_POS 10 #define RATE_MCS_HE_POS_V1 10
#define RATE_MCS_HE_MSK BIT(RATE_MCS_HE_POS) #define RATE_MCS_HE_MSK_V1 BIT(RATE_MCS_HE_POS_V1)
/* /*
* Bit 11-12: (0) 20MHz, (1) 40MHz, (2) 80MHz, (3) 160MHz * Bit 11-12: (0) 20MHz, (1) 40MHz, (2) 80MHz, (3) 160MHz
* 0 and 1 are valid for HT and VHT, 2 and 3 only for VHT * 0 and 1 are valid for HT and VHT, 2 and 3 only for VHT
*/ */
#define RATE_MCS_CHAN_WIDTH_POS 11 #define RATE_MCS_CHAN_WIDTH_POS 11
#define RATE_MCS_CHAN_WIDTH_MSK (3 << RATE_MCS_CHAN_WIDTH_POS) #define RATE_MCS_CHAN_WIDTH_MSK_V1 (3 << RATE_MCS_CHAN_WIDTH_POS)
#define RATE_MCS_CHAN_WIDTH_20 (0 << RATE_MCS_CHAN_WIDTH_POS) #define RATE_MCS_CHAN_WIDTH_20 (0 << RATE_MCS_CHAN_WIDTH_POS)
#define RATE_MCS_CHAN_WIDTH_40 (1 << RATE_MCS_CHAN_WIDTH_POS) #define RATE_MCS_CHAN_WIDTH_40 (1 << RATE_MCS_CHAN_WIDTH_POS)
#define RATE_MCS_CHAN_WIDTH_80 (2 << RATE_MCS_CHAN_WIDTH_POS) #define RATE_MCS_CHAN_WIDTH_80 (2 << RATE_MCS_CHAN_WIDTH_POS)
#define RATE_MCS_CHAN_WIDTH_160 (3 << RATE_MCS_CHAN_WIDTH_POS) #define RATE_MCS_CHAN_WIDTH_160 (3 << RATE_MCS_CHAN_WIDTH_POS)
/* Bit 13: (1) Short guard interval (0.4 usec), (0) normal GI (0.8 usec) */ /* Bit 13: (1) Short guard interval (0.4 usec), (0) normal GI (0.8 usec) */
#define RATE_MCS_SGI_POS 13 #define RATE_MCS_SGI_POS_V1 13
#define RATE_MCS_SGI_MSK (1 << RATE_MCS_SGI_POS) #define RATE_MCS_SGI_MSK_V1 BIT(RATE_MCS_SGI_POS_V1)
/* Bit 14-16: Antenna selection (1) Ant A, (2) Ant B, (4) Ant C */ /* Bit 14-16: Antenna selection (1) Ant A, (2) Ant B, (4) Ant C */
#define RATE_MCS_ANT_POS 14 #define RATE_MCS_ANT_POS 14
@ -408,27 +408,27 @@ enum {
* 3 (does not occur) * 3 (does not occur)
*/ */
#define RATE_MCS_HE_GI_LTF_POS 20 #define RATE_MCS_HE_GI_LTF_POS 20
#define RATE_MCS_HE_GI_LTF_MSK (3 << RATE_MCS_HE_GI_LTF_POS) #define RATE_MCS_HE_GI_LTF_MSK_V1 (3 << RATE_MCS_HE_GI_LTF_POS)
/* Bit 22-23: HE type. (0) SU, (1) SU_EXT, (2) MU, (3) trigger based */ /* Bit 22-23: HE type. (0) SU, (1) SU_EXT, (2) MU, (3) trigger based */
#define RATE_MCS_HE_TYPE_POS 22 #define RATE_MCS_HE_TYPE_POS_V1 22
#define RATE_MCS_HE_TYPE_SU (0 << RATE_MCS_HE_TYPE_POS) #define RATE_MCS_HE_TYPE_SU_V1 (0 << RATE_MCS_HE_TYPE_POS_V1)
#define RATE_MCS_HE_TYPE_EXT_SU (1 << RATE_MCS_HE_TYPE_POS) #define RATE_MCS_HE_TYPE_EXT_SU_V1 BIT(RATE_MCS_HE_TYPE_POS_V1)
#define RATE_MCS_HE_TYPE_MU (2 << RATE_MCS_HE_TYPE_POS) #define RATE_MCS_HE_TYPE_MU_V1 (2 << RATE_MCS_HE_TYPE_POS_V1)
#define RATE_MCS_HE_TYPE_TRIG (3 << RATE_MCS_HE_TYPE_POS) #define RATE_MCS_HE_TYPE_TRIG_V1 (3 << RATE_MCS_HE_TYPE_POS_V1)
#define RATE_MCS_HE_TYPE_MSK (3 << RATE_MCS_HE_TYPE_POS) #define RATE_MCS_HE_TYPE_MSK_V1 (3 << RATE_MCS_HE_TYPE_POS_V1)
/* Bit 24-25: (0) 20MHz (no dup), (1) 2x20MHz, (2) 4x20MHz, 3 8x20MHz */ /* Bit 24-25: (0) 20MHz (no dup), (1) 2x20MHz, (2) 4x20MHz, 3 8x20MHz */
#define RATE_MCS_DUP_POS 24 #define RATE_MCS_DUP_POS_V1 24
#define RATE_MCS_DUP_MSK (3 << RATE_MCS_DUP_POS) #define RATE_MCS_DUP_MSK_V1 (3 << RATE_MCS_DUP_POS_V1)
/* Bit 27: (1) LDPC enabled, (0) LDPC disabled */ /* Bit 27: (1) LDPC enabled, (0) LDPC disabled */
#define RATE_MCS_LDPC_POS 27 #define RATE_MCS_LDPC_POS_V1 27
#define RATE_MCS_LDPC_MSK (1 << RATE_MCS_LDPC_POS) #define RATE_MCS_LDPC_MSK_V1 BIT(RATE_MCS_LDPC_POS_V1)
/* Bit 28: (1) 106-tone RX (8 MHz RU), (0) normal bandwidth */ /* Bit 28: (1) 106-tone RX (8 MHz RU), (0) normal bandwidth */
#define RATE_MCS_HE_106T_POS 28 #define RATE_MCS_HE_106T_POS_V1 28
#define RATE_MCS_HE_106T_MSK (1 << RATE_MCS_HE_106T_POS) #define RATE_MCS_HE_106T_MSK_V1 BIT(RATE_MCS_HE_106T_POS_V1)
/* Bit 30-31: (1) RTS, (2) CTS */ /* Bit 30-31: (1) RTS, (2) CTS */
#define RATE_MCS_RTS_REQUIRED_POS (30) #define RATE_MCS_RTS_REQUIRED_POS (30)

View File

@ -846,7 +846,7 @@ static void iwl_mvm_mac_ctxt_set_tx(struct iwl_mvm *mvm,
tx->rate_n_flags |= cpu_to_le32(iwl_mvm_mac80211_idx_to_hwrate(rate)); tx->rate_n_flags |= cpu_to_le32(iwl_mvm_mac80211_idx_to_hwrate(rate));
if (rate == IWL_FIRST_CCK_RATE) if (rate == IWL_FIRST_CCK_RATE)
tx->rate_n_flags |= cpu_to_le32(RATE_MCS_CCK_MSK); tx->rate_n_flags |= cpu_to_le32(RATE_MCS_CCK_MSK_V1);
} }

View File

@ -4878,7 +4878,7 @@ static int iwl_mvm_mac_get_survey(struct ieee80211_hw *hw, int idx,
static void iwl_mvm_set_sta_rate(u32 rate_n_flags, struct rate_info *rinfo) static void iwl_mvm_set_sta_rate(u32 rate_n_flags, struct rate_info *rinfo)
{ {
switch (rate_n_flags & RATE_MCS_CHAN_WIDTH_MSK) { switch (rate_n_flags & RATE_MCS_CHAN_WIDTH_MSK_V1) {
case RATE_MCS_CHAN_WIDTH_20: case RATE_MCS_CHAN_WIDTH_20:
rinfo->bw = RATE_INFO_BW_20; rinfo->bw = RATE_INFO_BW_20;
break; break;
@ -4893,24 +4893,24 @@ static void iwl_mvm_set_sta_rate(u32 rate_n_flags, struct rate_info *rinfo)
break; break;
} }
if (rate_n_flags & RATE_MCS_HT_MSK) { if (rate_n_flags & RATE_MCS_HT_MSK_V1) {
rinfo->flags |= RATE_INFO_FLAGS_MCS; rinfo->flags |= RATE_INFO_FLAGS_MCS;
rinfo->mcs = u32_get_bits(rate_n_flags, RATE_HT_MCS_INDEX_MSK); rinfo->mcs = u32_get_bits(rate_n_flags, RATE_HT_MCS_INDEX_MSK_V1);
rinfo->nss = u32_get_bits(rate_n_flags, rinfo->nss = u32_get_bits(rate_n_flags,
RATE_HT_MCS_NSS_MSK) + 1; RATE_HT_MCS_NSS_MSK_V1) + 1;
if (rate_n_flags & RATE_MCS_SGI_MSK) if (rate_n_flags & RATE_MCS_SGI_MSK_V1)
rinfo->flags |= RATE_INFO_FLAGS_SHORT_GI; rinfo->flags |= RATE_INFO_FLAGS_SHORT_GI;
} else if (rate_n_flags & RATE_MCS_VHT_MSK) { } else if (rate_n_flags & RATE_MCS_VHT_MSK_V1) {
rinfo->flags |= RATE_INFO_FLAGS_VHT_MCS; rinfo->flags |= RATE_INFO_FLAGS_VHT_MCS;
rinfo->mcs = u32_get_bits(rate_n_flags, rinfo->mcs = u32_get_bits(rate_n_flags,
RATE_VHT_MCS_RATE_CODE_MSK); RATE_VHT_MCS_RATE_CODE_MSK);
rinfo->nss = u32_get_bits(rate_n_flags, rinfo->nss = u32_get_bits(rate_n_flags,
RATE_VHT_MCS_NSS_MSK) + 1; RATE_VHT_MCS_NSS_MSK) + 1;
if (rate_n_flags & RATE_MCS_SGI_MSK) if (rate_n_flags & RATE_MCS_SGI_MSK_V1)
rinfo->flags |= RATE_INFO_FLAGS_SHORT_GI; rinfo->flags |= RATE_INFO_FLAGS_SHORT_GI;
} else if (rate_n_flags & RATE_MCS_HE_MSK) { } else if (rate_n_flags & RATE_MCS_HE_MSK_V1) {
u32 gi_ltf = u32_get_bits(rate_n_flags, u32 gi_ltf = u32_get_bits(rate_n_flags,
RATE_MCS_HE_GI_LTF_MSK); RATE_MCS_HE_GI_LTF_MSK_V1);
rinfo->flags |= RATE_INFO_FLAGS_HE_MCS; rinfo->flags |= RATE_INFO_FLAGS_HE_MCS;
rinfo->mcs = u32_get_bits(rate_n_flags, rinfo->mcs = u32_get_bits(rate_n_flags,
@ -4918,24 +4918,24 @@ static void iwl_mvm_set_sta_rate(u32 rate_n_flags, struct rate_info *rinfo)
rinfo->nss = u32_get_bits(rate_n_flags, rinfo->nss = u32_get_bits(rate_n_flags,
RATE_VHT_MCS_NSS_MSK) + 1; RATE_VHT_MCS_NSS_MSK) + 1;
if (rate_n_flags & RATE_MCS_HE_106T_MSK) { if (rate_n_flags & RATE_MCS_HE_106T_MSK_V1) {
rinfo->bw = RATE_INFO_BW_HE_RU; rinfo->bw = RATE_INFO_BW_HE_RU;
rinfo->he_ru_alloc = NL80211_RATE_INFO_HE_RU_ALLOC_106; rinfo->he_ru_alloc = NL80211_RATE_INFO_HE_RU_ALLOC_106;
} }
switch (rate_n_flags & RATE_MCS_HE_TYPE_MSK) { switch (rate_n_flags & RATE_MCS_HE_TYPE_MSK_V1) {
case RATE_MCS_HE_TYPE_SU: case RATE_MCS_HE_TYPE_SU_V1:
case RATE_MCS_HE_TYPE_EXT_SU: case RATE_MCS_HE_TYPE_EXT_SU_V1:
if (gi_ltf == 0 || gi_ltf == 1) if (gi_ltf == 0 || gi_ltf == 1)
rinfo->he_gi = NL80211_RATE_INFO_HE_GI_0_8; rinfo->he_gi = NL80211_RATE_INFO_HE_GI_0_8;
else if (gi_ltf == 2) else if (gi_ltf == 2)
rinfo->he_gi = NL80211_RATE_INFO_HE_GI_1_6; rinfo->he_gi = NL80211_RATE_INFO_HE_GI_1_6;
else if (rate_n_flags & RATE_MCS_SGI_MSK) else if (rate_n_flags & RATE_MCS_SGI_MSK_V1)
rinfo->he_gi = NL80211_RATE_INFO_HE_GI_0_8; rinfo->he_gi = NL80211_RATE_INFO_HE_GI_0_8;
else else
rinfo->he_gi = NL80211_RATE_INFO_HE_GI_3_2; rinfo->he_gi = NL80211_RATE_INFO_HE_GI_3_2;
break; break;
case RATE_MCS_HE_TYPE_MU: case RATE_MCS_HE_TYPE_MU_V1:
if (gi_ltf == 0 || gi_ltf == 1) if (gi_ltf == 0 || gi_ltf == 1)
rinfo->he_gi = NL80211_RATE_INFO_HE_GI_0_8; rinfo->he_gi = NL80211_RATE_INFO_HE_GI_0_8;
else if (gi_ltf == 2) else if (gi_ltf == 2)
@ -4943,7 +4943,7 @@ static void iwl_mvm_set_sta_rate(u32 rate_n_flags, struct rate_info *rinfo)
else else
rinfo->he_gi = NL80211_RATE_INFO_HE_GI_3_2; rinfo->he_gi = NL80211_RATE_INFO_HE_GI_3_2;
break; break;
case RATE_MCS_HE_TYPE_TRIG: case RATE_MCS_HE_TYPE_TRIG_V1:
if (gi_ltf == 0 || gi_ltf == 1) if (gi_ltf == 0 || gi_ltf == 1)
rinfo->he_gi = NL80211_RATE_INFO_HE_GI_1_6; rinfo->he_gi = NL80211_RATE_INFO_HE_GI_1_6;
else else
@ -4954,7 +4954,7 @@ static void iwl_mvm_set_sta_rate(u32 rate_n_flags, struct rate_info *rinfo)
if (rate_n_flags & RATE_HE_DUAL_CARRIER_MODE_MSK) if (rate_n_flags & RATE_HE_DUAL_CARRIER_MODE_MSK)
rinfo->he_dcm = 1; rinfo->he_dcm = 1;
} else { } else {
switch (u32_get_bits(rate_n_flags, RATE_LEGACY_RATE_MSK)) { switch (u32_get_bits(rate_n_flags, RATE_LEGACY_RATE_MSK_V1)) {
case IWL_RATE_1M_PLCP: case IWL_RATE_1M_PLCP:
rinfo->legacy = 10; rinfo->legacy = 10;
break; break;

View File

@ -330,15 +330,15 @@ static const struct rs_tx_column rs_tx_columns[] = {
static inline u8 rs_extract_rate(u32 rate_n_flags) static inline u8 rs_extract_rate(u32 rate_n_flags)
{ {
/* also works for HT because bits 7:6 are zero there */ /* also works for HT because bits 7:6 are zero there */
return (u8)(rate_n_flags & RATE_LEGACY_RATE_MSK); return (u8)(rate_n_flags & RATE_LEGACY_RATE_MSK_V1);
} }
static int iwl_hwrate_to_plcp_idx(u32 rate_n_flags) static int iwl_hwrate_to_plcp_idx(u32 rate_n_flags)
{ {
int idx = 0; int idx = 0;
if (rate_n_flags & RATE_MCS_HT_MSK) { if (rate_n_flags & RATE_MCS_HT_MSK_V1) {
idx = rate_n_flags & RATE_HT_MCS_RATE_CODE_MSK; idx = rate_n_flags & RATE_HT_MCS_RATE_CODE_MSK_V1;
idx += IWL_RATE_MCS_0_INDEX; idx += IWL_RATE_MCS_0_INDEX;
/* skip 9M not supported in HT*/ /* skip 9M not supported in HT*/
@ -346,8 +346,8 @@ static int iwl_hwrate_to_plcp_idx(u32 rate_n_flags)
idx += 1; idx += 1;
if ((idx >= IWL_FIRST_HT_RATE) && (idx <= IWL_LAST_HT_RATE)) if ((idx >= IWL_FIRST_HT_RATE) && (idx <= IWL_LAST_HT_RATE))
return idx; return idx;
} else if (rate_n_flags & RATE_MCS_VHT_MSK || } else if (rate_n_flags & RATE_MCS_VHT_MSK_V1 ||
rate_n_flags & RATE_MCS_HE_MSK) { rate_n_flags & RATE_MCS_HE_MSK_V1) {
idx = rate_n_flags & RATE_VHT_MCS_RATE_CODE_MSK; idx = rate_n_flags & RATE_VHT_MCS_RATE_CODE_MSK;
idx += IWL_RATE_MCS_0_INDEX; idx += IWL_RATE_MCS_0_INDEX;
@ -356,8 +356,8 @@ static int iwl_hwrate_to_plcp_idx(u32 rate_n_flags)
idx++; idx++;
if ((idx >= IWL_FIRST_VHT_RATE) && (idx <= IWL_LAST_VHT_RATE)) if ((idx >= IWL_FIRST_VHT_RATE) && (idx <= IWL_LAST_VHT_RATE))
return idx; return idx;
if ((rate_n_flags & RATE_MCS_HE_MSK) && if ((rate_n_flags & RATE_MCS_HE_MSK_V1) &&
(idx <= IWL_LAST_HE_RATE)) idx <= IWL_LAST_HE_RATE)
return idx; return idx;
} else { } else {
/* legacy rate format, search for match in table */ /* legacy rate format, search for match in table */
@ -815,7 +815,7 @@ static u32 ucode_rate_from_rs_rate(struct iwl_mvm *mvm,
if (is_legacy(rate)) { if (is_legacy(rate)) {
ucode_rate |= iwl_rates[index].plcp; ucode_rate |= iwl_rates[index].plcp;
if (index >= IWL_FIRST_CCK_RATE && index <= IWL_LAST_CCK_RATE) if (index >= IWL_FIRST_CCK_RATE && index <= IWL_LAST_CCK_RATE)
ucode_rate |= RATE_MCS_CCK_MSK; ucode_rate |= RATE_MCS_CCK_MSK_V1;
return ucode_rate; return ucode_rate;
} }
@ -830,7 +830,7 @@ static u32 ucode_rate_from_rs_rate(struct iwl_mvm *mvm,
IWL_ERR(mvm, "Invalid HT rate index %d\n", index); IWL_ERR(mvm, "Invalid HT rate index %d\n", index);
index = IWL_LAST_HT_RATE; index = IWL_LAST_HT_RATE;
} }
ucode_rate |= RATE_MCS_HT_MSK; ucode_rate |= RATE_MCS_HT_MSK_V1;
if (is_ht_siso(rate)) if (is_ht_siso(rate))
ucode_rate |= iwl_rates[index].plcp_ht_siso; ucode_rate |= iwl_rates[index].plcp_ht_siso;
@ -843,7 +843,7 @@ static u32 ucode_rate_from_rs_rate(struct iwl_mvm *mvm,
IWL_ERR(mvm, "Invalid VHT rate index %d\n", index); IWL_ERR(mvm, "Invalid VHT rate index %d\n", index);
index = IWL_LAST_VHT_RATE; index = IWL_LAST_VHT_RATE;
} }
ucode_rate |= RATE_MCS_VHT_MSK; ucode_rate |= RATE_MCS_VHT_MSK_V1;
if (is_vht_siso(rate)) if (is_vht_siso(rate))
ucode_rate |= iwl_rates[index].plcp_vht_siso; ucode_rate |= iwl_rates[index].plcp_vht_siso;
else if (is_vht_mimo2(rate)) else if (is_vht_mimo2(rate))
@ -863,9 +863,9 @@ static u32 ucode_rate_from_rs_rate(struct iwl_mvm *mvm,
ucode_rate |= rate->bw; ucode_rate |= rate->bw;
if (rate->sgi) if (rate->sgi)
ucode_rate |= RATE_MCS_SGI_MSK; ucode_rate |= RATE_MCS_SGI_MSK_V1;
if (rate->ldpc) if (rate->ldpc)
ucode_rate |= RATE_MCS_LDPC_MSK; ucode_rate |= RATE_MCS_LDPC_MSK_V1;
return ucode_rate; return ucode_rate;
} }
@ -888,9 +888,9 @@ static int rs_rate_from_ucode_rate(const u32 ucode_rate,
rate->ant = (ant_msk >> RATE_MCS_ANT_POS); rate->ant = (ant_msk >> RATE_MCS_ANT_POS);
/* Legacy */ /* Legacy */
if (!(ucode_rate & RATE_MCS_HT_MSK) && if (!(ucode_rate & RATE_MCS_HT_MSK_V1) &&
!(ucode_rate & RATE_MCS_VHT_MSK) && !(ucode_rate & RATE_MCS_VHT_MSK_V1) &&
!(ucode_rate & RATE_MCS_HE_MSK)) { !(ucode_rate & RATE_MCS_HE_MSK_V1)) {
if (num_of_ant == 1) { if (num_of_ant == 1) {
if (band == NL80211_BAND_5GHZ) if (band == NL80211_BAND_5GHZ)
rate->type = LQ_LEGACY_A; rate->type = LQ_LEGACY_A;
@ -902,20 +902,20 @@ static int rs_rate_from_ucode_rate(const u32 ucode_rate,
} }
/* HT, VHT or HE */ /* HT, VHT or HE */
if (ucode_rate & RATE_MCS_SGI_MSK) if (ucode_rate & RATE_MCS_SGI_MSK_V1)
rate->sgi = true; rate->sgi = true;
if (ucode_rate & RATE_MCS_LDPC_MSK) if (ucode_rate & RATE_MCS_LDPC_MSK_V1)
rate->ldpc = true; rate->ldpc = true;
if (ucode_rate & RATE_MCS_STBC_MSK) if (ucode_rate & RATE_MCS_STBC_MSK)
rate->stbc = true; rate->stbc = true;
if (ucode_rate & RATE_MCS_BF_MSK) if (ucode_rate & RATE_MCS_BF_MSK)
rate->bfer = true; rate->bfer = true;
rate->bw = ucode_rate & RATE_MCS_CHAN_WIDTH_MSK; rate->bw = ucode_rate & RATE_MCS_CHAN_WIDTH_MSK_V1;
if (ucode_rate & RATE_MCS_HT_MSK) { if (ucode_rate & RATE_MCS_HT_MSK_V1) {
nss = ((ucode_rate & RATE_HT_MCS_NSS_MSK) >> nss = ((ucode_rate & RATE_HT_MCS_NSS_MSK_V1) >>
RATE_HT_MCS_NSS_POS) + 1; RATE_HT_MCS_NSS_POS_V1) + 1;
if (nss == 1) { if (nss == 1) {
rate->type = LQ_HT_SISO; rate->type = LQ_HT_SISO;
@ -928,7 +928,7 @@ static int rs_rate_from_ucode_rate(const u32 ucode_rate,
} else { } else {
WARN_ON_ONCE(1); WARN_ON_ONCE(1);
} }
} else if (ucode_rate & RATE_MCS_VHT_MSK) { } else if (ucode_rate & RATE_MCS_VHT_MSK_V1) {
nss = ((ucode_rate & RATE_VHT_MCS_NSS_MSK) >> nss = ((ucode_rate & RATE_VHT_MCS_NSS_MSK) >>
RATE_VHT_MCS_NSS_POS) + 1; RATE_VHT_MCS_NSS_POS) + 1;
@ -943,7 +943,7 @@ static int rs_rate_from_ucode_rate(const u32 ucode_rate,
} else { } else {
WARN_ON_ONCE(1); WARN_ON_ONCE(1);
} }
} else if (ucode_rate & RATE_MCS_HE_MSK) { } else if (ucode_rate & RATE_MCS_HE_MSK_V1) {
nss = ((ucode_rate & RATE_VHT_MCS_NSS_MSK) >> nss = ((ucode_rate & RATE_VHT_MCS_NSS_MSK) >>
RATE_VHT_MCS_NSS_POS) + 1; RATE_VHT_MCS_NSS_POS) + 1;
@ -2895,7 +2895,7 @@ void iwl_mvm_update_frame_stats(struct iwl_mvm *mvm, u32 rate, bool agg)
mvm->drv_rx_stats.success_frames++; mvm->drv_rx_stats.success_frames++;
switch (rate & RATE_MCS_CHAN_WIDTH_MSK) { switch (rate & RATE_MCS_CHAN_WIDTH_MSK_V1) {
case RATE_MCS_CHAN_WIDTH_20: case RATE_MCS_CHAN_WIDTH_20:
mvm->drv_rx_stats.bw_20_frames++; mvm->drv_rx_stats.bw_20_frames++;
break; break;
@ -2912,10 +2912,10 @@ void iwl_mvm_update_frame_stats(struct iwl_mvm *mvm, u32 rate, bool agg)
WARN_ONCE(1, "bad BW. rate 0x%x", rate); WARN_ONCE(1, "bad BW. rate 0x%x", rate);
} }
if (rate & RATE_MCS_HT_MSK) { if (rate & RATE_MCS_HT_MSK_V1) {
mvm->drv_rx_stats.ht_frames++; mvm->drv_rx_stats.ht_frames++;
nss = ((rate & RATE_HT_MCS_NSS_MSK) >> RATE_HT_MCS_NSS_POS) + 1; nss = ((rate & RATE_HT_MCS_NSS_MSK_V1) >> RATE_HT_MCS_NSS_POS_V1) + 1;
} else if (rate & RATE_MCS_VHT_MSK) { } else if (rate & RATE_MCS_VHT_MSK_V1) {
mvm->drv_rx_stats.vht_frames++; mvm->drv_rx_stats.vht_frames++;
nss = ((rate & RATE_VHT_MCS_NSS_MSK) >> nss = ((rate & RATE_VHT_MCS_NSS_MSK) >>
RATE_VHT_MCS_NSS_POS) + 1; RATE_VHT_MCS_NSS_POS) + 1;
@ -2928,7 +2928,7 @@ void iwl_mvm_update_frame_stats(struct iwl_mvm *mvm, u32 rate, bool agg)
else if (nss == 2) else if (nss == 2)
mvm->drv_rx_stats.mimo2_frames++; mvm->drv_rx_stats.mimo2_frames++;
if (rate & RATE_MCS_SGI_MSK) if (rate & RATE_MCS_SGI_MSK_V1)
mvm->drv_rx_stats.sgi_frames++; mvm->drv_rx_stats.sgi_frames++;
else else
mvm->drv_rx_stats.ngi_frames++; mvm->drv_rx_stats.ngi_frames++;
@ -3681,9 +3681,9 @@ int rs_pretty_print_rate(char *buf, int bufsz, const u32 rate)
u8 mcs = 0, nss = 0; u8 mcs = 0, nss = 0;
u8 ant = (rate & RATE_MCS_ANT_AB_MSK) >> RATE_MCS_ANT_POS; u8 ant = (rate & RATE_MCS_ANT_AB_MSK) >> RATE_MCS_ANT_POS;
if (!(rate & RATE_MCS_HT_MSK) && if (!(rate & RATE_MCS_HT_MSK_V1) &&
!(rate & RATE_MCS_VHT_MSK) && !(rate & RATE_MCS_VHT_MSK_V1) &&
!(rate & RATE_MCS_HE_MSK)) { !(rate & RATE_MCS_HE_MSK_V1)) {
int index = iwl_hwrate_to_plcp_idx(rate); int index = iwl_hwrate_to_plcp_idx(rate);
return scnprintf(buf, bufsz, "Legacy | ANT: %s Rate: %s Mbps", return scnprintf(buf, bufsz, "Legacy | ANT: %s Rate: %s Mbps",
@ -3692,17 +3692,17 @@ int rs_pretty_print_rate(char *buf, int bufsz, const u32 rate)
iwl_rate_mcs[index].mbps); iwl_rate_mcs[index].mbps);
} }
if (rate & RATE_MCS_VHT_MSK) { if (rate & RATE_MCS_VHT_MSK_V1) {
type = "VHT"; type = "VHT";
mcs = rate & RATE_VHT_MCS_RATE_CODE_MSK; mcs = rate & RATE_VHT_MCS_RATE_CODE_MSK;
nss = ((rate & RATE_VHT_MCS_NSS_MSK) nss = ((rate & RATE_VHT_MCS_NSS_MSK)
>> RATE_VHT_MCS_NSS_POS) + 1; >> RATE_VHT_MCS_NSS_POS) + 1;
} else if (rate & RATE_MCS_HT_MSK) { } else if (rate & RATE_MCS_HT_MSK_V1) {
type = "HT"; type = "HT";
mcs = rate & RATE_HT_MCS_INDEX_MSK; mcs = rate & RATE_HT_MCS_INDEX_MSK_V1;
nss = ((rate & RATE_HT_MCS_NSS_MSK) nss = ((rate & RATE_HT_MCS_NSS_MSK_V1)
>> RATE_HT_MCS_NSS_POS) + 1; >> RATE_HT_MCS_NSS_POS_V1) + 1;
} else if (rate & RATE_MCS_HE_MSK) { } else if (rate & RATE_MCS_HE_MSK_V1) {
type = "HE"; type = "HE";
mcs = rate & RATE_VHT_MCS_RATE_CODE_MSK; mcs = rate & RATE_VHT_MCS_RATE_CODE_MSK;
nss = ((rate & RATE_VHT_MCS_NSS_MSK) nss = ((rate & RATE_VHT_MCS_NSS_MSK)
@ -3711,7 +3711,7 @@ int rs_pretty_print_rate(char *buf, int bufsz, const u32 rate)
type = "Unknown"; /* shouldn't happen */ type = "Unknown"; /* shouldn't happen */
} }
switch (rate & RATE_MCS_CHAN_WIDTH_MSK) { switch (rate & RATE_MCS_CHAN_WIDTH_MSK_V1) {
case RATE_MCS_CHAN_WIDTH_20: case RATE_MCS_CHAN_WIDTH_20:
bw = "20Mhz"; bw = "20Mhz";
break; break;
@ -3731,9 +3731,9 @@ int rs_pretty_print_rate(char *buf, int bufsz, const u32 rate)
return scnprintf(buf, bufsz, return scnprintf(buf, bufsz,
"0x%x: %s | ANT: %s BW: %s MCS: %d NSS: %d %s%s%s%s%s", "0x%x: %s | ANT: %s BW: %s MCS: %d NSS: %d %s%s%s%s%s",
rate, type, rs_pretty_ant(ant), bw, mcs, nss, rate, type, rs_pretty_ant(ant), bw, mcs, nss,
(rate & RATE_MCS_SGI_MSK) ? "SGI " : "NGI ", (rate & RATE_MCS_SGI_MSK_V1) ? "SGI " : "NGI ",
(rate & RATE_MCS_STBC_MSK) ? "STBC " : "", (rate & RATE_MCS_STBC_MSK) ? "STBC " : "",
(rate & RATE_MCS_LDPC_MSK) ? "LDPC " : "", (rate & RATE_MCS_LDPC_MSK_V1) ? "LDPC " : "",
(rate & RATE_HE_DUAL_CARRIER_MODE_MSK) ? "DCM " : "", (rate & RATE_HE_DUAL_CARRIER_MODE_MSK) ? "DCM " : "",
(rate & RATE_MCS_BF_MSK) ? "BF " : ""); (rate & RATE_MCS_BF_MSK) ? "BF " : "");
} }

View File

@ -230,7 +230,7 @@ static void iwl_mvm_rx_handle_tcm(struct iwl_mvm *mvm,
mdata->rx.airtime += le16_to_cpu(phy_info->frame_time); mdata->rx.airtime += le16_to_cpu(phy_info->frame_time);
} }
if (!(rate_n_flags & (RATE_MCS_HT_MSK | RATE_MCS_VHT_MSK))) if (!(rate_n_flags & (RATE_MCS_HT_MSK_V1 | RATE_MCS_VHT_MSK_V1)))
return; return;
mvmvif = iwl_mvm_vif_from_mac80211(mvmsta->vif); mvmvif = iwl_mvm_vif_from_mac80211(mvmsta->vif);
@ -244,10 +244,10 @@ static void iwl_mvm_rx_handle_tcm(struct iwl_mvm *mvm,
mvmsta->sta_id != mvmvif->ap_sta_id) mvmsta->sta_id != mvmvif->ap_sta_id)
return; return;
if (rate_n_flags & RATE_MCS_HT_MSK) { if (rate_n_flags & RATE_MCS_HT_MSK_V1) {
thr = thresh_tpt[rate_n_flags & RATE_HT_MCS_RATE_CODE_MSK]; thr = thresh_tpt[rate_n_flags & RATE_HT_MCS_RATE_CODE_MSK_V1];
thr *= 1 + ((rate_n_flags & RATE_HT_MCS_NSS_MSK) >> thr *= 1 + ((rate_n_flags & RATE_HT_MCS_NSS_MSK_V1) >>
RATE_HT_MCS_NSS_POS); RATE_HT_MCS_NSS_POS_V1);
} else { } else {
if (WARN_ON((rate_n_flags & RATE_VHT_MCS_RATE_CODE_MSK) >= if (WARN_ON((rate_n_flags & RATE_VHT_MCS_RATE_CODE_MSK) >=
ARRAY_SIZE(thresh_tpt))) ARRAY_SIZE(thresh_tpt)))
@ -257,7 +257,7 @@ static void iwl_mvm_rx_handle_tcm(struct iwl_mvm *mvm,
RATE_VHT_MCS_NSS_POS); RATE_VHT_MCS_NSS_POS);
} }
thr <<= ((rate_n_flags & RATE_MCS_CHAN_WIDTH_MSK) >> thr <<= ((rate_n_flags & RATE_MCS_CHAN_WIDTH_MSK_V1) >>
RATE_MCS_CHAN_WIDTH_POS); RATE_MCS_CHAN_WIDTH_POS);
mdata->uapsd_nonagg_detect.rx_bytes += len; mdata->uapsd_nonagg_detect.rx_bytes += len;
@ -450,7 +450,7 @@ void iwl_mvm_rx_rx_mpdu(struct iwl_mvm *mvm, struct napi_struct *napi,
} }
/* Set up the HT phy flags */ /* Set up the HT phy flags */
switch (rate_n_flags & RATE_MCS_CHAN_WIDTH_MSK) { switch (rate_n_flags & RATE_MCS_CHAN_WIDTH_MSK_V1) {
case RATE_MCS_CHAN_WIDTH_20: case RATE_MCS_CHAN_WIDTH_20:
break; break;
case RATE_MCS_CHAN_WIDTH_40: case RATE_MCS_CHAN_WIDTH_40:
@ -463,20 +463,20 @@ void iwl_mvm_rx_rx_mpdu(struct iwl_mvm *mvm, struct napi_struct *napi,
rx_status->bw = RATE_INFO_BW_160; rx_status->bw = RATE_INFO_BW_160;
break; break;
} }
if (!(rate_n_flags & RATE_MCS_CCK_MSK) && if (!(rate_n_flags & RATE_MCS_CCK_MSK_V1) &&
rate_n_flags & RATE_MCS_SGI_MSK) rate_n_flags & RATE_MCS_SGI_MSK_V1)
rx_status->enc_flags |= RX_ENC_FLAG_SHORT_GI; rx_status->enc_flags |= RX_ENC_FLAG_SHORT_GI;
if (rate_n_flags & RATE_HT_MCS_GF_MSK) if (rate_n_flags & RATE_HT_MCS_GF_MSK)
rx_status->enc_flags |= RX_ENC_FLAG_HT_GF; rx_status->enc_flags |= RX_ENC_FLAG_HT_GF;
if (rate_n_flags & RATE_MCS_LDPC_MSK) if (rate_n_flags & RATE_MCS_LDPC_MSK_V1)
rx_status->enc_flags |= RX_ENC_FLAG_LDPC; rx_status->enc_flags |= RX_ENC_FLAG_LDPC;
if (rate_n_flags & RATE_MCS_HT_MSK) { if (rate_n_flags & RATE_MCS_HT_MSK_V1) {
u8 stbc = (rate_n_flags & RATE_MCS_STBC_MSK) >> u8 stbc = (rate_n_flags & RATE_MCS_STBC_MSK) >>
RATE_MCS_STBC_POS; RATE_MCS_STBC_POS;
rx_status->encoding = RX_ENC_HT; rx_status->encoding = RX_ENC_HT;
rx_status->rate_idx = rate_n_flags & RATE_HT_MCS_INDEX_MSK; rx_status->rate_idx = rate_n_flags & RATE_HT_MCS_INDEX_MSK_V1;
rx_status->enc_flags |= stbc << RX_ENC_FLAG_STBC_SHIFT; rx_status->enc_flags |= stbc << RX_ENC_FLAG_STBC_SHIFT;
} else if (rate_n_flags & RATE_MCS_VHT_MSK) { } else if (rate_n_flags & RATE_MCS_VHT_MSK_V1) {
u8 stbc = (rate_n_flags & RATE_MCS_STBC_MSK) >> u8 stbc = (rate_n_flags & RATE_MCS_STBC_MSK) >>
RATE_MCS_STBC_POS; RATE_MCS_STBC_POS;
rx_status->nss = rx_status->nss =

View File

@ -1197,7 +1197,7 @@ static void iwl_mvm_decode_he_mu_ext(struct iwl_mvm *mvm,
} }
if (FIELD_GET(IWL_RX_PHY_DATA4_HE_MU_EXT_CH2_CRC_OK, phy_data4) && if (FIELD_GET(IWL_RX_PHY_DATA4_HE_MU_EXT_CH2_CRC_OK, phy_data4) &&
(rate_n_flags & RATE_MCS_CHAN_WIDTH_MSK) != RATE_MCS_CHAN_WIDTH_20) { (rate_n_flags & RATE_MCS_CHAN_WIDTH_MSK_V1) != RATE_MCS_CHAN_WIDTH_20) {
he_mu->flags1 |= he_mu->flags1 |=
cpu_to_le16(IEEE80211_RADIOTAP_HE_MU_FLAGS1_CH2_RU_KNOWN | cpu_to_le16(IEEE80211_RADIOTAP_HE_MU_FLAGS1_CH2_RU_KNOWN |
IEEE80211_RADIOTAP_HE_MU_FLAGS1_CH2_CTR_26T_RU_KNOWN); IEEE80211_RADIOTAP_HE_MU_FLAGS1_CH2_CTR_26T_RU_KNOWN);
@ -1234,7 +1234,7 @@ iwl_mvm_decode_he_phy_ru_alloc(struct iwl_mvm_rx_phy_data *phy_data,
* the TSF/timers are not be transmitted in HE-MU. * the TSF/timers are not be transmitted in HE-MU.
*/ */
u8 ru = le32_get_bits(phy_data->d1, IWL_RX_PHY_DATA1_HE_RU_ALLOC_MASK); u8 ru = le32_get_bits(phy_data->d1, IWL_RX_PHY_DATA1_HE_RU_ALLOC_MASK);
u32 he_type = rate_n_flags & RATE_MCS_HE_TYPE_MSK; u32 he_type = rate_n_flags & RATE_MCS_HE_TYPE_MSK_V1;
u8 offs = 0; u8 offs = 0;
rx_status->bw = RATE_INFO_BW_HE_RU; rx_status->bw = RATE_INFO_BW_HE_RU;
@ -1289,13 +1289,13 @@ iwl_mvm_decode_he_phy_ru_alloc(struct iwl_mvm_rx_phy_data *phy_data,
if (he_mu) if (he_mu)
he_mu->flags2 |= he_mu->flags2 |=
le16_encode_bits(FIELD_GET(RATE_MCS_CHAN_WIDTH_MSK, le16_encode_bits(FIELD_GET(RATE_MCS_CHAN_WIDTH_MSK_V1,
rate_n_flags), rate_n_flags),
IEEE80211_RADIOTAP_HE_MU_FLAGS2_BW_FROM_SIG_A_BW); IEEE80211_RADIOTAP_HE_MU_FLAGS2_BW_FROM_SIG_A_BW);
else if (he_type == RATE_MCS_HE_TYPE_TRIG) else if (he_type == RATE_MCS_HE_TYPE_TRIG_V1)
he->data6 |= he->data6 |=
cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA6_TB_PPDU_BW_KNOWN) | cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA6_TB_PPDU_BW_KNOWN) |
le16_encode_bits(FIELD_GET(RATE_MCS_CHAN_WIDTH_MSK, le16_encode_bits(FIELD_GET(RATE_MCS_CHAN_WIDTH_MSK_V1,
rate_n_flags), rate_n_flags),
IEEE80211_RADIOTAP_HE_DATA6_TB_PPDU_BW); IEEE80211_RADIOTAP_HE_DATA6_TB_PPDU_BW);
} }
@ -1440,7 +1440,7 @@ static void iwl_mvm_rx_he(struct iwl_mvm *mvm, struct sk_buff *skb,
struct ieee80211_rx_status *rx_status = IEEE80211_SKB_RXCB(skb); struct ieee80211_rx_status *rx_status = IEEE80211_SKB_RXCB(skb);
struct ieee80211_radiotap_he *he = NULL; struct ieee80211_radiotap_he *he = NULL;
struct ieee80211_radiotap_he_mu *he_mu = NULL; struct ieee80211_radiotap_he_mu *he_mu = NULL;
u32 he_type = rate_n_flags & RATE_MCS_HE_TYPE_MSK; u32 he_type = rate_n_flags & RATE_MCS_HE_TYPE_MSK_V1;
u8 stbc, ltf; u8 stbc, ltf;
static const struct ieee80211_radiotap_he known = { static const struct ieee80211_radiotap_he known = {
.data1 = cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA1_DATA_MCS_KNOWN | .data1 = cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA1_DATA_MCS_KNOWN |
@ -1493,15 +1493,15 @@ static void iwl_mvm_rx_he(struct iwl_mvm *mvm, struct sk_buff *skb,
} }
} }
if (he_type == RATE_MCS_HE_TYPE_EXT_SU && if (he_type == RATE_MCS_HE_TYPE_EXT_SU_V1 &&
rate_n_flags & RATE_MCS_HE_106T_MSK) { rate_n_flags & RATE_MCS_HE_106T_MSK_V1) {
rx_status->bw = RATE_INFO_BW_HE_RU; rx_status->bw = RATE_INFO_BW_HE_RU;
rx_status->he_ru = NL80211_RATE_INFO_HE_RU_ALLOC_106; rx_status->he_ru = NL80211_RATE_INFO_HE_RU_ALLOC_106;
} }
/* actually data is filled in mac80211 */ /* actually data is filled in mac80211 */
if (he_type == RATE_MCS_HE_TYPE_SU || if (he_type == RATE_MCS_HE_TYPE_SU_V1 ||
he_type == RATE_MCS_HE_TYPE_EXT_SU) he_type == RATE_MCS_HE_TYPE_EXT_SU_V1)
he->data1 |= he->data1 |=
cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA1_BW_RU_ALLOC_KNOWN); cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA1_BW_RU_ALLOC_KNOWN);
@ -1520,39 +1520,39 @@ static void iwl_mvm_rx_he(struct iwl_mvm *mvm, struct sk_buff *skb,
#define CHECK_TYPE(F) \ #define CHECK_TYPE(F) \
BUILD_BUG_ON(IEEE80211_RADIOTAP_HE_DATA1_FORMAT_ ## F != \ BUILD_BUG_ON(IEEE80211_RADIOTAP_HE_DATA1_FORMAT_ ## F != \
(RATE_MCS_HE_TYPE_ ## F >> RATE_MCS_HE_TYPE_POS)) (RATE_MCS_HE_TYPE_ ## F ##_V1 >> RATE_MCS_HE_TYPE_POS_V1))
CHECK_TYPE(SU); CHECK_TYPE(SU);
CHECK_TYPE(EXT_SU); CHECK_TYPE(EXT_SU);
CHECK_TYPE(MU); CHECK_TYPE(MU);
CHECK_TYPE(TRIG); CHECK_TYPE(TRIG);
he->data1 |= cpu_to_le16(he_type >> RATE_MCS_HE_TYPE_POS); he->data1 |= cpu_to_le16(he_type >> RATE_MCS_HE_TYPE_POS_V1);
if (rate_n_flags & RATE_MCS_BF_MSK) if (rate_n_flags & RATE_MCS_BF_MSK)
he->data5 |= cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA5_TXBF); he->data5 |= cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA5_TXBF);
switch ((rate_n_flags & RATE_MCS_HE_GI_LTF_MSK) >> switch ((rate_n_flags & RATE_MCS_HE_GI_LTF_MSK_V1) >>
RATE_MCS_HE_GI_LTF_POS) { RATE_MCS_HE_GI_LTF_POS) {
case 0: case 0:
if (he_type == RATE_MCS_HE_TYPE_TRIG) if (he_type == RATE_MCS_HE_TYPE_TRIG_V1)
rx_status->he_gi = NL80211_RATE_INFO_HE_GI_1_6; rx_status->he_gi = NL80211_RATE_INFO_HE_GI_1_6;
else else
rx_status->he_gi = NL80211_RATE_INFO_HE_GI_0_8; rx_status->he_gi = NL80211_RATE_INFO_HE_GI_0_8;
if (he_type == RATE_MCS_HE_TYPE_MU) if (he_type == RATE_MCS_HE_TYPE_MU_V1)
ltf = IEEE80211_RADIOTAP_HE_DATA5_LTF_SIZE_4X; ltf = IEEE80211_RADIOTAP_HE_DATA5_LTF_SIZE_4X;
else else
ltf = IEEE80211_RADIOTAP_HE_DATA5_LTF_SIZE_1X; ltf = IEEE80211_RADIOTAP_HE_DATA5_LTF_SIZE_1X;
break; break;
case 1: case 1:
if (he_type == RATE_MCS_HE_TYPE_TRIG) if (he_type == RATE_MCS_HE_TYPE_TRIG_V1)
rx_status->he_gi = NL80211_RATE_INFO_HE_GI_1_6; rx_status->he_gi = NL80211_RATE_INFO_HE_GI_1_6;
else else
rx_status->he_gi = NL80211_RATE_INFO_HE_GI_0_8; rx_status->he_gi = NL80211_RATE_INFO_HE_GI_0_8;
ltf = IEEE80211_RADIOTAP_HE_DATA5_LTF_SIZE_2X; ltf = IEEE80211_RADIOTAP_HE_DATA5_LTF_SIZE_2X;
break; break;
case 2: case 2:
if (he_type == RATE_MCS_HE_TYPE_TRIG) { if (he_type == RATE_MCS_HE_TYPE_TRIG_V1) {
rx_status->he_gi = NL80211_RATE_INFO_HE_GI_3_2; rx_status->he_gi = NL80211_RATE_INFO_HE_GI_3_2;
ltf = IEEE80211_RADIOTAP_HE_DATA5_LTF_SIZE_4X; ltf = IEEE80211_RADIOTAP_HE_DATA5_LTF_SIZE_4X;
} else { } else {
@ -1561,9 +1561,9 @@ static void iwl_mvm_rx_he(struct iwl_mvm *mvm, struct sk_buff *skb,
} }
break; break;
case 3: case 3:
if ((he_type == RATE_MCS_HE_TYPE_SU || if ((he_type == RATE_MCS_HE_TYPE_SU_V1 ||
he_type == RATE_MCS_HE_TYPE_EXT_SU) && he_type == RATE_MCS_HE_TYPE_EXT_SU_V1) &&
rate_n_flags & RATE_MCS_SGI_MSK) rate_n_flags & RATE_MCS_SGI_MSK_V1)
rx_status->he_gi = NL80211_RATE_INFO_HE_GI_0_8; rx_status->he_gi = NL80211_RATE_INFO_HE_GI_0_8;
else else
rx_status->he_gi = NL80211_RATE_INFO_HE_GI_3_2; rx_status->he_gi = NL80211_RATE_INFO_HE_GI_3_2;
@ -1729,7 +1729,7 @@ void iwl_mvm_rx_mpdu_mq(struct iwl_mvm *mvm, struct napi_struct *napi,
rx_status = IEEE80211_SKB_RXCB(skb); rx_status = IEEE80211_SKB_RXCB(skb);
/* This may be overridden by iwl_mvm_rx_he() to HE_RU */ /* This may be overridden by iwl_mvm_rx_he() to HE_RU */
switch (rate_n_flags & RATE_MCS_CHAN_WIDTH_MSK) { switch (rate_n_flags & RATE_MCS_CHAN_WIDTH_MSK_V1) {
case RATE_MCS_CHAN_WIDTH_20: case RATE_MCS_CHAN_WIDTH_20:
break; break;
case RATE_MCS_CHAN_WIDTH_40: case RATE_MCS_CHAN_WIDTH_40:
@ -1743,7 +1743,7 @@ void iwl_mvm_rx_mpdu_mq(struct iwl_mvm *mvm, struct napi_struct *napi,
break; break;
} }
if (rate_n_flags & RATE_MCS_HE_MSK) if (rate_n_flags & RATE_MCS_HE_MSK_V1)
iwl_mvm_rx_he(mvm, skb, &phy_data, rate_n_flags, iwl_mvm_rx_he(mvm, skb, &phy_data, rate_n_flags,
phy_info, queue); phy_info, queue);
@ -1760,7 +1760,7 @@ void iwl_mvm_rx_mpdu_mq(struct iwl_mvm *mvm, struct napi_struct *napi,
rx_status->flag |= RX_FLAG_FAILED_FCS_CRC; rx_status->flag |= RX_FLAG_FAILED_FCS_CRC;
} }
/* set the preamble flag if appropriate */ /* set the preamble flag if appropriate */
if (rate_n_flags & RATE_MCS_CCK_MSK && if (rate_n_flags & RATE_MCS_CCK_MSK_V1 &&
phy_info & IWL_RX_MPDU_PHY_SHORT_PREAMBLE) phy_info & IWL_RX_MPDU_PHY_SHORT_PREAMBLE)
rx_status->enc_flags |= RX_ENC_FLAG_SHORTPRE; rx_status->enc_flags |= RX_ENC_FLAG_SHORTPRE;
@ -1936,20 +1936,20 @@ void iwl_mvm_rx_mpdu_mq(struct iwl_mvm *mvm, struct napi_struct *napi,
} }
} }
if (!(rate_n_flags & RATE_MCS_CCK_MSK) && if (!(rate_n_flags & RATE_MCS_CCK_MSK_V1) &&
rate_n_flags & RATE_MCS_SGI_MSK) rate_n_flags & RATE_MCS_SGI_MSK_V1)
rx_status->enc_flags |= RX_ENC_FLAG_SHORT_GI; rx_status->enc_flags |= RX_ENC_FLAG_SHORT_GI;
if (rate_n_flags & RATE_HT_MCS_GF_MSK) if (rate_n_flags & RATE_HT_MCS_GF_MSK)
rx_status->enc_flags |= RX_ENC_FLAG_HT_GF; rx_status->enc_flags |= RX_ENC_FLAG_HT_GF;
if (rate_n_flags & RATE_MCS_LDPC_MSK) if (rate_n_flags & RATE_MCS_LDPC_MSK_V1)
rx_status->enc_flags |= RX_ENC_FLAG_LDPC; rx_status->enc_flags |= RX_ENC_FLAG_LDPC;
if (rate_n_flags & RATE_MCS_HT_MSK) { if (rate_n_flags & RATE_MCS_HT_MSK_V1) {
u8 stbc = (rate_n_flags & RATE_MCS_STBC_MSK) >> u8 stbc = (rate_n_flags & RATE_MCS_STBC_MSK) >>
RATE_MCS_STBC_POS; RATE_MCS_STBC_POS;
rx_status->encoding = RX_ENC_HT; rx_status->encoding = RX_ENC_HT;
rx_status->rate_idx = rate_n_flags & RATE_HT_MCS_INDEX_MSK; rx_status->rate_idx = rate_n_flags & RATE_HT_MCS_INDEX_MSK_V1;
rx_status->enc_flags |= stbc << RX_ENC_FLAG_STBC_SHIFT; rx_status->enc_flags |= stbc << RX_ENC_FLAG_STBC_SHIFT;
} else if (rate_n_flags & RATE_MCS_VHT_MSK) { } else if (rate_n_flags & RATE_MCS_VHT_MSK_V1) {
u8 stbc = (rate_n_flags & RATE_MCS_STBC_MSK) >> u8 stbc = (rate_n_flags & RATE_MCS_STBC_MSK) >>
RATE_MCS_STBC_POS; RATE_MCS_STBC_POS;
rx_status->nss = rx_status->nss =
@ -1960,7 +1960,7 @@ void iwl_mvm_rx_mpdu_mq(struct iwl_mvm *mvm, struct napi_struct *napi,
rx_status->enc_flags |= stbc << RX_ENC_FLAG_STBC_SHIFT; rx_status->enc_flags |= stbc << RX_ENC_FLAG_STBC_SHIFT;
if (rate_n_flags & RATE_MCS_BF_MSK) if (rate_n_flags & RATE_MCS_BF_MSK)
rx_status->enc_flags |= RX_ENC_FLAG_BF; rx_status->enc_flags |= RX_ENC_FLAG_BF;
} else if (!(rate_n_flags & RATE_MCS_HE_MSK)) { } else if (!(rate_n_flags & RATE_MCS_HE_MSK_V1)) {
int rate = iwl_mvm_legacy_rate_to_mac80211_idx(rate_n_flags, int rate = iwl_mvm_legacy_rate_to_mac80211_idx(rate_n_flags,
rx_status->band); rx_status->band);
@ -2060,7 +2060,7 @@ void iwl_mvm_rx_monitor_no_data(struct iwl_mvm *mvm, struct napi_struct *napi,
} }
/* This may be overridden by iwl_mvm_rx_he() to HE_RU */ /* This may be overridden by iwl_mvm_rx_he() to HE_RU */
switch (rate_n_flags & RATE_MCS_CHAN_WIDTH_MSK) { switch (rate_n_flags & RATE_MCS_CHAN_WIDTH_MSK_V1) {
case RATE_MCS_CHAN_WIDTH_20: case RATE_MCS_CHAN_WIDTH_20:
break; break;
case RATE_MCS_CHAN_WIDTH_40: case RATE_MCS_CHAN_WIDTH_40:
@ -2074,7 +2074,7 @@ void iwl_mvm_rx_monitor_no_data(struct iwl_mvm *mvm, struct napi_struct *napi,
break; break;
} }
if (rate_n_flags & RATE_MCS_HE_MSK) if (rate_n_flags & RATE_MCS_HE_MSK_V1)
iwl_mvm_rx_he(mvm, skb, &phy_data, rate_n_flags, iwl_mvm_rx_he(mvm, skb, &phy_data, rate_n_flags,
phy_info, queue); phy_info, queue);
@ -2090,20 +2090,20 @@ void iwl_mvm_rx_monitor_no_data(struct iwl_mvm *mvm, struct napi_struct *napi,
rcu_read_lock(); rcu_read_lock();
if (!(rate_n_flags & RATE_MCS_CCK_MSK) && if (!(rate_n_flags & RATE_MCS_CCK_MSK_V1) &&
rate_n_flags & RATE_MCS_SGI_MSK) rate_n_flags & RATE_MCS_SGI_MSK_V1)
rx_status->enc_flags |= RX_ENC_FLAG_SHORT_GI; rx_status->enc_flags |= RX_ENC_FLAG_SHORT_GI;
if (rate_n_flags & RATE_HT_MCS_GF_MSK) if (rate_n_flags & RATE_HT_MCS_GF_MSK)
rx_status->enc_flags |= RX_ENC_FLAG_HT_GF; rx_status->enc_flags |= RX_ENC_FLAG_HT_GF;
if (rate_n_flags & RATE_MCS_LDPC_MSK) if (rate_n_flags & RATE_MCS_LDPC_MSK_V1)
rx_status->enc_flags |= RX_ENC_FLAG_LDPC; rx_status->enc_flags |= RX_ENC_FLAG_LDPC;
if (rate_n_flags & RATE_MCS_HT_MSK) { if (rate_n_flags & RATE_MCS_HT_MSK_V1) {
u8 stbc = (rate_n_flags & RATE_MCS_STBC_MSK) >> u8 stbc = (rate_n_flags & RATE_MCS_STBC_MSK) >>
RATE_MCS_STBC_POS; RATE_MCS_STBC_POS;
rx_status->encoding = RX_ENC_HT; rx_status->encoding = RX_ENC_HT;
rx_status->rate_idx = rate_n_flags & RATE_HT_MCS_INDEX_MSK; rx_status->rate_idx = rate_n_flags & RATE_HT_MCS_INDEX_MSK_V1;
rx_status->enc_flags |= stbc << RX_ENC_FLAG_STBC_SHIFT; rx_status->enc_flags |= stbc << RX_ENC_FLAG_STBC_SHIFT;
} else if (rate_n_flags & RATE_MCS_VHT_MSK) { } else if (rate_n_flags & RATE_MCS_VHT_MSK_V1) {
u8 stbc = (rate_n_flags & RATE_MCS_STBC_MSK) >> u8 stbc = (rate_n_flags & RATE_MCS_STBC_MSK) >>
RATE_MCS_STBC_POS; RATE_MCS_STBC_POS;
rx_status->rate_idx = rate_n_flags & RATE_VHT_MCS_RATE_CODE_MSK; rx_status->rate_idx = rate_n_flags & RATE_VHT_MCS_RATE_CODE_MSK;
@ -2119,7 +2119,7 @@ void iwl_mvm_rx_monitor_no_data(struct iwl_mvm *mvm, struct napi_struct *napi,
rx_status->nss = rx_status->nss =
le32_get_bits(desc->rx_vec[0], le32_get_bits(desc->rx_vec[0],
RX_NO_DATA_RX_VEC0_VHT_NSTS_MSK) + 1; RX_NO_DATA_RX_VEC0_VHT_NSTS_MSK) + 1;
} else if (rate_n_flags & RATE_MCS_HE_MSK) { } else if (rate_n_flags & RATE_MCS_HE_MSK_V1) {
rx_status->nss = rx_status->nss =
le32_get_bits(desc->rx_vec[0], le32_get_bits(desc->rx_vec[0],
RX_NO_DATA_RX_VEC0_HE_NSTS_MSK) + 1; RX_NO_DATA_RX_VEC0_HE_NSTS_MSK) + 1;

View File

@ -163,7 +163,7 @@ iwl_mvm_scan_rate_n_flags(struct iwl_mvm *mvm, enum nl80211_band band,
tx_ant = BIT(mvm->scan_last_antenna_idx) << RATE_MCS_ANT_POS; tx_ant = BIT(mvm->scan_last_antenna_idx) << RATE_MCS_ANT_POS;
if (band == NL80211_BAND_2GHZ && !no_cck) if (band == NL80211_BAND_2GHZ && !no_cck)
return cpu_to_le32(IWL_RATE_1M_PLCP | RATE_MCS_CCK_MSK | return cpu_to_le32(IWL_RATE_1M_PLCP | RATE_MCS_CCK_MSK_V1 |
tx_ant); tx_ant);
else else
return cpu_to_le32(IWL_RATE_6M_PLCP | tx_ant); return cpu_to_le32(IWL_RATE_6M_PLCP | tx_ant);

View File

@ -303,7 +303,7 @@ static u32 iwl_mvm_get_tx_rate(struct iwl_mvm *mvm,
/* Set CCK flag as needed */ /* Set CCK flag as needed */
if ((rate_idx >= IWL_FIRST_CCK_RATE) && (rate_idx <= IWL_LAST_CCK_RATE)) if ((rate_idx >= IWL_FIRST_CCK_RATE) && (rate_idx <= IWL_LAST_CCK_RATE))
rate_flags |= RATE_MCS_CCK_MSK; rate_flags |= RATE_MCS_CCK_MSK_V1;
return (u32)rate_plcp | rate_flags; return (u32)rate_plcp | rate_flags;
} }
@ -1290,7 +1290,7 @@ void iwl_mvm_hwrate_to_tx_rate(u32 rate_n_flags,
{ {
if (rate_n_flags & RATE_HT_MCS_GF_MSK) if (rate_n_flags & RATE_HT_MCS_GF_MSK)
r->flags |= IEEE80211_TX_RC_GREEN_FIELD; r->flags |= IEEE80211_TX_RC_GREEN_FIELD;
switch (rate_n_flags & RATE_MCS_CHAN_WIDTH_MSK) { switch (rate_n_flags & RATE_MCS_CHAN_WIDTH_MSK_V1) {
case RATE_MCS_CHAN_WIDTH_20: case RATE_MCS_CHAN_WIDTH_20:
break; break;
case RATE_MCS_CHAN_WIDTH_40: case RATE_MCS_CHAN_WIDTH_40:
@ -1303,12 +1303,12 @@ void iwl_mvm_hwrate_to_tx_rate(u32 rate_n_flags,
r->flags |= IEEE80211_TX_RC_160_MHZ_WIDTH; r->flags |= IEEE80211_TX_RC_160_MHZ_WIDTH;
break; break;
} }
if (rate_n_flags & RATE_MCS_SGI_MSK) if (rate_n_flags & RATE_MCS_SGI_MSK_V1)
r->flags |= IEEE80211_TX_RC_SHORT_GI; r->flags |= IEEE80211_TX_RC_SHORT_GI;
if (rate_n_flags & RATE_MCS_HT_MSK) { if (rate_n_flags & RATE_MCS_HT_MSK_V1) {
r->flags |= IEEE80211_TX_RC_MCS; r->flags |= IEEE80211_TX_RC_MCS;
r->idx = rate_n_flags & RATE_HT_MCS_INDEX_MSK; r->idx = rate_n_flags & RATE_HT_MCS_INDEX_MSK_V1;
} else if (rate_n_flags & RATE_MCS_VHT_MSK) { } else if (rate_n_flags & RATE_MCS_VHT_MSK_V1) {
ieee80211_rate_set_vht( ieee80211_rate_set_vht(
r, rate_n_flags & RATE_VHT_MCS_RATE_CODE_MSK, r, rate_n_flags & RATE_VHT_MCS_RATE_CODE_MSK,
((rate_n_flags & RATE_VHT_MCS_NSS_MSK) >> ((rate_n_flags & RATE_VHT_MCS_NSS_MSK) >>

View File

@ -159,7 +159,7 @@ static const u8 fw_rate_idx_to_plcp[IWL_RATE_COUNT] = {
int iwl_mvm_legacy_rate_to_mac80211_idx(u32 rate_n_flags, int iwl_mvm_legacy_rate_to_mac80211_idx(u32 rate_n_flags,
enum nl80211_band band) enum nl80211_band band)
{ {
int rate = rate_n_flags & RATE_LEGACY_RATE_MSK; int rate = rate_n_flags & RATE_LEGACY_RATE_MSK_V1;
int idx; int idx;
int band_offset = 0; int band_offset = 0;