qcacld-3.0: Set PM delay to 1200 ms for WOW_REASON_LOCAL_DATA_UC_DROP

Currently general PM delay is 500 ms. If fw sends wow wakeup with reason
code WOW_REASON_LOCAL_DATA_UC_DROP host wakes up, 500 ms after the
transactions again runtime suspend takes effect. Every time FW sends wow
wake there will be a small delay induced. It is noticed that large
frames are getting dropped for continuous wow wakeup events.

To address this issue increase PM delay to 1200 ms if fw sends
wow wake for reason WOW_REASON_LOCAL_DATA_UC_DROP and again
revert it back to 500 ms on next WoW enter.

Change-Id: I57bafc5ae8a633f1f685201ceb5936b59c985148
CRs-Fixed: 3330844
This commit is contained in:
Asutosh Mohapatra
2022-11-10 16:25:58 +05:30
committato da Madan Koyyalamudi
parent 0301202d47
commit 7b4c3a6fb3
3 ha cambiato i file con 10 aggiunte e 1 eliminazioni

Vedi File

@@ -42,7 +42,7 @@
#include "cfg_ucfg_api.h"
#include "cdp_txrx_bus.h"
#include "wlan_pmo_ucfg_api.h"
#include "hif.h"
/**
* pmo_core_get_vdev_dtim_period() - Get vdev dtim period
* @vdev: objmgr vdev handle
@@ -884,6 +884,9 @@ pmo_core_enable_wow_in_fw(struct wlan_objmgr_psoc *psoc,
hif_latency_detect_timer_stop(pmo_core_psoc_get_hif_handle(psoc));
if (hif_rtpm_get_autosuspend_delay() == WOW_LARGE_RX_RTPM_DELAY)
hif_rtpm_restore_autosuspend_delay();
pmo_core_update_wow_enable_cmd_sent(psoc_ctx, true);
out:

Vedi File

@@ -55,6 +55,8 @@
#define MAX_MC_IP_ADDR 10
#define IGMP_QUERY_ADDRESS 0x10000e0
#define WOW_LARGE_RX_RTPM_DELAY 1200
/**
* enum pmo_vdev_param_id: tell vdev param id
* @pmo_vdev_param_listen_interval: vdev listen interval param id

Vedi File

@@ -75,6 +75,7 @@
#include "cdp_txrx_host_stats.h"
#include "target_if_cm_roam_event.h"
#include <wlan_mlo_mgr_cmn.h>
#include "hif.h"
/**
* WMA_SET_VDEV_IE_SOURCE_HOST - Flag to identify the source of VDEV SET IE
@@ -3079,6 +3080,9 @@ int wma_wow_wakeup_host_event(void *handle, uint8_t *event, uint32_t len)
wma_wake_event_log_reason(wma, wake_info);
if (wake_info->wake_reason == WOW_REASON_LOCAL_DATA_UC_DROP)
hif_rtpm_set_autosuspend_delay(WOW_LARGE_RX_RTPM_DELAY);
ucfg_pmo_psoc_wakeup_host_event_received(wma->psoc);
wma_print_wow_stats(wma, wake_info);