|
|
deb259 |
From e01e8ffcfe71bd1400e53c94438287552991e85f Mon Sep 17 00:00:00 2001
|
|
|
deb259 |
From: Eugene Syromiatnikov <esyr@redhat.com>
|
|
|
deb259 |
Date: Thu, 5 Sep 2019 18:51:55 +0200
|
|
|
deb259 |
Subject: [PATCH 34/43] Revert "iwlwifi: mvm: implement extended HE-MU sniffer
|
|
|
deb259 |
API"
|
|
|
deb259 |
|
|
|
deb259 |
This reverts commit dabf9844385885e50c05a08ebc312d46017eb261.
|
|
|
deb259 |
---
|
|
|
deb259 |
drivers/net/wireless/intel/iwlwifi/fw/api/rx.h | 117 +++++----------------
|
|
|
deb259 |
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c | 140 +++++--------------------
|
|
|
deb259 |
2 files changed, 51 insertions(+), 206 deletions(-)
|
|
|
deb259 |
|
|
|
deb259 |
Index: src/drivers/net/wireless/intel/iwlwifi/fw/api/rx.h
|
|
|
deb259 |
===================================================================
|
|
|
deb259 |
--- src.orig/drivers/net/wireless/intel/iwlwifi/fw/api/rx.h 2019-09-06 01:25:46.052284970 +0200
|
|
|
deb259 |
+++ src/drivers/net/wireless/intel/iwlwifi/fw/api/rx.h 2019-09-06 01:25:46.216282878 +0200
|
|
|
deb259 |
@@ -371,33 +371,7 @@
|
|
|
deb259 |
/* 1 bit reserved */
|
|
|
deb259 |
IWL_RX_HE_PHY_SIGB_DCM = BIT_ULL(32 + 21),
|
|
|
deb259 |
IWL_RX_HE_PHY_PREAMBLE_PUNC_TYPE_MASK = 0xc0000000000000ULL,
|
|
|
deb259 |
- /* 4 bits reserved */
|
|
|
deb259 |
- IWL_RX_HE_PHY_INFO_TYPE_MASK = 0xf000000000000000ULL,
|
|
|
deb259 |
- IWL_RX_HE_PHY_INFO_TYPE_SU = 0x0,
|
|
|
deb259 |
- IWL_RX_HE_PHY_INFO_TYPE_MU = 0x1,
|
|
|
deb259 |
- IWL_RX_HE_PHY_INFO_TYPE_MU_EXT_INFO = 0x2,
|
|
|
deb259 |
-};
|
|
|
deb259 |
-
|
|
|
deb259 |
-enum iwl_rx_he_sigb_common0 {
|
|
|
deb259 |
- /* the a1/a2/... is what the PHY/firmware calls the values */
|
|
|
deb259 |
- IWL_RX_HE_SIGB_COMMON0_CH1_RU0 = 0x000000ff, /* a1 */
|
|
|
deb259 |
- IWL_RX_HE_SIGB_COMMON0_CH1_RU2 = 0x0000ff00, /* a2 */
|
|
|
deb259 |
- IWL_RX_HE_SIGB_COMMON0_CH2_RU0 = 0x00ff0000, /* b1 */
|
|
|
deb259 |
- IWL_RX_HE_SIGB_COMMON0_CH2_RU2 = 0xff000000, /* b2 */
|
|
|
deb259 |
-};
|
|
|
deb259 |
-
|
|
|
deb259 |
-enum iwl_rx_he_sigb_common1 {
|
|
|
deb259 |
- IWL_RX_HE_SIGB_COMMON1_CH1_RU1 = 0x000000ff, /* c1 */
|
|
|
deb259 |
- IWL_RX_HE_SIGB_COMMON1_CH1_RU3 = 0x0000ff00, /* c2 */
|
|
|
deb259 |
- IWL_RX_HE_SIGB_COMMON1_CH2_RU1 = 0x00ff0000, /* d1 */
|
|
|
deb259 |
- IWL_RX_HE_SIGB_COMMON1_CH2_RU3 = 0xff000000, /* d2 */
|
|
|
deb259 |
-};
|
|
|
deb259 |
-
|
|
|
deb259 |
-enum iwl_rx_he_sigb_common2 {
|
|
|
deb259 |
- IWL_RX_HE_SIGB_COMMON2_CH1_CTR_RU = 0x0001,
|
|
|
deb259 |
- IWL_RX_HE_SIGB_COMMON2_CH2_CTR_RU = 0x0002,
|
|
|
deb259 |
- IWL_RX_HE_SIGB_COMMON2_CH1_CRC_OK = 0x0004,
|
|
|
deb259 |
- IWL_RX_HE_SIGB_COMMON2_CH2_CRC_OK = 0x0008,
|
|
|
deb259 |
+ /* 8 bits reserved */
|
|
|
deb259 |
};
|
|
|
deb259 |
|
|
|
deb259 |
/**
|
|
|
deb259 |
@@ -405,31 +379,15 @@
|
|
|
deb259 |
*/
|
|
|
deb259 |
struct iwl_rx_mpdu_desc_v1 {
|
|
|
deb259 |
/* DW7 - carries rss_hash only when rpa_en == 1 */
|
|
|
deb259 |
- union {
|
|
|
deb259 |
- /**
|
|
|
deb259 |
- * @rss_hash: RSS hash value
|
|
|
deb259 |
- */
|
|
|
deb259 |
- __le32 rss_hash;
|
|
|
deb259 |
-
|
|
|
deb259 |
- /**
|
|
|
deb259 |
- * @sigb_common0: for HE sniffer, HE-SIG-B common part 0
|
|
|
deb259 |
- */
|
|
|
deb259 |
- __le32 sigb_common0;
|
|
|
deb259 |
- };
|
|
|
deb259 |
-
|
|
|
deb259 |
+ /**
|
|
|
deb259 |
+ * @rss_hash: RSS hash value
|
|
|
deb259 |
+ */
|
|
|
deb259 |
+ __le32 rss_hash;
|
|
|
deb259 |
/* DW8 - carries filter_match only when rpa_en == 1 */
|
|
|
deb259 |
- union {
|
|
|
deb259 |
- /**
|
|
|
deb259 |
- * @filter_match: filter match value
|
|
|
deb259 |
- */
|
|
|
deb259 |
- __le32 filter_match;
|
|
|
deb259 |
-
|
|
|
deb259 |
- /**
|
|
|
deb259 |
- * @sigb_common1: for HE sniffer, HE-SIG-B common part 1
|
|
|
deb259 |
- */
|
|
|
deb259 |
- __le32 sigb_common1;
|
|
|
deb259 |
- };
|
|
|
deb259 |
-
|
|
|
deb259 |
+ /**
|
|
|
deb259 |
+ * @filter_match: filter match value
|
|
|
deb259 |
+ */
|
|
|
deb259 |
+ __le32 filter_match;
|
|
|
deb259 |
/* DW9 */
|
|
|
deb259 |
/**
|
|
|
deb259 |
* @rate_n_flags: RX rate/flags encoding
|
|
|
deb259 |
@@ -479,30 +437,15 @@
|
|
|
deb259 |
*/
|
|
|
deb259 |
struct iwl_rx_mpdu_desc_v3 {
|
|
|
deb259 |
/* DW7 - carries filter_match only when rpa_en == 1 */
|
|
|
deb259 |
- union {
|
|
|
deb259 |
- /**
|
|
|
deb259 |
- * @filter_match: filter match value
|
|
|
deb259 |
- */
|
|
|
deb259 |
- __le32 filter_match;
|
|
|
deb259 |
-
|
|
|
deb259 |
- /**
|
|
|
deb259 |
- * @sigb_common0: for HE sniffer, HE-SIG-B common part 0
|
|
|
deb259 |
- */
|
|
|
deb259 |
- __le32 sigb_common0;
|
|
|
deb259 |
- };
|
|
|
deb259 |
-
|
|
|
deb259 |
+ /**
|
|
|
deb259 |
+ * @filter_match: filter match value
|
|
|
deb259 |
+ */
|
|
|
deb259 |
+ __le32 filter_match;
|
|
|
deb259 |
/* DW8 - carries rss_hash only when rpa_en == 1 */
|
|
|
deb259 |
- union {
|
|
|
deb259 |
- /**
|
|
|
deb259 |
- * @rss_hash: RSS hash value
|
|
|
deb259 |
- */
|
|
|
deb259 |
- __le32 rss_hash;
|
|
|
deb259 |
-
|
|
|
deb259 |
- /**
|
|
|
deb259 |
- * @sigb_common1: for HE sniffer, HE-SIG-B common part 1
|
|
|
deb259 |
- */
|
|
|
deb259 |
- __le32 sigb_common1;
|
|
|
deb259 |
- };
|
|
|
deb259 |
+ /**
|
|
|
deb259 |
+ * @rss_hash: RSS hash value
|
|
|
deb259 |
+ */
|
|
|
deb259 |
+ __le32 rss_hash;
|
|
|
deb259 |
/* DW9 */
|
|
|
deb259 |
/**
|
|
|
deb259 |
* @partial_hash: 31:0 ip/tcp header hash
|
|
|
deb259 |
@@ -594,24 +537,14 @@
|
|
|
deb259 |
*/
|
|
|
deb259 |
u8 mac_phy_idx;
|
|
|
deb259 |
/* DW4 - carries csum data only when rpa_en == 1 */
|
|
|
deb259 |
- struct {
|
|
|
deb259 |
- /**
|
|
|
deb259 |
- * @raw_csum: raw checksum (alledgedly unreliable)
|
|
|
deb259 |
- */
|
|
|
deb259 |
- __le16 raw_csum;
|
|
|
deb259 |
-
|
|
|
deb259 |
- union {
|
|
|
deb259 |
- /**
|
|
|
deb259 |
- * @l3l4_flags: &enum iwl_rx_l3l4_flags
|
|
|
deb259 |
- */
|
|
|
deb259 |
- __le16 l3l4_flags;
|
|
|
deb259 |
-
|
|
|
deb259 |
- /**
|
|
|
deb259 |
- * @sigb_common2: for HE sniffer, HE-SIG-B common part 2
|
|
|
deb259 |
- */
|
|
|
deb259 |
- __le16 sigb_common2;
|
|
|
deb259 |
- };
|
|
|
deb259 |
- };
|
|
|
deb259 |
+ /**
|
|
|
deb259 |
+ * @raw_csum: raw checksum (alledgedly unreliable)
|
|
|
deb259 |
+ */
|
|
|
deb259 |
+ __le16 raw_csum;
|
|
|
deb259 |
+ /**
|
|
|
deb259 |
+ * @l3l4_flags: &enum iwl_rx_l3l4_flags
|
|
|
deb259 |
+ */
|
|
|
deb259 |
+ __le16 l3l4_flags;
|
|
|
deb259 |
/* DW5 */
|
|
|
deb259 |
/**
|
|
|
deb259 |
* @status: &enum iwl_rx_mpdu_status
|
|
|
deb259 |
Index: src/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c
|
|
|
deb259 |
===================================================================
|
|
|
deb259 |
--- src.orig/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c 2019-09-06 01:25:45.881287151 +0200
|
|
|
deb259 |
+++ src/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c 2019-09-06 01:25:46.216282878 +0200
|
|
|
deb259 |
@@ -903,64 +903,6 @@
|
|
|
deb259 |
ether_addr_copy(addr, mac_addr);
|
|
|
deb259 |
}
|
|
|
deb259 |
|
|
|
deb259 |
-static void iwl_mvm_decode_he_sigb(struct iwl_mvm *mvm,
|
|
|
deb259 |
- struct iwl_rx_mpdu_desc *desc,
|
|
|
deb259 |
- struct ieee80211_radiotap_he_mu *he_mu)
|
|
|
deb259 |
-{
|
|
|
deb259 |
- u32 sigb0, sigb1;
|
|
|
deb259 |
- u16 sigb2;
|
|
|
deb259 |
-
|
|
|
deb259 |
- if (mvm->trans->cfg->device_family >= IWL_DEVICE_FAMILY_22560) {
|
|
|
deb259 |
- sigb0 = le32_to_cpu(desc->v3.sigb_common0);
|
|
|
deb259 |
- sigb1 = le32_to_cpu(desc->v3.sigb_common1);
|
|
|
deb259 |
- } else {
|
|
|
deb259 |
- sigb0 = le32_to_cpu(desc->v1.sigb_common0);
|
|
|
deb259 |
- sigb1 = le32_to_cpu(desc->v1.sigb_common1);
|
|
|
deb259 |
- }
|
|
|
deb259 |
-
|
|
|
deb259 |
- sigb2 = le16_to_cpu(desc->sigb_common2);
|
|
|
deb259 |
-
|
|
|
deb259 |
- if (FIELD_GET(IWL_RX_HE_SIGB_COMMON2_CH1_CRC_OK, sigb2)) {
|
|
|
deb259 |
- he_mu->flags1 |=
|
|
|
deb259 |
- cpu_to_le16(IEEE80211_RADIOTAP_HE_MU_FLAGS1_CH1_RU_KNOWN |
|
|
|
deb259 |
- IEEE80211_RADIOTAP_HE_MU_FLAGS1_CH1_CTR_26T_RU_KNOWN);
|
|
|
deb259 |
-
|
|
|
deb259 |
- he_mu->flags1 |=
|
|
|
deb259 |
- le16_encode_bits(FIELD_GET(IWL_RX_HE_SIGB_COMMON2_CH1_CTR_RU,
|
|
|
deb259 |
- sigb2),
|
|
|
deb259 |
- IEEE80211_RADIOTAP_HE_MU_FLAGS1_CH1_CTR_26T_RU);
|
|
|
deb259 |
-
|
|
|
deb259 |
- he_mu->ru_ch1[0] = FIELD_GET(IWL_RX_HE_SIGB_COMMON0_CH1_RU0,
|
|
|
deb259 |
- sigb0);
|
|
|
deb259 |
- he_mu->ru_ch1[1] = FIELD_GET(IWL_RX_HE_SIGB_COMMON1_CH1_RU1,
|
|
|
deb259 |
- sigb1);
|
|
|
deb259 |
- he_mu->ru_ch1[2] = FIELD_GET(IWL_RX_HE_SIGB_COMMON0_CH1_RU2,
|
|
|
deb259 |
- sigb0);
|
|
|
deb259 |
- he_mu->ru_ch1[3] = FIELD_GET(IWL_RX_HE_SIGB_COMMON1_CH1_RU3,
|
|
|
deb259 |
- sigb1);
|
|
|
deb259 |
- }
|
|
|
deb259 |
-
|
|
|
deb259 |
- if (FIELD_GET(IWL_RX_HE_SIGB_COMMON2_CH2_CRC_OK, sigb2)) {
|
|
|
deb259 |
- he_mu->flags1 |=
|
|
|
deb259 |
- cpu_to_le16(IEEE80211_RADIOTAP_HE_MU_FLAGS1_CH2_RU_KNOWN |
|
|
|
deb259 |
- IEEE80211_RADIOTAP_HE_MU_FLAGS1_CH2_CTR_26T_RU_KNOWN);
|
|
|
deb259 |
-
|
|
|
deb259 |
- he_mu->flags2 |=
|
|
|
deb259 |
- le16_encode_bits(FIELD_GET(IWL_RX_HE_SIGB_COMMON2_CH2_CTR_RU,
|
|
|
deb259 |
- sigb2),
|
|
|
deb259 |
- IEEE80211_RADIOTAP_HE_MU_FLAGS2_CH2_CTR_26T_RU);
|
|
|
deb259 |
-
|
|
|
deb259 |
- he_mu->ru_ch2[0] = FIELD_GET(IWL_RX_HE_SIGB_COMMON0_CH2_RU0,
|
|
|
deb259 |
- sigb0);
|
|
|
deb259 |
- he_mu->ru_ch2[1] = FIELD_GET(IWL_RX_HE_SIGB_COMMON1_CH2_RU1,
|
|
|
deb259 |
- sigb1);
|
|
|
deb259 |
- he_mu->ru_ch2[2] = FIELD_GET(IWL_RX_HE_SIGB_COMMON0_CH2_RU2,
|
|
|
deb259 |
- sigb0);
|
|
|
deb259 |
- he_mu->ru_ch2[3] = FIELD_GET(IWL_RX_HE_SIGB_COMMON1_CH2_RU3,
|
|
|
deb259 |
- sigb1);
|
|
|
deb259 |
- }
|
|
|
deb259 |
-}
|
|
|
deb259 |
-
|
|
|
deb259 |
static void iwl_mvm_rx_he(struct iwl_mvm *mvm, struct sk_buff *skb,
|
|
|
deb259 |
struct iwl_rx_mpdu_desc *desc,
|
|
|
deb259 |
u32 rate_n_flags, u16 phy_info, int queue)
|
|
|
deb259 |
@@ -987,12 +929,10 @@
|
|
|
deb259 |
IEEE80211_RADIOTAP_HE_MU_FLAGS1_SIG_B_DCM_KNOWN |
|
|
|
deb259 |
IEEE80211_RADIOTAP_HE_MU_FLAGS1_SIG_B_SYMS_USERS_KNOWN |
|
|
|
deb259 |
IEEE80211_RADIOTAP_HE_MU_FLAGS1_SIG_B_COMP_KNOWN),
|
|
|
deb259 |
- .flags2 = cpu_to_le16(IEEE80211_RADIOTAP_HE_MU_FLAGS2_PUNC_FROM_SIG_A_BW_KNOWN |
|
|
|
deb259 |
- IEEE80211_RADIOTAP_HE_MU_FLAGS2_BW_FROM_SIG_A_BW_KNOWN),
|
|
|
deb259 |
+ .flags2 = cpu_to_le16(IEEE80211_RADIOTAP_HE_MU_FLAGS2_PUNC_FROM_SIG_A_BW_KNOWN),
|
|
|
deb259 |
};
|
|
|
deb259 |
unsigned int radiotap_len = 0;
|
|
|
deb259 |
bool overload = phy_info & IWL_RX_MPDU_PHY_TSF_OVERLOAD;
|
|
|
deb259 |
- bool sigb_data = false;
|
|
|
deb259 |
|
|
|
deb259 |
he = skb_put_data(skb, &known, sizeof(known));
|
|
|
deb259 |
radiotap_len += sizeof(known);
|
|
|
deb259 |
@@ -1050,26 +990,17 @@
|
|
|
deb259 |
IEEE80211_RADIOTAP_HE_MU_FLAGS2_SIG_B_COMP);
|
|
|
deb259 |
he_mu->flags2 |=
|
|
|
deb259 |
le16_encode_bits(FIELD_GET(IWL_RX_HE_PHY_PREAMBLE_PUNC_TYPE_MASK,
|
|
|
deb259 |
- he_phy_data),
|
|
|
deb259 |
+ he_phy_data),
|
|
|
deb259 |
IEEE80211_RADIOTAP_HE_MU_FLAGS2_PUNC_FROM_SIG_A_BW);
|
|
|
deb259 |
+ }
|
|
|
deb259 |
|
|
|
deb259 |
- sigb_data = FIELD_GET(IWL_RX_HE_PHY_INFO_TYPE_MASK,
|
|
|
deb259 |
- he_phy_data) ==
|
|
|
deb259 |
- IWL_RX_HE_PHY_INFO_TYPE_MU_EXT_INFO;
|
|
|
deb259 |
- if (sigb_data)
|
|
|
deb259 |
- iwl_mvm_decode_he_sigb(mvm, desc, he_mu);
|
|
|
deb259 |
- }
|
|
|
deb259 |
- if (he_phy_data != HE_PHY_DATA_INVAL &&
|
|
|
deb259 |
- (he_type == RATE_MCS_HE_TYPE_SU ||
|
|
|
deb259 |
- he_type == RATE_MCS_HE_TYPE_MU)) {
|
|
|
deb259 |
- u8 bss_color = FIELD_GET(IWL_RX_HE_PHY_BSS_COLOR_MASK,
|
|
|
deb259 |
- he_phy_data);
|
|
|
deb259 |
-
|
|
|
deb259 |
- if (bss_color) {
|
|
|
deb259 |
- he->data1 |=
|
|
|
deb259 |
- cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA1_BSS_COLOR_KNOWN);
|
|
|
deb259 |
- he->data3 |= cpu_to_le16(bss_color);
|
|
|
deb259 |
- }
|
|
|
deb259 |
+ if (he_phy_data != HE_PHY_DATA_INVAL) {
|
|
|
deb259 |
+ he->data1 |=
|
|
|
deb259 |
+ cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA1_BSS_COLOR_KNOWN);
|
|
|
deb259 |
+ he->data3 |=
|
|
|
deb259 |
+ le16_encode_bits(FIELD_GET(IWL_RX_HE_PHY_BSS_COLOR_MASK,
|
|
|
deb259 |
+ he_phy_data),
|
|
|
deb259 |
+ IEEE80211_RADIOTAP_HE_DATA3_BSS_COLOR);
|
|
|
deb259 |
}
|
|
|
deb259 |
|
|
|
deb259 |
/* update aggregation data for monitor sake on default queue */
|
|
|
deb259 |
@@ -1093,7 +1024,6 @@
|
|
|
deb259 |
rx_status->bw = RATE_INFO_BW_HE_RU;
|
|
|
deb259 |
rx_status->he_ru = NL80211_RATE_INFO_HE_RU_ALLOC_106;
|
|
|
deb259 |
}
|
|
|
deb259 |
-
|
|
|
deb259 |
if (he_mu) {
|
|
|
deb259 |
/*
|
|
|
deb259 |
* Unfortunately, we have to leave the mac80211 data
|
|
|
deb259 |
@@ -1109,9 +1039,6 @@
|
|
|
deb259 |
|
|
|
deb259 |
rx_status->bw = RATE_INFO_BW_HE_RU;
|
|
|
deb259 |
|
|
|
deb259 |
- he->data1 |=
|
|
|
deb259 |
- cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA1_BW_RU_ALLOC_KNOWN);
|
|
|
deb259 |
-
|
|
|
deb259 |
switch (ru) {
|
|
|
deb259 |
case 0 ... 36:
|
|
|
deb259 |
rx_status->he_ru = NL80211_RATE_INFO_HE_RU_ALLOC_26;
|
|
|
deb259 |
@@ -1145,24 +1072,10 @@
|
|
|
deb259 |
IEEE80211_RADIOTAP_HE_DATA2_RU_OFFSET);
|
|
|
deb259 |
he->data2 |=
|
|
|
deb259 |
cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA2_PRISEC_80_KNOWN);
|
|
|
deb259 |
- if (he_phy_data & IWL_RX_HE_PHY_RU_ALLOC_SEC80) {
|
|
|
deb259 |
+ if (he_phy_data & IWL_RX_HE_PHY_RU_ALLOC_SEC80)
|
|
|
deb259 |
he->data2 |=
|
|
|
deb259 |
cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA2_PRISEC_80_SEC);
|
|
|
deb259 |
-
|
|
|
deb259 |
-#define CHECK_BW(bw) \
|
|
|
deb259 |
- BUILD_BUG_ON(IEEE80211_RADIOTAP_HE_MU_FLAGS2_BW_FROM_SIG_A_BW_ ## bw ## MHZ != \
|
|
|
deb259 |
- RATE_MCS_CHAN_WIDTH_##bw >> RATE_MCS_CHAN_WIDTH_POS)
|
|
|
deb259 |
- CHECK_BW(20);
|
|
|
deb259 |
- CHECK_BW(40);
|
|
|
deb259 |
- CHECK_BW(80);
|
|
|
deb259 |
- CHECK_BW(160);
|
|
|
deb259 |
- he_mu->flags2 |=
|
|
|
deb259 |
- le16_encode_bits(FIELD_GET(RATE_MCS_CHAN_WIDTH_MSK,
|
|
|
deb259 |
- rate_n_flags),
|
|
|
deb259 |
- IEEE80211_RADIOTAP_HE_MU_FLAGS2_BW_FROM_SIG_A_BW);
|
|
|
deb259 |
- }
|
|
|
deb259 |
- } else if (he_type == RATE_MCS_HE_TYPE_SU ||
|
|
|
deb259 |
- he_type == RATE_MCS_HE_TYPE_EXT_SU) {
|
|
|
deb259 |
+ } else {
|
|
|
deb259 |
he->data1 |=
|
|
|
deb259 |
cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA1_BW_RU_ALLOC_KNOWN);
|
|
|
deb259 |
}
|
|
|
deb259 |
@@ -1330,21 +1243,6 @@
|
|
|
deb259 |
|
|
|
deb259 |
rx_status = IEEE80211_SKB_RXCB(skb);
|
|
|
deb259 |
|
|
|
deb259 |
- /* This may be overridden by iwl_mvm_rx_he() to HE_RU */
|
|
|
deb259 |
- switch (rate_n_flags & RATE_MCS_CHAN_WIDTH_MSK) {
|
|
|
deb259 |
- case RATE_MCS_CHAN_WIDTH_20:
|
|
|
deb259 |
- break;
|
|
|
deb259 |
- case RATE_MCS_CHAN_WIDTH_40:
|
|
|
deb259 |
- rx_status->bw = RATE_INFO_BW_40;
|
|
|
deb259 |
- break;
|
|
|
deb259 |
- case RATE_MCS_CHAN_WIDTH_80:
|
|
|
deb259 |
- rx_status->bw = RATE_INFO_BW_80;
|
|
|
deb259 |
- break;
|
|
|
deb259 |
- case RATE_MCS_CHAN_WIDTH_160:
|
|
|
deb259 |
- rx_status->bw = RATE_INFO_BW_160;
|
|
|
deb259 |
- break;
|
|
|
deb259 |
- }
|
|
|
deb259 |
-
|
|
|
deb259 |
if (rate_n_flags & RATE_MCS_HE_MSK)
|
|
|
deb259 |
iwl_mvm_rx_he(mvm, skb, desc, rate_n_flags, phy_info, queue);
|
|
|
deb259 |
|
|
|
deb259 |
@@ -1522,6 +1420,20 @@
|
|
|
deb259 |
}
|
|
|
deb259 |
}
|
|
|
deb259 |
|
|
|
deb259 |
+ switch (rate_n_flags & RATE_MCS_CHAN_WIDTH_MSK) {
|
|
|
deb259 |
+ case RATE_MCS_CHAN_WIDTH_20:
|
|
|
deb259 |
+ break;
|
|
|
deb259 |
+ case RATE_MCS_CHAN_WIDTH_40:
|
|
|
deb259 |
+ rx_status->bw = RATE_INFO_BW_40;
|
|
|
deb259 |
+ break;
|
|
|
deb259 |
+ case RATE_MCS_CHAN_WIDTH_80:
|
|
|
deb259 |
+ rx_status->bw = RATE_INFO_BW_80;
|
|
|
deb259 |
+ break;
|
|
|
deb259 |
+ case RATE_MCS_CHAN_WIDTH_160:
|
|
|
deb259 |
+ rx_status->bw = RATE_INFO_BW_160;
|
|
|
deb259 |
+ break;
|
|
|
deb259 |
+ }
|
|
|
deb259 |
+
|
|
|
deb259 |
if (!(rate_n_flags & RATE_MCS_CCK_MSK) &&
|
|
|
deb259 |
rate_n_flags & RATE_MCS_SGI_MSK)
|
|
|
deb259 |
rx_status->enc_flags |= RX_ENC_FLAG_SHORT_GI;
|