qcacmn: Check for system PM state before SW2TCL HP update

In SAP mode, intrabss forwarding can happen when system
suspend is in progress. This could potentially result in
a scenario where SW2TCL HP update goes through after
WOW_ENABLE command is sent to FW.

Fix is to check for system PM states and do an explicit
system wakeup if tx packet gets enqueued to SW2TCL after
wow is enabled. Flush the SW2TCL HP on system resume.

Change-Id: I8dcd108b0dc1d703168f2f7a0ef0627e4dc0b103
CRs-Fixed: 3087727
Šī revīzija ir iekļauta:
Yeshwanth Sriram Guntuka
2021-12-02 11:53:01 +05:30
revīziju iesūtīja Madan Koyyalamudi
vecāks e5a33cd5b6
revīzija 454c7361e1
3 mainīti faili ar 41 papildinājumiem un 3 dzēšanām

Parādīt failu

@@ -1479,7 +1479,13 @@ dp_tx_ring_access_end_wrapper(struct dp_soc *soc,
RTPM_ID_DW_TX_HW_ENQUEUE, true);
switch (ret) {
case 0:
dp_tx_ring_access_end(soc, hal_ring_hdl, coalesce);
if (hif_system_pm_state_check(soc->hif_handle)) {
dp_tx_hal_ring_access_end_reap(soc, hal_ring_hdl);
hal_srng_set_event(hal_ring_hdl, HAL_SRNG_FLUSH_EVENT);
hal_srng_inc_flush_cnt(hal_ring_hdl);
} else {
dp_tx_ring_access_end(soc, hal_ring_hdl, coalesce);
}
hif_pm_runtime_put(soc->hif_handle,
RTPM_ID_DW_TX_HW_ENQUEUE);
break;
@@ -1514,6 +1520,23 @@ dp_tx_ring_access_end_wrapper(struct dp_soc *soc,
}
}
#else
#ifdef DP_POWER_SAVE
void
dp_tx_ring_access_end_wrapper(struct dp_soc *soc,
hal_ring_handle_t hal_ring_hdl,
int coalesce)
{
if (hif_system_pm_state_check(soc->hif_handle)) {
dp_tx_hal_ring_access_end_reap(soc, hal_ring_hdl);
hal_srng_set_event(hal_ring_hdl, HAL_SRNG_FLUSH_EVENT);
hal_srng_inc_flush_cnt(hal_ring_hdl);
} else {
dp_tx_ring_access_end(soc, hal_ring_hdl, coalesce);
}
}
#endif
static inline int dp_get_rtpm_tput_policy_requirement(struct dp_soc *soc)
{
return 0;