Blob Blame History Raw
From 98d3e208e4ec5731aa4a310adfc6d59685e6d6b2 Mon Sep 17 00:00:00 2001
From: Eugene Syromiatnikov <esyr@redhat.com>
Date: Thu, 25 Jul 2019 13:54:10 +0200
Subject: [PATCH 7/7] Revert "iwlwifi: mvm: support FTM responder"

This reverts commit b73f9a4ae77d448eb501f746d3bbe1b737f38681.
---
 drivers/net/wireless/intel/iwlwifi/fw/file.h       |   6 -
 drivers/net/wireless/intel/iwlwifi/mvm/Makefile    |   2 +-
 .../net/wireless/intel/iwlwifi/mvm/ftm-responder.c | 244 ---------------------
 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c  |  92 +-------
 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h       |   9 -
 drivers/net/wireless/intel/iwlwifi/mvm/ops.c       |   2 -
 6 files changed, 5 insertions(+), 350 deletions(-)
 delete mode 100644 drivers/net/wireless/intel/iwlwifi/mvm/ftm-responder.c

Index: src/drivers/net/wireless/intel/iwlwifi/fw/file.h
===================================================================
--- src.orig/drivers/net/wireless/intel/iwlwifi/fw/file.h	2019-07-25 13:55:50.467603040 +0200
+++ src/drivers/net/wireless/intel/iwlwifi/fw/file.h	2019-07-25 13:56:30.727060711 +0200
@@ -394,15 +394,12 @@
  *	capability.
  * @IWL_UCODE_TLV_CAPA_CSI_REPORTING: firmware is capable of being configured
  *	to report the CSI information with (certain) RX frames
