netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net-next v4 0/3] net: Return PTR_ERR() for fixed_phy_register()
@ 2023-08-21  2:50 Jinjie Ruan
  2023-08-21  2:50 ` [PATCH net-next v4 1/3] net: bgmac: " Jinjie Ruan
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Jinjie Ruan @ 2023-08-21  2:50 UTC (permalink / raw)
  To: rafal, bcm-kernel-feedback-list, davem, edumazet, kuba, pabeni,
	opendmb, florian.fainelli, bryan.whitehead, UNGLinuxDriver,
	netdev, andrew
  Cc: ruanjinjie

fixed_phy_register() returns not only -EIO or -ENODEV, but also
-EPROBE_DEFER, -EINVAL and -EBUSY. The Best practice is to return these
error codes with PTR_ERR().

Changes in v4:
- Keep the code context consistent with another patch set.
- Update to bring the author's name before.

Jinjie Ruan (3):
  net: bgmac: Return PTR_ERR() for fixed_phy_register()
  net: bcmgenet: Return PTR_ERR() for fixed_phy_register()
  net: lan743x: Return PTR_ERR() for fixed_phy_register()

 drivers/net/ethernet/broadcom/bgmac.c         | 2 +-
 drivers/net/ethernet/broadcom/genet/bcmmii.c  | 2 +-
 drivers/net/ethernet/microchip/lan743x_main.c | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

-- 
2.34.1


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH net-next v4 1/3] net: bgmac: Return PTR_ERR() for fixed_phy_register()
  2023-08-21  2:50 [PATCH net-next v4 0/3] net: Return PTR_ERR() for fixed_phy_register() Jinjie Ruan
@ 2023-08-21  2:50 ` Jinjie Ruan
  2023-08-21  2:50 ` [PATCH net-next v4 2/3] net: bcmgenet: " Jinjie Ruan
  2023-08-21  2:50 ` [PATCH net-next v4 3/3] net: lan743x: " Jinjie Ruan
  2 siblings, 0 replies; 7+ messages in thread
From: Jinjie Ruan @ 2023-08-21  2:50 UTC (permalink / raw)
  To: rafal, bcm-kernel-feedback-list, davem, edumazet, kuba, pabeni,
	opendmb, florian.fainelli, bryan.whitehead, UNGLinuxDriver,
	netdev, andrew
  Cc: ruanjinjie

fixed_phy_register() returns -EPROBE_DEFER, -EINVAL and -EBUSY,
etc, in addition to -ENODEV. The best practice is to return
these error codes with PTR_ERR().

Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
---
v4:
- Keep the code context consistent with another patch set.
- Update to bring the author's name before.
v3:
- Split the return value check into another patch set.
- Update the commit title and message.
---
 drivers/net/ethernet/broadcom/bgmac.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/broadcom/bgmac.c b/drivers/net/ethernet/broadcom/bgmac.c
