qcacmn: Reuse the tx descriptors in direct switch

Reuse the tx descriptors released in tx completions
without releasing the associated skbs to reduce
the cpu utilization in direct switch mode.

Change-Id: I4ab3ac58977a626344877b8a818a4dbc4864aaf3
CRs-Fixed: 3393968
此提交包含在:
Pavankumar Nandeshwar
2023-01-18 02:01:00 -08:00
提交者 Madan Koyyalamudi
父節點 87f6016da2
當前提交 0a7d729a98
共有 8 個檔案被更改,包括 78 行新增12 行删除

查看文件

@@ -5420,6 +5420,19 @@ dp_tx_nbuf_dev_queue_free(qdf_nbuf_queue_head_t *nbuf_queue_head,
qdf_nbuf_free(nbuf);
}
static inline void
dp_tx_nbuf_dev_queue_free_no_flag(qdf_nbuf_queue_head_t *nbuf_queue_head,
qdf_nbuf_t nbuf)
{
if (!nbuf)
return;
if (nbuf->is_from_recycler)
qdf_nbuf_dev_queue_head(nbuf_queue_head, nbuf);
else
qdf_nbuf_free(nbuf);
}
static inline void
dp_tx_nbuf_dev_kfree_list(qdf_nbuf_queue_head_t *nbuf_queue_head)
{
@@ -5438,6 +5451,13 @@ dp_tx_nbuf_dev_queue_free(qdf_nbuf_queue_head_t *nbuf_queue_head,
qdf_nbuf_free(desc->nbuf);
}
static inline void
dp_tx_nbuf_dev_queue_free_no_flag(qdf_nbuf_queue_head_t *nbuf_queue_head,
qdf_nbuf_t nbuf)
{
qdf_nbuf_free(nbuf);
}
static inline void
dp_tx_nbuf_dev_kfree_list(qdf_nbuf_queue_head_t *nbuf_queue_head)
{
@@ -5481,13 +5501,15 @@ dp_tx_comp_process_desc_list(struct dp_soc *soc,
}
if (desc->flags & DP_TX_DESC_FLAG_PPEDS) {
qdf_nbuf_t nbuf;
if (qdf_likely(txrx_peer))
dp_tx_update_peer_basic_stats(txrx_peer,
desc->length,
desc->tx_status,
false);
dp_tx_nbuf_dev_queue_free(&h, desc);
dp_ppeds_tx_desc_free(soc, desc);
nbuf = dp_ppeds_tx_desc_free(soc, desc);
dp_tx_nbuf_dev_queue_free_no_flag(&h, nbuf);
desc = next;
continue;
}