Hi Simon, On Mon, Oct 21, 2019 at 11:33 AM Simon Glass <[email protected]> wrote: > > These functions are used by code outside the network support, so move them > to lib/ to be more accessible. > > Fix up a few code-style nits while we are here. > > Signed-off-by: Simon Glass <[email protected]> > --- > > Changes in v3: None > Changes in v2: None > > lib/Makefile | 2 +- > lib/net_utils.c | 48 ++++++++++++++++++++++++++++++++++++++++ > net/Makefile | 1 - > net/checksum.c | 59 ------------------------------------------------- > 4 files changed, 49 insertions(+), 61 deletions(-) > delete mode 100644 net/checksum.c > > diff --git a/lib/Makefile b/lib/Makefile > index 0c89b4896fe..505527d58aa 100644 > --- a/lib/Makefile > +++ b/lib/Makefile > @@ -76,7 +76,7 @@ endif > ifdef CONFIG_SPL_BUILD > obj-$(CONFIG_SPL_YMODEM_SUPPORT) += crc16.o > obj-$(CONFIG_$(SPL_TPL_)HASH_SUPPORT) += crc16.o > -obj-$(CONFIG_SPL_NET_SUPPORT) += net_utils.o > +obj-y += net_utils.o > endif > obj-$(CONFIG_ADDR_MAP) += addr_map.o > obj-y += qsort.o > diff --git a/lib/net_utils.c b/lib/net_utils.c > index 9fb9d4a4b05..252290210f1 100644 > --- a/lib/net_utils.c > +++ b/lib/net_utils.c > @@ -41,3 +41,51 @@ struct in_addr string_to_ip(const char *s) > addr.s_addr = htonl(addr.s_addr); > return addr; > } > + > +uint compute_ip_checksum(const void *vptr, uint nbytes) > +{ > + int sum, oddbyte; > + const unsigned short *ptr = vptr; > + > + sum = 0; > + while (nbytes > 1) { > + sum += *ptr++; > + nbytes -= 2; > + } > + if (nbytes == 1) { > + oddbyte = 0; > + ((u8 *)&oddbyte)[0] = *(u8 *)ptr; > + ((u8 *)&oddbyte)[1] = 0; > + sum += oddbyte; > + } > + sum = (sum >> 16) + (sum & 0xffff); > + sum += (sum >> 16); > + sum = ~sum & 0xffff; > + > + return sum; > +} > + > +uint add_ip_checksums(uint offset, uint sum, uint new) > +{ > + ulong checksum; > + > + sum = ~sum & 0xffff; > + new = ~new & 0xffff; > + if (offset & 1) { > + /* > + * byte-swap the sum if it came from an odd offset; since the > + * computation is endian-independent this works. > + */ > + new = ((new >> 8) & 0xff) | ((new << 8) & 0xff00); > + } > + checksum = sum + new; > + if (checksum > 0xffff) > + checksum -= 0xffff; > + > + return (~checksum) & 0xffff; > +} > + > +int ip_checksum_ok(const void *addr, uint nbytes) > +{ > + return !(compute_ip_checksum(addr, nbytes) & 0xfffe); > +} > diff --git a/net/Makefile b/net/Makefile > index 2a700c8401c..fef71b940a0 100644 > --- a/net/Makefile > +++ b/net/Makefile > @@ -5,7 +5,6 @@ > > #ccflags-y += -DDEBUG > > -obj-y += checksum.o
So I don't get it. checksum.o is built unconditionally here, why do we move it to another file? > obj-$(CONFIG_NET) += arp.o > obj-$(CONFIG_CMD_BOOTP) += bootp.o > obj-$(CONFIG_CMD_CDP) += cdp.o > diff --git a/net/checksum.c b/net/checksum.c > deleted file mode 100644 > index 16ef4163567..00000000000 > --- a/net/checksum.c > +++ /dev/null > @@ -1,59 +0,0 @@ > -// SPDX-License-Identifier: BSD-2-Clause > -/* > - * This file was originally taken from the FreeBSD project. > - * > - * Copyright (c) 2001 Charles Mott <[email protected]> > - * Copyright (c) 2008 coresystems GmbH > - * All rights reserved. > - */ > - > -#include <common.h> > -#include <net.h> > - > -unsigned compute_ip_checksum(const void *vptr, unsigned nbytes) > -{ > - int sum, oddbyte; > - const unsigned short *ptr = vptr; > - > - sum = 0; > - while (nbytes > 1) { > - sum += *ptr++; > - nbytes -= 2; > - } > - if (nbytes == 1) { > - oddbyte = 0; > - ((u8 *)&oddbyte)[0] = *(u8 *)ptr; > - ((u8 *)&oddbyte)[1] = 0; > - sum += oddbyte; > - } > - sum = (sum >> 16) + (sum & 0xffff); > - sum += (sum >> 16); > - sum = ~sum & 0xffff; > - > - return sum; > -} > - > -unsigned add_ip_checksums(unsigned offset, unsigned sum, unsigned new) > -{ > - unsigned long checksum; > - > - sum = ~sum & 0xffff; > - new = ~new & 0xffff; > - if (offset & 1) { > - /* > - * byte-swap the sum if it came from an odd offset; since the > - * computation is endian independant this works. > - */ > - new = ((new >> 8) & 0xff) | ((new << 8) & 0xff00); > - } > - checksum = sum + new; > - if (checksum > 0xffff) > - checksum -= 0xffff; > - > - return (~checksum) & 0xffff; > -} > - > -int ip_checksum_ok(const void *addr, unsigned nbytes) > -{ > - return !(compute_ip_checksum(addr, nbytes) & 0xfffe); > -} > -- Regards, Bin _______________________________________________ U-Boot mailing list [email protected] https://lists.denx.de/listinfo/u-boot