index 52ee3751187a..448a1b90de5e 100644
--- a/drivers/net/ethernet/broadcom/bgmac.c
+++ b/drivers/net/ethernet/broadcom/bgmac.c
@@ -1450,7 +1450,7 @@ int bgmac_phy_connect_direct(struct bgmac *bgmac)
 	phy_dev = fixed_phy_register(PHY_POLL, &fphy_status, NULL);
 	if (IS_ERR(phy_dev)) {
 		dev_err(bgmac->dev, "Failed to register fixed PHY device\n");
-		return -ENODEV;
+		return PTR_ERR(phy_dev);
 	}
 
 	err = phy_connect_direct(bgmac->net_dev, phy_dev, bgmac_adjust_link,
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH net-next v4 2/3] net: bcmgenet: Return PTR_ERR() for fixed_phy_register()
  2023-08-21  2:50 [PATCH net-next v4 0/3] net: Return PTR_ERR() for fixed_phy_register() Jinjie Ruan
  2023-08-21  2:50 ` [PATCH net-next v4 1/3] net: bgmac: " Jinjie Ruan
@ 2023-08-21  2:50 ` Jinjie Ruan
  2023-08-21  2:50 ` [PATCH net-next v4 3/3] net: lan743x: " Jinjie Ruan
  2 siblings, 0 replies; 7+ messages in thread
From: Jinjie Ruan @ 2023-08-21  2:50 UTC (permalink / raw)
  To: rafal, bcm-kernel-feedback-list, davem, edumazet, kuba, pabeni,
	opendmb, florian.fainelli, bryan.whitehead, UNGLinuxDriver,
	netdev, andrew
  Cc: ruanjinjie

fixed_phy_register() returns -EPROBE_DEFER, -EINVAL and -EBUSY,
etc, in addition to -ENODEV. The Best practice is to return these
error codes with PTR_ERR().

Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
Acked-by: Doug Berger <opendmb@gmail.com>
---
v4:
- Keep the code context consistent with another patch set.
- Update to bring the author's name before.
---
v3:
- Split the return value check into another patch set.
- Update the commit title and message.
---
 drivers/net/ethernet/broadcom/genet/bcmmii.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/broadcom/genet/bcmmii.c b/drivers/net/ethernet/broadcom/genet/bcmmii.c
index cc3afb605b1e..97ea76d443ab 100644
--- a/drivers/net/ethernet/broadcom/genet/bcmmii.c
+++ b/drivers/net/ethernet/broadcom/genet/bcmmii.c
@@ -619,7 +619,7 @@ static int bcmgenet_mii_pd_init(struct bcmgenet_priv *priv)
 		phydev = fixed_phy_register(PHY_POLL, &fphy_status, NULL);
 		if (IS_ERR(phydev)) {
 			dev_err(kdev, "failed to register fixed PHY device\n");
-			return -ENODEV;
+			return PTR_ERR(phydev);
 		}
 
 		/* Make sure we initialize MoCA PHYs with a link down */
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH net-next v4 3/3] net: lan743x: Return PTR_ERR() for fixed_phy_register()
  2023-08-21  2:50 [PATCH net-next v4 0/3] net: Return PTR_ERR() for fixed_phy_register() Jinjie Ruan
  2023-08-21  2:50 ` [PATCH net-next v4 1/3] net: bgmac: " Jinjie Ruan
  2023-08-21  2:50 ` [PATCH net-next v4 2/3] net: bcmgenet: " Jinjie Ruan
@ 2023-08-21  2:50 ` Jinjie Ruan
  2023-08-23  0:03   ` Jakub Kicinski
  2 siblings, 1 reply; 7+ messages in thread
From: Jinjie Ruan @ 2023-08-21  2:50 UTC (permalink / raw)
  To: rafal, bcm-kernel-feedback-list, davem, edumazet, kuba, pabeni,
	opendmb, florian.fainelli, bryan.whitehead, UNGLinuxDriver,
	netdev, andrew
  Cc: ruanjinjie

fixed_phy_register() returns -EPROBE_DEFER, -EINVAL and -EBUSY,
etc, in addition to -EIO. The Best practice is to return these
error codes with PTR_ERR().

Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
---
v4:
- Update to bring the author's name before.
v3:
- Update the commit title and message.
---
 drivers/net/ethernet/microchip/lan743x_main.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/microchip/lan743x_main.c b/drivers/net/ethernet/microchip/lan743x_main.c
index a36f6369f132..c81cdeb4d4e7 100644
--- a/drivers/net/ethernet/microchip/lan743x_main.c
+++ b/drivers/net/ethernet/microchip/lan743x_main.c
@@ -1515,7 +1515,7 @@ static int lan743x_phy_open(struct lan743x_adapter *adapter)
 							    &fphy_status, NULL);
 				if (IS_ERR(phydev)) {
 					netdev_err(netdev, "No PHY/fixed_PHY found\n");
-					return -EIO;
+					return PTR_ERR(phydev);
 				}
 			} else {
 				goto return_error;
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH net-next v4 3/3] net: lan743x: Return PTR_ERR() for fixed_phy_register()
  2023-08-21  2:50 ` [PATCH net-next v4 3/3] net: lan743x: " Jinjie Ruan
@ 2023-08-23  0:03   ` Jakub Kicinski
  2023-08-23  7:43     ` Ruan Jinjie
  0 siblings, 1 reply; 7+ messages in thread
From: Jakub Kicinski @ 2023-08-23  0:03 UTC (permalink / raw)
  To: Jinjie Ruan
  Cc: rafal, bcm-kernel-feedback-list, davem, edumazet, pabeni, opendmb,
	florian.fainelli, bryan.whitehead, UNGLinuxDriver, netdev, andrew

On Mon, 21 Aug 2023 10:50:20 +0800 Jinjie Ruan wrote:
> fixed_phy_register() returns -EPROBE_DEFER, -EINVAL and -EBUSY,
> etc, in addition to -EIO. The Best practice is to return these
> error codes with PTR_ERR().

EPROBE_DEFER is not a unix error code. We can't return it to user
space, so propagating it from ndo_open is not correct.

