Blame SOURCES/0091-Revert-iwlwifi-mvm-handle-RX-no-data-notification.patch

deb259
From 25fcfd03d3382e76ec0f7ababb9176ed3ccff37a Mon Sep 17 00:00:00 2001
deb259
From: Eugene Syromiatnikov <esyr@redhat.com>
deb259
Date: Fri, 6 Sep 2019 02:16:05 +0200
deb259
Subject: [PATCH 3/4] Revert "iwlwifi: mvm: handle RX no data notification"
deb259
deb259
This reverts commit bf9dfedaad9e65f2f580d3a573401d521d48b932.
deb259
---
deb259
 .../net/wireless/intel/iwlwifi/fw/api/datapath.h   |   5 -
deb259
 drivers/net/wireless/intel/iwlwifi/fw/api/rx.h     |  49 --------
deb259
 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h       |   2 -
deb259
 drivers/net/wireless/intel/iwlwifi/mvm/ops.c       |   2 -
deb259
 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c      | 128 +--------------------
deb259
 5 files changed, 1 insertion(+), 185 deletions(-)
deb259
deb259
Index: src/drivers/net/wireless/intel/iwlwifi/fw/api/datapath.h
deb259
===================================================================
deb259
--- src.orig/drivers/net/wireless/intel/iwlwifi/fw/api/datapath.h	2019-09-06 15:31:57.823938961 +0200
deb259
+++ src/drivers/net/wireless/intel/iwlwifi/fw/api/datapath.h	2019-09-06 15:31:58.340930764 +0200
deb259
@@ -105,11 +105,6 @@
deb259
 	HE_AIR_SNIFFER_CONFIG_CMD = 0x13,
deb259
 
deb259
 	/**
deb259
-	 * @RX_NO_DATA_NOTIF: &struct iwl_rx_no_data
deb259
-	 */
deb259
-	RX_NO_DATA_NOTIF = 0xF5,
deb259
-
deb259
-	/**
deb259
 	 * @TLC_MNG_UPDATE_NOTIF: &struct iwl_tlc_update_notif
deb259
 	 */
deb259
 	TLC_MNG_UPDATE_NOTIF = 0xF7,
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 15:31:58.160933618 +0200
deb259
+++ src/drivers/net/wireless/intel/iwlwifi/fw/api/rx.h	2019-09-06 15:31:58.340930764 +0200
deb259
@@ -483,55 +483,6 @@
deb259
 	};
deb259
 } __packed;
deb259
 
