Signed-off-by: Joe Hershberger <joe.hershber...@ni.com> Cc: Joe Hershberger <joe.hershber...@gmail.com> Cc: Wolfgang Denk <w...@denx.de> --- drivers/net/netconsole.c | 6 ++++++ net/arp.c | 12 ++++++++---- net/link_local.c | 31 +++++++++++++++++++------------ net/net.c | 45 ++++++++++++++++++++++++++++++++++----------- net/ping.c | 6 ++++-- net/rarp.c | 7 +++++-- 6 files changed, 76 insertions(+), 31 deletions(-)
diff --git a/drivers/net/netconsole.c b/drivers/net/netconsole.c index 1e31159..aee671e 100644 --- a/drivers/net/netconsole.c +++ b/drivers/net/netconsole.c @@ -26,6 +26,8 @@ #include <stdio_dev.h> #include <net.h> +#define DEBUG_DEV_PKT 0 + DECLARE_GLOBAL_DATA_PTR; static char input_buffer[512]; @@ -83,6 +85,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 +116,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/net/arp.c b/net/arp.c index 8a7b4a2..b8fb21f 100644 --- a/net/arp.c +++ b/net/arp.c @@ -15,6 +15,9 @@ #include "link_local.h" #endif +#define DEBUG_DEV_PKT 0 +#define DEBUG_NET_PKT 0 + #ifndef CONFIG_ARP_TIMEOUT /* Milliseconds before trying ARP again */ # define ARP_TIMEOUT 5000UL @@ -58,7 +61,7 @@ void ArpRawRequest(IPaddr_t sourceIP, const uchar *targetEther, struct ARP_t *arp; int eth_hdr_size; - debug("ARP broadcast %d\n", NetArpWaitTry); + debug_cond(DEBUG_DEV_PKT, "ARP broadcast %d\n", NetArpWaitTry); pkt = NetArpTxPacket; @@ -138,7 +141,7 @@ void ArpReceive(struct Ethernet_t *et, struct IP_UDP_t *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_t *)ip; if (len < ARP_HDR_SIZE) { @@ -163,7 +166,7 @@ void ArpReceive(struct Ethernet_t *et, struct IP_UDP_t *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 = NetUpdateEther(et, et->et_src, PROT_ARP); pkt += eth_hdr_size; @@ -205,7 +208,8 @@ void ArpReceive(struct Ethernet_t *et, struct IP_UDP_t *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 16ec9a7..5395bf6 100644 --- a/net/link_local.c +++ b/net/link_local.c @@ -16,6 +16,11 @@ #include "arp.h" #include "net_rand.h" +#define DEBUG_LL_STATE 0 +#define DEBUG_DEV_PKT 0 +#define DEBUG_NET_PKT 0 +#define DEBUG_INT_STATE 0 + /* We don't need more than 32 bits of the counter */ #define MONOTONIC_MS() ((unsigned)get_timer(0) * (1000 / CONFIG_SYS_HZ)) @@ -93,7 +98,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, LinkLocalTimeout); @@ -132,7 +137,7 @@ LinkLocalTimeout(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); ArpRawRequest(0, NetEtherNullAddr, ip); timeout_ms = PROBE_MIN * 1000; @@ -141,7 +146,7 @@ LinkLocalTimeout(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); ArpRawRequest(ip, NetOurEther, ip); timeout_ms = ANNOUNCE_INTERVAL * 1000; @@ -153,7 +158,7 @@ LinkLocalTimeout(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); ArpRawRequest(ip, NetOurEther, ip); timeout_ms = ANNOUNCE_INTERVAL * 1000; @@ -164,7 +169,7 @@ LinkLocalTimeout(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); ArpRawRequest(ip, NetOurEther, ip); timeout_ms = ANNOUNCE_INTERVAL * 1000; @@ -217,10 +222,11 @@ void LinkLocalReceiveArp(struct ARP_t *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 */ } } @@ -240,13 +246,13 @@ void LinkLocalReceiveArp(struct ARP_t *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); @@ -272,8 +278,9 @@ void LinkLocalReceiveArp(struct ARP_t *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: diff --git a/net/net.c b/net/net.c index d541234..2c1e60e 100644 --- a/net/net.c +++ b/net/net.c @@ -111,6 +111,10 @@ #endif #include "tftp.h" +#define DEBUG_DEV_PKT 0 +#define DEBUG_NET_PKT 0 +#define DEBUG_INT_STATE 0 + DECLARE_GLOBAL_DATA_PTR; /** BOOTP EXTENTIONS **/ @@ -315,6 +319,7 @@ int NetLoop(enum proto_t protocol) NetRestarted = 0; NetDevExists = 0; NetTryCount = 1; + debug_cond(DEBUG_INT_STATE, "--- NetLoop Entry\n"); NetInit(); eth_halt(); @@ -334,6 +339,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)) { @@ -464,6 +470,9 @@ restart: NetCleanupLoop(); 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; } @@ -491,6 +500,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)(); @@ -518,10 +528,12 @@ restart: } eth_halt(); ret = NetBootFileXferSize; + debug_cond(DEBUG_INT_STATE, "--- NetLoop Success!\n"); goto done; case NETLOOP_FAIL: NetCleanupLoop(); + debug_cond(DEBUG_INT_STATE, "--- NetLoop Fail!\n"); goto done; } } @@ -602,6 +614,7 @@ NetGetUDPHandler(void) void NetSetUDPHandler(rxhand_f *f) { + debug_cond(DEBUG_INT_STATE, "--- NetLoop UDP handler set (%p)\n", f); udpPacketHandler = f; } @@ -614,6 +627,7 @@ NetGetARPHandler(void) void NetSetARPHandler(rxhand_f *f) { + debug_cond(DEBUG_INT_STATE, "--- NetLoop ARP handler set (%p)\n", f); arpPacketHandler = f; } @@ -628,8 +642,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; @@ -640,6 +658,7 @@ NetSetTimeout(ulong iv, thand_f *f) void NetSetState(int state) { + debug_cond(DEBUG_INT_STATE, "--- NetState set to %d\n", state); NetState = state; } @@ -681,7 +700,7 @@ 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; @@ -696,7 +715,8 @@ 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 */ } @@ -919,7 +939,7 @@ NetReceive(volatile 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 = (uchar *)inpkt; NetRxPacketLen = len; @@ -950,8 +970,6 @@ NetReceive(volatile uchar *inpkt, int len) eth_proto = ntohs(et->et_protlen); - debug("packet received\n"); - if (eth_proto < 1514) { /* * Got a 802.2 packet. Check the other protocol field. @@ -969,7 +987,7 @@ NetReceive(volatile uchar *inpkt, int len) } else { /* VLAN packet */ struct VLAN_Ethernet_t *vet = (struct VLAN_Ethernet_t *)et; - debug("VLAN packet received\n"); + debug_cond(DEBUG_NET_PKT, "VLAN packet received\n"); /* too small packet? */ if (len < VLAN_ETHER_HDR_SIZE) @@ -991,7 +1009,7 @@ NetReceive(volatile 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) { @@ -1020,7 +1038,7 @@ NetReceive(volatile 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, @@ -1029,11 +1047,12 @@ NetReceive(volatile 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) @@ -1043,7 +1062,7 @@ NetReceive(volatile 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 */ @@ -1092,6 +1111,10 @@ NetReceive(volatile 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 8332c88..a4fb7b7 100644 --- a/net/ping.c +++ b/net/ping.c @@ -11,6 +11,8 @@ #include "ping.h" #include "arp.h" +#define DEBUG_DEV_PKT 0 + static ushort PingSeqNo; /* The ip address to ping */ @@ -45,7 +47,7 @@ static int PingSend(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; @@ -95,7 +97,7 @@ void PingReceive(struct Ethernet_t *et, struct IP_UDP_t *ip, int len) case ICMP_ECHO_REQUEST: eth_hdr_size = NetUpdateEther(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 3097341..edc33ca 100644 --- a/net/rarp.c +++ b/net/rarp.c @@ -29,6 +29,9 @@ #include "rarp.h" #include "tftp.h" +#define DEBUG_DEV_PKT 0 +#define DEBUG_NET_PKT 0 + #define TIMEOUT 5000UL /* Milliseconds before trying BOOTP again */ #ifndef CONFIG_NET_RETRY_COUNT # define TIMEOUT_COUNT 5 /* # of timeouts before giving up */ @@ -46,7 +49,7 @@ RarpReceive(struct IP_UDP_t *ip, unsigned len) { struct ARP_t *arp; - debug("Got RARP\n"); + debug_cond(DEBUG_NET_PKT, "Got RARP\n"); arp = (struct ARP_t *)ip; if (len < ARP_HDR_SIZE) { printf("bad length %d < %d\n", len, ARP_HDR_SIZE); @@ -64,7 +67,7 @@ RarpReceive(struct IP_UDP_t *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(); } } -- 1.6.0.2 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot