Message ID | 1327020811-1538-9-git-send-email-joe.hershberger@ni.com |
---|---|
State | Superseded |
Delegated to: | Joe Hershberger |
Headers | show |
On Thu, Jan 19, 2012 at 4:53 PM, Joe Hershberger <joe.hershberger@ni.com> wrote: > Signed-off-by: Joe Hershberger <joe.hershberger@ni.com> > Cc: Joe Hershberger <joe.hershberger@gmail.com> > Cc: Wolfgang Denk <wd@denx.de> Acked-by: Simon Glass <sjg@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
Acked-by: Mike Frysinger <vapier@gentoo.org>
-mike
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 +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 */ /**********************************************************************/
Signed-off-by: Joe Hershberger <joe.hershberger@ni.com> Cc: Joe Hershberger <joe.hershberger@gmail.com> Cc: Wolfgang Denk <wd@denx.de> --- net/net.c | 25 +------------------------ net/rarp.c | 38 +++++++++++++++++++++++++++----------- net/rarp.h | 1 + 3 files changed, 29 insertions(+), 35 deletions(-)