From: Long Li <longli@xxxxxxxxxxxxx> The system chooses default 64K page size if the device does not specify the max page size the device can handle for DMA. This do not work well when device is registering large chunk of memory in that a large page size is more efficient. Set it to the maximum hardware supported page size. Signed-off-by: Long Li <longli@xxxxxxxxxxxxx> --- drivers/net/ethernet/microsoft/mana/gdma_main.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/net/ethernet/microsoft/mana/gdma_main.c b/drivers/net/ethernet/microsoft/mana/gdma_main.c index 86ffe0e39df0..426087688480 100644 --- a/drivers/net/ethernet/microsoft/mana/gdma_main.c +++ b/drivers/net/ethernet/microsoft/mana/gdma_main.c @@ -1385,6 +1385,13 @@ static int mana_gd_probe(struct pci_dev *pdev, const struct pci_device_id *ent) if (err) goto release_region; + // The max GDMA HW supported page size is 2M + err = dma_set_max_seg_size(&pdev->dev, SZ_2M); + if (err) { + dev_err(&pdev->dev, "Failed to set dma device segment size\n"); + goto release_region; + } + err = -ENOMEM; gc = vzalloc(sizeof(*gc)); if (!gc) -- 2.17.1