Sfoglia il codice sorgente

qcacld-3.0: Send roam preauth retry_count and no_ack_timeout ini to FW

Create and send user configurable ini for max number of roam preauth
retries and roam preauth no-ack timeout to the firmware.

Change-Id: I66808b33f421f56cd7c007cdde1db19c8e7ca5f9
CRs-Fixed: 2279049
Sourav Mohapatra 6 anni fa
parent
commit
5ba8da3645

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

@@ -901,6 +901,10 @@ static void mlme_init_lfr_cfg(struct wlan_objmgr_psoc *psoc,
 		cfg_get(psoc, CFG_LFR_5G_MAX_RSSI_PENALIZE);
 	lfr->max_num_pre_auth = (uint32_t)
 		cfg_default(CFG_LFR_MAX_NUM_PRE_AUTH);
+	lfr->roam_preauth_no_ack_timeout =
+		cfg_get(psoc, CFG_LFR3_ROAM_PREAUTH_NO_ACK_TIMEOUT);
+	lfr->roam_preauth_retry_count =
+		cfg_get(psoc, CFG_LFR3_ROAM_PREAUTH_RETRY_COUNT);
 }
 
 static uint32_t

+ 58 - 1
components/mlme/dispatcher/inc/cfg_mlme_lfr.h

@@ -1086,6 +1086,61 @@
 	CFG_VALUE_OR_DEFAULT, \
 	"")
 
+/*
+ * roam_preauth_retry_count
+ *
+ * @Min: 1
+ * @Max: 10
+ * @Default: 5
+ *
+ * The maximum number of software retries for preauth or
+ * reassoc made before picking up the next candidate for
+ * connection during roaming.
+ *
+ * Related: N/A
+ *
+ * Supported Features: Roaming
+ *
+ * Usage: Internal/External
+ *
+ * </ini>
+ */
+#define CFG_LFR3_ROAM_PREAUTH_RETRY_COUNT CFG_INI_INT( \
+			"roam_preauth_retry_count", \
+			1, \
+			10, \
+			5, \
+			CFG_VALUE_OR_DEFAULT, \
+			"The maximum number of software retries for preauth")
+
+/*
+ * <ini>
+ * roam_preauth_no_ack_timeout
+ *
+ * @Min: 5
+ * @Max: 50
+ * @Default: 5
+ *
+ * Time to wait (in ms) after sending an preauth or reassoc
+ * request which didn’t have an ack, before considering
+ * it as a failure and making another software retry.
+ *
+ * Related: N/A
+ *
+ * Supported Features: Roaming
+ *
+ * Usage: Internal/External
+ *
+ * </ini>
+ */
+#define CFG_LFR3_ROAM_PREAUTH_NO_ACK_TIMEOUT CFG_INI_INT( \
+			"roam_preauth_no_ack_timeout", \
+			5, \
+			50, \
+			5, \
+			CFG_VALUE_OR_DEFAULT, \
+			"Time to wait after sending an preauth or reassoc")
+
 #define CFG_LFR_ALL \
 	CFG(CFG_LFR_MAWC_ROAM_ENABLED) \
 	CFG(CFG_LFR_MAWC_ROAM_TRAFFIC_THRESHOLD) \
@@ -1125,6 +1180,8 @@
 	CFG(CFG_LFR_5G_RSSI_PENALIZE_THRESHOLD) \
 	CFG(CFG_LFR_5G_RSSI_PENALIZE_FACTOR) \
 	CFG(CFG_LFR_5G_MAX_RSSI_PENALIZE) \
-	CFG(CFG_LFR_MAX_NUM_PRE_AUTH)
+	CFG(CFG_LFR_MAX_NUM_PRE_AUTH) \
+	CFG(CFG_LFR3_ROAM_PREAUTH_RETRY_COUNT) \
+	CFG(CFG_LFR3_ROAM_PREAUTH_NO_ACK_TIMEOUT)
 
 #endif /* CFG_MLME_LFR_H__ */

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

