diff options
| author | Jingxiang Ge <jge@codeaurora.org> | 2017-12-20 18:47:53 +0800 |
|---|---|---|
| committer | snandini <snandini@codeaurora.org> | 2017-12-22 00:44:44 -0800 |
| commit | 203a0ac1b9946da437ed98da3d1f7727fbb4b9fb (patch) | |
| tree | abd5dae135417b6b880ae12fcff21a4faa3ca76d | |
| parent | d17a621afa905d2ff58fdcc8858cf21ca18cf994 (diff) | |
qcacld-3.0: Reduce excessive logging in ol_txrx_offld_flush
In some case, cds messages to be allocated for cds_ol_rx_thread
is exhausted, excessive logging in dmesg will cause watchdog.
Reduce logging and try to wakeup rx thread.
Change-Id: I9f185298a2aced1618312f5ce0fb93eb33ff6130
CRs-Fixed: 2161574
| -rw-r--r-- | core/cds/inc/cds_sched.h | 23 | ||||
| -rw-r--r-- | core/cds/src/cds_sched.c | 15 | ||||
| -rw-r--r-- | core/dp/txrx/ol_txrx.c | 6 |
3 files changed, 42 insertions, 2 deletions
diff --git a/core/cds/inc/cds_sched.h b/core/cds/inc/cds_sched.h index 743db60492a1..e84d0c9bbc27 100644 --- a/core/cds/inc/cds_sched.h +++ b/core/cds/inc/cds_sched.h @@ -376,6 +376,16 @@ void cds_drop_rxpkt_by_staid(p_cds_sched_context pSchedContext, uint16_t staId); void cds_indicate_rxpkt(p_cds_sched_context pSchedContext, struct cds_ol_rx_pkt *pkt); +/** + * cds_wakeup_rx_thread() - wakeup rx thread + * @Arg: Pointer to the global CDS Sched Context + * + * This api wake up cds_ol_rx_thread() to process pkt + * + * Return: none + */ +void cds_wakeup_rx_thread(p_cds_sched_context pSchedContext); + /*--------------------------------------------------------------------------- \brief cds_alloc_ol_rx_pkt() - API to return next available cds message The \a cds_alloc_ol_rx_pkt() returns next available cds message buffer @@ -440,6 +450,19 @@ void cds_indicate_rxpkt(p_cds_sched_context pSchedContext, } /** + * cds_wakeup_rx_thread() - wakeup rx thread + * @Arg: Pointer to the global CDS Sched Context + * + * This api wake up cds_ol_rx_thread() to process pkt + * + * Return: none + */ +static inline +void cds_wakeup_rx_thread(p_cds_sched_context pSchedContext) +{ +} + +/** * cds_alloc_ol_rx_pkt() - API to return next available cds message * @pSchedContext: pointer to CDS Sched Context * diff --git a/core/cds/src/cds_sched.c b/core/cds/src/cds_sched.c index 57de9809cb9e..65c74d4522b4 100644 --- a/core/cds/src/cds_sched.c +++ b/core/cds/src/cds_sched.c @@ -1054,6 +1054,21 @@ cds_indicate_rxpkt(p_cds_sched_context pSchedContext, } /** + * cds_wakeup_rx_thread() - wakeup rx thread + * @Arg: Pointer to the global CDS Sched Context + * + * This api wake up cds_ol_rx_thread() to process pkt + * + * Return: none + */ +void +cds_wakeup_rx_thread(p_cds_sched_context pSchedContext) +{ + set_bit(RX_POST_EVENT, &pSchedContext->ol_rx_event_flag); + wake_up_interruptible(&pSchedContext->ol_rx_wait_queue); +} + +/** * cds_drop_rxpkt_by_staid() - api to drop pending rx packets for a sta * @pSchedContext: Pointer to the global CDS Sched Context * @staId: Station Id diff --git a/core/dp/txrx/ol_txrx.c b/core/dp/txrx/ol_txrx.c index 72d54b0c1d0d..7593d6e22ceb 100644 --- a/core/dp/txrx/ol_txrx.c +++ b/core/dp/txrx/ol_txrx.c @@ -5380,8 +5380,10 @@ static void ol_txrx_offld_flush(void *data) } else { pkt = cds_alloc_ol_rx_pkt(sched_ctx); if (qdf_unlikely(!pkt)) { - QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_ERROR, - "%s: Not able to allocate context", __func__); + QDF_TRACE_RATE_LIMITED(128, QDF_MODULE_ID_TXRX, + QDF_TRACE_LEVEL_ERROR, + "%s: Not able to allocate context", __func__); + cds_wakeup_rx_thread(sched_ctx); return; } |
