diff options
| -rw-r--r-- | core/dp/htt/htt_rx.c | 48 |
1 files changed, 7 insertions, 41 deletions
diff --git a/core/dp/htt/htt_rx.c b/core/dp/htt/htt_rx.c index eb522855796f..e3410315ddf0 100644 --- a/core/dp/htt/htt_rx.c +++ b/core/dp/htt/htt_rx.c @@ -488,19 +488,9 @@ static int htt_rx_ring_fill_n(struct htt_pdev_t *pdev, int num) struct htt_host_rx_desc_base *rx_desc; int filled = 0; int debt_served = 0; - qdf_mem_info_t *mem_map_table = NULL, *mem_info = NULL; - int num_alloc = 0; + qdf_mem_info_t mem_map_table = {0}; idx = *(pdev->rx_ring.alloc_idx.vaddr); - if (qdf_mem_smmu_s1_enabled(pdev->osdev) && pdev->is_ipa_uc_enabled) { - mem_map_table = qdf_mem_map_table_alloc(num); - if (!mem_map_table) { - qdf_print("%s: Failed to allocate memory for mem map table\n", - __func__); - goto update_alloc_idx; - } - mem_info = mem_map_table; - } moretofill: while (num > 0) { @@ -527,7 +517,7 @@ moretofill: qdf_timer_start( &pdev->rx_ring.refill_retry_timer, HTT_RX_RING_REFILL_RETRY_TIME_MS); - goto free_mem_map_table; + goto update_alloc_idx; } /* Clear rx_desc attention word before posting to Rx ring */ @@ -564,8 +554,9 @@ moretofill: #endif if (status != QDF_STATUS_SUCCESS) { qdf_nbuf_free(rx_netbuf); - goto free_mem_map_table; + goto update_alloc_idx; } + paddr = qdf_nbuf_get_frag_paddr(rx_netbuf, 0); paddr_marked = htt_rx_paddr_mark_high_bits(paddr); if (pdev->cfg.is_full_reorder_offload) { @@ -582,7 +573,7 @@ moretofill: QDF_DMA_FROM_DEVICE); #endif qdf_nbuf_free(rx_netbuf); - goto free_mem_map_table; + goto update_alloc_idx; } htt_rx_dbg_rxbuf_set(pdev, paddr_marked, rx_netbuf); } else { @@ -591,10 +582,9 @@ moretofill: if (qdf_mem_smmu_s1_enabled(pdev->osdev) && pdev->is_ipa_uc_enabled) { - qdf_update_mem_map_table(pdev->osdev, mem_info, + qdf_update_mem_map_table(pdev->osdev, &mem_map_table, paddr, HTT_RX_BUF_SIZE); - mem_info++; - num_alloc++; + cds_smmu_map_unmap(true, 1, &mem_map_table); } pdev->rx_ring.buf.paddrs_ring[idx] = paddr_marked; @@ -606,36 +596,12 @@ moretofill: idx &= pdev->rx_ring.size_mask; } - if (qdf_mem_smmu_s1_enabled(pdev->osdev) && pdev->is_ipa_uc_enabled) { - cds_smmu_map_unmap(true, num_alloc, mem_map_table); - qdf_mem_free(mem_map_table); - } - - num_alloc = 0; if (debt_served < qdf_atomic_read(&pdev->rx_ring.refill_debt)) { num = qdf_atomic_read(&pdev->rx_ring.refill_debt); debt_served += num; - if (qdf_mem_smmu_s1_enabled(pdev->osdev) && - pdev->is_ipa_uc_enabled) { - mem_map_table = qdf_mem_map_table_alloc(num); - if (!mem_map_table) { - qdf_print("%s: Failed to allocate memory for mem map table\n", - __func__); - goto update_alloc_idx; - } - mem_info = mem_map_table; - } goto moretofill; } - goto update_alloc_idx; - -free_mem_map_table: - if (qdf_mem_smmu_s1_enabled(pdev->osdev) && pdev->is_ipa_uc_enabled) { - cds_smmu_map_unmap(true, num_alloc, mem_map_table); - qdf_mem_free(mem_map_table); - } - update_alloc_idx: /* * Make sure alloc index write is reflected correctly before FW polls |
