qcacmn: IOMMU map and unmap RX buffers to LPASS SMMU CB

IOMMU map and unmap RX buffers into LPASS SMMU context
bank for LPASS to access RX buffers in direct link
usecases.

Change-Id: Ie72a008309e3abdf3fbc7198bb5d3af5e9497180
CRs-Fixed: 3356568
此提交包含在:
Yeshwanth Sriram Guntuka
2022-12-08 15:53:42 +05:30
提交者 Madan Koyyalamudi
父節點 80e1cfff99
當前提交 34d893df39
共有 8 個檔案被更改,包括 123 行新增14 行删除

查看文件

@@ -210,7 +210,8 @@ static QDF_STATUS dp_rx_desc_nbuf_collect(struct dp_soc *soc,
static void dp_rx_desc_nbuf_cleanup(struct dp_soc *soc,
qdf_nbuf_t nbuf_unmap_list,
qdf_nbuf_t nbuf_free_list,
uint16_t buf_size)
uint16_t buf_size,
bool is_mon_pool)
{
qdf_nbuf_t nbuf = nbuf_unmap_list;
qdf_nbuf_t next;
@@ -218,6 +219,11 @@ static void dp_rx_desc_nbuf_cleanup(struct dp_soc *soc,
while (nbuf) {
next = nbuf->next;
if (!is_mon_pool)
dp_audio_smmu_unmap(soc->osdev,
QDF_NBUF_CB_PADDR(nbuf),
buf_size);
if (dp_ipa_handle_rx_buf_smmu_mapping(soc, nbuf, buf_size,
false, __func__, __LINE__))
dp_info_rl("Unable to unmap nbuf: %pK", nbuf);
@@ -246,12 +252,13 @@ void dp_rx_desc_nbuf_and_pool_free(struct dp_soc *soc, uint32_t pool_id,
&nbuf_unmap_list, &nbuf_free_list);
qdf_spin_unlock_bh(&rx_desc_pool->lock);
dp_rx_desc_nbuf_cleanup(soc, nbuf_unmap_list, nbuf_free_list,
rx_desc_pool->buf_size);
rx_desc_pool->buf_size, false);
qdf_spinlock_destroy(&rx_desc_pool->lock);
}
void dp_rx_desc_nbuf_free(struct dp_soc *soc,
struct rx_desc_pool *rx_desc_pool)
struct rx_desc_pool *rx_desc_pool,
bool is_mon_pool)
{
qdf_nbuf_t nbuf_unmap_list = NULL;
qdf_nbuf_t nbuf_free_list = NULL;
@@ -260,7 +267,7 @@ void dp_rx_desc_nbuf_free(struct dp_soc *soc,
&nbuf_unmap_list, &nbuf_free_list);
qdf_spin_unlock_bh(&rx_desc_pool->lock);
dp_rx_desc_nbuf_cleanup(soc, nbuf_unmap_list, nbuf_free_list,
rx_desc_pool->buf_size);
rx_desc_pool->buf_size, is_mon_pool);
}
qdf_export_symbol(dp_rx_desc_nbuf_free);
@@ -425,7 +432,8 @@ void dp_rx_desc_nbuf_and_pool_free(struct dp_soc *soc, uint32_t pool_id,
}
void dp_rx_desc_nbuf_free(struct dp_soc *soc,
struct rx_desc_pool *rx_desc_pool)
struct rx_desc_pool *rx_desc_pool,
bool is_mon_pool)
{
qdf_nbuf_t nbuf;
int i;