Hi Quentin,

On 1/14/2026 4:01 PM, Quentin Schulz wrote:
> Hi Jonas,
> 
> On 1/6/26 9:34 PM, Jonas Karlman wrote:
>> With the legacy networking stack, it is possible to use USE_SERVERIP,
>> SERVERIP and BOOTP_PREFER_SERVERIP Kconfg options to force use of a
>> specific TFTP server ip.
>>
>> Using the lwIP networking stack use of the 'tftpserverip' environment
>> variable provide the closest equivalent functionality.
>>
> 
> It does read serverip environment variable if it's set, so this should 
> match the behavior with the legacy network stack no?

This is what I first thought, however it seem that the lwip stack differ
slightly from the legacy stack, in that the dhcp lookup always seem to
reset the serverip env var.

> As for BOOTP_PREFER_SERVERIP, this would need to be implemented in lwip 
> and isn't covered by this new variable is it?

For the lwip stack it looks like the BOOTP_PREFER_SERVERIP Kconfig
option possible was replaced with use of a 'tftpserverip' env var.

For legacy stack I had something like following in a .config fragment:

  CONFIG_BOOTP_PREFER_SERVERIP=y
  CONFIG_SERVERIP="192.168.2.50"
  CONFIG_USE_SERVERIP=y

Adding NET_LWIP=y made pxe booting stop working and 'serverip' always
ended up as the dhpc server regardless if it was set to something else.

Since lwip instead prioritize the 'tftpserverip' env over the 'serverip'
env for tftp use, adding a similar env var Kconfig option was easy but
may be wrong path?

> 
> This patch is fine, I'm just challenging the justification in the commit 
> log.
> 
>> Add USE_TFTPSERVERIP and TFTPSERVERIP Kconfig options that can be used
>> to add the 'tftpserverip' environment variable to force use of a
>> specific TFTP server ip.
>>
>> Signed-off-by: Jonas Karlman <[email protected]>
>> ---
>>   include/env_default.h |  3 +++
>>   net/lwip/Kconfig      | 12 ++++++++++++
>>   2 files changed, 15 insertions(+)
>>
>> diff --git a/include/env_default.h b/include/env_default.h
>> index 7f8dc1c35a74..014873e304d8 100644
>> --- a/include/env_default.h
>> +++ b/include/env_default.h
>> @@ -58,6 +58,9 @@ const char default_environment[] = {
>>   #ifdef     CONFIG_USE_SERVERIP
>>      "serverip="     CONFIG_SERVERIP                 "\0"
>>   #endif
>> +#ifdef      CONFIG_USE_TFTPSERVERIP
>> +    "tftpserverip=" CONFIG_TFTPSERVERIP             "\0"
>> +#endif
>>   #ifdef     CONFIG_SYS_DISABLE_AUTOLOAD
>>      "autoload=0\0"
>>   #endif
>> diff --git a/net/lwip/Kconfig b/net/lwip/Kconfig
>> index 5789766fe624..0cfd3eb2684f 100644
>> --- a/net/lwip/Kconfig
>> +++ b/net/lwip/Kconfig
>> @@ -72,4 +72,16 @@ config LWIP_TCP_WND
>>        but QEMU with "-net user" needs no more than a few KB or the
>>        transfer will stall and eventually time out.
>>   
>> +config USE_TFTPSERVERIP
>> +    bool "Set a default 'tftpserverip' value in the environment"
>> +    depends on CMD_TFTPBOOT
>> +    help
>> +      Defines a default value for the IP address of a TFTP server to
>> +      contact when using the "tftpboot" command.  (Environment variable
>> +      "tftpserverip")
>> +
> 
> Does it support IPv4 *and*/or IPv6?

Not sure, I have only tested IPv4, guess IPv6 probably should work, the
'tftpserverip' var should work with same formats that the 'serverip' var
currently support.

This help text is mostly just a c/p from the USE_SERVERIP Kconfig option,
let me know if you think this should be changed.

Regards,
Jonas

> 
> Cheers,
> Quentin

Reply via email to