> diff --git a/drivers/net/ethernet/microchip/lan743x_main.c b/drivers/net/ethernet/microchip/lan743x_main.c
> index a36f6369f132..c81cdeb4d4e7 100644
> --- a/drivers/net/ethernet/microchip/lan743x_main.c
> +++ b/drivers/net/ethernet/microchip/lan743x_main.c
> @@ -1515,7 +1515,7 @@ static int lan743x_phy_open(struct lan743x_adapter *adapter)
>  							    &fphy_status, NULL);
>  				if (IS_ERR(phydev)) {
>  					netdev_err(netdev, "No PHY/fixed_PHY found\n");
> -					return -EIO;
> +					return PTR_ERR(phydev);
>  				}
>  			} else {
>  				goto return_error;

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH net-next v4 3/3] net: lan743x: Return PTR_ERR() for fixed_phy_register()
  2023-08-23  0:03   ` Jakub Kicinski
@ 2023-08-23  7:43     ` Ruan Jinjie
  2023-08-23 14:37       ` Jakub Kicinski
  0 siblings, 1 reply; 7+ messages in thread
From: Ruan Jinjie @ 2023-08-23  7:43 UTC (permalink / raw)
  To: Jakub Kicinski
  Cc: rafal, bcm-kernel-feedback-list, davem, edumazet, pabeni, opendmb,
	florian.fainelli, bryan.whitehead, UNGLinuxDriver, netdev, andrew



On 2023/8/23 8:03, Jakub Kicinski wrote:
> On Mon, 21 Aug 2023 10:50:20 +0800 Jinjie Ruan wrote:
>> fixed_phy_register() returns -c, -EINVAL and -EBUSY,
>> etc, in addition to -EIO. The Best practice is to return these
>> error codes with PTR_ERR().
> 
> EPROBE_DEFER is not a unix error code. We can't return it to user
> space, so propagating it from ndo_open is not correct.

When the error is EPROBE_DEFER, Whether print the netdev_err is ok? And
what should it return?

How about this?

if (IS_ERR(phydev)) {
     ......
     if (PTR_ERR(phydev) != -EPROBE_DEFER)
         return PTR_ERR(phydev);
     else
         return -EIO;
}

> 
>> diff --git a/drivers/net/ethernet/microchip/lan743x_main.c b/drivers/net/ethernet/microchip/lan743x_main.c
>> index a36f6369f132..c81cdeb4d4e7 100644
>> --- a/drivers/net/ethernet/microchip/lan743x_main.c
>> +++ b/drivers/net/ethernet/microchip/lan743x_main.c
>> @@ -1515,7 +1515,7 @@ static int lan743x_phy_open(struct lan743x_adapter *adapter)
>>  							    &fphy_status, NULL);
>>  				if (IS_ERR(phydev)) {
>>  					netdev_err(netdev, "No PHY/fixed_PHY found\n");
>> -					return -EIO;
>> +					return PTR_ERR(phydev);
>>  				}
>>  			} else {
>>  				goto return_error;

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH net-next v4 3/3] net: lan743x: Return PTR_ERR() for fixed_phy_register()
  2023-08-23  7:43     ` Ruan Jinjie
@ 2023-08-23 14:37       ` Jakub Kicinski
  0 siblings, 0 replies; 7+ messages in thread
From: Jakub Kicinski @ 2023-08-23 14:37 UTC (permalink / raw)
  To: Ruan Jinjie
  Cc: rafal, bcm-kernel-feedback-list, davem, edumazet, pabeni, opendmb,
	florian.fainelli, bryan.whitehead, UNGLinuxDriver, netdev, andrew

On Wed, 23 Aug 2023 15:43:58 +0800 Ruan Jinjie wrote:
> > EPROBE_DEFER is not a unix error code. We can't return it to user
> > space, so propagating it from ndo_open is not correct.  
> 
> When the error is EPROBE_DEFER, Whether print the netdev_err is ok? And
> what should it return?
> 
> How about this?
> 
> if (IS_ERR(phydev)) {
>      ......
>      if (PTR_ERR(phydev) != -EPROBE_DEFER)
>          return PTR_ERR(phydev);
>      else
>          return -EIO;
> }

That's too much code to copy & paste into every driver.

Someone who understands the code flow very well should tackle this.
Please leave the cases where fixed_phy_register() is called outside 
of probe alone.

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2023-08-23 14:37 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-08-21  2:50 [PATCH net-next v4 0/3] net: Return PTR_ERR() for fixed_phy_register() Jinjie Ruan
2023-08-21  2:50 ` [PATCH net-next v4 1/3] net: bgmac: " Jinjie Ruan
2023-08-21  2:50 ` [PATCH net-next v4 2/3] net: bcmgenet: " Jinjie Ruan
2023-08-21  2:50 ` [PATCH net-next v4 3/3] net: lan743x: " Jinjie Ruan
2023-08-23  0:03   ` Jakub Kicinski
2023-08-23  7:43     ` Ruan Jinjie
2023-08-23 14:37       ` Jakub Kicinski

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).