From 5ba8da3645550674e2211748bd2b9b508bfb3ce7 Mon Sep 17 00:00:00 2001 From: Sourav Mohapatra Date: Mon, 16 Jul 2018 09:21:15 +0530 Subject: [PATCH] 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 --- components/mlme/core/src/wlan_mlme_main.c | 4 ++ components/mlme/dispatcher/inc/cfg_mlme_lfr.h | 59 ++++++++++++++++++- .../dispatcher/inc/wlan_mlme_public_struct.h | 4 ++ core/mac/inc/sir_api.h | 2 + core/sme/src/csr/csr_api_roam.c | 4 ++ core/wma/src/wma_scan_roam.c | 8 +++ 6 files changed, 80 insertions(+), 1 deletion(-) diff --git a/components/mlme/core/src/wlan_mlme_main.c b/components/mlme/core/src/wlan_mlme_main.c index f54da9d90f70..d0f49e6e9c68 100644 --- a/components/mlme/core/src/wlan_mlme_main.c +++ b/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 diff --git a/components/mlme/dispatcher/inc/cfg_mlme_lfr.h b/components/mlme/dispatcher/inc/cfg_mlme_lfr.h index 7123e98fb8fa..d8581a5c67a4 100644 --- a/components/mlme/dispatcher/inc/cfg_mlme_lfr.h +++ b/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 + * + * + */ +#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") + +/* + * + * 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 + * + * + */ +#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__ */ diff --git a/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h b/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h index 01fb13782d8a..04ac0d28333e 100644 --- a/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h +++ b/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; }; /** diff --git a/core/mac/inc/sir_api.h b/core/mac/inc/sir_api.h index 874f2892778e..0c22f03b20d1 100644 --- a/core/mac/inc/sir_api.h +++ b/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; diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c index 6d45e0143472..0fc1f45918a8 100644 --- a/core/sme/src/csr/csr_api_roam.c +++ b/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 = diff --git a/core/wma/src/wma_scan_roam.c b/core/wma/src/wma_scan_roam.c index 1f3e40082bfe..5e529c459ddb 100644 --- a/core/wma/src/wma_scan_roam.c +++ b/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);