deb259
-#define RX_NO_DATA_CHAIN_A_POS		0
deb259
-#define RX_NO_DATA_CHAIN_A_MSK		(0xff << RX_NO_DATA_CHAIN_A_POS)
deb259
-#define RX_NO_DATA_CHAIN_B_POS		8
deb259
-#define RX_NO_DATA_CHAIN_B_MSK		(0xff << RX_NO_DATA_CHAIN_B_POS)
deb259
-#define RX_NO_DATA_CHANNEL_POS		16
deb259
-#define RX_NO_DATA_CHANNEL_MSK		(0xff << RX_NO_DATA_CHANNEL_POS)
deb259
-
deb259
-#define RX_NO_DATA_INFO_TYPE_POS	0
deb259
-#define RX_NO_DATA_INFO_TYPE_MSK	(0xff << RX_NO_DATA_INFO_TYPE_POS)
deb259
-#define RX_NO_DATA_INFO_TYPE_NONE	0
deb259
-#define RX_NO_DATA_INFO_TYPE_RX_ERR	1
deb259
-#define RX_NO_DATA_INFO_TYPE_NDP	2
deb259
-#define RX_NO_DATA_INFO_TYPE_MU_UNMATCHED	3
deb259
-#define RX_NO_DATA_INFO_TYPE_HE_TB_UNMATCHED	4
deb259
-
deb259
-#define RX_NO_DATA_INFO_ERR_POS		8
deb259
-#define RX_NO_DATA_INFO_ERR_MSK		(0xff << RX_NO_DATA_INFO_ERR_POS)
deb259
-#define RX_NO_DATA_INFO_ERR_NONE	0
deb259
-#define RX_NO_DATA_INFO_ERR_BAD_PLCP	1
deb259
-#define RX_NO_DATA_INFO_ERR_UNSUPPORTED_RATE	2
deb259
-#define RX_NO_DATA_INFO_ERR_NO_DELIM		3
deb259
-#define RX_NO_DATA_INFO_ERR_BAD_MAC_HDR	4
deb259
-
deb259
-#define RX_NO_DATA_FRAME_TIME_POS	0
deb259
-#define RX_NO_DATA_FRAME_TIME_MSK	(0xfffff << RX_NO_DATA_FRAME_TIME_POS)
deb259
-
deb259
-/**
deb259
- * struct iwl_rx_no_data - RX no data descriptor
deb259
- * @info: 7:0 frame type, 15:8 RX error type
deb259
- * @rssi: 7:0 energy chain-A,
deb259
- *	15:8 chain-B, measured at FINA time (FINA_ENERGY), 16:23 channel
deb259
- * @on_air_rise_time: GP2 during on air rise
deb259
- * @fr_time: frame time
deb259
- * @rate: rate/mcs of frame
deb259
- * @phy_info: &enum iwl_rx_phy_data0 and &enum iwl_rx_phy_info_type
deb259
- * @rx_vec: DW-12:9 raw RX vectors from DSP according to modulation type.
deb259
- *	for VHT: OFDM_RX_VECTOR_SIGA1_OUT, OFDM_RX_VECTOR_SIGA2_OUT
deb259
- *	for HE: OFDM_RX_VECTOR_HE_SIGA1_OUT, OFDM_RX_VECTOR_HE_SIGA2_OUT
deb259
- */
deb259
-struct iwl_rx_no_data {
deb259
-	__le32 info;
deb259
-	__le32 rssi;
deb259
-	__le32 on_air_rise_time;
deb259
-	__le32 fr_time;
deb259
-	__le32 rate;
deb259
-	__le32 phy_info[2];
deb259
-	__le32 rx_vec[3];
deb259
-} __packed; /* RX_NO_DATA_NTFY_API_S_VER_1 */
deb259
-
deb259
 struct iwl_frame_release {
deb259
 	u8 baid;
deb259
 	u8 reserved;
deb259
Index: src/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h
deb259
===================================================================
deb259
--- src.orig/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h	2019-09-06 15:31:37.675258420 +0200
deb259
+++ src/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h	2019-09-06 15:31:58.340930764 +0200
deb259
@@ -1598,8 +1598,6 @@
deb259
 			struct iwl_rx_cmd_buffer *rxb);
deb259
 void iwl_mvm_rx_mpdu_mq(struct iwl_mvm *mvm, struct napi_struct *napi,
deb259
 			struct iwl_rx_cmd_buffer *rxb, int queue);
deb259
-void iwl_mvm_rx_monitor_ndp(struct iwl_mvm *mvm, struct napi_struct *napi,
deb259
-			    struct iwl_rx_cmd_buffer *rxb, int queue);
deb259
 void iwl_mvm_rx_frame_release(struct iwl_mvm *mvm, struct napi_struct *napi,
deb259
 			      struct iwl_rx_cmd_buffer *rxb, int queue);
deb259
 int iwl_mvm_notify_rx_queue(struct iwl_mvm *mvm, u32 rxq_mask,
deb259
Index: src/drivers/net/wireless/intel/iwlwifi/mvm/ops.c
deb259
===================================================================
deb259
--- src.orig/drivers/net/wireless/intel/iwlwifi/mvm/ops.c	2019-09-06 15:31:57.825938929 +0200
deb259
+++ src/drivers/net/wireless/intel/iwlwifi/mvm/ops.c	2019-09-06 15:31:58.340930764 +0200
deb259
@@ -1078,8 +1078,6 @@
deb259
 		iwl_mvm_rx_queue_notif(mvm, rxb, 0);
deb259
 	else if (cmd == WIDE_ID(LEGACY_GROUP, FRAME_RELEASE))
deb259
 		iwl_mvm_rx_frame_release(mvm, napi, rxb, 0);
deb259
-	else if (cmd == WIDE_ID(DATA_PATH_GROUP, RX_NO_DATA_NOTIF))
deb259
-		iwl_mvm_rx_monitor_ndp(mvm, napi, rxb, 0);
deb259
 	else
deb259
 		iwl_mvm_rx_common(mvm, rxb, pkt);
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 15:31:58.160933618 +0200
deb259
+++ src/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c	2019-09-06 15:31:58.341930748 +0200
deb259
@@ -214,10 +214,7 @@
deb259
 					    struct sk_buff *skb, int queue,
deb259
 					    struct ieee80211_sta *sta)