@@ -801,6 +801,8 @@ struct wlan_mlme_sta_cfg {
  * @rssi_penalize_factor_5g:        Factor by which 5GHz RSSI is penalizeed
  * @max_rssi_penalize_5g:           Max penalty that can be applied to 5G RSSI
  * @max_num_pre_auth:               Configure max number of pre-auth
+ * @roam_preauth_retry_count:       Configure the max number of preauth retry
+ * @roam_preauth_no_ack_timeout:    Configure the no ack timeout period
  */
 struct wlan_mlme_lfr_cfg {
 	bool mawc_roam_enabled;
@@ -842,6 +844,8 @@ struct wlan_mlme_lfr_cfg {
 	uint32_t rssi_penalize_factor_5g;
 	uint32_t max_rssi_penalize_5g;
 	uint32_t max_num_pre_auth;
+	uint32_t roam_preauth_retry_count;
+	uint32_t roam_preauth_no_ack_timeout;
 };
 
 /**

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

@@ -2796,6 +2796,8 @@ typedef struct sSirRoamOffloadScanReq {
 	uint32_t btm_sticky_time;
 	struct wmi_11k_offload_params offload_11k_params;
 	uint32_t ho_delay_for_rx;
+	uint32_t roam_preauth_retry_count;
+	uint32_t roam_preauth_no_ack_timeout;
 	uint32_t min_delay_btw_roam_scans;
 	uint32_t roam_trigger_reason_bitmask;
 	bool roam_force_rssi_trigger;

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

@@ -18214,6 +18214,10 @@ csr_update_roam_scan_offload_request(tpAniSirGlobal mac_ctx,
 	req_buf->RoamRssiCatGap = mac_ctx->roam.configParam.bCatRssiOffset;
 	req_buf->Select5GHzMargin = mac_ctx->mlme_cfg->gen.select_5ghz_margin;
 	req_buf->ho_delay_for_rx = mac_ctx->roam.configParam.ho_delay_for_rx;
+	req_buf->roam_preauth_retry_count =
+			mac_ctx->mlme_cfg->lfr.roam_preauth_retry_count;
+	req_buf->roam_preauth_no_ack_timeout =
+			mac_ctx->mlme_cfg->lfr.roam_preauth_no_ack_timeout;
 	req_buf->min_delay_btw_roam_scans =
 			mac_ctx->roam.configParam.min_delay_btw_roam_scans;
 	req_buf->roam_trigger_reason_bitmask =

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

@@ -331,6 +331,10 @@ QDF_STATUS wma_roam_scan_offload_mode(tp_wma_handle wma_handle,
 		params->roam_offload_enabled = roam_req->RoamOffloadEnabled;
 		params->roam_offload_params.ho_delay_for_rx =
 				roam_req->ho_delay_for_rx;
+		params->roam_offload_params.roam_preauth_retry_count =
+				roam_req->roam_preauth_retry_count;
+		params->roam_offload_params.roam_preauth_no_ack_timeout =
+				roam_req->roam_preauth_no_ack_timeout;
 		params->prefer_5ghz = roam_req->Prefer5GHz;
 		params->roam_rssi_cat_gap = roam_req->RoamRssiCatGap;
 		params->select_5ghz_margin = roam_req->Select5GHzMargin;
@@ -375,6 +379,10 @@ QDF_STATUS wma_roam_scan_offload_mode(tp_wma_handle wma_handle,
 		 params->min_delay_btw_roam_scans,
 		 params->roam_trigger_reason_bitmask);
 
+	WMA_LOGD(FL("roam_preauth_retry_count: %d, roam_preauth_no_ack_timeout: %d"),
+		 params->roam_offload_params.roam_preauth_retry_count,
+		 params->roam_offload_params.roam_preauth_no_ack_timeout);
+
 	status = wmi_unified_roam_scan_offload_mode_cmd(wma_handle->wmi_handle,
 				scan_cmd_fp, params);
 	qdf_mem_free(params);