qcacmn: Prefetch tx desc and nbuf in lithuim Tx. send path

Prefetch tx desc and nbuf in lithuim Tx. send path.
This improves the UDP DL CPU idle% by ~1.5%

Change-Id: Ibd31d979c859824ed9f6b34a2685f8b9c4a7635d
这个提交包含在:
Neha Bisht
2021-10-20 10:38:06 +05:30
提交者 Madan Koyyalamudi
父节点 850aa79f06
当前提交 631d7e1a7d
修改 2 个文件,包含 32 行新增0 行删除

查看文件

@@ -3048,6 +3048,22 @@ void dp_tx_nawds_handler(struct dp_soc *soc, struct dp_vdev *vdev,
qdf_spin_unlock_bh(&vdev->peer_list_lock);
}
#ifdef QCA_DP_TX_NBUF_AND_NBUF_DATA_PREFETCH
static inline
void dp_tx_prefetch_nbuf_data(qdf_nbuf_t nbuf)
{
if (nbuf) {
qdf_prefetch(&nbuf->len);
qdf_prefetch(&nbuf->data);
}
}
#else
static inline
void dp_tx_prefetch_nbuf_data(qdf_nbuf_t nbuf)
{
}
#endif
/**
* dp_tx_send() - Transmit a frame on a given VAP
* @soc: DP soc handle
@@ -3200,6 +3216,7 @@ qdf_nbuf_t dp_tx_send(struct cdp_soc_t *soc_hdl, uint8_t vdev_id,
* prepare direct-buffer type TCL descriptor and enqueue to TCL
* SRNG. There is no need to setup a MSDU extension descriptor.
*/
dp_tx_prefetch_nbuf_data(nbuf);
nbuf = dp_tx_send_msdu_single(vdev, nbuf, &msdu_info, peer_id, NULL);
return nbuf;