Quellcode durchsuchen

qcacld-3.0: Add new ini to config roaming scan behavior

Add new ini "roaming_scan_policy" to config roaming scan
behavior (DBS/non-DBS) in fw side.

This ini is corresponding scan_ctrl_flags_ext in
wmi_start_scan_cmd_fixed_param when host sends
WMI_ROAM_SCAN_MODE to fw.

Change-Id: Id95c3b9bb40d4f32ab3ff14a30f72c6150ac1884
CRs-Fixed: 2398531
Abhinav Kumar vor 6 Jahren
Ursprung
Commit
990fea6267

+ 3 - 0
components/mlme/core/src/wlan_mlme_main.c

@@ -1562,6 +1562,9 @@ static void mlme_init_lfr_cfg(struct wlan_objmgr_psoc *psoc,
 		cfg_get(psoc, CFG_LFR_ROAM_FT_OPEN_ENABLE);
 		cfg_get(psoc, CFG_LFR_ROAM_FT_OPEN_ENABLE);
 	lfr->roam_force_rssi_trigger =
 	lfr->roam_force_rssi_trigger =
 		cfg_get(psoc, CFG_LFR_ROAM_FORCE_RSSI_TRIGGER);
 		cfg_get(psoc, CFG_LFR_ROAM_FORCE_RSSI_TRIGGER);
+	lfr->roaming_scan_policy =
+		cfg_get(psoc, CFG_ROAM_SCAN_SCAN_POLICY);
+
 	mlme_init_roam_offload_cfg(psoc, lfr);
 	mlme_init_roam_offload_cfg(psoc, lfr);
 	mlme_init_ese_cfg(psoc, lfr);
 	mlme_init_ese_cfg(psoc, lfr);
 	mlme_init_bss_load_trigger_params(psoc, &lfr->bss_load_trig);
 	mlme_init_bss_load_trigger_params(psoc, &lfr->bss_load_trig);

+ 25 - 0
components/mlme/dispatcher/inc/cfg_mlme_lfr.h

@@ -2126,6 +2126,30 @@
 #define LFR_SUBNET_DETECTION_ALL
 #define LFR_SUBNET_DETECTION_ALL
 #endif
 #endif
 
 
+/*
+ * <ini>
+ * roaming_scan_policy - To config roaming scan policy
+ * @Min: 0
+ * @Max: 1
+ * @Default: 0
+ *
+ * This ini is used to configure roaming scan behavior from HOST
+ * 0 : DBS scan
+ * 1 : Non-DBS scan
+ *
+ * Related: None
+ *
+ * Supported Feature: Roaming
+ *
+ * Usage: External
+ *
+ * </ini>
+ */
+#define CFG_ROAM_SCAN_SCAN_POLICY CFG_INI_BOOL( \
+		"roaming_scan_policy", \
+		0, \
+		"Config roam scan policy")
+
 #define CFG_LFR_ALL \
 #define CFG_LFR_ALL \
 	CFG(CFG_LFR_MAWC_ROAM_ENABLED) \
 	CFG(CFG_LFR_MAWC_ROAM_ENABLED) \
 	CFG(CFG_LFR_MAWC_ROAM_TRAFFIC_THRESHOLD) \
 	CFG(CFG_LFR_MAWC_ROAM_TRAFFIC_THRESHOLD) \
@@ -2203,6 +2227,7 @@
 	CFG(CFG_LFR_ROAM_SCAN_TRIGGER_REASON_BITMASK) \
 	CFG(CFG_LFR_ROAM_SCAN_TRIGGER_REASON_BITMASK) \
 	CFG(CFG_LFR_ROAM_FT_OPEN_ENABLE) \
 	CFG(CFG_LFR_ROAM_FT_OPEN_ENABLE) \
 	CFG(CFG_LFR_ROAM_FORCE_RSSI_TRIGGER) \
 	CFG(CFG_LFR_ROAM_FORCE_RSSI_TRIGGER) \
+	CFG(CFG_ROAM_SCAN_SCAN_POLICY) \
 	ROAM_OFFLOAD_ALL \
 	ROAM_OFFLOAD_ALL \
 	LFR_ESE_ALL \
 	LFR_ESE_ALL \
 	LFR_SUBNET_DETECTION_ALL
 	LFR_SUBNET_DETECTION_ALL

+ 2 - 0
components/mlme/dispatcher/inc/wlan_mlme_public_struct.h

