qcacmn: Fix for the memory leak in smart monitor feature
Change with fix memory leak observed in case where smart monitor is enabled and monitor direct bit is not set Change-Id: Ib556482b9067dbd7418cbe226a19bbbd5844a075
This commit is contained in:

committed by
nshrivas

parent
099671a852
commit
3e4ac1cace
@@ -413,6 +413,12 @@ dp_rx_handle_ppdu_stats(struct dp_soc *soc, struct dp_pdev *pdev,
|
|||||||
qdf_spin_unlock_bh(&pdev->neighbour_peer_mutex);
|
qdf_spin_unlock_bh(&pdev->neighbour_peer_mutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* need not generate wdi event when mcopy and
|
||||||
|
* enhanced stats are not enabled
|
||||||
|
*/
|
||||||
|
if (!pdev->mcopy_mode && !pdev->enhanced_stats_en)
|
||||||
|
return;
|
||||||
|
|
||||||
if (!pdev->mcopy_mode) {
|
if (!pdev->mcopy_mode) {
|
||||||
if (!ppdu_info->rx_status.frame_control_info_valid)
|
if (!ppdu_info->rx_status.frame_control_info_valid)
|
||||||
return;
|
return;
|
||||||
@@ -550,21 +556,22 @@ dp_rx_mon_status_process_tlv(struct dp_soc *soc, uint32_t mac_id,
|
|||||||
status_nbuf, HTT_INVALID_PEER,
|
status_nbuf, HTT_INVALID_PEER,
|
||||||
WDI_NO_VAL, mac_id);
|
WDI_NO_VAL, mac_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* smart monitor vap and m_copy cannot co-exist */
|
||||||
if (ppdu_info->rx_status.monitor_direct_used && pdev->neighbour_peers_added
|
if (ppdu_info->rx_status.monitor_direct_used && pdev->neighbour_peers_added
|
||||||
&& pdev->monitor_vdev) {
|
&& pdev->monitor_vdev) {
|
||||||
smart_mesh_status = dp_rx_handle_smart_mesh_mode(soc,
|
smart_mesh_status = dp_rx_handle_smart_mesh_mode(soc,
|
||||||
pdev, ppdu_info, status_nbuf);
|
pdev, ppdu_info, status_nbuf);
|
||||||
if (smart_mesh_status)
|
if (smart_mesh_status)
|
||||||
qdf_nbuf_free(status_nbuf);
|
qdf_nbuf_free(status_nbuf);
|
||||||
}
|
} else if (pdev->mcopy_mode) {
|
||||||
if (pdev->mcopy_mode) {
|
|
||||||
m_copy_status = dp_rx_handle_mcopy_mode(soc,
|
m_copy_status = dp_rx_handle_mcopy_mode(soc,
|
||||||
pdev, ppdu_info, status_nbuf);
|
pdev, ppdu_info, status_nbuf);
|
||||||
if (m_copy_status == QDF_STATUS_SUCCESS)
|
if (m_copy_status == QDF_STATUS_SUCCESS)
|
||||||
qdf_nbuf_free(status_nbuf);
|
qdf_nbuf_free(status_nbuf);
|
||||||
}
|
} else {
|
||||||
if (!pdev->neighbour_peers_added && !pdev->mcopy_mode)
|
|
||||||
qdf_nbuf_free(status_nbuf);
|
qdf_nbuf_free(status_nbuf);
|
||||||
|
}
|
||||||
|
|
||||||
if (tlv_status == HAL_TLV_STATUS_PPDU_NON_STD_DONE) {
|
if (tlv_status == HAL_TLV_STATUS_PPDU_NON_STD_DONE) {
|
||||||
dp_rx_mon_deliver_non_std(soc, mac_id);
|
dp_rx_mon_deliver_non_std(soc, mac_id);
|
||||||
|
Reference in New Issue
Block a user