Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ab2ed037 authored by Yeshwanth Sriram Guntuka's avatar Yeshwanth Sriram Guntuka Committed by snandini
Browse files

qcacmn: Create IPA SMMU maps for host replenished bufs

Buffers replenished post processing entries in the
REO2TCL ring do not have ipa smmu mappings created
when RX_PREALLOC_BUFFER_POOL feature is disabled.
This will result in SMMU fault when IPA HW accesses
such replenished buffers.

Fix is to create IPA SMMU mapping for replenished buffers
when RX_PREALLOC_BUFFER_POOL feature is disabled as well.

Change-Id: I0fe611a1279b91a3e45bc269348e05de9015d596
CRs-Fixed: 2915686
parent 3c74f3ed
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -236,6 +236,11 @@ dp_pdev_nbuf_alloc_and_map_replenish(struct dp_soc *dp_soc,
	nbuf_frag_info_t->paddr =
		qdf_nbuf_get_frag_paddr((nbuf_frag_info_t->virt_addr).nbuf, 0);

	dp_ipa_handle_rx_buf_smmu_mapping(dp_soc,
			       (qdf_nbuf_t)((nbuf_frag_info_t->virt_addr).nbuf),
			       rx_desc_pool->buf_size,
			       true);

	ret = check_x86_paddr(dp_soc, &((nbuf_frag_info_t->virt_addr).nbuf),
			      &nbuf_frag_info_t->paddr,
			      rx_desc_pool);
+1 −10
Original line number Diff line number Diff line
@@ -260,21 +260,12 @@ dp_rx_buffer_pool_nbuf_map(struct dp_soc *soc,
{
	QDF_STATUS ret = QDF_STATUS_SUCCESS;

	if (!QDF_NBUF_CB_PADDR((nbuf_frag_info_t->virt_addr).nbuf)) {
	if (!QDF_NBUF_CB_PADDR((nbuf_frag_info_t->virt_addr).nbuf))
		ret = qdf_nbuf_map_nbytes_single(soc->osdev,
						 (nbuf_frag_info_t->virt_addr).nbuf,
						 QDF_DMA_FROM_DEVICE,
						 rx_desc_pool->buf_size);

		if (qdf_unlikely(QDF_IS_STATUS_ERROR(ret)))
			return ret;
	}

	dp_ipa_handle_rx_buf_smmu_mapping(soc,
					  (qdf_nbuf_t)((nbuf_frag_info_t->virt_addr).nbuf),
					  rx_desc_pool->buf_size,
					  true);

	return ret;
}