Messages in this thread | | | From | Laurentiu Tudor <> | Subject | Re: [PATCH v2 3/3] dpaa2_eth: use new unmap and sync dma api variants | Date | Mon, 28 Oct 2019 10:55:05 +0000 |
| |
Hi Jonathan,
On 25.10.2019 19:12, Jonathan Lemon wrote: > > > On 24 Oct 2019, at 5:41, Laurentiu Tudor wrote: > >> From: Laurentiu Tudor <laurentiu.tudor@nxp.com> >> >> Convert this driver to usage of the newly introduced dma unmap and >> sync DMA APIs. This will get rid of the unsupported direct usage of >> iommu_iova_to_phys() API. >> >> Signed-off-by: Laurentiu Tudor <laurentiu.tudor@nxp.com> >> --- >> .../net/ethernet/freescale/dpaa2/dpaa2-eth.c | 40 +++++++------------ >> .../net/ethernet/freescale/dpaa2/dpaa2-eth.h | 1 - >> 2 files changed, 15 insertions(+), 26 deletions(-) >> >> diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c >> b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c >> index 19379bae0144..8c3391e6e598 100644 >> --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c >> +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c >> @@ -29,16 +29,6 @@ MODULE_LICENSE("Dual BSD/GPL"); >> MODULE_AUTHOR("Freescale Semiconductor, Inc"); >> MODULE_DESCRIPTION("Freescale DPAA2 Ethernet Driver"); >> >> -static void *dpaa2_iova_to_virt(struct iommu_domain *domain, >> - dma_addr_t iova_addr) >> -{ >> - phys_addr_t phys_addr; >> - >> - phys_addr = domain ? iommu_iova_to_phys(domain, iova_addr) : >> iova_addr; >> - >> - return phys_to_virt(phys_addr); >> -} >> - >> static void validate_rx_csum(struct dpaa2_eth_priv *priv, >> u32 fd_status, >> struct sk_buff *skb) >> @@ -85,9 +75,10 @@ static void free_rx_fd(struct dpaa2_eth_priv *priv, >> sgt = vaddr + dpaa2_fd_get_offset(fd); >> for (i = 1; i < DPAA2_ETH_MAX_SG_ENTRIES; i++) { >> addr = dpaa2_sg_get_addr(&sgt[i]); >> - sg_vaddr = dpaa2_iova_to_virt(priv->iommu_domain, addr); >> - dma_unmap_page(dev, addr, DPAA2_ETH_RX_BUF_SIZE, >> - DMA_BIDIRECTIONAL); >> + sg_vaddr = page_to_virt >> + (dma_unmap_page_desc(dev, addr, >> + DPAA2_ETH_RX_BUF_SIZE, >> + DMA_BIDIRECTIONAL)); > > This is doing virt -> page -> virt. Why not just have the new > function return the VA corresponding to the addr, which would > match the other functions?
I'd really like that as it would get rid of the page_to_virt() calls but it will break the symmetry with the dma_map_page() API. I'll let the maintainers decide.
--- Best Regards, Laurentiu | |