
Upakul Barkakaty wrote:
On 1/8/08, *Stefan Roese* <sr@denx.de mailto:sr@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@gmail.com <mailto:upakul@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@conexant.com <mailto:upakul.barkakaty@conexant.com>> Signed-off-by: Ben Warren <biggerbadderben@gmail.com <mailto:biggerbadderben@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@denx.de <mailto:office@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