
Hi,
--- u-boot-1.2.0_orig/net/net.c 2007-01-07 04:43:11.000000000 +0530 +++ u-boot-1.2.0/net/net.c 2007-11-14 18:03:03.000000000 +0530 @@ -305,7 +305,7 @@ #ifdef CONFIG_NET_MULTI eth_set_current(); #endif
- if (eth_init(bd) < 0) {
- if (eth_init(bd) > 0) { eth_halt(); return(-1); }
Secondly and more important, did you test this? I'd say your test is the wrong way round, i.e. eth_init returns true in the C sense (!=0) if it was able to initialize an interface. (This also chimes with the naming of the function by the way). So I'd propose to go for "!eth_init(..)".
Thinking about this somemore, I am now convinced that the problem should not be fixed at the caller but in eth_init. Testing for <0 is a pretty idiomatic test for errors, so we should rather adjust eth_init to fit this idiom than spreading "aberrant" behaviour.
Cheers Detlev