- * @IWL_UCODE_TLV_CAPA_FTM_CALIBRATED: has FTM calibrated and thus supports both
- *	initiator and responder
  *
  * @IWL_UCODE_TLV_CAPA_MLME_OFFLOAD: supports MLME offload
  *
  * @NUM_IWL_UCODE_TLV_CAPA: number of bits used
  */
 enum iwl_ucode_tlv_capa {
-	/* set 0 */
 	IWL_UCODE_TLV_CAPA_D0I3_SUPPORT			= (__force iwl_ucode_tlv_capa_t)0,
 	IWL_UCODE_TLV_CAPA_LAR_SUPPORT			= (__force iwl_ucode_tlv_capa_t)1,
 	IWL_UCODE_TLV_CAPA_UMAC_SCAN			= (__force iwl_ucode_tlv_capa_t)2,
@@ -424,8 +421,6 @@
 	IWL_UCODE_TLV_CAPA_LAR_MULTI_MCC		= (__force iwl_ucode_tlv_capa_t)29,
 	IWL_UCODE_TLV_CAPA_BT_COEX_RRC			= (__force iwl_ucode_tlv_capa_t)30,
 	IWL_UCODE_TLV_CAPA_GSCAN_SUPPORT		= (__force iwl_ucode_tlv_capa_t)31,
-
-	/* set 1 */
 	IWL_UCODE_TLV_CAPA_STA_PM_NOTIF			= (__force iwl_ucode_tlv_capa_t)38,
 	IWL_UCODE_TLV_CAPA_BINDING_CDB_SUPPORT		= (__force iwl_ucode_tlv_capa_t)39,
 	IWL_UCODE_TLV_CAPA_CDB_SUPPORT			= (__force iwl_ucode_tlv_capa_t)40,
@@ -459,7 +454,6 @@
 	IWL_UCODE_TLV_CAPA_MCC_UPDATE_11AX_SUPPORT	= (__force iwl_ucode_tlv_capa_t)89,
 	IWL_UCODE_TLV_CAPA_CSI_REPORTING		= (__force iwl_ucode_tlv_capa_t)90,
 
-	/* set 3 */
 	IWL_UCODE_TLV_CAPA_MLME_OFFLOAD			= (__force iwl_ucode_tlv_capa_t)96,
 
 	NUM_IWL_UCODE_TLV_CAPA
Index: src/drivers/net/wireless/intel/iwlwifi/mvm/Makefile
===================================================================
--- src.orig/drivers/net/wireless/intel/iwlwifi/mvm/Makefile	2019-07-25 13:56:03.737424284 +0200
+++ src/drivers/net/wireless/intel/iwlwifi/mvm/Makefile	2019-07-25 13:56:30.728060698 +0200
@@ -4,7 +4,7 @@
 iwlmvm-y += utils.o rx.o rxmq.o tx.o binding.o quota.o sta.o sf.o
 iwlmvm-y += scan.o time-event.o rs.o rs-fw.o
 iwlmvm-y += power.o coex.o
-iwlmvm-y += tt.o offloading.o tdls.o ftm-responder.o
+iwlmvm-y += tt.o offloading.o tdls.o
 iwlmvm-$(CONFIG_IWLWIFI_DEBUGFS) += debugfs.o debugfs-vif.o
 iwlmvm-$(CONFIG_IWLWIFI_LEDS) += led.o
 iwlmvm-$(CONFIG_PM) += d3.o
Index: src/drivers/net/wireless/intel/iwlwifi/mvm/ftm-responder.c
===================================================================
--- src.orig/drivers/net/wireless/intel/iwlwifi/mvm/ftm-responder.c	2019-06-27 14:54:04.133678337 +0200
+++ /dev/null	1970-01-01 00:00:00.000000000 +0000
@@ -1,244 +0,0 @@
-/******************************************************************************
- *
- * This file is provided under a dual BSD/GPLv2 license.  When using or
- * redistributing this file, you may do so under either license.
- *
- * GPL LICENSE SUMMARY
- *
- * Copyright(c) 2015 - 2017 Intel Deutschland GmbH
- * Copyright (C) 2018 Intel Corporation
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of version 2 of the GNU General Public License as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * The full GNU General Public License is included in this distribution
- * in the file called COPYING.
- *
- * Contact Information:
- * Intel Linux Wireless <linuxwifi@intel.com>
- * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
- *
- * BSD LICENSE
- *
- * Copyright(c) 2015 - 2017 Intel Deutschland GmbH
- * Copyright (C) 2018 Intel Corporation
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *  * Neither the name Intel Corporation nor the names of its
- *    contributors may be used to endorse or promote products derived
- *    from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *****************************************************************************/
-#include <net/cfg80211.h>
-#include <linux/etherdevice.h>
-#include "mvm.h"
-#include "constants.h"
-
-static int
-iwl_mvm_ftm_responder_cmd(struct iwl_mvm *mvm,
-			  struct ieee80211_vif *vif,
-			  struct cfg80211_chan_def *chandef)
-{
-	struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif);
-	struct iwl_tof_responder_config_cmd cmd = {
-		.channel_num = chandef->chan->hw_value,
-		.cmd_valid_fields =
-			cpu_to_le32(IWL_TOF_RESPONDER_CMD_VALID_CHAN_INFO |
-				    IWL_TOF_RESPONDER_CMD_VALID_BSSID |
-				    IWL_TOF_RESPONDER_CMD_VALID_STA_ID),
-		.sta_id = mvmvif->bcast_sta.sta_id,
-	};
-
-	lockdep_assert_held(&mvm->mutex);
-
-	switch (chandef->width) {
-	case NL80211_CHAN_WIDTH_20_NOHT:
-		cmd.bandwidth = IWL_TOF_BW_20_LEGACY;
-		break;
-	case NL80211_CHAN_WIDTH_20:
-		cmd.bandwidth = IWL_TOF_BW_20_HT;
-		break;
-	case NL80211_CHAN_WIDTH_40:
-		cmd.bandwidth = IWL_TOF_BW_40;
-		cmd.ctrl_ch_position = iwl_mvm_get_ctrl_pos(chandef);
-		break;
-	case NL80211_CHAN_WIDTH_80:
-		cmd.bandwidth = IWL_TOF_BW_80;
-		cmd.ctrl_ch_position = iwl_mvm_get_ctrl_pos(chandef);
-		break;
-	default:
-		WARN_ON(1);
-		return -EINVAL;
-	}
-
-	memcpy(cmd.bssid, vif->addr, ETH_ALEN);
-
-	return iwl_mvm_send_cmd_pdu(mvm, iwl_cmd_id(TOF_RESPONDER_CONFIG_CMD,
-						    LOCATION_GROUP, 0),
-				    0, sizeof(cmd), &cmd);
-}
-
-static int
-iwl_mvm_ftm_responder_dyn_cfg_cmd(struct iwl_mvm *mvm,
-				  struct ieee80211_vif *vif,
-				  struct ieee80211_ftm_responder_params *params)
-{
-	struct iwl_tof_responder_dyn_config_cmd cmd = {
-		.lci_len = cpu_to_le32(params->lci_len + 2),
-		.civic_len = cpu_to_le32(params->civicloc_len + 2),
-	};
-	u8 data[IWL_LCI_CIVIC_IE_MAX_SIZE] = {0};
-	struct iwl_host_cmd hcmd = {
-		.id = iwl_cmd_id(TOF_RESPONDER_DYN_CONFIG_CMD,
-				 LOCATION_GROUP, 0),
-		.data[0] = &cmd,
-		.len[0] = sizeof(cmd),
-		.data[1] = &data,
-		/* .len[1] set later */
-		/* may not be able to DMA from stack */
-		.dataflags[1] = IWL_HCMD_DFL_DUP,
-	};
-	u32 aligned_lci_len = ALIGN(params->lci_len + 2, 4);
-	u32 aligned_civicloc_len = ALIGN(params->civicloc_len + 2, 4);
-	u8 *pos = data;
-
-	lockdep_assert_held(&mvm->mutex);
-
-	if (aligned_lci_len + aligned_civicloc_len > sizeof(data)) {
-		IWL_ERR(mvm, "LCI/civicloc data too big (%zd + %zd)\n",
-			params->lci_len, params->civicloc_len);
-		return -ENOBUFS;
-	}
-
-	pos[0] = WLAN_EID_MEASURE_REPORT;
-	pos[1] = params->lci_len;
-	memcpy(pos + 2, params->lci, params->lci_len);
-
-	pos += aligned_lci_len;
-	pos[0] = WLAN_EID_MEASURE_REPORT;
-	pos[1] = params->civicloc_len;
-	memcpy(pos + 2, params->civicloc, params->civicloc_len);
-
-	hcmd.len[1] = aligned_lci_len + aligned_civicloc_len;
-
-	return iwl_mvm_send_cmd(mvm, &hcmd);
-}
-
-int iwl_mvm_ftm_start_responder(struct iwl_mvm *mvm, struct ieee80211_vif *vif)
-{
-	struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif);
-	struct ieee80211_ftm_responder_params *params;
-	struct ieee80211_chanctx_conf ctx, *pctx;
-	u16 *phy_ctxt_id;
-	struct iwl_mvm_phy_ctxt *phy_ctxt;
-	int ret;
-
-	params = vif->bss_conf.ftmr_params;
-
-	lockdep_assert_held(&mvm->mutex);
-
-	if (WARN_ON_ONCE(!vif->bss_conf.ftm_responder))
-		return -EINVAL;
-
-	if (vif->p2p || vif->type != NL80211_IFTYPE_AP ||
-	    !mvmvif->ap_ibss_active) {
-		IWL_ERR(mvm, "Cannot start responder, not in AP mode\n");
-		return -EIO;
-	}
-
-	rcu_read_lock();
-	pctx = rcu_dereference(vif->chanctx_conf);
-	/* Copy the ctx to unlock the rcu and send the phy ctxt. We don't care
-	 * about changes in the ctx after releasing the lock because the driver
-	 * is still protected by the mutex. */
-	ctx = *pctx;
-	phy_ctxt_id  = (u16 *)pctx->drv_priv;
-	rcu_read_unlock();
-
-	phy_ctxt = &mvm->phy_ctxts[*phy_ctxt_id];
-	ret = iwl_mvm_phy_ctxt_changed(mvm, phy_ctxt, &ctx.def,
-				       ctx.rx_chains_static,
-				       ctx.rx_chains_dynamic);
-	if (ret)
-		return ret;
-
-	ret = iwl_mvm_ftm_responder_cmd(mvm, vif, &ctx.def);
-	if (ret)
-		return ret;
-
-	if (params)
-		ret = iwl_mvm_ftm_responder_dyn_cfg_cmd(mvm, vif, params);
-
-	return ret;
-}
-
-void iwl_mvm_ftm_restart_responder(struct iwl_mvm *mvm,
-				   struct ieee80211_vif *vif)
-{
-	if (!vif->bss_conf.ftm_responder)
-		return;
-
-	iwl_mvm_ftm_start_responder(mvm, vif);
-}
-
-void iwl_mvm_ftm_responder_stats(struct iwl_mvm *mvm,
-				 struct iwl_rx_cmd_buffer *rxb)
-{
-	struct iwl_rx_packet *pkt = rxb_addr(rxb);
-	struct iwl_ftm_responder_stats *resp = (void *)pkt->data;
-	struct cfg80211_ftm_responder_stats *stats = &mvm->ftm_resp_stats;
-	u32 flags = le32_to_cpu(resp->flags);
-
-	if (resp->success_ftm == resp->ftm_per_burst)
-		stats->success_num++;
-	else if (resp->success_ftm >= 2)
-		stats->partial_num++;
-	else
-		stats->failed_num++;
-
-	if ((flags & FTM_RESP_STAT_ASAP_REQ) &&
-	    (flags & FTM_RESP_STAT_ASAP_RESP))
-		stats->asap_num++;
-
-	if (flags & FTM_RESP_STAT_NON_ASAP_RESP)
-		stats->non_asap_num++;
-
-	stats->total_duration_ms += le32_to_cpu(resp->duration) / USEC_PER_MSEC;
-
-	if (flags & FTM_RESP_STAT_TRIGGER_UNKNOWN)
-		stats->unknown_triggers_num++;
-
-	if (flags & FTM_RESP_STAT_DUP)
-		stats->reschedule_requests_num++;
-
-	if (flags & FTM_RESP_STAT_NON_ASAP_OUT_WIN)
-		stats->out_of_window_triggers_num++;
-}
Index: src/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c
===================================================================
--- src.orig/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c	2019-07-25 13:56:03.738424271 +0200
+++ src/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c	2019-07-25 13:56:30.729060684 +0200
@@ -549,11 +549,6 @@
 		hw->wiphy->n_cipher_suites++;
 	}
 
