Limit tx/rx buffer address to 32-bit address space for board with more
than 4GB DRAM.
Fixes: 804775dfc2885 ("net: ethernet: mtk_eth_soc: add support for Wireless Ethernet Dispatch (WED)")
Fixes: 6757d345dd7db ("net: ethernet: mtk_wed: introduce hw_rro support for MT7988")
Tested-by: Daniel Pawlik <pawlik.dan@gmail.com>
Tested-by: Matteo Croce <teknoraver@meta.com>
Signed-off-by: Rex Lu <rex.lu@mediatek.com>
Co-developed-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Reviewed-by: Simon Horman <horms@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
                void *buf;
                int s;
 
-               page = __dev_alloc_page(GFP_KERNEL);
+               page = __dev_alloc_page(GFP_KERNEL | GFP_DMA32);
                if (!page)
                        return -ENOMEM;
 
                struct page *page;
                int s;
 
-               page = __dev_alloc_page(GFP_KERNEL);
+               page = __dev_alloc_page(GFP_KERNEL | GFP_DMA32);
                if (!page)
                        return -ENOMEM;
 
        dev->version = hw->version;
        dev->hw->pcie_base = mtk_wed_get_pcie_base(dev);
 
+       ret = dma_set_mask_and_coherent(hw->dev, DMA_BIT_MASK(32));
+       if (ret)
+               goto out;
+
        if (hw->eth->dma_dev == hw->eth->dev &&
            of_dma_is_coherent(hw->eth->dev->of_node))
                mtk_eth_set_dma_device(hw->eth, hw->dev);