Re: [PATCH v5 006/101] net: Move the checksum functions to lib/

2019-12-04 Thread Bin Meng
Hi Simon,

On Thu, Dec 5, 2019 at 12:28 PM Simon Glass  wrote:
>
> Hi Bin,
>
> On Mon, 25 Nov 2019 at 08:11, Bin Meng  wrote:
> >
> > Hi Simon,
> >
> > On Mon, Nov 25, 2019 at 12:11 PM Simon Glass  wrote:
> > >
> > > These functions are used by code outside the network support, so move them
> > > to lib/ to be more accessible.
> > >
> > > Without this, the functions are only accessible if CONFIG_NET is defined.
> >
> > I still don't understand this. net/checksum.c is built unconditionally
> > and is not controlled by CONFIG_NET.
>
> The net/ subdir is built unconditionally for U-Boot but not for SPL
> and TPL. So if we want this function without networking, we must move
> it.
>

Thanks. I guess we will need a clearer commit message :)

Regards,
Bin


Re: [PATCH v5 006/101] net: Move the checksum functions to lib/

2019-12-04 Thread Simon Glass
Hi Bin,

On Mon, 25 Nov 2019 at 08:11, Bin Meng  wrote:
>
> Hi Simon,
>
> On Mon, Nov 25, 2019 at 12:11 PM Simon Glass  wrote:
> >
> > These functions are used by code outside the network support, so move them
> > to lib/ to be more accessible.
> >
> > Without this, the functions are only accessible if CONFIG_NET is defined.
>
> I still don't understand this. net/checksum.c is built unconditionally
> and is not controlled by CONFIG_NET.

The net/ subdir is built unconditionally for U-Boot but not for SPL
and TPL. So if we want this function without networking, we must move
it.


>
> > Many boards do not enable that option but still want to do checksums in
> > this format.
> >
> > Fix up a few code-style nits while we are here.
> >
> > Signed-off-by: Simon Glass 
> > ---
> >
> > Changes in v5: None
> > Changes in v4:
> > - Expand commit message to better explain the need to checksum functions
> >
> > 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
> >
>

Regards,
Simon


Re: [U-Boot] [PATCH v5 006/101] net: Move the checksum functions to lib/

2019-12-02 Thread Joseph Hershberger
> -Original Message-
> From: Simon Glass 
> Sent: Sunday, November 24, 2019 10:09 PM
> To: U-Boot Mailing List 
> Cc: Bin Meng ; Simon Glass ;
> Joseph Hershberger 
> Subject: [EXTERNAL] [PATCH v5 006/101] net: Move the checksum functions
> to lib/
> 
> These functions are used by code outside the network support, so move
> them to lib/ to be more accessible.
> 
> Without this, the functions are only accessible if CONFIG_NET is defined.
> Many boards do not enable that option but still want to do checksums in this
> format.
> 
> Fix up a few code-style nits while we are here.
> 
> Signed-off-by: Simon Glass 

Acked-by: Joe Hershberger 
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


Re: [U-Boot] [PATCH v5 006/101] net: Move the checksum functions to lib/

2019-11-25 Thread Bin Meng
Hi Simon,

On Mon, Nov 25, 2019 at 12:11 PM Simon Glass  wrote:
>
> These functions are used by code outside the network support, so move them
> to lib/ to be more accessible.
>
> Without this, the functions are only accessible if CONFIG_NET is defined.

I still don't understand this. net/checksum.c is built unconditionally
and is not controlled by CONFIG_NET.

> Many boards do not enable that option but still want to do checksums in
> this format.
>
> Fix up a few code-style nits while we are here.
>
> Signed-off-by: Simon Glass 
> ---
>
> Changes in v5: None
> Changes in v4:
> - Expand commit message to better explain the need to checksum functions
>
> 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
>

Regards,
Bin
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


[U-Boot] [PATCH v5 006/101] net: Move the checksum functions to lib/

2019-11-24 Thread Simon Glass
These functions are used by code outside the network support, so move them
to lib/ to be more accessible.

Without this, the functions are only accessible if CONFIG_NET is defined.
Many boards do not enable that option but still want to do checksums in
this format.

Fix up a few code-style nits while we are here.

Signed-off-by: Simon Glass 
---

Changes in v5: None
Changes in v4:
- Expand commit message to better explain the need to checksum functions

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 0c89b4896f..505527d58a 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 9fb9d4a4b0..252290210f 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 *))[0] = *(u8 *)ptr;
+   ((u8 *))[1] = 0;
+   sum += oddbyte;
+   }
+   sum = (sum >> 16) + (sum & 0x);
+   sum += (sum >> 16);
+   sum = ~sum & 0x;
+
+   return sum;
+}
+
+uint add_ip_checksums(uint offset, uint sum, uint new)
+{
+   ulong checksum;
+
+   sum = ~sum & 0x;
+   new = ~new & 0x;
+   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 > 0x)
+   checksum -= 0x;
+
+   return (~checksum) & 0x;
+}
+
+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 2a700c8401..fef71b940a 100644
--- a/net/Makefile
+++ b/net/Makefile
@@ -5,7 +5,6 @@
 
 #ccflags-y += -DDEBUG
 
-obj-y += checksum.o
 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 16ef416356..00
--- 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 
- * Copyright (c) 2008 coresystems GmbH
- * All rights reserved.
- */
-
-#include 
-#include 
-
-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 *))[0] = *(u8 *)ptr;
-   ((u8 *))[1] = 0;
-   sum += oddbyte;
-   }
-   sum = (sum >> 16) + (sum & 0x);
-   sum += (sum >> 16);
-   sum = ~sum & 0x;
-
-   return sum;
-}
-
-unsigned add_ip_checksums(unsigned offset, unsigned sum, unsigned new)
-{
-   unsigned long checksum;
-
-   sum = ~sum & 0x;
-   new = ~new & 0x;
-   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 > 0x)
-   checksum -= 0x;
-
-   return (~checksum) & 0x;
-}
-
-int ip_checksum_ok(const void *addr, unsigned nbytes)
-{
-   return !(compute_ip_checksum(addr, nbytes) & 0xfffe);
-}
-- 
2.24.0.432.g9d3f5f5b63-goog

___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot