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:
parent
7e32bffd73
commit
a4715adff4
3
Kbuild
3
Kbuild
@ -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
|
||||
|
||||
|
4
Kconfig
4
Kconfig
@ -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
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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",
|
||||
|
@ -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
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user