Re: [U-Boot] [PATCH 08/28] net: Move RARP receive logic out of net.c
Sent from my iPhone ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH 08/28] net: Move RARP receive logic out of net.c
Acked-by: Mike Frysinger vap...@gentoo.org -mike signature.asc Description: This is a digitally signed message part. ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH 08/28] net: Move RARP receive logic out of net.c
On Thu, Jan 19, 2012 at 4:53 PM, Joe Hershberger joe.hershber...@ni.com wrote: Signed-off-by: Joe Hershberger joe.hershber...@ni.com Cc: Joe Hershberger joe.hershber...@gmail.com Cc: Wolfgang Denk w...@denx.de Acked-by: Simon Glass s...@chromium.org --- net/net.c | 25 + net/rarp.c | 38 +++--- net/rarp.h | 1 + 3 files changed, 29 insertions(+), 35 deletions(-) diff --git a/net/net.c b/net/net.c index c2fbcb5..fdc1ebe 100644 --- a/net/net.c +++ b/net/net.c @@ -857,9 +857,6 @@ NetReceive(volatile uchar *inpkt, int len) { Ethernet_t *et; IP_t *ip; -#ifdef CONFIG_CMD_RARP - ARP_t *arp; -#endif IPaddr_t tmp; IPaddr_t src_ip; int x; @@ -964,27 +961,7 @@ NetReceive(volatile uchar *inpkt, int len) #ifdef CONFIG_CMD_RARP case PROT_RARP: - debug(Got RARP\n); - arp = (ARP_t *)ip; - if (len ARP_HDR_SIZE) { - printf(bad length %d %d\n, len, ARP_HDR_SIZE); - return; - } - - if ((ntohs(arp-ar_op) != RARPOP_REPLY) || - (ntohs(arp-ar_hrd) != ARP_ETHER) || - (ntohs(arp-ar_pro) != PROT_IP) || - (arp-ar_hln != 6) || (arp-ar_pln != 4)) { - - puts(invalid RARP header\n); - } else { - NetCopyIP(NetOurIP, arp-ar_data[16]); - if (NetServerIP == 0) - NetCopyIP(NetServerIP, arp-ar_data[6]); - memcpy(NetServerEther, arp-ar_data[0], 6); - - (*packetHandler)(0, 0, 0, 0, 0); - } + RarpReceive(ip, len); break; #endif case PROT_IP: diff --git a/net/rarp.c b/net/rarp.c index 5a813a2..761560c 100644 --- a/net/rarp.c +++ b/net/rarp.c @@ -36,18 +36,37 @@ # define TIMEOUT_COUNT (CONFIG_NET_RETRY_COUNT) #endif - int RarpTry; /* * Handle a RARP received packet. */ -static void -RarpHandler(uchar *dummi0, unsigned dummi1, IPaddr_t sip, unsigned dummi2, - unsigned dummi3) +void void on same line as function? +RarpReceive(IP_t *ip, unsigned len) { - debug(Got good RARP\n); - net_auto_load(); + ARP_t *arp; + + debug(Got RARP\n); + arp = (ARP_t *)ip; + if (len ARP_HDR_SIZE) { + printf(bad length %d %d\n, len, ARP_HDR_SIZE); + return; + } + + if ((ntohs(arp-ar_op) != RARPOP_REPLY) || + (ntohs(arp-ar_hrd) != ARP_ETHER) || + (ntohs(arp-ar_pro) != PROT_IP) || + (arp-ar_hln != 6) || (arp-ar_pln != 4)) { + + puts(invalid RARP header\n); + } else { + NetCopyIP(NetOurIP, arp-ar_data[16]); + if (NetServerIP == 0) + NetCopyIP(NetServerIP, arp-ar_data[6]); + memcpy(NetServerEther, arp-ar_data[0], 6); + debug(Got good RARP\n); + net_auto_load(); + } } @@ -70,7 +89,6 @@ RarpTimeout(void) void RarpRequest(void) { - int i; uchar *pkt; ARP_t *rarp; @@ -90,12 +108,10 @@ RarpRequest(void) memcpy(rarp-ar_data[6], NetOurIP, 4); /* source IP addr */ /* dest ET addr = source ET addr ??*/ memcpy(rarp-ar_data[10], NetOurEther, 6); - /* dest. IP addr set to broadcast */ - for (i = 0; i = 3; i++) - rarp-ar_data[16 + i] = 0xff; + /* dest IP addr set to broadcast */ + memset(rarp-ar_data[16], 0xff, 4); NetSendPacket(NetTxPacket, (pkt - NetTxPacket) + ARP_HDR_SIZE); NetSetTimeout(TIMEOUT, RarpTimeout); - NetSetHandler(RarpHandler); } diff --git a/net/rarp.h b/net/rarp.h index 4e92d80..0d728dc 100644 --- a/net/rarp.h +++ b/net/rarp.h @@ -37,6 +37,7 @@ extern int RarpTry; +extern void RarpReceive(IP_t *ip, unsigned len); extern void RarpRequest(void); /* Send a RARP request */ /**/ -- 1.6.0.2 ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
[U-Boot] [PATCH 08/28] net: Move RARP receive logic out of net.c
Signed-off-by: Joe Hershberger joe.hershber...@ni.com Cc: Joe Hershberger joe.hershber...@gmail.com Cc: Wolfgang Denk w...@denx.de --- net/net.c | 25 + net/rarp.c | 38 +++--- net/rarp.h |1 + 3 files changed, 29 insertions(+), 35 deletions(-) diff --git a/net/net.c b/net/net.c index c2fbcb5..fdc1ebe 100644 --- a/net/net.c +++ b/net/net.c @@ -857,9 +857,6 @@ NetReceive(volatile uchar *inpkt, int len) { Ethernet_t *et; IP_t*ip; -#ifdef CONFIG_CMD_RARP - ARP_t *arp; -#endif IPaddr_t tmp; IPaddr_t src_ip; int x; @@ -964,27 +961,7 @@ NetReceive(volatile uchar *inpkt, int len) #ifdef CONFIG_CMD_RARP case PROT_RARP: - debug(Got RARP\n); - arp = (ARP_t *)ip; - if (len ARP_HDR_SIZE) { - printf(bad length %d %d\n, len, ARP_HDR_SIZE); - return; - } - - if ((ntohs(arp-ar_op) != RARPOP_REPLY) || - (ntohs(arp-ar_hrd) != ARP_ETHER) || - (ntohs(arp-ar_pro) != PROT_IP) || - (arp-ar_hln != 6) || (arp-ar_pln != 4)) { - - puts(invalid RARP header\n); - } else { - NetCopyIP(NetOurIP, arp-ar_data[16]); - if (NetServerIP == 0) - NetCopyIP(NetServerIP, arp-ar_data[6]); - memcpy(NetServerEther, arp-ar_data[0], 6); - - (*packetHandler)(0, 0, 0, 0, 0); - } + RarpReceive(ip, len); break; #endif case PROT_IP: diff --git a/net/rarp.c b/net/rarp.c index 5a813a2..761560c 100644 --- a/net/rarp.c +++ b/net/rarp.c @@ -36,18 +36,37 @@ # define TIMEOUT_COUNT (CONFIG_NET_RETRY_COUNT) #endif - intRarpTry; /* * Handle a RARP received packet. */ -static void -RarpHandler(uchar *dummi0, unsigned dummi1, IPaddr_t sip, unsigned dummi2, - unsigned dummi3) +void +RarpReceive(IP_t *ip, unsigned len) { - debug(Got good RARP\n); - net_auto_load(); + ARP_t *arp; + + debug(Got RARP\n); + arp = (ARP_t *)ip; + if (len ARP_HDR_SIZE) { + printf(bad length %d %d\n, len, ARP_HDR_SIZE); + return; + } + + if ((ntohs(arp-ar_op) != RARPOP_REPLY) || + (ntohs(arp-ar_hrd) != ARP_ETHER) || + (ntohs(arp-ar_pro) != PROT_IP) || + (arp-ar_hln != 6) || (arp-ar_pln != 4)) { + + puts(invalid RARP header\n); + } else { + NetCopyIP(NetOurIP, arp-ar_data[16]); + if (NetServerIP == 0) + NetCopyIP(NetServerIP, arp-ar_data[6]); + memcpy(NetServerEther, arp-ar_data[0], 6); + debug(Got good RARP\n); + net_auto_load(); + } } @@ -70,7 +89,6 @@ RarpTimeout(void) void RarpRequest(void) { - int i; uchar *pkt; ARP_t *rarp; @@ -90,12 +108,10 @@ RarpRequest(void) memcpy(rarp-ar_data[6], NetOurIP, 4); /* source IP addr */ /* dest ET addr = source ET addr ??*/ memcpy(rarp-ar_data[10], NetOurEther, 6); - /* dest. IP addr set to broadcast */ - for (i = 0; i = 3; i++) - rarp-ar_data[16 + i] = 0xff; + /* dest IP addr set to broadcast */ + memset(rarp-ar_data[16], 0xff,4); NetSendPacket(NetTxPacket, (pkt - NetTxPacket) + ARP_HDR_SIZE); NetSetTimeout(TIMEOUT, RarpTimeout); - NetSetHandler(RarpHandler); } diff --git a/net/rarp.h b/net/rarp.h index 4e92d80..0d728dc 100644 --- a/net/rarp.h +++ b/net/rarp.h @@ -37,6 +37,7 @@ extern int RarpTry; +extern void RarpReceive(IP_t *ip, unsigned len); extern void RarpRequest(void); /* Send a RARP request */ /**/ -- 1.6.0.2 ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot