diff --git a/dp/wifi3.0/dp_tx.c b/dp/wifi3.0/dp_tx.c index ab0db15e236b..79340381de7a 100644 --- a/dp/wifi3.0/dp_tx.c +++ b/dp/wifi3.0/dp_tx.c @@ -2200,12 +2200,13 @@ static inline void dp_tx_comp_free_buf(struct dp_soc *soc, desc->msdu_ext_desc->vaddr)) { /* If remaining number of segment is 0 * actual TSO may unmap and free */ - if (!DP_DESC_NUM_FRAG(desc)) { - qdf_nbuf_unmap(soc->osdev, nbuf, + if (qdf_nbuf_get_users(nbuf) == 1) + __qdf_nbuf_unmap_single(soc->osdev, + nbuf, QDF_DMA_TO_DEVICE); - qdf_nbuf_free(nbuf); - return; - } + + qdf_nbuf_free(nbuf); + return; } }