wifi: ath11k: Send 11d scan start before WMI_START_SCAN_CMDID
authorManikanta Pubbisetty <quic_mpubbise@quicinc.com>
Wed, 15 Mar 2023 16:18:17 +0000 (21:48 +0530)
committerKalle Valo <quic_kvalo@quicinc.com>
Wed, 12 Apr 2023 10:01:18 +0000 (13:01 +0300)
Firmwares advertising the support of triggering 11d algorithm on the
scan results of a regular scan expects driver to send
WMI_11D_SCAN_START_CMDID before sending WMI_START_SCAN_CMDID.
Triggering 11d algorithm on the scan results of a normal scan helps
in completely avoiding a separate 11d scan for determining regdomain.
This indirectly helps in speeding up connections on station
interfaces on the chipsets supporting 11D scan.

To enable this feature, send WMI_11D_SCAN_START_CMDID just before
sending WMI_START_SCAN_CMDID if the firmware advertises
WMI_TLV_SERVICE_SUPPORT_11D_FOR_HOST_SCAN service flag.

WCN6750 & WCN6855 supports this feature.

Tested-on: WCN6750 hw1.0 AHB WLAN.MSL.1.0.1-01160-QCAMSLSWPLZ-1
Tested-on: WCN6855 hw2.1 PCI WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3.6510.23

Signed-off-by: Manikanta Pubbisetty <quic_mpubbise@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
Link: https://lore.kernel.org/r/20230315161817.29627-1-quic_mpubbise@quicinc.com
drivers/net/wireless/ath/ath11k/mac.c
drivers/net/wireless/ath/ath11k/wmi.h

index 7226d88..c0dc3e3 100644 (file)
@@ -3755,6 +3755,18 @@ static int ath11k_mac_op_hw_scan(struct ieee80211_hw *hw,
        int i;
        u32 scan_timeout;
 
+       /* Firmwares advertising the support of triggering 11D algorithm
+        * on the scan results of a regular scan expects driver to send
+        * WMI_11D_SCAN_START_CMDID before sending WMI_START_SCAN_CMDID.
+        * With this feature, separate 11D scan can be avoided since
+        * regdomain can be determined with the scan results of the
+        * regular scan.
+        */
+       if (ar->state_11d == ATH11K_11D_PREPARING &&
+           test_bit(WMI_TLV_SERVICE_SUPPORT_11D_FOR_HOST_SCAN,
+                    ar->ab->wmi_ab.svc_map))
+               ath11k_mac_11d_scan_start(ar, arvif->vdev_id);
+
        mutex_lock(&ar->conf_mutex);
 
        spin_lock_bh(&ar->data_lock);
index 86b22f2..92fddb7 100644 (file)
@@ -2103,6 +2103,7 @@ enum wmi_tlv_service {
        WMI_TLV_SERVICE_SCAN_CONFIG_PER_CHANNEL = 265,
        WMI_TLV_SERVICE_REG_CC_EXT_EVENT_SUPPORT = 281,
        WMI_TLV_SERVICE_BIOS_SAR_SUPPORT = 326,
+       WMI_TLV_SERVICE_SUPPORT_11D_FOR_HOST_SCAN = 357,
 
        /* The third 128 bits */
        WMI_MAX_EXT2_SERVICE = 384