-	if (fw_has_capa(&mvm->fw->ucode_capa,
-			IWL_UCODE_TLV_CAPA_FTM_CALIBRATED))
-		wiphy_ext_feature_set(hw->wiphy,
-				      NL80211_EXT_FEATURE_ENABLE_FTM_RESPONDER);
-
 	ieee80211_hw_set(hw, SINGLE_SCAN_ON_ALL_BANDS);
 	hw->wiphy->features |=
 		NL80211_FEATURE_SCHED_SCAN_RANDOM_MAC_ADDR |
@@ -1760,9 +1755,6 @@
 				       IEEE80211_VIF_SUPPORTS_CQM_RSSI);
 	}
 
-	if (vif->bss_conf.ftm_responder)
-		memset(&mvm->ftm_resp_stats, 0, sizeof(mvm->ftm_resp_stats));
-
 	iwl_mvm_vif_dbgfs_clean(mvm, vif);
 
 	/*
@@ -2711,8 +2703,6 @@
 	if (iwl_mvm_phy_ctx_count(mvm) > 1)
 		iwl_mvm_teardown_tdls_peers(mvm);
 
-	iwl_mvm_ftm_restart_responder(mvm, vif);
-
 	goto out_unlock;
 
 out_quota_failed:
@@ -2821,15 +2811,6 @@
 				bss_conf->txpower);
 		iwl_mvm_set_tx_power(mvm, vif, bss_conf->txpower);
 	}
-
-	if (changes & BSS_CHANGED_FTM_RESPONDER) {
-		int ret = iwl_mvm_ftm_start_responder(mvm, vif);
-
-		if (ret)
-			IWL_WARN(mvm, "Failed to enable FTM responder (%d)\n",
-				 ret);
-	}
-
 }
 
 static void iwl_mvm_bss_info_changed(struct ieee80211_hw *hw,
@@ -3950,43 +3931,11 @@
 	return 0;
 }
 
-struct iwl_mvm_ftm_responder_iter_data {
-	bool responder;
-	struct ieee80211_chanctx_conf *ctx;
-};
-
-static void iwl_mvm_ftm_responder_chanctx_iter(void *_data, u8 *mac,
-					       struct ieee80211_vif *vif)
-{
-	struct iwl_mvm_ftm_responder_iter_data *data = _data;
-
-	if (rcu_access_pointer(vif->chanctx_conf) == data->ctx &&
-	    vif->type == NL80211_IFTYPE_AP && vif->bss_conf.ftmr_params)
-		data->responder = true;
-}
-
-static bool iwl_mvm_is_ftm_responder_chanctx(struct iwl_mvm *mvm,
-					     struct ieee80211_chanctx_conf *ctx)
-{
-	struct iwl_mvm_ftm_responder_iter_data data = {
-		.responder = false,
-		.ctx = ctx,
-	};
-
-	ieee80211_iterate_active_interfaces_atomic(mvm->hw,
-					IEEE80211_IFACE_ITER_NORMAL,
-					iwl_mvm_ftm_responder_chanctx_iter,
-					&data);
-	return data.responder;
-}
-
 static int __iwl_mvm_add_chanctx(struct iwl_mvm *mvm,
 				 struct ieee80211_chanctx_conf *ctx)
 {
 	u16 *phy_ctxt_id = (u16 *)ctx->drv_priv;
 	struct iwl_mvm_phy_ctxt *phy_ctxt;
-	bool responder = iwl_mvm_is_ftm_responder_chanctx(mvm, ctx);
-	struct cfg80211_chan_def *def = responder ? &ctx->def : &ctx->min_def;
 	int ret;
 
 	lockdep_assert_held(&mvm->mutex);
@@ -3999,7 +3948,7 @@
 		goto out;
 	}
 
-	ret = iwl_mvm_phy_ctxt_changed(mvm, phy_ctxt, def,
+	ret = iwl_mvm_phy_ctxt_changed(mvm, phy_ctxt, &ctx->min_def,
 				       ctx->rx_chains_static,
 				       ctx->rx_chains_dynamic);
 	if (ret) {
@@ -4054,8 +4003,6 @@
 	struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw);
 	u16 *phy_ctxt_id = (u16 *)ctx->drv_priv;
 	struct iwl_mvm_phy_ctxt *phy_ctxt = &mvm->phy_ctxts[*phy_ctxt_id];
-	bool responder = iwl_mvm_is_ftm_responder_chanctx(mvm, ctx);
-	struct cfg80211_chan_def *def = responder ? &ctx->def : &ctx->min_def;
 
 	if (WARN_ONCE((phy_ctxt->ref > 1) &&
 		      (changed & ~(IEEE80211_CHANCTX_CHANGE_WIDTH |
@@ -4070,17 +4017,17 @@
 
 	/* we are only changing the min_width, may be a noop */
 	if (changed == IEEE80211_CHANCTX_CHANGE_MIN_WIDTH) {
-		if (phy_ctxt->width == def->width)
+		if (phy_ctxt->width == ctx->min_def.width)
 			goto out_unlock;
 
 		/* we are just toggling between 20_NOHT and 20 */
 		if (phy_ctxt->width <= NL80211_CHAN_WIDTH_20 &&
-		    def->width <= NL80211_CHAN_WIDTH_20)
+		    ctx->min_def.width <= NL80211_CHAN_WIDTH_20)
 			goto out_unlock;
 	}
 
 	iwl_mvm_bt_coex_vif_change(mvm);
