]> git.sur5r.net Git - u-boot/commitdiff
net: Use new checksum functions
authorSimon Glass <sjg@chromium.org>
Tue, 20 Jan 2015 05:16:08 +0000 (22:16 -0700)
committerSimon Glass <sjg@chromium.org>
Thu, 12 Feb 2015 17:35:33 +0000 (10:35 -0700)
Drop the old checksum functions in favour of the new ones.

Signed-off-by: Simon Glass <sjg@chromium.org>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
include/net.h
net/net.c
net/ping.c

index 73ea88b42d7defb35ddea2da2d0ff30684c26b30..43e3d28729ea1d7f0151afd35c554d06086e7a3d 100644 (file)
@@ -512,10 +512,6 @@ unsigned add_ip_checksums(unsigned offset, unsigned sum, unsigned new_sum);
  */
 int ip_checksum_ok(const void *addr, unsigned nbytes);
 
-/* Checksum */
-extern int     NetCksumOk(uchar *, int);       /* Return true if cksum OK */
-extern uint    NetCksum(uchar *, int);         /* Calculate the checksum */
-
 /* Callbacks */
 extern rxhand_f *net_get_udp_handler(void);    /* Get UDP RX packet handler */
 extern void net_set_udp_handler(rxhand_f *);   /* Set UDP RX packet handler */
index 2bea07b3cdf671e4dc825b299ada89125f1b89c2..b60ce6242ce1d0081daf42118f28baab4caafd07 100644 (file)
--- a/net/net.c
+++ b/net/net.c
@@ -1086,7 +1086,7 @@ NetReceive(uchar *inpkt, int len)
                if ((ip->ip_hl_v & 0x0f) > 0x05)
                        return;
                /* Check the Checksum of the header */
-               if (!NetCksumOk((uchar *)ip, IP_HDR_SIZE / 2)) {
+               if (!ip_checksum_ok((uchar *)ip, IP_HDR_SIZE)) {
                        debug("checksum bad\n");
                        return;
                }
@@ -1290,27 +1290,6 @@ common:
 }
 /**********************************************************************/
 
-int
-NetCksumOk(uchar *ptr, int len)
-{
-       return !((NetCksum(ptr, len) + 1) & 0xfffe);
-}
-
-
-unsigned
-NetCksum(uchar *ptr, int len)
-{
-       ulong   xsum;
-       ushort *p = (ushort *)ptr;
-
-       xsum = 0;
-       while (len-- > 0)
-               xsum += *p++;
-       xsum = (xsum & 0xffff) + (xsum >> 16);
-       xsum = (xsum & 0xffff) + (xsum >> 16);
-       return xsum & 0xffff;
-}
-
 int
 NetEthHdrSize(void)
 {
@@ -1410,7 +1389,7 @@ void net_set_udp_header(uchar *pkt, IPaddr_t dest, int dport, int sport,
        net_set_ip_header(pkt, dest, NetOurIP);
        ip->ip_len   = htons(IP_UDP_HDR_SIZE + len);
        ip->ip_p     = IPPROTO_UDP;
-       ip->ip_sum   = ~NetCksum((uchar *)ip, IP_HDR_SIZE >> 1);
+       ip->ip_sum   = compute_ip_checksum(ip, IP_HDR_SIZE);
 
        ip->udp_src  = htons(sport);
        ip->udp_dst  = htons(dport);
index 2be56ed929575c25c1cfa78c7c89e7da31d32be7..366f51825f9ecbff62354eeae1aeb2c49b4aa25b 100644 (file)
@@ -29,14 +29,14 @@ static void set_icmp_header(uchar *pkt, IPaddr_t dest)
 
        ip->ip_len   = htons(IP_ICMP_HDR_SIZE);
        ip->ip_p     = IPPROTO_ICMP;
-       ip->ip_sum   = ~NetCksum((uchar *)ip, IP_HDR_SIZE >> 1);
+       ip->ip_sum   = compute_ip_checksum(ip, IP_HDR_SIZE);
 
        icmp->type = ICMP_ECHO_REQUEST;
        icmp->code = 0;
        icmp->checksum = 0;
        icmp->un.echo.id = 0;
        icmp->un.echo.sequence = htons(PingSeqNo++);
-       icmp->checksum = ~NetCksum((uchar *)icmp, ICMP_HDR_SIZE >> 1);
+       icmp->checksum = compute_ip_checksum(icmp, ICMP_HDR_SIZE);
 }
 
 static int ping_send(void)
@@ -101,13 +101,11 @@ void ping_receive(struct ethernet_hdr *et, struct ip_udp_hdr *ip, int len)
                ip->ip_off = 0;
                NetCopyIP((void *)&ip->ip_dst, &ip->ip_src);
                NetCopyIP((void *)&ip->ip_src, &NetOurIP);
-               ip->ip_sum = ~NetCksum((uchar *)ip,
-                                      IP_HDR_SIZE >> 1);
+               ip->ip_sum = compute_ip_checksum(ip, IP_HDR_SIZE);
 
                icmph->type = ICMP_ECHO_REPLY;
                icmph->checksum = 0;
-               icmph->checksum = ~NetCksum((uchar *)icmph,
-                       (len - IP_HDR_SIZE) >> 1);
+               icmph->checksum = compute_ip_checksum(icmph, len - IP_HDR_SIZE);
                NetSendPacket((uchar *)et, eth_hdr_size + len);
                return;
 /*     default: