diff options
| -rw-r--r-- | drivers/net/netconsole.c | 6 | ||||
| -rw-r--r-- | include/net.h | 20 | ||||
| -rw-r--r-- | net/cdp.c | 2 | ||||
| -rw-r--r-- | net/dns.c | 8 | ||||
| -rw-r--r-- | net/net.c | 21 | ||||
| -rw-r--r-- | net/nfs.c | 12 | ||||
| -rw-r--r-- | net/ping.c | 4 | ||||
| -rw-r--r-- | net/sntp.c | 4 | ||||
| -rw-r--r-- | net/tftp.c | 8 | 
9 files changed, 48 insertions, 37 deletions
| diff --git a/drivers/net/netconsole.c b/drivers/net/netconsole.c index ba02fd762..28bb955de 100644 --- a/drivers/net/netconsole.c +++ b/drivers/net/netconsole.c @@ -44,19 +44,19 @@ static void nc_wait_arp_handler(uchar *pkt, unsigned dest,  				 IPaddr_t sip, unsigned src,  				 unsigned len)  { -	NetState = NETLOOP_SUCCESS; /* got arp reply - quit net loop */ +	net_set_state(NETLOOP_SUCCESS); /* got arp reply - quit net loop */  }  static void nc_handler(uchar *pkt, unsigned dest, IPaddr_t sip, unsigned src,  			unsigned len)  {  	if (input_size) -		NetState = NETLOOP_SUCCESS; /* got input - quit net loop */ +		net_set_state(NETLOOP_SUCCESS); /* got input - quit net loop */  }  static void nc_timeout(void)  { -	NetState = NETLOOP_SUCCESS; +	net_set_state(NETLOOP_SUCCESS);  }  void NcStart(void) diff --git a/include/net.h b/include/net.h index 321483083..8dd407e6c 100644 --- a/include/net.h +++ b/include/net.h @@ -391,12 +391,6 @@ extern uchar		NetEtherNullAddr[6];  extern ushort		NetOurVLAN;		/* Our VLAN */  extern ushort		NetOurNativeVLAN;	/* Our Native VLAN */ -extern int		NetState;		/* Network loop state */ -#define NETLOOP_CONTINUE	1 -#define NETLOOP_RESTART		2 -#define NETLOOP_SUCCESS		3 -#define NETLOOP_FAIL		4 -  extern int		NetRestartWrap;		/* Tried all network devices */  enum proto_t { @@ -471,6 +465,20 @@ extern void	NetSetHandler(rxhand_f *);	/* Set RX packet handler */  extern void net_set_icmp_handler(rxhand_icmp_f *f); /* Set ICMP RX handler */  extern void	NetSetTimeout(ulong, thand_f *);/* Set timeout handler */ +/* Network loop state */ +enum net_loop_state { +	NETLOOP_CONTINUE, +	NETLOOP_RESTART, +	NETLOOP_SUCCESS, +	NETLOOP_FAIL +}; +static inline void net_set_state(enum net_loop_state state) +{ +	extern enum net_loop_state net_state; + +	net_state = state; +} +  /* Transmit "NetTxPacket" */  static inline void NetSendPacket(uchar *pkt, int len)  { @@ -235,7 +235,7 @@ CDPTimeout(void)  	if (!CDPOK)  		NetStartAgain();  	else -		NetState = NETLOOP_SUCCESS; +		net_set_state(NETLOOP_SUCCESS);  }  static void @@ -98,7 +98,7 @@ static void  DnsTimeout(void)  {  	puts("Timeout\n"); -	NetState = NETLOOP_FAIL; +	net_set_state(NETLOOP_FAIL);  }  static void @@ -128,7 +128,7 @@ DnsHandler(uchar *pkt, unsigned dest, IPaddr_t sip, unsigned src, unsigned len)  	/* Received 0 answers */  	if (header->nanswers == 0) {  		puts("DNS: host not found\n"); -		NetState = NETLOOP_SUCCESS; +		net_set_state(NETLOOP_SUCCESS);  		return;  	} @@ -141,7 +141,7 @@ DnsHandler(uchar *pkt, unsigned dest, IPaddr_t sip, unsigned src, unsigned len)  	/* We sent query class 1, query type 1 */  	if (&p[5] > e || get_unaligned_be16(p+1) != DNS_A_RECORD) {  		puts("DNS: response was not an A record\n"); -		NetState = NETLOOP_SUCCESS; +		net_set_state(NETLOOP_SUCCESS);  		return;  	} @@ -191,7 +191,7 @@ DnsHandler(uchar *pkt, unsigned dest, IPaddr_t sip, unsigned src, unsigned len)  			puts("server responded with invalid IP number\n");  	} -	NetState = NETLOOP_SUCCESS; +	net_set_state(NETLOOP_SUCCESS);  }  void @@ -149,7 +149,7 @@ uchar		NetEtherNullAddr[6];  void		(*push_packet)(void *, int len) = 0;  #endif  /* Network loop state */ -int		NetState; +enum net_loop_state net_state;  /* Tried all network devices */  int		NetRestartWrap;  /* Network loop restarted */ @@ -212,7 +212,7 @@ void net_auto_load(void)  			 * Just use BOOTP/RARP to configure system;  			 * Do not use TFTP to load the bootfile.  			 */ -			NetState = NETLOOP_SUCCESS; +			net_set_state(NETLOOP_SUCCESS);  			return;  		}  #if defined(CONFIG_CMD_NFS) @@ -290,7 +290,7 @@ int NetLoop(enum proto_t protocol)  restart:  	memcpy(NetOurEther, eth_get_dev()->enetaddr, 6); -	NetState = NETLOOP_CONTINUE; +	net_set_state(NETLOOP_CONTINUE);  	/*  	 *	Start the ball rolling with the given start function.  From @@ -399,7 +399,7 @@ restart:  	/*  	 *	Main packet reception loop.  Loop receiving packets until -	 *	someone sets `NetState' to a state that terminates. +	 *	someone sets `net_state' to a state that terminates.  	 */  	for (;;) {  		WATCHDOG_RESET(); @@ -451,7 +451,7 @@ restart:  		} -		switch (NetState) { +		switch (net_state) {  		case NETLOOP_RESTART:  			NetRestarted = 1; @@ -475,6 +475,9 @@ restart:  		case NETLOOP_FAIL:  			goto done; + +		case NETLOOP_CONTINUE: +			continue;  		}  	} @@ -492,7 +495,7 @@ done:  static void  startAgainTimeout(void)  { -	NetState = NETLOOP_RESTART; +	net_set_state(NETLOOP_RESTART);  }  static void @@ -523,7 +526,7 @@ void NetStartAgain(void)  	if ((!retry_forever) && (NetTryCount >= retrycnt)) {  		eth_halt(); -		NetState = NETLOOP_FAIL; +		net_set_state(NETLOOP_FAIL);  		return;  	} @@ -540,10 +543,10 @@ void NetStartAgain(void)  			NetSetTimeout(10000UL, startAgainTimeout);  			NetSetHandler(startAgainHandler);  		} else { -			NetState = NETLOOP_FAIL; +			net_set_state(NETLOOP_FAIL);  		}  	} else { -		NetState = NETLOOP_RESTART; +		net_set_state(NETLOOP_RESTART);  	}  } @@ -41,7 +41,7 @@ static int nfs_len;  static char dirfh[NFS_FHSIZE];	/* file handle of directory */  static char filefh[NFS_FHSIZE]; /* file handle of kernel image */ -static int	NfsDownloadState; +static enum net_loop_state nfs_download_state;  static IPaddr_t NfsServerIP;  static int	NfsSrvMountPort;  static int	NfsSrvNfsPort; @@ -613,10 +613,10 @@ NfsHandler(uchar *pkt, unsigned dest, IPaddr_t sip, unsigned src, unsigned len)  	case STATE_UMOUNT_REQ:  		if (nfs_umountall_reply(pkt, len)) {  			puts("*** ERROR: Cannot umount\n"); -			NetState = NETLOOP_FAIL; +			net_set_state(NETLOOP_FAIL);  		} else {  			puts("\ndone\n"); -			NetState = NfsDownloadState; +			net_set_state(nfs_download_state);  		}  		break; @@ -660,7 +660,7 @@ NfsHandler(uchar *pkt, unsigned dest, IPaddr_t sip, unsigned src, unsigned len)  			NfsSend();  		} else {  			if (!rlen) -				NfsDownloadState = NETLOOP_SUCCESS; +				nfs_download_state = NETLOOP_SUCCESS;  			NfsState = STATE_UMOUNT_REQ;  			NfsSend();  		} @@ -673,13 +673,13 @@ void  NfsStart(void)  {  	debug("%s\n", __func__); -	NfsDownloadState = NETLOOP_FAIL; +	nfs_download_state = NETLOOP_FAIL;  	NfsServerIP = NetServerIP;  	nfs_path = (char *)nfs_path_buff;  	if (nfs_path == NULL) { -		NetState = NETLOOP_FAIL; +		net_set_state(NETLOOP_FAIL);  		puts("*** ERROR: Fail allocate memory\n");  		return;  	} diff --git a/net/ping.c b/net/ping.c index f0026cc42..9c690d8c8 100644 --- a/net/ping.c +++ b/net/ping.c @@ -72,7 +72,7 @@ static int ping_send(void)  static void ping_timeout(void)  {  	eth_halt(); -	NetState = NETLOOP_FAIL;	/* we did not get the reply */ +	net_set_state(NETLOOP_FAIL);	/* we did not get the reply */  }  void ping_start(void) @@ -92,7 +92,7 @@ void ping_receive(struct ethernet_hdr *et, struct ip_udp_hdr *ip, int len)  	case ICMP_ECHO_REPLY:  		src_ip = NetReadIP((void *)&ip->ip_src);  		if (src_ip == NetPingIP) -			NetState = NETLOOP_SUCCESS; +			net_set_state(NETLOOP_SUCCESS);  		return;  	case ICMP_ECHO_REQUEST:  		debug("Got ICMP ECHO REQUEST, return " diff --git a/net/sntp.c b/net/sntp.c index 07d036d41..48ce07f18 100644 --- a/net/sntp.c +++ b/net/sntp.c @@ -45,7 +45,7 @@ static void  SntpTimeout(void)  {  	puts("Timeout\n"); -	NetState = NETLOOP_FAIL; +	net_set_state(NETLOOP_FAIL);  	return;  } @@ -76,7 +76,7 @@ SntpHandler(uchar *pkt, unsigned dest, IPaddr_t sip, unsigned src,  		tm.tm_year, tm.tm_mon, tm.tm_mday,  		tm.tm_hour, tm.tm_min, tm.tm_sec); -	NetState = NETLOOP_SUCCESS; +	net_set_state(NETLOOP_SUCCESS);  }  void diff --git a/net/tftp.c b/net/tftp.c index a04a832f8..bf32eabe8 100644 --- a/net/tftp.c +++ b/net/tftp.c @@ -177,7 +177,7 @@ store_block(unsigned block, uchar *src, unsigned len)  		rc = flash_write((char *)src, (ulong)(load_addr+offset), len);  		if (rc) {  			flash_perror(rc); -			NetState = NETLOOP_FAIL; +			net_set_state(NETLOOP_FAIL);  			return;  		}  	} else @@ -300,7 +300,7 @@ static void tftp_complete(void)  	}  #endif  	puts("\ndone\n"); -	NetState = NETLOOP_SUCCESS; +	net_set_state(NETLOOP_SUCCESS);  }  static void @@ -627,7 +627,7 @@ TftpHandler(uchar *pkt, unsigned dest, IPaddr_t sip, unsigned src,  			if (MasterClient && (TftpBlock >= TftpEndingBlock)) {  				puts("\nMulticast tftp done\n");  				mcast_cleanup(); -				NetState = NETLOOP_SUCCESS; +				net_set_state(NETLOOP_SUCCESS);  			}  		} else  #endif @@ -644,7 +644,7 @@ TftpHandler(uchar *pkt, unsigned dest, IPaddr_t sip, unsigned src,  		case TFTP_ERR_ACCESS_DENIED:  			puts("Not retrying...\n");  			eth_halt(); -			NetState = NETLOOP_FAIL; +			net_set_state(NETLOOP_FAIL);  			break;  		case TFTP_ERR_UNDEFINED:  		case TFTP_ERR_DISK_FULL: |