diff mbox series

wifi: ath11k: Send 11d scan start before WMI_START_SCAN_CMDID

Message ID 20230315161817.29627-1-quic_mpubbise@quicinc.com (mailing list archive)
State Accepted
Commit e89a51aedf380bc60219dc9afa96c36507060fb3
Delegated to: Kalle Valo
Headers show
Series wifi: ath11k: Send 11d scan start before WMI_START_SCAN_CMDID | expand

Commit Message

Manikanta Pubbisetty March 15, 2023, 4:18 p.m. UTC
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>
---
 drivers/net/wireless/ath/ath11k/mac.c | 12 ++++++++++++
 drivers/net/wireless/ath/ath11k/wmi.h |  1 +
 2 files changed, 13 insertions(+)


base-commit: 3df3715e556027e94246b2cb30986563362a65f4

Comments

Kalle Valo April 12, 2023, 10:01 a.m. UTC | #1
Manikanta Pubbisetty <quic_mpubbise@quicinc.com> wrote:

> 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>

Patch applied to ath-next branch of ath.git, thanks.

e89a51aedf38 wifi: ath11k: Send 11d scan start before WMI_START_SCAN_CMDID
diff mbox series

Patch

diff --git a/drivers/net/wireless/ath/ath11k/mac.c b/drivers/net/wireless/ath/ath11k/mac.c
index cad832e0e6b8..be2e17b641d1 100644
--- a/drivers/net/wireless/ath/ath11k/mac.c
+++ b/drivers/net/wireless/ath/ath11k/mac.c
@@ -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);
diff --git a/drivers/net/wireless/ath/ath11k/wmi.h b/drivers/net/wireless/ath/ath11k/wmi.h
index b23b7a22bc9a..21589d8efcc7 100644
--- a/drivers/net/wireless/ath/ath11k/wmi.h
+++ b/drivers/net/wireless/ath/ath11k/wmi.h
@@ -2102,6 +2102,7 @@  enum wmi_tlv_service {
 	WMI_MAX_EXT_SERVICE = 256,
 	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