Parcourir la source

qcacmn: Get per channel scan config service capability

Firmware advertises the service capability bit
WMI_SERVICE_SCAN_CONFIG_PER_CHANNEL when it supports per channel
scan config flags. Get this and cache in psoc.

If firmware supports WMI_SERVICE_SCAN_CONFIG_PER_CHANNEL, it uses
the upper-12 bits(bit-20 to bit 32) of channel_list for flags and
lower 20-bits(bit-0 to bit-19) for frequency. If firmware doesn't
support it, then channel_list holds the frequency value only.
Fill the flags and frequency accordingly.

Change-Id: I88a6f29f61e1ecea75bc5574cadcbbfbb7f8b188
CRs-Fixed: 2806405
Srinivas Dasari il y a 4 ans
Parent
commit
da54959f21

+ 5 - 0
target_if/init_deinit/src/init_event_handler.c

@@ -166,6 +166,11 @@ static int init_deinit_service_ready_event_handler(ol_scn_t scn_handle,
 		wlan_psoc_nif_fw_ext_cap_set(psoc,
 					     WLAN_SOC_CEXT_RX_FSE_SUPPORT);
 
+	if (wmi_service_enabled(wmi_handle,
+				wmi_service_scan_conf_per_ch_support))
+		wlan_psoc_nif_fw_ext_cap_set(psoc,
+					     WLAN_SOC_CEXT_SCAN_PER_CH_CONFIG);
+
 	/* override derived value, if it exceeds max peer count */
 	if ((wlan_psoc_get_max_peer_count(psoc) >
 		tgt_hdl->info.wlan_res_cfg.num_active_peers) &&

+ 2 - 0
umac/cmn_services/obj_mgr/inc/wlan_objmgr_psoc_obj.h

@@ -142,6 +142,8 @@
 #define WLAN_SOC_CEXT_EMA_AP           0x00400000
 	/* MBSS PARAM IN START REQ Support */
 #define WLAN_SOC_CEXT_MBSS_PARAM_IN_START   0x00800000
+/* Per channel scan config flags support */
+#define WLAN_SOC_CEXT_SCAN_PER_CH_CONFIG    0x01000000
 
 /* feature_flags */
 	/* CONF: ATH FF enabled */

+ 1 - 0
wmi/inc/wmi_unified_param.h

@@ -5264,6 +5264,7 @@ typedef enum {
 #ifdef FEATURE_CLUB_LL_STATS_AND_GET_STATION
 	wmi_service_get_station_in_ll_stats_req,
 #endif
+	wmi_service_scan_conf_per_ch_support,
 	wmi_services_max,
 } wmi_conv_service_ids;
 #define WMI_SERVICE_UNAVAILABLE 0xFFFF

+ 2 - 0
wmi/src/wmi_unified_tlv.c

@@ -15177,6 +15177,8 @@ static void populate_tlv_service(uint32_t *wmi_service)
 			WMI_SERVICE_MBSS_PARAM_IN_VDEV_START_SUPPORT;
 	wmi_service[wmi_service_fse_cmem_alloc_support] =
 			WMI_SERVICE_FSE_CMEM_ALLOC_SUPPORT;
+	wmi_service[wmi_service_scan_conf_per_ch_support] =
+			WMI_SERVICE_SCAN_CONFIG_PER_CHANNEL;
 
 	wmi_populate_service_get_sta_in_ll_stats_req(wmi_service);
 }