Blame SOURCES/0052-Revert-iwlwifi-mvm-pull-some-he_phy_data-decoding-in.patch

deb259
From a88d3a6f3ceecd318bfe4b27ca6ccd37787389a2 Mon Sep 17 00:00:00 2001
deb259
From: Eugene Syromiatnikov <esyr@redhat.com>
deb259
Date: Thu, 5 Sep 2019 18:46:46 +0200
deb259
Subject: [PATCH 23/43] Revert "iwlwifi: mvm: pull some he_phy_data decoding
deb259
 into a separate function"
deb259
deb259
This reverts commit 59b8cf0cfb5ac508e362ae1ddf0dfb91744856fb.
deb259
---
deb259
 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c | 105 +++++++++++---------------
deb259
 1 file changed, 46 insertions(+), 59 deletions(-)
deb259
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:44.206308516 +0200
deb259
+++ src/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c	2019-09-06 01:25:44.369306437 +0200
deb259
@@ -963,60 +963,6 @@
deb259
 	}
deb259
 }
deb259
 
deb259
-static void iwl_mvm_decode_he_phy_data(struct iwl_mvm *mvm,
deb259
-				       struct iwl_rx_mpdu_desc *desc,
deb259
-				       struct ieee80211_radiotap_he *he,
deb259
-				       struct ieee80211_radiotap_he_mu *he_mu,
deb259
-				       u64 he_phy_data, u32 rate_n_flags,
deb259
-				       int queue)
deb259
-{
deb259
-	u32 he_type = rate_n_flags & RATE_MCS_HE_TYPE_MSK;
deb259
-
deb259
-	he->data1 |= cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA1_BSS_COLOR_KNOWN);
deb259
-	he->data3 |= 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
-	if (he_mu) {
deb259
-		bool sigb_data;
deb259
-
deb259
-		he_mu->flags1 |=
deb259
-			le16_encode_bits(FIELD_GET(IWL_RX_HE_PHY_MU_SIGB_DCM,
deb259
-						   he_phy_data),
deb259
-					 IEEE80211_RADIOTAP_HE_MU_FLAGS1_SIG_B_DCM);
deb259
-		he_mu->flags1 |=
deb259
-			le16_encode_bits(FIELD_GET(IWL_RX_HE_PHY_MU_SIGB_MCS_MASK,
deb259
-						   he_phy_data),
deb259
-					 IEEE80211_RADIOTAP_HE_MU_FLAGS1_SIG_B_MCS);
deb259
-		he_mu->flags2 |=
deb259
-			le16_encode_bits(FIELD_GET(IWL_RX_HE_PHY_MU_SIBG_SYM_OR_USER_NUM_MASK,
deb259
-						  he_phy_data),
deb259
-					IEEE80211_RADIOTAP_HE_MU_FLAGS2_SIG_B_SYMS_USERS);
deb259
-		he_mu->flags2 |=
deb259
-			le16_encode_bits(FIELD_GET(IWL_RX_HE_PHY_MU_SIGB_COMPRESSION,
deb259
-						   he_phy_data),
deb259
-					 IEEE80211_RADIOTAP_HE_MU_FLAGS2_SIG_B_COMP);
deb259
-		he_mu->flags2 |=
deb259
-			le16_encode_bits(FIELD_GET(IWL_RX_HE_PHY_MU_PREAMBLE_PUNC_TYPE_MASK,
deb259
-						   he_phy_data),
deb259
-					 IEEE80211_RADIOTAP_HE_MU_FLAGS2_PUNC_FROM_SIG_A_BW);
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, rate_n_flags, he_mu);
deb259
-	}
deb259
-
deb259
-	if (he_type != RATE_MCS_HE_TYPE_TRIG) {
deb259
-		he->data1 |=
deb259
-			cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA1_UL_DL_KNOWN);
deb259
-		if (FIELD_GET(IWL_RX_HE_PHY_UPLINK, he_phy_data))
deb259
-			he->data3 |=
deb259
-				cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA3_UL_DL);
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
@@ -1046,6 +992,7 @@
deb259
 				      IEEE80211_RADIOTAP_HE_MU_FLAGS2_BW_FROM_SIG_A_BW_KNOWN),
