mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-25 06:00:43 +00:00
Repair the 'netretry=once' option.
'netretry = once' does the same as 'netretry = yes', because it is not stored when it was tried once. Signed-off-by: Remy Bohmer <linux@bohmer.net> Signed-off-by: Ben Warren <biggerbadderben@gmail.com>
This commit is contained in:
parent
fcffb680e7
commit
67b96e87da
1 changed files with 24 additions and 8 deletions
32
net/net.c
32
net/net.c
|
@ -197,6 +197,8 @@ volatile uchar *NetTxPacket = 0; /* THE transmit packet */
|
|||
|
||||
static int net_check_prereq (proto_t protocol);
|
||||
|
||||
static int NetTryCount;
|
||||
|
||||
/**********************************************************************/
|
||||
|
||||
IPaddr_t NetArpWaitPacketIP;
|
||||
|
@ -320,6 +322,7 @@ NetLoop(proto_t protocol)
|
|||
NetArpWaitReplyIP = 0;
|
||||
NetArpWaitTxPacket = NULL;
|
||||
NetTxPacket = NULL;
|
||||
NetTryCount = 1;
|
||||
|
||||
if (!NetTxPacket) {
|
||||
int i;
|
||||
|
@ -558,17 +561,30 @@ startAgainHandler(uchar * pkt, unsigned dest, unsigned src, unsigned len)
|
|||
void NetStartAgain (void)
|
||||
{
|
||||
char *nretry;
|
||||
int noretry = 0, once = 0;
|
||||
int retry_forever = 0;
|
||||
unsigned long retrycnt = 0;
|
||||
|
||||
if ((nretry = getenv ("netretry")) != NULL) {
|
||||
noretry = (strcmp (nretry, "no") == 0);
|
||||
once = (strcmp (nretry, "once") == 0);
|
||||
}
|
||||
if (noretry) {
|
||||
eth_halt ();
|
||||
nretry = getenv("netretry");
|
||||
if (nretry) {
|
||||
if (!strcmp(nretry, "yes"))
|
||||
retry_forever = 1;
|
||||
else if (!strcmp(nretry, "no"))
|
||||
retrycnt = 0;
|
||||
else if (!strcmp(nretry, "once"))
|
||||
retrycnt = 1;
|
||||
else
|
||||
retrycnt = simple_strtoul(nretry, NULL, 0);
|
||||
} else
|
||||
retry_forever = 1;
|
||||
|
||||
if ((!retry_forever) && (NetTryCount >= retrycnt)) {
|
||||
eth_halt();
|
||||
NetState = NETLOOP_FAIL;
|
||||
return;
|
||||
}
|
||||
|
||||
NetTryCount++;
|
||||
|
||||
#ifndef CONFIG_NET_MULTI
|
||||
NetSetTimeout (10000UL, startAgainTimeout);
|
||||
NetSetHandler (startAgainHandler);
|
||||
|
@ -580,7 +596,7 @@ void NetStartAgain (void)
|
|||
eth_init (gd->bd);
|
||||
if (NetRestartWrap) {
|
||||
NetRestartWrap = 0;
|
||||
if (NetDevExists && !once) {
|
||||
if (NetDevExists) {
|
||||
NetSetTimeout (10000UL, startAgainTimeout);
|
||||
NetSetHandler (startAgainHandler);
|
||||
} else {
|
||||
|
|
Loading…
Reference in a new issue