qcacld-3.0: Limit unicast probe req during join timeout in MCC

Currently probe request is sent every 200ms during join timeout
this can lead to 16+ probe req, send during join time.

Change logic to send max 5 probe req during join time,
if candidate freq can lead to MCC concurrency scenario.

Change-Id: I7956771e2cf6724754f59c6db5b07fb45426ae41
CRs-Fixed: 3338329
This commit is contained in:
Abhishek Singh
2022-11-16 12:25:06 +05:30
committed by Madan Koyyalamudi
parent 6b3dee0b65
commit eee0c37e9d
7 changed files with 68 additions and 10 deletions

View File

@@ -2730,6 +2730,17 @@ void policy_mgr_hw_mode_transition_cb(uint32_t old_hw_mode_index,
struct policy_mgr_pdev_mac_freq_map *mac_freq_range,
struct wlan_objmgr_psoc *context);
/**
* policy_mgr_will_freq_lead_to_mcc() - Check if the given freq can lead to
* MCC scenario with existing connection
* @psoc: psoc pointer
* @freq: freq to check with existing connections
*
* Return: true or false
*/
bool policy_mgr_will_freq_lead_to_mcc(struct wlan_objmgr_psoc *psoc,
qdf_freq_t freq);
/**
* policy_mgr_current_concurrency_is_scc() - To check the current
* concurrency combination if it is doing SCC

View File

@@ -6852,6 +6852,34 @@ QDF_STATUS policy_mgr_set_user_cfg(struct wlan_objmgr_psoc *psoc,
return QDF_STATUS_SUCCESS;
}
bool policy_mgr_will_freq_lead_to_mcc(struct wlan_objmgr_psoc *psoc,
qdf_freq_t freq)
{
bool is_mcc = false;
uint32_t conn_index;
struct policy_mgr_psoc_priv_obj *pm_ctx;
pm_ctx = policy_mgr_get_context(psoc);
if (!pm_ctx) {
policy_mgr_err("Invalid Context");
return is_mcc;
}
qdf_mutex_acquire(&pm_ctx->qdf_conc_list_lock);
for (conn_index = 0; conn_index < MAX_NUMBER_OF_CONC_CONNECTIONS;
conn_index++) {
if (pm_conc_connection_list[conn_index].in_use &&
policy_mgr_2_freq_always_on_same_mac(psoc, freq,
pm_conc_connection_list[conn_index].freq)) {
is_mcc = true;
break;
}
}
qdf_mutex_release(&pm_ctx->qdf_conc_list_lock);
return is_mcc;
}
/**
* policy_mgr_is_two_connection_mcc() - Check if MCC scenario
* when there are two connections

View File

@@ -34,6 +34,9 @@
#include "wlan_connectivity_logging.h"
#define MAC_MAX_ADD_IE_LENGTH 2048
/* Join probe request Retry timer default (200)ms */
#define JOIN_PROBE_REQ_TIMER_MS 200
#define MAX_JOIN_PROBE_REQ 5
/*
* Following time is used to program WOW_TIMER_PATTERN to FW so that FW will

View File

@@ -864,6 +864,7 @@ static void mlme_init_timeout_cfg(struct wlan_objmgr_psoc *psoc,
timeouts->join_failure_timeout =
cfg_get(psoc, CFG_JOIN_FAILURE_TIMEOUT);
timeouts->join_failure_timeout_ori = timeouts->join_failure_timeout;
timeouts->probe_req_retry_timeout = JOIN_PROBE_REQ_TIMER_MS;
timeouts->auth_failure_timeout =
cfg_get(psoc, CFG_AUTH_FAILURE_TIMEOUT);
timeouts->auth_rsp_timeout =

View File

@@ -2328,6 +2328,7 @@ struct wlan_mlme_power {
/*
* struct wlan_mlme_timeout - mlme timeout related config items
* @join_failure_timeout: join failure timeout (can be changed in connect req)
* @probe_req_retry_timeout: Probe req retry timeout during join time
* @join_failure_timeout_ori: original value of above join timeout
* @auth_failure_timeout: authenticate failure timeout
* @auth_rsp_timeout: authenticate response timeout
@@ -2343,6 +2344,7 @@ struct wlan_mlme_power {
*/
struct wlan_mlme_timeout {
uint32_t join_failure_timeout;
uint32_t probe_req_retry_timeout;
uint32_t join_failure_timeout_ori;
uint32_t auth_failure_timeout;
uint32_t auth_rsp_timeout;