-	iwl_mvm_phy_ctxt_changed(mvm, phy_ctxt, def,
+	iwl_mvm_phy_ctxt_changed(mvm, phy_ctxt, &ctx->min_def,
 				 ctx->rx_chains_static,
 				 ctx->rx_chains_dynamic);
 
@@ -5010,35 +4957,6 @@
 	mutex_unlock(&mvm->mutex);
 }
 
-static int
-iwl_mvm_mac_get_ftm_responder_stats(struct ieee80211_hw *hw,
-				    struct ieee80211_vif *vif,
-				    struct cfg80211_ftm_responder_stats *stats)
-{
-	struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw);
-	struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif);
-
-	if (vif->p2p || vif->type != NL80211_IFTYPE_AP ||
-	    !mvmvif->ap_ibss_active || !vif->bss_conf.ftm_responder)
-		return -EINVAL;
-
-	mutex_lock(&mvm->mutex);
-	*stats = mvm->ftm_resp_stats;
-	mutex_unlock(&mvm->mutex);
-
-	stats->filled = BIT(NL80211_FTM_STATS_SUCCESS_NUM) |
-			BIT(NL80211_FTM_STATS_PARTIAL_NUM) |
-			BIT(NL80211_FTM_STATS_FAILED_NUM) |
-			BIT(NL80211_FTM_STATS_ASAP_NUM) |
-			BIT(NL80211_FTM_STATS_NON_ASAP_NUM) |
-			BIT(NL80211_FTM_STATS_TOTAL_DURATION_MSEC) |
-			BIT(NL80211_FTM_STATS_UNKNOWN_TRIGGERS_NUM) |
-			BIT(NL80211_FTM_STATS_RESCHEDULE_REQUESTS_NUM) |
-			BIT(NL80211_FTM_STATS_OUT_OF_WINDOW_TRIGGERS_NUM);
-
-	return 0;
-}
-
 static bool iwl_mvm_can_hw_csum(struct sk_buff *skb)
 {
 	u8 protocol = ip_hdr(skb)->protocol;
@@ -5143,8 +5061,6 @@
 #endif
 	.get_survey = iwl_mvm_mac_get_survey,
 	.sta_statistics = iwl_mvm_mac_sta_statistics,
-	.get_ftm_responder_stats = iwl_mvm_mac_get_ftm_responder_stats,
-
 	.can_aggregate_in_amsdu = iwl_mvm_mac_can_aggregate,
 #ifdef CONFIG_IWLWIFI_DEBUGFS
 	.sta_add_debugfs = iwl_mvm_sta_add_debugfs,
Index: src/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h
===================================================================
--- src.orig/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h	2019-07-25 13:56:03.739424257 +0200
+++ src/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h	2019-07-25 13:56:30.730060671 +0200
@@ -1153,8 +1153,6 @@
 	u32 ciphers[IWL_MVM_NUM_CIPHERS];
 	struct ieee80211_cipher_scheme cs[IWL_UCODE_MAX_CS];
 
-	struct cfg80211_ftm_responder_stats ftm_resp_stats;
-
 	struct ieee80211_vif *nan_vif;
 #define IWL_MAX_BAID	32
 	struct iwl_mvm_baid_data __rcu *baid_map[IWL_MAX_BAID];
@@ -2064,13 +2062,6 @@
 int iwl_mvm_sf_update(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
 		      bool added_vif);
 
-/* FTM responder */
-int iwl_mvm_ftm_start_responder(struct iwl_mvm *mvm, struct ieee80211_vif *vif);
-void iwl_mvm_ftm_restart_responder(struct iwl_mvm *mvm,
-				   struct ieee80211_vif *vif);
-void iwl_mvm_ftm_responder_stats(struct iwl_mvm *mvm,
-				 struct iwl_rx_cmd_buffer *rxb);
-
 /* TDLS */
 
 /*
Index: src/drivers/net/wireless/intel/iwlwifi/mvm/ops.c
===================================================================
--- src.orig/drivers/net/wireless/intel/iwlwifi/mvm/ops.c	2019-07-25 13:56:03.739424257 +0200
+++ src/drivers/net/wireless/intel/iwlwifi/mvm/ops.c	2019-07-25 13:56:30.731060658 +0200
@@ -300,8 +300,6 @@
 		   RX_HANDLER_ASYNC_LOCKED),
 	RX_HANDLER(MFUART_LOAD_NOTIFICATION, iwl_mvm_rx_mfuart_notif,
 		   RX_HANDLER_SYNC),
-	RX_HANDLER_GRP(LOCATION_GROUP, TOF_RESPONDER_STATS,
-		       iwl_mvm_ftm_responder_stats, RX_HANDLER_ASYNC_LOCKED),
 	RX_HANDLER_GRP(DEBUG_GROUP, MFU_ASSERT_DUMP_NTF,
 		       iwl_mvm_mfu_assert_dump_notif, RX_HANDLER_SYNC),
 	RX_HANDLER_GRP(PROT_OFFLOAD_GROUP, STORED_BEACON_NTF,