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
此提交包含在:

提交者
Madan Koyyalamudi

父節點
80e1cfff99
當前提交
34d893df39
@@ -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;
|
||||
|
新增問題並參考
封鎖使用者