[U-Boot-Users] [PATCH] NET: Proper return code handling in eth_init() function in file eth.c

Ben Warren biggerbadderben at gmail.com
Tue Jan 8 15:56:32 CET 2008


Upakul Barkakaty wrote:
>
> On 1/8/08, *Stefan Roese* <sr at denx.de <mailto:sr at denx.de>> wrote:
>
>     On Thursday 29 November 2007, Upakul Barkakaty wrote:
>     > NET: Proper return code handling in eth_init() function in file
>     eth.c
>     >
>     > This patch modifies the return code handling in the eth_init()
>     > function, to be compatible with the handling of the return codes in
>     > the other network stack files. It now returns a 0 on Success and
>     -1 on
>     > error.
>
>     I just noticed that this patch breaks TFTP on 4xx platforms:
>
>     commit 505be87a65e4f87ad7d8da1d57ea4dcd487d7e32
>     Author: Upakul Barkakaty <upakul at gmail.com <mailto:upakul at gmail.com>>
>     Date:   Thu Nov 29 12:16:13 2007 +0530
>
>         NET: Proper return code handling in eth_init() function in
>     file eth.c
>
>         This patch modifies the return code handling in the eth_init()
>         function, to be compatible with the handling of the return
>     codes in
>         the other network stack files. It now returns a 0 on Success
>     and -1 on
>         error.
>
>         Signed-off-by: Upakul Barkakaty <
>     upakul.barkakaty at conexant.com <mailto:upakul.barkakaty at conexant.com>>
>         Signed-off-by: Ben Warren <biggerbadderben at gmail.com
>     <mailto:biggerbadderben at gmail.com>>
>
>     I just see link auto-negotiation going on, and after that no real
>     transaction
>     is happening! :-(
>
>     => tftp 100000 u-image.bin
>     Waiting for PHY auto negotiation to complete.... done
>     ENET Speed is 1000 Mbps - FULL duplex connection (EMAC0)
>
>     Would be great if someone could look into this ASAP. Unfortunately
>     I have no
>     time left today.
>
>     Thanks.
>
>     Best regards,
>     Stefan
>
>     =====================================================================
>     DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
>     HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
>     Phone: +49-8142-66989-0 Fax: +49-8142-66989-80  Email:
>     office at denx.de <mailto:office at denx.de>
>     =====================================================================
>
>
> Hi Stefan,
>
> Probably i got the reason why this is happening. As a convention that 
> is usually followed, the code in eth_init() function in the file eth.c 
> was reworked to handle 0 in case of Success and any non zero value in 
> case of an error.
>
> Most of the Ethernet driver's init routines adhere to the same 
> convention of returning a 0 on Success and a non zero value in case of 
> error. However, the driver you might be using, may be returning a non 
> zero value on Successful initialization, that is why the problem is 
> arising. The solution could be to return 0 in case of Success, from 
> the Ethernet driver's init() routine.
>
> Thanks!!
>
> -- 
> Regards,
> Upakul Barkakaty
Yeah, looks like ppc_4xx_eth_init() (cpu/ppc4xx/4xx_enet.c) returns 1 on 
success and -1 on failure.  I don't have hardware to test this.  Can you 
check it out Stefan?  Let's look through the other drivers to see if 
this is an isolated case.

regards,
Ben




More information about the U-Boot mailing list