OSDN Git Service

wifi: ath11k: Configure the FTM responder role using firmware capability flag
authorGanesh Babu Jothiram <quic_gjothira@quicinc.com>
Fri, 24 Mar 2023 14:57:00 +0000 (16:57 +0200)
committerKalle Valo <quic_kvalo@quicinc.com>
Wed, 12 Apr 2023 09:57:58 +0000 (12:57 +0300)
Fine Time Measurement(FTM) is offloaded feature to firmware.
Hence, the configuration of FTM responder role is done using
firmware capability flag instead of hw param.

Tested-on: QCN9074 hw1.0 PCI WLAN.HK.2.7.0.1-01744-QCAHKSWPL_SILICONZ-1

Signed-off-by: Ganesh Babu Jothiram <quic_gjothira@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
Link: https://lore.kernel.org/r/20230317072034.8217-1-quic_gjothira@quicinc.com
drivers/net/wireless/ath/ath11k/core.c
drivers/net/wireless/ath/ath11k/hw.h
drivers/net/wireless/ath/ath11k/mac.c

index 75fdbe4..498310e 100644 (file)
@@ -116,7 +116,6 @@ static const struct ath11k_hw_params ath11k_hw_params[] = {
                .tcl_ring_retry = true,
                .tx_ring_size = DP_TCL_DATA_RING_SIZE,
                .smp2p_wow_exit = false,
-               .ftm_responder = true,
        },
        {
                .hw_rev = ATH11K_HW_IPQ6018_HW10,
@@ -199,7 +198,6 @@ static const struct ath11k_hw_params ath11k_hw_params[] = {
                .tx_ring_size = DP_TCL_DATA_RING_SIZE,
                .smp2p_wow_exit = false,
                .support_fw_mac_sequence = false,
-               .ftm_responder = true,
        },
        {
                .name = "qca6390 hw2.0",
@@ -284,7 +282,6 @@ static const struct ath11k_hw_params ath11k_hw_params[] = {
                .tx_ring_size = DP_TCL_DATA_RING_SIZE,
                .smp2p_wow_exit = false,
                .support_fw_mac_sequence = true,
-               .ftm_responder = false,
        },
        {
                .name = "qcn9074 hw1.0",
@@ -366,7 +363,6 @@ static const struct ath11k_hw_params ath11k_hw_params[] = {
                .tx_ring_size = DP_TCL_DATA_RING_SIZE,
                .smp2p_wow_exit = false,
                .support_fw_mac_sequence = false,
-               .ftm_responder = true,
        },
        {
                .name = "wcn6855 hw2.0",
@@ -451,7 +447,6 @@ static const struct ath11k_hw_params ath11k_hw_params[] = {
                .tx_ring_size = DP_TCL_DATA_RING_SIZE,
                .smp2p_wow_exit = false,
                .support_fw_mac_sequence = true,
-               .ftm_responder = false,
        },
        {
                .name = "wcn6855 hw2.1",
@@ -534,7 +529,6 @@ static const struct ath11k_hw_params ath11k_hw_params[] = {
                .tx_ring_size = DP_TCL_DATA_RING_SIZE,
                .smp2p_wow_exit = false,
                .support_fw_mac_sequence = true,
-               .ftm_responder = false,
        },
        {
                .name = "wcn6750 hw1.0",
@@ -615,7 +609,6 @@ static const struct ath11k_hw_params ath11k_hw_params[] = {
                .tx_ring_size = DP_TCL_DATA_RING_SIZE_WCN6750,
                .smp2p_wow_exit = true,
                .support_fw_mac_sequence = true,
-               .ftm_responder = false,
        },
        {
                .hw_rev = ATH11K_HW_IPQ5018_HW10,
@@ -695,7 +688,6 @@ static const struct ath11k_hw_params ath11k_hw_params[] = {
                .tx_ring_size = DP_TCL_DATA_RING_SIZE,
                .smp2p_wow_exit = false,
                .support_fw_mac_sequence = false,
-               .ftm_responder = true,
        },
 };
 
index 0be4e12..9f45d06 100644 (file)
@@ -224,7 +224,6 @@ struct ath11k_hw_params {
        u32 tx_ring_size;
        bool smp2p_wow_exit;
        bool support_fw_mac_sequence;
-       bool ftm_responder;
 };
 
 struct ath11k_hw_ops {
index c81b238..7226d88 100644 (file)
@@ -3538,7 +3538,7 @@ static void ath11k_mac_op_bss_info_changed(struct ieee80211_hw *hw,
 
        if (changed & BSS_CHANGED_FTM_RESPONDER &&
            arvif->ftm_responder != info->ftm_responder &&
-           ar->ab->hw_params.ftm_responder &&
+           test_bit(WMI_TLV_SERVICE_RTT, ar->ab->wmi_ab.svc_map) &&
            (vif->type == NL80211_IFTYPE_AP ||
             vif->type == NL80211_IFTYPE_MESH_POINT)) {
                arvif->ftm_responder = info->ftm_responder;
@@ -9234,7 +9234,7 @@ static int __ath11k_mac_register(struct ath11k *ar)
        wiphy_ext_feature_set(ar->hw->wiphy,
                              NL80211_EXT_FEATURE_SET_SCAN_DWELL);
 
-       if (ab->hw_params.ftm_responder)
+       if (test_bit(WMI_TLV_SERVICE_RTT, ar->ab->wmi_ab.svc_map))
                wiphy_ext_feature_set(ar->hw->wiphy,
                                      NL80211_EXT_FEATURE_ENABLE_FTM_RESPONDER);