]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
net: stmmac: dwmac-loongson: Set correct {tx,rx}_fifo_size
authorHuacai Chen <chenhuacai@loongson.cn>
Mon, 10 Feb 2025 13:43:28 +0000 (21:43 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 29 May 2025 09:13:25 +0000 (11:13 +0200)
[ Upstream commit 8dbf0c7556454b52af91bae305ca71500c31495c ]

Now for dwmac-loongson {tx,rx}_fifo_size are uninitialised, which means
zero. This means dwmac-loongson doesn't support changing MTU because in
stmmac_change_mtu() it requires the fifo size be no less than MTU. Thus,
set the correct tx_fifo_size and rx_fifo_size for it (16KB multiplied by
queue counts).

Here {tx,rx}_fifo_size is initialised with the initial value (also the
maximum value) of {tx,rx}_queues_to_use. So it will keep as 16KB if we
don't change the queue count, and will be larger than 16KB if we change
(decrease) the queue count. However stmmac_change_mtu() still work well
with current logic (MTU cannot be larger than 16KB for stmmac).

Note: the Fixes tag picked here is the oldest commit and key commit of
the dwmac-loongson series "stmmac: Add Loongson platform support".

Acked-by: Yanteng Si <si.yanteng@linux.dev>
Reviewed-by: Simon Horman <horms@kernel.org>
Signed-off-by: Chong Qiao <qiaochong@loongson.cn>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
Link: https://patch.msgid.link/20250210134328.2755328-1-chenhuacai@loongson.cn
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c

index ab7c2750c104258835e62f71df034558581e0f02..702ea5a00b56d3facbb531334a27e3e43df7c278 100644 (file)
@@ -590,6 +590,9 @@ static int loongson_dwmac_probe(struct pci_dev *pdev, const struct pci_device_id
        if (ret)
                goto err_disable_device;
 
+       plat->tx_fifo_size = SZ_16K * plat->tx_queues_to_use;
+       plat->rx_fifo_size = SZ_16K * plat->rx_queues_to_use;
+
        if (dev_of_node(&pdev->dev))
                ret = loongson_dwmac_dt_config(pdev, plat, &res);
        else