qcacld-3.0: Optimize GC connection speed by skipping JOIN

Currently STA/GC connection will have JOIN which actively probe AP/GO
in this state to get latest bss entry, but before connection scan
already trigger and bss entry updated in scan db so can skip JOIN
in some scenario.

There is requirement to optimize GC connection speed, and to skip
JOIN state is one of the subtask to achieve it. Add a build option
to skip JOIN for GC connection.

Change-Id: I1f8beaa41ea398601a17fa80997029b8ac8849ae
CRs-Fixed: 3598283
This commit is contained in:
Will Huang 2023-08-16 15:32:19 +05:30 committed by Ravindra Konda
parent 7e32bffd73
commit a4715adff4
6 changed files with 49 additions and 0 deletions

3
Kbuild
View File

@ -4072,6 +4072,9 @@ ccflags-$(CONFIG_FEATURE_WLAN_AP_AP_ACS_OPTIMIZE) += -DFEATURE_WLAN_AP_AP_ACS_OP
#Enable 4address scheme
ccflags-$(CONFIG_FEATURE_WLAN_STA_4ADDR_SCHEME) += -DFEATURE_WLAN_STA_4ADDR_SCHEME
#Optimize GC connection speed by skipping JOIN
ccflags-$(CONFIG_FEATURE_WLAN_GC_SKIP_JOIN) += -DFEATURE_WLAN_GC_SKIP_JOIN
#enable MDM/SDX special config
ccflags-$(CONFIG_MDM_PLATFORM) += -DMDM_PLATFORM

View File

@ -1341,6 +1341,10 @@ config WLAN_FEATURE_SAP_ACS_OPTIMIZE
bool "Enable WLAN_FEATURE_SAP_ACS_OPTIMIZE"
default n
config FEATURE_WLAN_GC_SKIP_JOIN
bool "enable CONFIG_FEATURE_WLAN_GC_SKIP_JOIN"
default n
config WLAN_FEATURE_SARV1_TO_SARV2
bool "Enable conversion of SAR v1 to v2 feature"
default n

View File

@ -1243,6 +1243,10 @@
#define FEATURE_WLAN_STA_4ADDR_SCHEME (1)
#endif
#ifdef CONFIG_FEATURE_WLAN_GC_SKIP_JOIN
#define FEATURE_WLAN_GC_SKIP_JOIN (1)
#endif
#ifdef CONFIG_MDM_PLATFORM
#define MDM_PLATFORM (1)
#endif

View File

@ -3094,6 +3094,16 @@ static void lim_process_switch_channel_join_req(
goto error;
}
if (lim_connect_skip_join_for_gc(session_entry)) {
join_cnf.resultCode = eSIR_SME_SUCCESS;
join_cnf.protStatusCode = STATUS_SUCCESS;
join_cnf.sessionId = session_entry->peSessionId;
lim_post_sme_message(mac_ctx,
LIM_MLM_JOIN_CNF,
(uint32_t *)&join_cnf.resultCode);
return;
}
bss = &session_entry->lim_join_req->bssDescription;
nontx_bss_id = bss->mbssid_info.profile_num;

View File

@ -4708,6 +4708,17 @@ lim_cm_handle_join_req(struct cm_vdev_join_req *req)
lim_dump_he_info(mac_ctx, pe_session);
lim_dump_eht_info(pe_session);
if (lim_connect_skip_join_for_gc(pe_session)) {
pe_session->beacon =
qdf_mem_malloc(util_scan_entry_frame_len(req->entry));
if (!pe_session->beacon)
goto fail;
pe_session->bcnLen = util_scan_entry_frame_len(req->entry);
qdf_mem_copy(pe_session->beacon,
util_scan_entry_frame_ptr(req->entry),
pe_session->bcnLen);
}
status = lim_send_connect_req_to_mlm(pe_session);
if (QDF_IS_STATUS_ERROR(status)) {
pe_err("Failed to send mlm req vdev id %d",

View File

@ -3272,6 +3272,23 @@ lim_skip_tpc_update_for_sta(struct mac_context *mac,
struct pe_session *sta_session,
struct pe_session *sap_session);
#ifdef FEATURE_WLAN_GC_SKIP_JOIN
static inline bool
lim_connect_skip_join_for_gc(struct pe_session *pe_session)
{
if (pe_session->opmode == QDF_P2P_CLIENT_MODE)
return true;
else
return false;
}
#else
static inline bool
lim_connect_skip_join_for_gc(struct pe_session *pe_session)
{
return false;
}
#endif
/**
* lim_get_concurrent_session() - Function to get the concurrent session pointer
*