On Mon, 5 Aug 2024 21:25:18 +0000 Mina Almasry wrote:
+dma_addr_t page_pool_get_dma_addr_netmem(netmem_ref netmem) +{
- struct page *page = netmem_to_page(netmem);
- dma_addr_t ret = page->dma_addr;
- if (PAGE_POOL_32BIT_ARCH_WITH_64BIT_DMA)
ret <<= PAGE_SHIFT;
- return ret;
+} +EXPORT_SYMBOL(page_pool_get_dma_addr_netmem);
Get should stay in the header.
+bool page_pool_set_dma_addr_netmem(netmem_ref netmem, dma_addr_t addr) +{
- struct page *page = netmem_to_page(netmem);
- if (PAGE_POOL_32BIT_ARCH_WITH_64BIT_DMA) {
page->dma_addr = addr >> PAGE_SHIFT;
/* We assume page alignment to shave off bottom bits,
* if this "compression" doesn't work we need to drop.
*/
return addr != (dma_addr_t)page->dma_addr << PAGE_SHIFT;
- }
- page->dma_addr = addr;
- return false;
+} +EXPORT_SYMBOL(page_pool_set_dma_addr_netmem);
Set should not be in the public (include/linux) header at all, and should not be exported. net/core/page_pool_priv.h already exists. Feel free to break this out of the series.