qcacmn: refine the APIs for reap timer of monitor status ring

Since more than one components depend on reap timer of
monitor status ring, add bitmap to record the trigger
sources of the timer and refine the APIs/calling functions
accordingly.

With this change:
When a new start request comes, if the source is
CDP_MON_REAP_SOURCE_ANY, skip bit set, and start timer
if any bit has been set in the bitmap; while for the
other sources, set the bit and start timer if the bitmap
is empty before that.

When a new stop request comes, if the source is
CDP_MON_REAP_SOURCE_ANY, skip bit clear, and stop timer
if any bit has been set in the bitmap; while for the
other sources, clear the bit and stop timer if the bitmap
is empty after that.

Change-Id: Idaa7837c4b93b247ff2236aa5072d309fa9548c2
CRs-Fixed: 3190347
This commit is contained in:
Yu Wang
2022-05-17 18:07:53 +08:00
committed by Madan Koyyalamudi
parent c8fafae5ee
commit a9461beb20
10 changed files with 239 additions and 211 deletions

View File

@@ -13548,7 +13548,7 @@ static QDF_STATUS dp_bus_suspend(struct cdp_soc_t *soc_hdl, uint8_t pdev_id)
qdf_timer_stop(&soc->int_timer);
/* Stop monitor reap timer and reap any pending frames in ring */
dp_monitor_pktlog_reap_pending_frames(pdev);
dp_monitor_reap_timer_suspend(soc);
dp_suspend_fse_cache_flush(soc);
@@ -13570,7 +13570,7 @@ static QDF_STATUS dp_bus_resume(struct cdp_soc_t *soc_hdl, uint8_t pdev_id)
qdf_timer_mod(&soc->int_timer, DP_INTR_POLL_TIMER_MS);
/* Start monitor reap timer */
dp_monitor_pktlog_start_reap_timer(pdev);
dp_monitor_reap_timer_start(soc, CDP_MON_REAP_SOURCE_ANY);
dp_resume_fse_cache_flush(soc);
@@ -13602,7 +13602,7 @@ static void dp_process_wow_ack_rsp(struct cdp_soc_t *soc_hdl, uint8_t pdev_id)
* response from FW reap mon status ring to make sure no packets pending
* in the ring.
*/
dp_monitor_pktlog_reap_pending_frames(pdev);
dp_monitor_reap_timer_suspend(soc);
}
/**
@@ -13624,7 +13624,7 @@ static void dp_process_target_suspend_req(struct cdp_soc_t *soc_hdl,
}
/* Stop monitor reap timer and reap any pending frames in ring */
dp_monitor_pktlog_reap_pending_frames(pdev);
dp_monitor_reap_timer_suspend(soc);
}
static struct cdp_bus_ops dp_ops_bus = {