[U-Boot] [u-boot][PATCH] net/net.c: Update ipaddr if the environment has changed

At least on ARM the ipaddr is only set in board_init_r function. The problem is if ipaddr is not defined in environment importing another environment defined don't update the ipaddr value.
For example, suppose we've a default environment without net variables defined and we want to import an uEnv.txt environment from SD-card like this:
ipaddr=192.168.2.240 netmask=255.255.255.0 gatewayip=192.168.2.1 serverip=192.168.2.114
Then if you try boot from NFS results in:
Importing environment from mmc ... Running uenvcmd ... smc911x: detected LAN9221 controller smc911x: phy initialized smc911x: MAC ac:de:48:00:00:00 *** ERROR: `ipaddr' not set
The ipaddr at this point is NULL beacause is only set at board_init_r function. This patch updates the ipaddr value if the environment has changed.
Signed-off-by: Enric Balletbo i Serra eballetbo@iseebcn.com --- net/net.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/net/net.c b/net/net.c index 7a93542..7a60583 100644 --- a/net/net.c +++ b/net/net.c @@ -321,7 +321,8 @@ NetInitLoop(proto_t protocol)
/* update only when the environment has changed */ if (env_changed_id != env_id) { - NetCopyIP(&NetOurIP, &bd->bi_ip_addr); + NetOurIP = getenv_IPaddr("ipaddr"); + NetCopyIP(&bd->bi_ip_addr, &NetOurIP); NetOurGatewayIP = getenv_IPaddr("gatewayip"); NetOurSubnetMask = getenv_IPaddr("netmask"); NetServerIP = getenv_IPaddr("serverip");

Dear Enric Balletbo i Serra,
In message 1306911707-10564-1-git-send-email-eballetbo@iseebcn.com you wrote:
At least on ARM the ipaddr is only set in board_init_r function. The problem is if ipaddr is not defined in environment importing another environment defined don't update the ipaddr value.
For example, suppose we've a default environment without net variables defined and we want to import an uEnv.txt environment from SD-card like this:
ipaddr=192.168.2.240 netmask=255.255.255.0 gatewayip=192.168.2.1 serverip=192.168.2.114
Then if you try boot from NFS results in:
Importing environment from mmc ... Running uenvcmd ... smc911x: detected LAN9221 controller smc911x: phy initialized smc911x: MAC ac:de:48:00:00:00 *** ERROR: `ipaddr' not set
The ipaddr at this point is NULL beacause is only set at board_init_r function. This patch updates the ipaddr value if the environment has changed.
Signed-off-by: Enric Balletbo i Serra eballetbo@iseebcn.com
net/net.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-)
Applied, thanks.
Best regards,
Wolfgang Denk
participants (3)
-
Enric Balletbo i Serra
-
Mike Frysinger
-
Wolfgang Denk