qcacmn: Allocate pdev attach bufs from page frag

Use page frag init time rx buffer allocation for efficient usage of memory.
Add ini dp_bufs_page_frag_allocs to disable and revert to original slab
nbuf allocations.

Change-Id: Iac78895addfe9da0118bc071c691a26216d6fda1
CRs-Fixed: 3553800
This commit is contained in:
Prakash Manjunathappa
2023-07-08 00:33:26 -07:00
committed by Rahul Choudhary
parent 02622819d0
commit fab64e0adc
4 changed files with 49 additions and 6 deletions

View File

@@ -2981,14 +2981,23 @@ static QDF_STATUS
dp_pdev_nbuf_alloc_and_map(struct dp_soc *dp_soc,
struct dp_rx_nbuf_frag_info *nbuf_frag_info_t,
struct dp_pdev *dp_pdev,
struct rx_desc_pool *rx_desc_pool)
struct rx_desc_pool *rx_desc_pool,
bool dp_buf_page_frag_alloc_enable)
{
QDF_STATUS ret = QDF_STATUS_E_FAILURE;
(nbuf_frag_info_t->virt_addr).nbuf =
qdf_nbuf_alloc(dp_soc->osdev, rx_desc_pool->buf_size,
RX_BUFFER_RESERVATION,
rx_desc_pool->buf_alignment, FALSE);
if (dp_buf_page_frag_alloc_enable) {
(nbuf_frag_info_t->virt_addr).nbuf =
qdf_nbuf_frag_alloc(dp_soc->osdev,
rx_desc_pool->buf_size,
RX_BUFFER_RESERVATION,
rx_desc_pool->buf_alignment, FALSE);
} else {
(nbuf_frag_info_t->virt_addr).nbuf =
qdf_nbuf_alloc(dp_soc->osdev, rx_desc_pool->buf_size,
RX_BUFFER_RESERVATION,
rx_desc_pool->buf_alignment, FALSE);
}
if (!((nbuf_frag_info_t->virt_addr).nbuf)) {
dp_err("nbuf alloc failed");
DP_STATS_INC(dp_pdev, replenish.nbuf_alloc_fail, 1);
@@ -3043,6 +3052,7 @@ dp_pdev_rx_buffers_attach(struct dp_soc *dp_soc, uint32_t mac_id,
union dp_rx_desc_list_elem_t *tail = NULL;
int sync_hw_ptr = 1;
uint32_t num_entries_avail;
bool dp_buf_page_frag_alloc_enable;
if (qdf_unlikely(!dp_pdev)) {
dp_rx_err("%pK: pdev is null for mac_id = %d",
@@ -3050,6 +3060,9 @@ dp_pdev_rx_buffers_attach(struct dp_soc *dp_soc, uint32_t mac_id,
return QDF_STATUS_E_FAILURE;
}
dp_buf_page_frag_alloc_enable =
wlan_cfg_is_dp_buf_page_frag_alloc_enable(dp_soc->wlan_cfg_ctx);
if (qdf_unlikely(!rxdma_srng)) {
DP_STATS_INC(dp_pdev, replenish.rxdma_err, num_req_buffers);
return QDF_STATUS_E_FAILURE;
@@ -3125,7 +3138,8 @@ dp_pdev_rx_buffers_attach(struct dp_soc *dp_soc, uint32_t mac_id,
else
ret = dp_pdev_nbuf_alloc_and_map(dp_soc,
&nf_info[nr_nbuf], dp_pdev,
rx_desc_pool);
rx_desc_pool,
dp_buf_page_frag_alloc_enable);
if (QDF_IS_STATUS_ERROR(ret))
break;