diff options
| -rw-r--r-- | drivers/net/netconsole.c | 4 | ||||
| -rw-r--r-- | include/common.h | 14 | ||||
| -rw-r--r-- | include/net.h | 5 | ||||
| -rw-r--r-- | net/arp.c | 9 | ||||
| -rw-r--r-- | net/link_local.c | 26 | ||||
| -rw-r--r-- | net/net.c | 40 | ||||
| -rw-r--r-- | net/ping.c | 4 | ||||
| -rw-r--r-- | net/rarp.c | 4 | 
8 files changed, 68 insertions, 38 deletions
| diff --git a/drivers/net/netconsole.c b/drivers/net/netconsole.c index 19e563ea8..14243b8a9 100644 --- a/drivers/net/netconsole.c +++ b/drivers/net/netconsole.c @@ -83,6 +83,8 @@ int nc_input_packet(uchar *pkt, unsigned dest, unsigned src, unsigned len)  	if (dest != nc_port || !len)  		return 0; /* not for us */ +	debug_cond(DEBUG_DEV_PKT, "input: \"%*.*s\"\n", len, len, pkt); +  	if (input_size == sizeof(input_buffer))  		return 1; /* no space */  	if (len > sizeof(input_buffer) - input_size) @@ -112,6 +114,8 @@ static void nc_send_packet(const char *buf, int len)  	uchar *ether;  	IPaddr_t ip; +	debug_cond(DEBUG_DEV_PKT, "output: \"%*.*s\"\n", len, len, buf); +  	eth = eth_get_dev();  	if (eth == NULL)  		return; diff --git a/include/common.h b/include/common.h index eb9de1870..8564a65cf 100644 --- a/include/common.h +++ b/include/common.h @@ -729,13 +729,6 @@ int gunzip(void *, int, unsigned char *, unsigned long *);  int zunzip(void *dst, int dstlen, unsigned char *src, unsigned long *lenp,  						int stoponerr, int offset); -/* lib/net_utils.c */ -#include <net.h> -static inline IPaddr_t getenv_IPaddr (char *var) -{ -	return (string_to_ip(getenv(var))); -} -  /* lib/qsort.c */  void qsort(void *base, size_t nmemb, size_t size,  	   int(*compar)(const void *, const void *)); @@ -804,6 +797,13 @@ void	fputc(int file, const char c);  int	ftstc(int file);  int	fgetc(int file); +/* lib/net_utils.c */ +#include <net.h> +static inline IPaddr_t getenv_IPaddr(char *var) +{ +	return string_to_ip(getenv(var)); +} +  /*   * CONSOLE multiplexing.   */ diff --git a/include/net.h b/include/net.h index a902a6475..a092f291b 100644 --- a/include/net.h +++ b/include/net.h @@ -19,6 +19,10 @@  #include <asm/cache.h>  #include <asm/byteorder.h>	/* for nton* / ntoh* stuff */ +#define DEBUG_LL_STATE 0	/* Link local state machine changes */ +#define DEBUG_DEV_PKT 0		/* Packets or info directed to the device */ +#define DEBUG_NET_PKT 0		/* Packets on info on the network at large */ +#define DEBUG_INT_STATE 0	/* Internal network state changes */  /*   *	The number of receive packet buffers, and the required packet buffer @@ -480,6 +484,7 @@ static inline void net_set_state(enum net_loop_state state)  {  	extern enum net_loop_state net_state; +	debug_cond(DEBUG_INT_STATE, "--- NetState set to %d\n", state);  	net_state = state;  } @@ -55,7 +55,7 @@ void arp_raw_request(IPaddr_t sourceIP, const uchar *targetEther,  	struct arp_hdr *arp;  	int eth_hdr_size; -	debug("ARP broadcast %d\n", NetArpWaitTry); +	debug_cond(DEBUG_DEV_PKT, "ARP broadcast %d\n", NetArpWaitTry);  	pkt = NetArpTxPacket; @@ -135,7 +135,7 @@ void ArpReceive(struct ethernet_hdr *et, struct ip_udp_hdr *ip, int len)  	 *   address; so if we receive such a packet, we set  	 *   the server ethernet address  	 */ -	debug("Got ARP\n"); +	debug_cond(DEBUG_NET_PKT, "Got ARP\n");  	arp = (struct arp_hdr *)ip;  	if (len < ARP_HDR_SIZE) { @@ -160,7 +160,7 @@ void ArpReceive(struct ethernet_hdr *et, struct ip_udp_hdr *ip, int len)  	switch (ntohs(arp->ar_op)) {  	case ARPOP_REQUEST:  		/* reply with our IP address */ -		debug("Got ARP REQUEST, return our IP\n"); +		debug_cond(DEBUG_DEV_PKT, "Got ARP REQUEST, return our IP\n");  		pkt = (uchar *)et;  		eth_hdr_size = net_update_ether(et, et->et_src, PROT_ARP);  		pkt += eth_hdr_size; @@ -203,7 +203,8 @@ void ArpReceive(struct ethernet_hdr *et, struct ip_udp_hdr *ip, int len)  		/* matched waiting packet's address */  		if (reply_ip_addr == NetArpWaitReplyIP) { -			debug("Got ARP REPLY, set eth addr (%pM)\n", +			debug_cond(DEBUG_DEV_PKT, +				"Got ARP REPLY, set eth addr (%pM)\n",  				arp->ar_data);  			/* save address for later use */ diff --git a/net/link_local.c b/net/link_local.c index dde96aec3..336286395 100644 --- a/net/link_local.c +++ b/net/link_local.c @@ -93,7 +93,7 @@ static void configure_wait(void)  	/* set deadline_ms to the point in time when we timeout */  	deadline_ms = MONOTONIC_MS() + timeout_ms; -	debug("...wait %d %s nprobes=%u, nclaims=%u\n", +	debug_cond(DEBUG_DEV_PKT, "...wait %d %s nprobes=%u, nclaims=%u\n",  			timeout_ms, eth_get_name(), nprobes, nclaims);  	NetSetTimeout(timeout_ms, link_local_timeout); @@ -131,7 +131,7 @@ static void link_local_timeout(void)  		   have been received, so we can progress through the states */  		if (nprobes < PROBE_NUM) {  			nprobes++; -			debug("probe/%u %s@%pI4\n", +			debug_cond(DEBUG_LL_STATE, "probe/%u %s@%pI4\n",  					nprobes, eth_get_name(), &ip);  			arp_raw_request(0, NetEtherNullAddr, ip);  			timeout_ms = PROBE_MIN * 1000; @@ -140,7 +140,7 @@ static void link_local_timeout(void)  			/* Switch to announce state */  			state = ANNOUNCE;  			nclaims = 0; -			debug("announce/%u %s@%pI4\n", +			debug_cond(DEBUG_LL_STATE, "announce/%u %s@%pI4\n",  					nclaims, eth_get_name(), &ip);  			arp_raw_request(ip, NetOurEther, ip);  			timeout_ms = ANNOUNCE_INTERVAL * 1000; @@ -152,7 +152,7 @@ static void link_local_timeout(void)  		   to the announce state */  		state = ANNOUNCE;  		nclaims = 0; -		debug("announce/%u %s@%pI4\n", +		debug_cond(DEBUG_LL_STATE, "announce/%u %s@%pI4\n",  				nclaims, eth_get_name(), &ip);  		arp_raw_request(ip, NetOurEther, ip);  		timeout_ms = ANNOUNCE_INTERVAL * 1000; @@ -163,7 +163,7 @@ static void link_local_timeout(void)  		   the states */  		if (nclaims < ANNOUNCE_NUM) {  			nclaims++; -			debug("announce/%u %s@%pI4\n", +			debug_cond(DEBUG_LL_STATE, "announce/%u %s@%pI4\n",  					nclaims, eth_get_name(), &ip);  			arp_raw_request(ip, NetOurEther, ip);  			timeout_ms = ANNOUNCE_INTERVAL * 1000; @@ -216,10 +216,11 @@ void link_local_receive_arp(struct arp_hdr *arp, int len)  		if ((int)(diff) < 0) {  			/* Current time is greater than the expected timeout  			   time. This should never happen */ -			debug("missed an expected timeout\n"); +			debug_cond(DEBUG_LL_STATE, +				"missed an expected timeout\n");  			timeout_ms = 0;  		} else { -			debug("adjusting timeout\n"); +			debug_cond(DEBUG_INT_STATE, "adjusting timeout\n");  			timeout_ms = diff | 1; /* never 0 */  		}  	} @@ -239,13 +240,13 @@ void link_local_receive_arp(struct arp_hdr *arp, int len)  	}  */ -	debug("%s recv arp type=%d, op=%d,\n", +	debug_cond(DEBUG_INT_STATE, "%s recv arp type=%d, op=%d,\n",  		eth_get_name(), ntohs(arp->ar_pro),  		ntohs(arp->ar_op)); -	debug("\tsource=%pM %pI4\n", +	debug_cond(DEBUG_INT_STATE, "\tsource=%pM %pI4\n",  		&arp->ar_sha,  		&arp->ar_spa); -	debug("\ttarget=%pM %pI4\n", +	debug_cond(DEBUG_INT_STATE, "\ttarget=%pM %pI4\n",  		&arp->ar_tha,  		&arp->ar_tpa); @@ -271,8 +272,9 @@ void link_local_receive_arp(struct arp_hdr *arp, int len)  		target_ip_conflict = 1;  	} -	debug("state = %d, source ip conflict = %d, target ip conflict = %d\n", -		state, source_ip_conflict, target_ip_conflict); +	debug_cond(DEBUG_NET_PKT, +		"state = %d, source ip conflict = %d, target ip conflict = " +		"%d\n", state, source_ip_conflict, target_ip_conflict);  	switch (state) {  	case PROBE:  	case ANNOUNCE: @@ -310,6 +310,7 @@ int NetLoop(enum proto_t protocol)  	NetRestarted = 0;  	NetDevExists = 0;  	NetTryCount = 1; +	debug_cond(DEBUG_INT_STATE, "--- NetLoop Entry\n");  	bootstage_mark_name(BOOTSTAGE_ID_ETH_START, "eth_start");  	net_init(); @@ -330,6 +331,7 @@ restart:  	 *	here on, this code is a state machine driven by received  	 *	packets and timer events.  	 */ +	debug_cond(DEBUG_INT_STATE, "--- NetLoop Init\n");  	NetInitLoop();  	switch (net_check_prereq(protocol)) { @@ -460,6 +462,9 @@ restart:  			net_cleanup_loop();  			eth_halt();  			puts("\nAbort\n"); +			/* include a debug print as well incase the debug +			   messages are directed to stderr */ +			debug_cond(DEBUG_INT_STATE, "--- NetLoop Abort!\n");  			goto done;  		} @@ -487,6 +492,7 @@ restart:  			}  #endif /* CONFIG_SYS_FAULT_ECHO_LINK_DOWN, ... */  #endif /* CONFIG_MII, ... */ +			debug_cond(DEBUG_INT_STATE, "--- NetLoop timeout\n");  			x = timeHandler;  			timeHandler = (thand_f *)0;  			(*x)(); @@ -514,10 +520,12 @@ restart:  			}  			eth_halt();  			ret = NetBootFileXferSize; +			debug_cond(DEBUG_INT_STATE, "--- NetLoop Success!\n");  			goto done;  		case NETLOOP_FAIL:  			net_cleanup_loop(); +			debug_cond(DEBUG_INT_STATE, "--- NetLoop Fail!\n");  			goto done;  		case NETLOOP_CONTINUE: @@ -605,6 +613,7 @@ rxhand_f *net_get_udp_handler(void)  void net_set_udp_handler(rxhand_f *f)  { +	debug_cond(DEBUG_INT_STATE, "--- NetLoop UDP handler set (%p)\n", f);  	if (f == NULL)  		udp_packet_handler = dummy_handler;  	else @@ -618,6 +627,7 @@ rxhand_f *net_get_arp_handler(void)  void net_set_arp_handler(rxhand_f *f)  { +	debug_cond(DEBUG_INT_STATE, "--- NetLoop ARP handler set (%p)\n", f);  	if (f == NULL)  		arp_packet_handler = dummy_handler;  	else @@ -635,8 +645,12 @@ void  NetSetTimeout(ulong iv, thand_f *f)  {  	if (iv == 0) { +		debug_cond(DEBUG_INT_STATE, +			"--- NetLoop timeout handler cancelled\n");  		timeHandler = (thand_f *)0;  	} else { +		debug_cond(DEBUG_INT_STATE, +			"--- NetLoop timeout handler set (%p)\n", f);  		timeHandler = f;  		timeStart = get_timer(0);  		timeDelta = iv; @@ -672,7 +686,7 @@ int NetSendUDPPacket(uchar *ether, IPaddr_t dest, int dport, int sport,  	/* if MAC address was not discovered yet, do an ARP request */  	if (memcmp(ether, NetEtherNullAddr, 6) == 0) { -		debug("sending ARP for %pI4\n", &dest); +		debug_cond(DEBUG_DEV_PKT, "sending ARP for %pI4\n", &dest);  		/* save the ip and eth addr for the packet to send after arp */  		NetArpWaitPacketIP = dest; @@ -687,7 +701,8 @@ int NetSendUDPPacket(uchar *ether, IPaddr_t dest, int dport, int sport,  		ArpRequest();  		return 1;	/* waiting */  	} else { -		debug("sending UDP to %pI4/%pM\n", &dest, ether); +		debug_cond(DEBUG_DEV_PKT, "sending UDP to %pI4/%pM\n", +			&dest, ether);  		NetSendPacket(NetTxPacket, pkt_hdr_size + payload_len);  		return 0;	/* transmitted */  	} @@ -910,7 +925,7 @@ NetReceive(uchar *inpkt, int len)  #endif  	ushort cti = 0, vlanid = VLAN_NONE, myvlanid, mynvlanid; -	debug("packet received\n"); +	debug_cond(DEBUG_NET_PKT, "packet received\n");  	NetRxPacket = inpkt;  	NetRxPacketLen = len; @@ -941,8 +956,6 @@ NetReceive(uchar *inpkt, int len)  	eth_proto = ntohs(et->et_protlen); -	debug("packet received\n"); -  	if (eth_proto < 1514) {  		struct e802_hdr *et802 = (struct e802_hdr *)et;  		/* @@ -962,7 +975,7 @@ NetReceive(uchar *inpkt, int len)  		struct vlan_ethernet_hdr *vet =  			(struct vlan_ethernet_hdr *)et; -		debug("VLAN packet received\n"); +		debug_cond(DEBUG_NET_PKT, "VLAN packet received\n");  		/* too small packet? */  		if (len < VLAN_ETHER_HDR_SIZE) @@ -984,7 +997,7 @@ NetReceive(uchar *inpkt, int len)  		len -= VLAN_ETHER_HDR_SIZE;  	} -	debug("Receive from protocol 0x%x\n", eth_proto); +	debug_cond(DEBUG_NET_PKT, "Receive from protocol 0x%x\n", eth_proto);  #if defined(CONFIG_CMD_CDP)  	if (iscdp) { @@ -1013,7 +1026,7 @@ NetReceive(uchar *inpkt, int len)  		break;  #endif  	case PROT_IP: -		debug("Got IP\n"); +		debug_cond(DEBUG_NET_PKT, "Got IP\n");  		/* Before we start poking the header, make sure it is there */  		if (len < IP_UDP_HDR_SIZE) {  			debug("len bad %d < %lu\n", len, @@ -1022,11 +1035,12 @@ NetReceive(uchar *inpkt, int len)  		}  		/* Check the packet length */  		if (len < ntohs(ip->ip_len)) { -			printf("len bad %d < %d\n", len, ntohs(ip->ip_len)); +			debug("len bad %d < %d\n", len, ntohs(ip->ip_len));  			return;  		}  		len = ntohs(ip->ip_len); -		debug("len=%d, v=%02x\n", len, ip->ip_hl_v & 0xff); +		debug_cond(DEBUG_NET_PKT, "len=%d, v=%02x\n", +			len, ip->ip_hl_v & 0xff);  		/* Can't deal with anything except IPv4 */  		if ((ip->ip_hl_v & 0xf0) != 0x40) @@ -1036,7 +1050,7 @@ NetReceive(uchar *inpkt, int len)  			return;  		/* Check the Checksum of the header */  		if (!NetCksumOk((uchar *)ip, IP_HDR_SIZE / 2)) { -			puts("checksum bad\n"); +			debug("checksum bad\n");  			return;  		}  		/* If it is not for us, ignore it */ @@ -1085,6 +1099,10 @@ NetReceive(uchar *inpkt, int len)  			return;  		} +		debug_cond(DEBUG_DEV_PKT, +			"received UDP (to=%pI4, from=%pI4, len=%d)\n", +			&dst_ip, &src_ip, len); +  #ifdef CONFIG_UDP_CHECKSUM  		if (ip->udp_xsum != 0) {  			ulong   xsum; diff --git a/net/ping.c b/net/ping.c index 2ba9f76e5..0710b9228 100644 --- a/net/ping.c +++ b/net/ping.c @@ -45,7 +45,7 @@ static int ping_send(void)  	/* XXX always send arp request */ -	debug("sending ARP for %pI4\n", &NetPingIP); +	debug_cond(DEBUG_DEV_PKT, "sending ARP for %pI4\n", &NetPingIP);  	NetArpWaitPacketIP = NetPingIP; @@ -93,7 +93,7 @@ void ping_receive(struct ethernet_hdr *et, struct ip_udp_hdr *ip, int len)  	case ICMP_ECHO_REQUEST:  		eth_hdr_size = net_update_ether(et, et->et_src, PROT_IP); -		debug("Got ICMP ECHO REQUEST, return " +		debug_cond(DEBUG_DEV_PKT, "Got ICMP ECHO REQUEST, return "  			"%d bytes\n", eth_hdr_size + len);  		ip->ip_sum = 0; diff --git a/net/rarp.c b/net/rarp.c index a715c2c7f..49185b4e1 100644 --- a/net/rarp.c +++ b/net/rarp.c @@ -45,7 +45,7 @@ void rarp_receive(struct ip_udp_hdr *ip, unsigned len)  {  	struct arp_hdr *arp; -	debug("Got RARP\n"); +	debug_cond(DEBUG_NET_PKT, "Got RARP\n");  	arp = (struct arp_hdr *)ip;  	if (len < ARP_HDR_SIZE) {  		printf("bad length %d < %d\n", len, ARP_HDR_SIZE); @@ -63,7 +63,7 @@ void rarp_receive(struct ip_udp_hdr *ip, unsigned len)  		if (NetServerIP == 0)  			NetCopyIP(&NetServerIP, &arp->ar_data[6]);  		memcpy(NetServerEther, &arp->ar_data[0], 6); -		debug("Got good RARP\n"); +		debug_cond(DEBUG_DEV_PKT, "Got good RARP\n");  		net_auto_load();  	}  } |