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
このコミットが含まれているのは:
Will Huang
2023-08-16 15:32:19 +05:30
committed by Ravindra Konda
コミット a4715adff4
6個のファイルの変更49行の追加0行の削除

3
Kbuild
ファイルの表示

@@ -4072,6 +4072,9 @@ ccflags-$(CONFIG_FEATURE_WLAN_AP_AP_ACS_OPTIMIZE) += -DFEATURE_WLAN_AP_AP_ACS_OP
#Enable 4address scheme #Enable 4address scheme
ccflags-$(CONFIG_FEATURE_WLAN_STA_4ADDR_SCHEME) += -DFEATURE_WLAN_STA_4ADDR_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 #enable MDM/SDX special config
ccflags-$(CONFIG_MDM_PLATFORM) += -DMDM_PLATFORM ccflags-$(CONFIG_MDM_PLATFORM) += -DMDM_PLATFORM

ファイルの表示

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

ファイルの表示

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

ファイルの表示

@@ -3094,6 +3094,16 @@ static void lim_process_switch_channel_join_req(
goto error; 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; bss = &session_entry->lim_join_req->bssDescription;
nontx_bss_id = bss->mbssid_info.profile_num; 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_he_info(mac_ctx, pe_session);
lim_dump_eht_info(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); status = lim_send_connect_req_to_mlm(pe_session);
if (QDF_IS_STATUS_ERROR(status)) { if (QDF_IS_STATUS_ERROR(status)) {
pe_err("Failed to send mlm req vdev id %d", 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 *sta_session,
struct pe_session *sap_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 * lim_get_concurrent_session() - Function to get the concurrent session pointer
* *