
Hi Matthias,
Matthias Fuchs wrote:
This patch replaces the buildtime configuration option CONFIG_NET_DO_NOT_TRY_ANOTHER through the 'ethrotate' runtime configuration variable. See README.
Signed-off-by: Matthias Fuchs matthias.fuchs@esd-electronics.com
README | 4 ++++ net/net.c | 13 ++++++++++--- 2 files changed, 14 insertions(+), 3 deletions(-)
diff --git a/README b/README index 9a8b3b9..9ca512d 100644 --- a/README +++ b/README @@ -2687,6 +2687,10 @@ Some configuration options can be set using Environment Variables: => setenv ethact SCC ETHERNET => ping 10.0.0.1 # traffic sent on SCC ETHERNET
- ethrotate - When set to "no" U-Boot does not go through all
available network interfaces.
It just stays at the currently selected interface.
- netretry - When set to "no" each network operation will either succeed or fail without retrying. When set to "once" the network operation will
diff --git a/net/net.c b/net/net.c index 44feee2..e1b71a9 100644 --- a/net/net.c +++ b/net/net.c @@ -581,6 +581,7 @@ void NetStartAgain (void) { char *nretry; int noretry = 0, once = 0;
char *ethrotate;
if ((nretry = getenv ("netretry")) != NULL) { noretry = (strcmp (nretry, "no") == 0);
@@ -596,9 +597,15 @@ void NetStartAgain (void) NetSetHandler (startAgainHandler); #else /* !CONFIG_NET_MULTI*/ eth_halt (); -#if !defined(CONFIG_NET_DO_NOT_TRY_ANOTHER)
- eth_try_another (!NetRestarted);
-#endif
- /*
* Do not rotate between network interfaces when
* 'ethrotate' variable is set to 'no'.
*/
- if (((ethrotate = getenv ("ethrotate")) == NULL) ||
(strcmp(ethrotate, "no") != 0))
eth_try_another (!NetRestarted);
- eth_init (gd->bd); if (NetRestartWrap) { NetRestartWrap = 0;
I'm a little curious about what it is you're trying to do. If you want to prevent Ethernet devices from ever rotating, this doesn't work. For example, if you set 'ethact' to an interface that isn't connected, eth_init() will rotate the interfaces until it reaches a valid link or the end of the chain, never reaching your change. If you really want to prevent rotation, I'd move your logic into the 'eth_try_another()' function itself, returning quickly if "ethrotate=no".
regards, Ben