@@ -1316,6 +1316,7 @@ struct bss_load_trigger {
  * @roam_trigger_reason_bitmask:    Contains roam_trigger_reasons
  * @roam_trigger_reason_bitmask:    Contains roam_trigger_reasons
  * @enable_ftopen:                  Enable/disable FT open feature
  * @enable_ftopen:                  Enable/disable FT open feature
  * @roam_force_rssi_trigger:        Force RSSI trigger or not
  * @roam_force_rssi_trigger:        Force RSSI trigger or not
+ * @roaming_scan_policy:            Config roaming scan policy in fw
  */
  */
 struct wlan_mlme_lfr_cfg {
 struct wlan_mlme_lfr_cfg {
 	bool mawc_roam_enabled;
 	bool mawc_roam_enabled;
@@ -1402,6 +1403,7 @@ struct wlan_mlme_lfr_cfg {
 	bool enable_ftopen;
 	bool enable_ftopen;
 	bool roam_force_rssi_trigger;
 	bool roam_force_rssi_trigger;
 	struct bss_load_trigger bss_load_trig;
 	struct bss_load_trigger bss_load_trig;
+	bool roaming_scan_policy;
 };
 };
 
 
 /**
 /**

+ 1 - 0
core/mac/inc/sir_api.h

@@ -2345,6 +2345,7 @@ struct roam_offload_scan_req {
 	/* bss load triggered roam related params */
 	/* bss load triggered roam related params */
 	bool bss_load_trig_enabled;
 	bool bss_load_trig_enabled;
 	struct wmi_bss_load_config bss_load_config;
 	struct wmi_bss_load_config bss_load_config;
+	bool roaming_scan_policy;
 };
 };
 
 
 struct roam_offload_scan_rsp {
 struct roam_offload_scan_rsp {

+ 4 - 0
core/sme/src/csr/csr_api_roam.c

@@ -17180,6 +17180,10 @@ csr_update_roam_scan_offload_request(struct mac_context *mac_ctx,
 	req_buf->AcUapsd.acbk_uapsd = SIR_UAPSD_GET(ACBK, session->uapsd_mask);
 	req_buf->AcUapsd.acbk_uapsd = SIR_UAPSD_GET(ACBK, session->uapsd_mask);
 	req_buf->AcUapsd.acvi_uapsd = SIR_UAPSD_GET(ACVI, session->uapsd_mask);
 	req_buf->AcUapsd.acvi_uapsd = SIR_UAPSD_GET(ACVI, session->uapsd_mask);
 	req_buf->AcUapsd.acvo_uapsd = SIR_UAPSD_GET(ACVO, session->uapsd_mask);
 	req_buf->AcUapsd.acvo_uapsd = SIR_UAPSD_GET(ACVO, session->uapsd_mask);
+
+	req_buf->roaming_scan_policy =
+			mac_ctx->mlme_cfg->lfr.roaming_scan_policy;
+
 }
 }
 #endif /* WLAN_FEATURE_ROAM_OFFLOAD */
 #endif /* WLAN_FEATURE_ROAM_OFFLOAD */
 
 

+ 7 - 0
core/wma/src/wma_scan_roam.c

@@ -397,6 +397,13 @@ QDF_STATUS wma_roam_scan_offload_mode(tp_wma_handle wma_handle,
 		params->assoc_ie_length = roam_req->assoc_ie.length;
 		params->assoc_ie_length = roam_req->assoc_ie.length;
 		qdf_mem_copy(params->assoc_ie, roam_req->assoc_ie.addIEdata,
 		qdf_mem_copy(params->assoc_ie, roam_req->assoc_ie.addIEdata,
 						roam_req->assoc_ie.length);
 						roam_req->assoc_ie.length);
+		/* Configure roaming scan behavior (DBS/Non-DBS scan) */
+		if (roam_req->roaming_scan_policy)
+			scan_cmd_fp->scan_ctrl_flags_ext |=
+					WMI_SCAN_DBS_POLICY_FORCE_NONDBS;
+		else
+			scan_cmd_fp->scan_ctrl_flags_ext |=
+					WMI_SCAN_DBS_POLICY_DEFAULT;
 
 
 		wma_roam_scan_fill_fils_params(wma_handle, params, roam_req);
 		wma_roam_scan_fill_fils_params(wma_handle, params, roam_req);
 	}
 	}