diff --git a/dp/wifi3.0/dp_main.c b/dp/wifi3.0/dp_main.c index babf9dd87b6c..67c96182c188 100644 --- a/dp/wifi3.0/dp_main.c +++ b/dp/wifi3.0/dp_main.c @@ -2702,6 +2702,26 @@ static void dp_neighbour_peers_detach(struct dp_pdev *pdev) qdf_spinlock_destroy(&pdev->neighbour_peer_mutex); } +/** +* dp_htt_ppdu_stats_detach() - detach stats resources +* @pdev: Datapath PDEV handle +* +* Return: void +*/ +static void dp_htt_ppdu_stats_detach(struct dp_pdev *pdev) +{ + struct ppdu_info *ppdu_info, *ppdu_info_next; + + TAILQ_FOREACH_SAFE(ppdu_info, &pdev->ppdu_info_list, + ppdu_info_list_elem, ppdu_info_next) { + if (!ppdu_info) + break; + qdf_assert_always(ppdu_info->nbuf); + qdf_nbuf_free(ppdu_info->nbuf); + qdf_mem_free(ppdu_info); + } +} + /* * dp_pdev_detach_wifi3() - detach txrx pdev * @txrx_pdev: Datapath PDEV handle @@ -2773,6 +2793,8 @@ static void dp_pdev_detach_wifi3(struct cdp_pdev *txrx_pdev, int force) curr_nbuf = next_nbuf; } + dp_htt_ppdu_stats_detach(pdev); + soc->pdev_list[pdev->pdev_id] = NULL; soc->pdev_count--; wlan_cfg_pdev_detach(pdev->wlan_cfg_ctx);