12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- From e89a51aedf380bc60219dc9afa96c36507060fb3 Mon Sep 17 00:00:00 2001
- From: Manikanta Pubbisetty <quic_mpubbise@quicinc.com>
- Date: Wed, 15 Mar 2023 21:48:17 +0530
- Subject: [PATCH] wifi: ath11k: Send 11d scan start before WMI_START_SCAN_CMDID
- 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 | 12 ++++++++++++
- drivers/net/wireless/ath/ath11k/wmi.h | 1 +
- 2 files changed, 13 insertions(+)
- --- 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
- 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);
- --- a/drivers/net/wireless/ath/ath11k/wmi.h
- +++ b/drivers/net/wireless/ath/ath11k/wmi.h
- @@ -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
|