deb259
 	};
deb259
 	unsigned int radiotap_len = 0;
deb259
+	bool sigb_data = false;
deb259
 
deb259
 	he = skb_put_data(skb, &known, sizeof(known));
deb259
 	radiotap_len += sizeof(known);
deb259
@@ -1069,18 +1016,58 @@
deb259
 
deb259
 	if (he_phy_data != HE_PHY_DATA_INVAL &&
deb259
 	    he_type == RATE_MCS_HE_TYPE_SU) {
deb259
-		/* report the AMPDU-EOF bit on single frames */
deb259
+		he->data1 |=
deb259
+			cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA1_UL_DL_KNOWN);
deb259
+		if (FIELD_GET(IWL_RX_HE_PHY_UPLINK, he_phy_data))
deb259
+			he->data3 |=
deb259
+				cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA3_UL_DL);
deb259
+
deb259
 		if (!queue && !(phy_info & IWL_RX_MPDU_PHY_AMPDU)) {
deb259
 			rx_status->flag |= RX_FLAG_AMPDU_DETAILS;
deb259
 			rx_status->flag |= RX_FLAG_AMPDU_EOF_BIT_KNOWN;
deb259
 			if (FIELD_GET(IWL_RX_HE_PHY_DELIM_EOF, he_phy_data))
deb259
 				rx_status->flag |= RX_FLAG_AMPDU_EOF_BIT;
deb259
 		}
deb259
-	}
deb259
+	} else if (he_phy_data != HE_PHY_DATA_INVAL && he_mu) {
deb259
+		he_mu->flags1 |=
deb259
+			le16_encode_bits(FIELD_GET(IWL_RX_HE_PHY_MU_SIGB_DCM,
deb259
+						   he_phy_data),
deb259
+					 IEEE80211_RADIOTAP_HE_MU_FLAGS1_SIG_B_DCM);
deb259
+		he_mu->flags1 |=
deb259
+			le16_encode_bits(FIELD_GET(IWL_RX_HE_PHY_MU_SIGB_MCS_MASK,
deb259
+						   he_phy_data),
deb259
+					 IEEE80211_RADIOTAP_HE_MU_FLAGS1_SIG_B_MCS);
deb259
+		he_mu->flags2 |=
deb259
+			le16_encode_bits(FIELD_GET(IWL_RX_HE_PHY_MU_SIBG_SYM_OR_USER_NUM_MASK,
deb259
+						   he_phy_data),
deb259
+					 IEEE80211_RADIOTAP_HE_MU_FLAGS2_SIG_B_SYMS_USERS);
deb259
+		he_mu->flags2 |=
deb259
+			le16_encode_bits(FIELD_GET(IWL_RX_HE_PHY_MU_SIGB_COMPRESSION,
deb259
+						   he_phy_data),
deb259
+					 IEEE80211_RADIOTAP_HE_MU_FLAGS2_SIG_B_COMP);
deb259
+		he_mu->flags2 |=
deb259
+			le16_encode_bits(FIELD_GET(IWL_RX_HE_PHY_MU_PREAMBLE_PUNC_TYPE_MASK,
deb259
+						   he_phy_data),
deb259
+					 IEEE80211_RADIOTAP_HE_MU_FLAGS2_PUNC_FROM_SIG_A_BW);
deb259
 
deb259
-	if (he_phy_data != HE_PHY_DATA_INVAL)
deb259
-		iwl_mvm_decode_he_phy_data(mvm, desc, he, he_mu, he_phy_data,
deb259
-					   rate_n_flags, queue);
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, rate_n_flags, 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
+	}
deb259
 
deb259
 	/* update aggregation data for monitor sake on default queue */
deb259
 	if (!queue && (phy_info & IWL_RX_MPDU_PHY_AMPDU)) {