mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-14 00:24:41 -04:00
qcacld-3.0: Fix memory leak when SSR is triggered
qcacld-2.0 to qcacld-3.0 propagation. Packets are not freed from cache buffer and causes memory leak in SSR case. Flush cache RX frame queue to avoid this memory leak. Change-Id: Idd9edde6fdb3b9ff3ecbe7d8139f9a66468b70af CRs-Fixed: 1051019
This commit is contained in:
parent
fa2b2d18b0
commit
1ab0a3db60
3 changed files with 26 additions and 0 deletions
|
|
@ -206,6 +206,13 @@ QDF_STATUS cds_enable(v_CONTEXT_t cds_context);
|
|||
|
||||
QDF_STATUS cds_disable(v_CONTEXT_t cds_context);
|
||||
|
||||
/**
|
||||
* cds_flush_cache_rx_queue() - flush cache rx queue frame
|
||||
*
|
||||
* Return: None
|
||||
*/
|
||||
void cds_flush_cache_rx_queue(void);
|
||||
|
||||
QDF_STATUS cds_close(v_CONTEXT_t cds_context);
|
||||
|
||||
QDF_STATUS cds_shutdown(v_CONTEXT_t cds_context);
|
||||
|
|
|
|||
|
|
@ -817,6 +817,22 @@ QDF_STATUS cds_close(v_CONTEXT_t cds_context)
|
|||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
void cds_flush_cache_rx_queue(void)
|
||||
{
|
||||
uint8_t sta_id;
|
||||
struct ol_txrx_peer_t *peer;
|
||||
struct ol_txrx_pdev_t *pdev = cds_get_context(QDF_MODULE_ID_TXRX);
|
||||
|
||||
for (sta_id = 0; sta_id < WLAN_MAX_STA_COUNT; sta_id++) {
|
||||
peer = ol_txrx_peer_find_by_local_id(pdev, sta_id);
|
||||
if (!peer)
|
||||
continue;
|
||||
ol_txrx_flush_rx_frames(peer, 1);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* cds_get_context() - get context data area
|
||||
*
|
||||
|
|
|
|||
|
|
@ -1448,6 +1448,9 @@ QDF_STATUS hdd_wlan_shutdown(void)
|
|||
hdd_cleanup_scan_queue(pHddCtx);
|
||||
hdd_reset_all_adapters(pHddCtx);
|
||||
|
||||
/* Flush cached rx frame queue */
|
||||
cds_flush_cache_rx_queue();
|
||||
|
||||
/* De-register the HDD callbacks */
|
||||
hdd_deregister_cb(pHddCtx);
|
||||
hdd_ipa_uc_ssr_deinit();
|
||||
|
|
|
|||
Loading…
Reference in a new issue