|
@@ -95,15 +95,20 @@ static void dp_tx_desc_clean_up(void *ctxt, void *elem, void *elem_list)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-void dp_tx_desc_pool_cleanup(struct dp_soc *soc, qdf_nbuf_t *nbuf_list)
|
|
|
+void dp_tx_desc_pool_cleanup(struct dp_soc *soc, qdf_nbuf_t *nbuf_list,
|
|
|
+ bool cleanup)
|
|
|
{
|
|
|
int i;
|
|
|
struct dp_tx_desc_pool_s *tx_desc_pool = NULL;
|
|
|
uint8_t num_pool = wlan_cfg_get_num_tx_desc_pool(soc->wlan_cfg_ctx);
|
|
|
|
|
|
+ if (!cleanup)
|
|
|
+ return;
|
|
|
+
|
|
|
for (i = 0; i < num_pool; i++) {
|
|
|
tx_desc_pool = dp_get_tx_desc_pool(soc, i);
|
|
|
|
|
|
+ TX_DESC_LOCK_LOCK(&tx_desc_pool->lock);
|
|
|
if (tx_desc_pool)
|
|
|
qdf_tx_desc_pool_free_bufs(soc,
|
|
|
&tx_desc_pool->desc_pages,
|
|
@@ -112,7 +117,10 @@ void dp_tx_desc_pool_cleanup(struct dp_soc *soc, qdf_nbuf_t *nbuf_list)
|
|
|
true, &dp_tx_desc_clean_up,
|
|
|
nbuf_list);
|
|
|
|
|
|
+ TX_DESC_LOCK_UNLOCK(&tx_desc_pool->lock);
|
|
|
+
|
|
|
tx_desc_pool = dp_get_spcl_tx_desc_pool(soc, i);
|
|
|
+ TX_DESC_LOCK_LOCK(&tx_desc_pool->lock);
|
|
|
|
|
|
if (tx_desc_pool)
|
|
|
qdf_tx_desc_pool_free_bufs(soc,
|
|
@@ -121,6 +129,8 @@ void dp_tx_desc_pool_cleanup(struct dp_soc *soc, qdf_nbuf_t *nbuf_list)
|
|
|
tx_desc_pool->elem_count,
|
|
|
true, &dp_tx_desc_clean_up,
|
|
|
nbuf_list);
|
|
|
+
|
|
|
+ TX_DESC_LOCK_UNLOCK(&tx_desc_pool->lock);
|
|
|
}
|
|
|
}
|
|
|
#endif
|