diff options
| author | Joe Hershberger <joe.hershberger@ni.com> | 2012-05-23 08:01:04 +0000 | 
|---|---|---|
| committer | Joe Hershberger <joe.hershberger@ni.com> | 2012-05-23 17:53:08 -0500 | 
| commit | 4ef8d53caadbab5585ccb4df2d087183b1383b86 (patch) | |
| tree | 5e4aeca8a2c86a983f08d573405594c68691db7e /net/net.c | |
| parent | c697576262be11ddab48e1890428495e2fef1751 (diff) | |
| download | olio-uboot-2014.01-4ef8d53caadbab5585ccb4df2d087183b1383b86.tar.xz olio-uboot-2014.01-4ef8d53caadbab5585ccb4df2d087183b1383b86.zip | |
net: Allow filtering on debug traces in the net subsystem
Add several levels of DEBUG prints so that you can limit the noise to
the severety of your problem.
DEBUG_LL_STATE = Link local state machine changes
DEBUG_DEV_PKT = Packets or info directed to the device
DEBUG_NET_PKT = Packets on info on the network at large
DEBUG_INT_STATE = Internal network state changes
Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
Diffstat (limited to 'net/net.c')
| -rw-r--r-- | net/net.c | 40 | 
1 files changed, 29 insertions, 11 deletions
| @@ -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; |