* [U-Boot] [PATCH] bootp: Fix bug in auto_load function
@ 2011-08-31 10:36 Michal Simek
2011-08-31 16:31 ` Simon Glass
2011-08-31 20:01 ` Wolfgang Denk
0 siblings, 2 replies; 5+ messages in thread
From: Michal Simek @ 2011-08-31 10:36 UTC (permalink / raw)
To: u-boot
Patch: "Put common autoload code into auto_load() function"
(sha1: 093498669e77597635a24f326f11efeab213d394) is not simple code
cleanup but code change which introduce new bug.
If autoload variable is not setup it worked as autoload=yes.
Currently if autoload is not setup dhcp sends request in
forever loop.
There are two options how to fix it:
1. Move TftpStart() which is in this patch
2. Change functionality if autoload is not setup, set NetSate and ends.
@@ -165,7 +165,8 @@ static void auto_load(void)
}
#endif
TftpStart();
- }
+ } else
+ NetState = NETLOOP_SUCCESS;
}
CC: Eric B?nard <eric@eukrea.com>
CC: Simon Glass <sjg@chromium.org>
Signed-off-by: Michal Simek <monstr@monstr.eu>
---
net/bootp.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/net/bootp.c b/net/bootp.c
index 3db08ea..a003c42 100644
--- a/net/bootp.c
+++ b/net/bootp.c
@@ -164,8 +164,8 @@ static void auto_load(void)
return;
}
#endif
- TftpStart();
}
+ TftpStart();
}
#if !defined(CONFIG_CMD_DHCP)
--
1.5.5.6
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [U-Boot] [PATCH] bootp: Fix bug in auto_load function
2011-08-31 10:36 [U-Boot] [PATCH] bootp: Fix bug in auto_load function Michal Simek
@ 2011-08-31 16:31 ` Simon Glass
2011-08-31 19:11 ` Michal Simek
2011-08-31 20:01 ` Wolfgang Denk
1 sibling, 1 reply; 5+ messages in thread
From: Simon Glass @ 2011-08-31 16:31 UTC (permalink / raw)
To: u-boot
Hi Michal,
On Wed, Aug 31, 2011 at 3:36 AM, Michal Simek <monstr@monstr.eu> wrote:
> Patch: "Put common autoload code into auto_load() function"
> (sha1: 093498669e77597635a24f326f11efeab213d394) is not simple code
> cleanup but code change which introduce new bug.
>
> If autoload variable is not setup it worked as autoload=yes.
>
> Currently if autoload is not setup dhcp sends request in
> forever loop.
Thanks for bring this up - there was some discussion at the time I
remember. Also please excuse the verbatim code in this email but I
want it to be clear.
The old code in v2011.03 is:
/* Obey the 'autoload' setting */
if ((s = getenv("autoload")) != NULL) {
if (*s == 'n') {
/*
* Just use BOOTP to configure system;
* Do not use TFTP to load the bootfile.
*/
NetState = NETLOOP_SUCCESS;
return;
#if defined(CONFIG_CMD_NFS)
} else if (strcmp(s, "NFS") == 0) {
/*
* Use NFS to load the bootfile.
*/
NfsStart();
return;
#endif
}
}
TftpStart();
return;
and
if ((s = getenv("autoload")) != NULL) {
if (*s == 'n') {
/*
* Just use BOOTP to configure system;
* Do not use TFTP to load the bootfile.
*/
NetState = NETLOOP_SUCCESS;
return;
#if defined(CONFIG_CMD_NFS)
} else if (strcmp(s, "NFS") == 0) {
/*
* Use NFS to load the bootfile.
*/
NfsStart();
return;
#endif
}
}
TftpStart();
These two sites were changed to a call to auto_load:
static void auto_load(void)
{
const char *s = getenv("autoload");
if (s != NULL) {
if (*s == 'n') {
/*
* Just use BOOTP to configure system;
* Do not use TFTP to load the bootfile.
*/
NetState = NETLOOP_SUCCESS;
return;
}
#if defined(CONFIG_CMD_NFS)
if (strcmp(s, "NFS") == 0) {
/*
* Use NFS to load the bootfile.
*/
NfsStart();
return;
}
#endif
TftpStart();
}
}
I don't see a change in the functionality here - I may be missing
something so please can you explain?
^ permalink raw reply [flat|nested] 5+ messages in thread
* [U-Boot] [PATCH] bootp: Fix bug in auto_load function
2011-08-31 16:31 ` Simon Glass
@ 2011-08-31 19:11 ` Michal Simek
0 siblings, 0 replies; 5+ messages in thread
From: Michal Simek @ 2011-08-31 19:11 UTC (permalink / raw)
To: u-boot
Hi,
2011/8/31 Simon Glass <sjg@chromium.org>
> Hi Michal,
>
> On Wed, Aug 31, 2011 at 3:36 AM, Michal Simek <monstr@monstr.eu> wrote:
> > Patch: "Put common autoload code into auto_load() function"
> > (sha1: 093498669e77597635a24f326f11efeab213d394) is not simple code
> > cleanup but code change which introduce new bug.
> >
> > If autoload variable is not setup it worked as autoload=yes.
> >
> > Currently if autoload is not setup dhcp sends request in
> > forever loop.
>
> Thanks for bring this up - there was some discussion at the time I
> remember. Also please excuse the verbatim code in this email but I
> want it to be clear.
>
> The old code in v2011.03 is:
>
> /* Obey the 'autoload' setting */
> if ((s = getenv("autoload")) != NULL) {
> if (*s == 'n') {
> /*
> * Just use BOOTP to configure
> system;
> * Do not use TFTP to load the
> bootfile.
> */
> NetState = NETLOOP_SUCCESS;
> return;
> #if defined(CONFIG_CMD_NFS)
> } else if (strcmp(s, "NFS") == 0) {
> /*
> * Use NFS to load the bootfile.
> */
> NfsStart();
> return;
> #endif
> }
> }
> TftpStart();
> return;
>
>
> and
>
> if ((s = getenv("autoload")) != NULL) {
> if (*s == 'n') {
> /*
> * Just use BOOTP to configure system;
> * Do not use TFTP to load the bootfile.
> */
> NetState = NETLOOP_SUCCESS;
> return;
> #if defined(CONFIG_CMD_NFS)
> } else if (strcmp(s, "NFS") == 0) {
> /*
> * Use NFS to load the bootfile.
> */
> NfsStart();
> return;
> #endif
> }
> }
>
> TftpStart();
>
>
> These two sites were changed to a call to auto_load:
>
> static void auto_load(void)
> {
> const char *s = getenv("autoload");
>
> if (s != NULL) {
> if (*s == 'n') {
> /*
> * Just use BOOTP to configure system;
> * Do not use TFTP to load the bootfile.
> */
> NetState = NETLOOP_SUCCESS;
> return;
> }
> #if defined(CONFIG_CMD_NFS)
> if (strcmp(s, "NFS") == 0) {
> /*
> * Use NFS to load the bootfile.
> */
> NfsStart();
> return;
> }
> #endif
> TftpStart();
> }
> }
>
>
> I don't see a change in the functionality here - I may be missing
> something so please can you explain?
>
just look at TftpStart(); position in new and old code.
In new code is inside if (s != NULL) { } part in old not which change
behavior.
Just do simple test run
set autoload
dhcp
on my system it loops forever.
>
> From my experience U-Boot has always performed an autoload unless you
> 'setenv autoload n', even if the variable is not set. From the README:
>
> autoload - if set to "no" (any string beginning with 'n'),
> "bootp" will just load perform a lookup of the
> configuration from the BOOTP server, but not try to
> load any image using TFTP
>
>
> which suggests that this is the correct behavior (i.e. it defaults to
> autoload=yes)
>
I am fine with that that if autoload var is not set it means autoload=yes.
>
> >
> > There are two options how to fix it:
> > 1. Move TftpStart() which is in this patch
> > 2. Change functionality if autoload is not setup, set NetSate and ends.
> >
> > @@ -165,7 +165,8 @@ static void auto_load(void)
> > }
> > #endif
> > TftpStart();
> > - }
> > + } else
> > + NetState = NETLOOP_SUCCESS;
> > }
> >
> > CC: Eric B?nard <eric@eukrea.com>
> > CC: Simon Glass <sjg@chromium.org>
> > Signed-off-by: Michal Simek <monstr@monstr.eu>
> > ---
> > net/bootp.c | 2 +-
> > 1 files changed, 1 insertions(+), 1 deletions(-)
> >
> > diff --git a/net/bootp.c b/net/bootp.c
> > index 3db08ea..a003c42 100644
> > --- a/net/bootp.c
> > +++ b/net/bootp.c
> > @@ -164,8 +164,8 @@ static void auto_load(void)
> > return;
> > }
> > #endif
> > - TftpStart();
> > }
> > + TftpStart();
> > }
>
>
> Isn't this the opposite of the patch you want? I think you want to
> move TftpStart() inside the loop, like this:
>
> static void auto_load(void)
> {
> const char *s = getenv("autoload");
>
> if (s != NULL) {
> if (*s == 'n') {
> /*
> * Just use BOOTP to configure system;
> * Do not use TFTP to load the bootfile.
> */
> NetState = NETLOOP_SUCCESS;
> return;
> }
> #if defined(CONFIG_CMD_NFS)
> if (strcmp(s, "NFS") == 0) {
> /*
> * Use NFS to load the bootfile.
> */
> NfsStart();
> return;
> TftpStart();
> }
> #endif
> }
> }
>
Definitely this one - where TftpStart is not even called.
Michal
^ permalink raw reply [flat|nested] 5+ messages in thread
* [U-Boot] [PATCH] bootp: Fix bug in auto_load function
2011-08-31 10:36 [U-Boot] [PATCH] bootp: Fix bug in auto_load function Michal Simek
2011-08-31 16:31 ` Simon Glass
@ 2011-08-31 20:01 ` Wolfgang Denk
2011-09-01 5:39 ` Michal Simek
1 sibling, 1 reply; 5+ messages in thread
From: Wolfgang Denk @ 2011-08-31 20:01 UTC (permalink / raw)
To: u-boot
Dear Michal Simek,
In message <1314786967-23261-1-git-send-email-monstr@monstr.eu> you wrote:
> Patch: "Put common autoload code into auto_load() function"
> (sha1: 093498669e77597635a24f326f11efeab213d394) is not simple code
> cleanup but code change which introduce new bug.
>
> If autoload variable is not setup it worked as autoload=yes.
Yes, and this is intentionally, because it's what poople expect when
they run the "dhcpboot" command.
> Currently if autoload is not setup dhcp sends request in
> forever loop.
That's not correct. Only until a DHCP server provides the needed
configurationinformation so TFTP gets started.
> There are two options how to fix it:
> 1. Move TftpStart() which is in this patch
> 2. Change functionality if autoload is not setup, set NetSate and ends.
That would change behavious in a way that is not wanted.
Best regards,
Wolfgang Denk
--
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
Status quo. Latin for "the mess we're in."
^ permalink raw reply [flat|nested] 5+ messages in thread
* [U-Boot] [PATCH] bootp: Fix bug in auto_load function
2011-08-31 20:01 ` Wolfgang Denk
@ 2011-09-01 5:39 ` Michal Simek
0 siblings, 0 replies; 5+ messages in thread
From: Michal Simek @ 2011-09-01 5:39 UTC (permalink / raw)
To: u-boot
Hi,
Wolfgang Denk wrote:
> Dear Michal Simek,
>
> In message <1314786967-23261-1-git-send-email-monstr@monstr.eu> you wrote:
>> Patch: "Put common autoload code into auto_load() function"
>> (sha1: 093498669e77597635a24f326f11efeab213d394) is not simple code
>> cleanup but code change which introduce new bug.
>>
>> If autoload variable is not setup it worked as autoload=yes.
>
> Yes, and this is intentionally, because it's what poople expect when
> they run the "dhcpboot" command.
ok.
>
>> Currently if autoload is not setup dhcp sends request in
>> forever loop.
>
> That's not correct. Only until a DHCP server provides the needed
> configurationinformation so TFTP gets started.
That's what I get/see on my platforms.
>
>> There are two options how to fix it:
>> 1. Move TftpStart() which is in this patch
>> 2. Change functionality if autoload is not setup, set NetSate and ends.
>
> That would change behavious in a way that is not wanted.
Agree that point 2 change behavior.
Point 1 just fix c&p error.
Regards,
Michal
--
Michal Simek, Ing. (M.Eng)
w: www.monstr.eu p: +42-0-721842854
Maintainer of Linux kernel 2.6 Microblaze Linux - http://www.monstr.eu/fdt/
Microblaze U-BOOT custodian
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2011-09-01 5:39 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-08-31 10:36 [U-Boot] [PATCH] bootp: Fix bug in auto_load function Michal Simek
2011-08-31 16:31 ` Simon Glass
2011-08-31 19:11 ` Michal Simek
2011-08-31 20:01 ` Wolfgang Denk
2011-09-01 5:39 ` Michal Simek
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox