@ -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 ;
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 ( ( nretry = getenv ( " netretry " ) ) ! = NULL ) {
noretry = ( strcmp ( nretry , " no " ) = = 0 ) ;
once = ( strcmp ( nretry , " once " ) = = 0 ) ;
}
if ( noretry ) {
eth_halt ( ) ;
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 {