deb259
 {
deb259
-	struct ieee80211_rx_status *rx_status = IEEE80211_SKB_RXCB(skb);
deb259
-
deb259
-	if (!(rx_status->flag & RX_FLAG_NO_PSDU) &&
deb259
-	    iwl_mvm_check_pn(mvm, skb, queue, sta))
deb259
+	if (iwl_mvm_check_pn(mvm, skb, queue, sta))
deb259
 		kfree_skb(skb);
deb259
 	else
deb259
 		ieee80211_rx_napi(mvm->hw, sta, skb, napi);
deb259
@@ -1140,129 +1137,6 @@
deb259
 	rcu_read_unlock();
deb259
 }
deb259
 
deb259
-void iwl_mvm_rx_monitor_ndp(struct iwl_mvm *mvm, struct napi_struct *napi,
deb259
-			    struct iwl_rx_cmd_buffer *rxb, int queue)
deb259
-{
deb259
-	struct ieee80211_rx_status *rx_status;
deb259
-	struct iwl_rx_packet *pkt = rxb_addr(rxb);
deb259
-	struct iwl_rx_no_data *desc = (void *)pkt->data;
deb259
-	u32 rate_n_flags = le32_to_cpu(desc->rate);
deb259
-	u32 gp2_on_air_rise = le32_to_cpu(desc->on_air_rise_time);
deb259
-	u32 rssi = le32_to_cpu(desc->rssi);
deb259
-	u32 info_type = le32_to_cpu(desc->info) & RX_NO_DATA_INFO_TYPE_MSK;
deb259
-	u16 phy_info = IWL_RX_MPDU_PHY_TSF_OVERLOAD;
deb259
-	struct ieee80211_sta *sta = NULL;
deb259
-	struct sk_buff *skb;
deb259
-	u8 channel, energy_a, energy_b;
deb259
-	struct iwl_mvm_rx_phy_data phy_data = {
deb259
-		.d0 = desc->phy_info[0],
deb259
-		.info_type = IWL_RX_PHY_INFO_TYPE_NONE,
deb259
-	};
deb259
-
deb259
-	if (unlikely(test_bit(IWL_MVM_STATUS_IN_HW_RESTART, &mvm->status)))
deb259
-		return;
deb259
-
deb259
-	/* Currently only NDP type is supported */
deb259
-	if (info_type != RX_NO_DATA_INFO_TYPE_NDP)
deb259
-		return;
deb259
-
deb259
-	energy_a = (rssi & RX_NO_DATA_CHAIN_A_MSK) >> RX_NO_DATA_CHAIN_A_POS;
deb259
-	energy_b = (rssi & RX_NO_DATA_CHAIN_B_MSK) >> RX_NO_DATA_CHAIN_B_POS;
deb259
-	channel = (rssi & RX_NO_DATA_CHANNEL_MSK) >> RX_NO_DATA_CHANNEL_POS;
deb259
-
deb259
-	phy_data.info_type =
deb259
-		le32_get_bits(desc->phy_info[1],
deb259
-			      IWL_RX_PHY_DATA1_INFO_TYPE_MASK);
deb259
-
deb259
-	/* Dont use dev_alloc_skb(), we'll have enough headroom once
deb259
-	 * ieee80211_hdr pulled.
deb259
-	 */
deb259
-	skb = alloc_skb(128, GFP_ATOMIC);
deb259
-	if (!skb) {
deb259
-		IWL_ERR(mvm, "alloc_skb failed\n");
deb259
-		return;
deb259
-	}
deb259
-
deb259
-	rx_status = IEEE80211_SKB_RXCB(skb);
deb259
-
deb259
-	/* 0-length PSDU */
deb259
-	rx_status->flag |= RX_FLAG_NO_PSDU;
deb259
-	/* currently this is the only type for which we get this notif */
deb259
-	rx_status->zero_length_psdu_type =
deb259
-		IEEE80211_RADIOTAP_ZERO_LEN_PSDU_SOUNDING;
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, &phy_data, rate_n_flags,
deb259
-			      phy_info, queue);
deb259
-
deb259
-	iwl_mvm_decode_lsig(skb, &phy_data);
deb259
-
deb259
-	rx_status->device_timestamp = gp2_on_air_rise;
deb259
-	rx_status->band = channel > 14 ? NL80211_BAND_5GHZ :
deb259
-		NL80211_BAND_2GHZ;
deb259
-	rx_status->freq = ieee80211_channel_to_frequency(channel,
deb259
-							 rx_status->band);
deb259
-	iwl_mvm_get_signal_strength(mvm, rx_status, rate_n_flags, energy_a,
deb259
-				    energy_b);
deb259
-
deb259
-	rcu_read_lock();
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;
deb259
-	if (rate_n_flags & RATE_HT_MCS_GF_MSK)
deb259
-		rx_status->enc_flags |= RX_ENC_FLAG_HT_GF;
deb259
-	if (rate_n_flags & RATE_MCS_LDPC_MSK)
deb259
-		rx_status->enc_flags |= RX_ENC_FLAG_LDPC;
deb259
-	if (rate_n_flags & RATE_MCS_HT_MSK) {
deb259
-		u8 stbc = (rate_n_flags & RATE_MCS_STBC_MSK) >>
deb259
-				RATE_MCS_STBC_POS;
deb259
-		rx_status->encoding = RX_ENC_HT;
deb259
-		rx_status->rate_idx = rate_n_flags & RATE_HT_MCS_INDEX_MSK;
deb259
-		rx_status->enc_flags |= stbc << RX_ENC_FLAG_STBC_SHIFT;
deb259
-	} else if (rate_n_flags & RATE_MCS_VHT_MSK) {
deb259
-		u8 stbc = (rate_n_flags & RATE_MCS_STBC_MSK) >>
deb259
-				RATE_MCS_STBC_POS;
deb259
-		rx_status->nss =
deb259
-			((rate_n_flags & RATE_VHT_MCS_NSS_MSK) >>
deb259
-						RATE_VHT_MCS_NSS_POS) + 1;
deb259
-		rx_status->rate_idx = rate_n_flags & RATE_VHT_MCS_RATE_CODE_MSK;
deb259
-		rx_status->encoding = RX_ENC_VHT;
deb259
-		rx_status->enc_flags |= stbc << RX_ENC_FLAG_STBC_SHIFT;
deb259
-		if (rate_n_flags & RATE_MCS_BF_MSK)
deb259
-			rx_status->enc_flags |= RX_ENC_FLAG_BF;
deb259
-	} else if (!(rate_n_flags & RATE_MCS_HE_MSK)) {
deb259
-		int rate = iwl_mvm_legacy_rate_to_mac80211_idx(rate_n_flags,
deb259
-							       rx_status->band);
deb259
-
deb259
-		if (WARN(rate < 0 || rate > 0xFF,
deb259
-			 "Invalid rate flags 0x%x, band %d,\n",
deb259
-			 rate_n_flags, rx_status->band)) {
deb259
-			kfree_skb(skb);
deb259
-			goto out;
deb259
-		}
deb259
-		rx_status->rate_idx = rate;
deb259
-	}
deb259
-
deb259
-	iwl_mvm_pass_packet_to_mac80211(mvm, napi, skb, queue, sta);
deb259
-out:
deb259
-	rcu_read_unlock();
deb259
-}
deb259
 void iwl_mvm_rx_frame_release(struct iwl_mvm *mvm, struct napi_struct *napi,
deb259
 			      struct iwl_rx_cmd_buffer *rxb, int queue)
deb259
 {