Skip to contentSkip to conversation

Make getenv_IPaddr() global

PATCH Superseded Dirk Behme 3 participants 4 messages Jan 3, 2010 – Jan 17, 2010 Networking

lore
Share & tools
lore

Dirk Behme

author
#0 lore raw

PATCH v2 1/1 Make getenv_IPaddr() global

There are boards out there that do not have network support in U-Boot (CONFIG_CMD_NET not set), but they do so in Linux. This makes it desirable to be able to port network configuration (like the IP address) to the Linux kernel.

We should not make the passing of the IP configuration to Linux dependent on U-Boot features / settings.

For this, make getenv_IPaddr() global. This fixes build error

u-boot/lib_xxx/board.c:360: undefined reference to `getenv_IPaddr'

on various architectures.

---

Changes in v2:

- Move getenv_IPaddr() to common header file and make it static inline

This makes other patches trying to fix this issue obsolete. E.g.

http://lists.denx.de/pipermail/u-boot/2009-December/065809.html
http://lists.denx.de/pipermail/u-boot/2009-December/065810.html
http://lists.denx.de/pipermail/u-boot/2009-December/065822.html

See

http://lists.denx.de/pipermail/u-boot/2009-December/065833.html
http://lists.denx.de/pipermail/u-boot/2009-December/065847.html
http://lists.denx.de/pipermail/u-boot/2009-December/065848.html

for further details.

 include/common.h        |    7 ++++++
 include/net.h           |    3 --
 lib_generic/Makefile    |    1 
 lib_generic/net_utils.c |   50 ++++++++++++++++++++++++++++++++++++++++++++++++
 net/net.c               |   26 ------------------------
 5 files changed, 58 insertions(+), 29 deletions(-)
lib_generic/Makefile +1 -0
Index: u-boot-main/lib_generic/Makefile
===================================================================
@@ -41,6 +41,7 @@ COBJS-y += gunzip.o
 COBJS-y += lmb.o
 COBJS-y += ldiv.o
 COBJS-$(CONFIG_MD5) += md5.o
+COBJS-y += net_utils.o
 COBJS-y += sha1.o
 COBJS-$(CONFIG_SHA256) += sha256.o
 COBJS-y += string.o
lib_generic/net_utils.c new file +50 -0

50 lines not on this page · raw message

net/net.c +0 -26
Index: u-boot-main/net/net.c
===================================================================
@@ -1890,27 +1890,6 @@ void ip_to_string (IPaddr_t x, char *s)
 	);
 }
 
-IPaddr_t string_to_ip(char *s)
-{
-	IPaddr_t addr;
-	char *e;
-	int i;
-
-	if (s == NULL)
-		return(0);
-
-	for (addr=0, i=0; i<4; ++i) {
-		ulong val = s ? simple_strtoul(s, &e, 10) : 0;
-		addr <<= 8;
-		addr |= (val & 0xFF);
-		if (s) {
-			s = (*e) ? e+1 : e;
-		}
-	}
-
-	return (htonl(addr));
-}
-
 void VLAN_to_string(ushort x, char *s)
 {
 	x = ntohs(x);
@@ -1939,11 +1918,6 @@ ushort string_to_VLAN(char *s)
 	return htons(id);
 }
 
-IPaddr_t getenv_IPaddr (char *var)
-{
-	return (string_to_ip(getenv(var)));
-}
-
 ushort getenv_VLAN(char *var)
 {
 	return (string_to_VLAN(getenv(var)));
include/common.h +7 -0
Index: u-boot-main/include/common.h
===================================================================
@@ -617,6 +617,13 @@ int gunzip(void *, int, unsigned char *,
 int zunzip(void *dst, int dstlen, unsigned char *src, unsigned long *lenp,
 						int stoponerr, int offset);
 
+/* lib_generic/net_utils.c */
+#include <net.h>
+static inline IPaddr_t getenv_IPaddr (char *var)
+{
+	return (string_to_ip(getenv(var)));
+}
+
 /* lib_generic/time.c */
 void	udelay        (unsigned long);
 
include/net.h +0 -3
Index: u-boot-main/include/net.h
===================================================================
@@ -508,9 +508,6 @@ extern void	VLAN_to_string (ushort x, ch
 /* Convert a string to a vlan id */
 extern ushort string_to_VLAN(char *s);
 
-/* read an IP address from a environment variable */
-extern IPaddr_t getenv_IPaddr (char *);
-
 /* read a VLAN id from an environment variable */
 extern ushort getenv_VLAN(char *);
 
#1 lore raw

PATCH v2 1/1 Make getenv_IPaddr() global

Quoted 8 lines · Dirk Behme

There are boards out there that do not have network support in U-Boot (CONFIG_CMD_NET not set), but they do so in Linux. This makes it desirable to be able to port network configuration (like the IP address) to the Linux kernel.

We should not make the passing of the IP configuration to Linux dependent on U-Boot features / settings.

Quoted 8 lines

For this, make getenv_IPaddr() global. This fixes build error

u-boot/lib_xxx/board.c:360: undefined reference to `getenv_IPaddr'

on various architectures.

Wolfgang - please apply if you're OK with it.

author
#2 lore raw

PATCH v2 1/1 Make getenv_IPaddr() global

Quoted 11 lines · Ben Warren
Quoted 10 lines · Dirk Behme

There are boards out there that do not have network support in U-Boot (CONFIG_CMD_NET not set), but they do so in Linux. This makes it desirable to be able to port network configuration (like the IP address) to the Linux kernel.

We should not make the passing of the IP configuration to Linux dependent on U-Boot features / settings.

For this, make getenv_IPaddr() global. This fixes build error

Quoted 8 lines
Quoted 5 lines

u-boot/lib_xxx/board.c:360: undefined reference to `getenv_IPaddr'

on various architectures.

Wolfgang - please apply if you're OK with it.

Ping.

Best regards

Dirk

#3 lore raw

PATCH v2 1/1 Make getenv_IPaddr() global

In reply to Dirk Behme

Dear Dirk Behme,

Quoted 34 lines · In message <[email protected]> you…

There are boards out there that do not have network support in U-Boot (CONFIG_CMD_NET not set), but they do so in Linux. This makes it desirable to be able to port network configuration (like the IP address) to the Linux kernel.

We should not make the passing of the IP configuration to Linux dependent on U-Boot features / settings.

For this, make getenv_IPaddr() global. This fixes build error

u-boot/lib_xxx/board.c:360: undefined reference to `getenv_IPaddr'

on various architectures.

---

Changes in v2:

- Move getenv_IPaddr() to common header file and make it static inline

This makes other patches trying to fix this issue obsolete. E.g.

http://lists.denx.de/pipermail/u-boot/2009-December/065809.html
http://lists.denx.de/pipermail/u-boot/2009-December/065810.html
http://lists.denx.de/pipermail/u-boot/2009-December/065822.html

See

http://lists.denx.de/pipermail/u-boot/2009-December/065833.html
http://lists.denx.de/pipermail/u-boot/2009-December/065847.html
http://lists.denx.de/pipermail/u-boot/2009-December/065848.html

Quoted 8 lines

for further details.

 include/common.h        |    7 ++++++
 include/net.h           |    3 --
 lib_generic/Makefile    |    1 
 lib_generic/net_utils.c |   50 ++++++++++++++++++++++++++++++++++++++++++++++++
 net/net.c               |   26 ------------------------
 5 files changed, 58 insertions(+), 29 deletions(-)

Applied, thanks.

Best regards,

Wolfgang Denk

Signature · 5 lines
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
The only person who always got his work done by Friday
                                                 was Robinson Crusoe.