qcacld-3.0: Add detection for tasklet delay

This is to enable feature for detection CE tasklet
scheduling delay and credit response delay issue.

Change-Id: I659aa23eabaa28bfb11051bf15e0343c94061b86
CRs-Fixed: 2874867
This commit is contained in:
Jingxiang Ge 2021-02-09 14:10:10 +08:00 committed by snandini
parent e067c79b10
commit 333dc4602d
6 changed files with 37 additions and 0 deletions

8
Kbuild
View File

@ -3864,6 +3864,14 @@ cppflags-$(CONFIG_FEATURE_STA_MODE_VOTE_LINK) += -DFEATURE_STA_MODE_VOTE_LINK
cppflags-$(CONFIG_WLAN_ENABLE_GPIO_WAKEUP) += -DWLAN_ENABLE_GPIO_WAKEUP
cppflags-$(CONFIG_WLAN_MAC_ADDR_UPDATE_DISABLE) += -DWLAN_MAC_ADDR_UPDATE_DISABLE
ifeq ($(CONFIG_SMP), y)
ifeq ($(CONFIG_HIF_DETECTION_LATENCY_ENABLE), y)
cppflags-y += -DHIF_DETECTION_LATENCY_ENABLE
cppflags-y += -DDETECTION_TIMER_TIMEOUT=2000
cppflags-y += -DDETECTION_LATENCY_THRESHOLD=1900
endif
endif
KBUILD_CPPFLAGS += $(cppflags-y)
# Currently, for versions of gcc which support it, the kernel Makefile

View File

@ -869,6 +869,8 @@ pmo_core_enable_wow_in_fw(struct wlan_objmgr_psoc *psoc,
pmo_debug("WOW enabled successfully in fw: credits:%d pending_cmds: %d",
host_credits, wmi_pending_cmds);
hif_latency_detect_timer_stop(pmo_core_psoc_get_hif_handle(psoc));
pmo_core_update_wow_enable_cmd_sent(psoc_ctx, true);
out:
@ -1455,6 +1457,8 @@ QDF_STATUS pmo_core_psoc_bus_resume_req(struct wlan_objmgr_psoc *psoc,
goto out;
}
hif_latency_detect_timer_start(pmo_core_psoc_get_hif_handle(psoc));
psoc_ctx = pmo_psoc_get_priv(psoc);
wow_mode = pmo_core_is_wow_enabled(psoc_ctx);
pmo_debug("wow mode %d", wow_mode);

View File

@ -1073,6 +1073,7 @@ endif
CONFIG_ENABLE_QDF_PTR_HASH_DEBUG := y
CONFIG_HIF_DEBUG := y
CONFIG_HAL_DEBUG := y
CONFIG_HIF_DETECTION_LATENCY_ENABLE := y
endif
ifeq ($(CONFIG_CNSS2_DEBUG), y)

View File

@ -158,4 +158,20 @@ void hdd_set_hif_init_phase(struct hif_opaque_softc *hif_ctx,
{
}
#endif /* FORCE_WAKE */
#ifdef HIF_DETECTION_LATENCY_ENABLE
/**
* hdd_hif_set_enable_detection() - enable detection
* @hif_ctx: hif opaque handle
* @value: enable/disable
*
* Return: None
*/
void hdd_hif_set_enable_detection(struct hif_opaque_softc *hif_ctx, bool value);
#else
static inline
void hdd_hif_set_enable_detection(struct hif_opaque_softc *hif_ctx, bool value)
{
}
#endif /* HIF_DETECTION_LATENCY_ENABLE */
#endif /* __WLAN_HDD_DRIVER_OPS_H__ */

View File

@ -231,6 +231,13 @@ static void hdd_hif_init_driver_state_callbacks(void *data,
hdd_put_consistent_mem_unaligned;
}
#ifdef HIF_DETECTION_LATENCY_ENABLE
void hdd_hif_set_enable_detection(struct hif_opaque_softc *hif_ctx, bool value)
{
hif_set_enable_detection(hif_ctx, value);
}
#endif
#ifdef FORCE_WAKE
void hdd_set_hif_init_phase(struct hif_opaque_softc *hif_ctx,
bool hal_init_phase)

View File

@ -4164,6 +4164,7 @@ int hdd_wlan_start_modules(struct hdd_context *hdd_ctx, bool reinit)
wlan_hdd_init_tx_rx_histogram(hdd_ctx);
hdd_set_hif_init_phase(hif_ctx, false);
hdd_hif_set_enable_detection(hif_ctx, true);
break;