All checks were successful
target_linux_generic / Update target_linux_generic (openwrt-25.12) (push) Successful in 8s
51 lines
1.7 KiB
Diff
51 lines
1.7 KiB
Diff
From: Rex Lu <rex.lu@mediatek.com>
|
|
Date: Thu, 9 Oct 2025 08:29:34 +0200
|
|
Subject: [PATCH] net: mtk: wed: add dma mask limitation and GFP_DMA32 for
|
|
device with more than 4GB DRAM
|
|
|
|
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>
|
|
---
|
|
|
|
--- a/drivers/net/ethernet/mediatek/mtk_wed.c
|
|
+++ b/drivers/net/ethernet/mediatek/mtk_wed.c
|
|
@@ -677,7 +677,7 @@ mtk_wed_tx_buffer_alloc(struct mtk_wed_d
|
|
void *buf;
|
|
int s;
|
|
|
|
- page = __dev_alloc_page(GFP_KERNEL);
|
|
+ page = __dev_alloc_page(GFP_KERNEL | GFP_DMA32);
|
|
if (!page)
|
|
return -ENOMEM;
|
|
|
|
@@ -800,7 +800,7 @@ mtk_wed_hwrro_buffer_alloc(struct mtk_we
|
|
struct page *page;
|
|
int s;
|
|
|
|
- page = __dev_alloc_page(GFP_KERNEL);
|
|
+ page = __dev_alloc_page(GFP_KERNEL | GFP_DMA32);
|
|
if (!page)
|
|
return -ENOMEM;
|
|
|
|
@@ -2438,6 +2438,10 @@ mtk_wed_attach(struct mtk_wed_device *de
|
|
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);
|