[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <48804c65-51a5-433d-952f-a08699c8db69@loongson.cn>
Date: Mon, 13 May 2024 18:12:22 +0800
From: Yanteng Si <siyanteng@...ngson.cn>
To: Serge Semin <fancer.lancer@...il.com>
Cc: andrew@...n.ch, hkallweit1@...il.com, peppe.cavallaro@...com,
alexandre.torgue@...s.st.com, joabreu@...opsys.com, Jose.Abreu@...opsys.com,
chenhuacai@...nel.org, linux@...linux.org.uk, guyinggang@...ngson.cn,
netdev@...r.kernel.org, chris.chenfeiyang@...il.com, siyanteng01@...il.com
Subject: Re: [PATCH net-next v12 11/15] net: stmmac: dwmac-loongson: Add
loongson_dwmac_config_legacy
在 2024/5/5 05:28, Serge Semin 写道:
> On Thu, Apr 25, 2024 at 09:10:36PM +0800, Yanteng Si wrote:
>> Move res._irq to loongson_dwmac_config_legacy().
>> No function changes.
> Since the code affected by this patch has just been touched by the
> previous patch
> [PATCH net-next v12 10/15] net: stmmac: dwmac-loongson: Add full PCI support
> just merge this patch content into there. But add a note to the
> commit message of that patch like this:
>
> "While at it move the IRQ initialization procedure into a dedicated
> method. It will be useful in one of the subsequent commit adding the
> Loongson GNET device support."
OK.
>
>> Signed-off-by: Feiyang Chen <chenfeiyang@...ngson.cn>
>> Signed-off-by: Yinggang Gu <guyinggang@...ngson.cn>
>> Signed-off-by: Yanteng Si <siyanteng@...ngson.cn>
>> ---
>> .../ethernet/stmicro/stmmac/dwmac-loongson.c | 56 +++++++++++--------
>> 1 file changed, 34 insertions(+), 22 deletions(-)
>>
>> diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c
>> index 1022bceaa680..df5899bec91a 100644
>> --- a/drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c
>> +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c
>> @@ -68,6 +68,38 @@ static struct stmmac_pci_info loongson_gmac_pci_info = {
>> .setup = loongson_gmac_data,
>> };
>>
>> +static int loongson_dwmac_config_legacy(struct pci_dev *pdev,
>> + struct plat_stmmacenet_data *plat,
>> + struct stmmac_resources *res,
>> + struct device_node *np)
>> +{
>> + if (np) {
>> + res->irq = of_irq_get_byname(np, "macirq");
>> + if (res->irq < 0) {
>> + dev_err(&pdev->dev, "IRQ macirq not found\n");
>> + return -ENODEV;
>> + }
>> +
>> + res->wol_irq = of_irq_get_byname(np, "eth_wake_irq");
>> + if (res->wol_irq < 0) {
>> + dev_info(&pdev->dev,
>> + "IRQ eth_wake_irq not found, using macirq\n");
>> + res->wol_irq = res->irq;
>> + }
>> +
>> + res->lpi_irq = of_irq_get_byname(np, "eth_lpi");
>> + if (res->lpi_irq < 0) {
>> + dev_err(&pdev->dev, "IRQ eth_lpi not found\n");
>> + return -ENODEV;
>> + }
>> + } else {
>> + res->irq = pdev->irq;
>> + res->wol_irq = res->irq;
> Once again - drop this, unless you can justify it's required.
OK.
>
>> + }
>> +
>> + return 0;
>> +}
>> +
>> static int loongson_dwmac_probe(struct pci_dev *pdev, const struct pci_device_id *id)
>> {
>> struct plat_stmmacenet_data *plat;
>> @@ -136,28 +168,6 @@ static int loongson_dwmac_probe(struct pci_dev *pdev, const struct pci_device_id
>> goto err_disable_device;
>> }
>> plat->phy_interface = phy_mode;
>> -
>> - res.irq = of_irq_get_byname(np, "macirq");
>> - if (res.irq < 0) {
>> - dev_err(&pdev->dev, "IRQ macirq not found\n");
>> - ret = -ENODEV;
>> - goto err_disable_msi;
>> - }
>> -
>> - res.wol_irq = of_irq_get_byname(np, "eth_wake_irq");
>> - if (res.wol_irq < 0) {
>> - dev_info(&pdev->dev, "IRQ eth_wake_irq not found, using macirq\n");
>> - res.wol_irq = res.irq;
>> - }
>> -
>> - res.lpi_irq = of_irq_get_byname(np, "eth_lpi");
>> - if (res.lpi_irq < 0) {
>> - dev_err(&pdev->dev, "IRQ eth_lpi not found\n");
>> - ret = -ENODEV;
>> - goto err_disable_msi;
>> - }
>> - } else {
>> - res.irq = pdev->irq;
>> }
>>
>> pci_enable_msi(pdev);
>> @@ -167,6 +177,8 @@ static int loongson_dwmac_probe(struct pci_dev *pdev, const struct pci_device_id
>> plat->tx_queues_to_use = 1;
>> plat->rx_queues_to_use = 1;
>>
>> + ret = loongson_dwmac_config_legacy(pdev, plat, &res, np);
>> +
> By not checking the return value the patch turns to in fact containing
> the functional change, which contradicts to what you say in the commit
> log. Besides it's just wrong in this case. So please add the return
> value check.
OK.
Thanks,
Yanteng
Powered by blists - more mailing lists