diff mbox series

[v2] net: lwip: dhcp: support arguments for TFTP file download

Message ID 20241114172007.2074874-1-jerome.forissier@linaro.org
State New
Headers show
Series [v2] net: lwip: dhcp: support arguments for TFTP file download | expand

Commit Message

Jerome Forissier Nov. 14, 2024, 5:20 p.m. UTC
The dhcp command is supposed to have the following syntax as per
"help dhcp":

  dhcp [loadAddress] [[hostIPaddr:]bootfilename]

In other words, any arguments should be passed to an implicit
tftpboot command after the DHCP exchange has occurred.

Add the missing code to the lwIP version of do_dhcp().

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
---
 net/lwip/dhcp.c | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

Comments

Tom Rini Nov. 23, 2024, 2:42 a.m. UTC | #1
On Thu, Nov 14, 2024 at 06:20:07PM +0100, Jerome Forissier wrote:

> The dhcp command is supposed to have the following syntax as per
> "help dhcp":
> 
>   dhcp [loadAddress] [[hostIPaddr:]bootfilename]
> 
> In other words, any arguments should be passed to an implicit
> tftpboot command after the DHCP exchange has occurred.
> 
> Add the missing code to the lwIP version of do_dhcp().
> 
> Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>

Applied to u-boot/master, thanks!

But please note, I believe this is what breaks
test_efi_helloworld_net_http now as we can no longer abuse "wget 200000
EFI/arm64/helloworld.efi" for example:
U-Boot> wget 200000 EFI/arm64/helloworld.efi
invalid uri, no file path
Invalid URL. Use http(s)://
U-Boot>
Jerome Forissier Nov. 26, 2024, 2:51 p.m. UTC | #2
Hi Tom,

On 11/23/24 03:42, Tom Rini wrote:
> On Thu, Nov 14, 2024 at 06:20:07PM +0100, Jerome Forissier wrote:
> 
>> The dhcp command is supposed to have the following syntax as per
>> "help dhcp":
>>
>>   dhcp [loadAddress] [[hostIPaddr:]bootfilename]
>>
>> In other words, any arguments should be passed to an implicit
>> tftpboot command after the DHCP exchange has occurred.
>>
>> Add the missing code to the lwIP version of do_dhcp().
>>
>> Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
> 
> Applied to u-boot/master, thanks!
> 
> But please note, I believe this is what breaks
> test_efi_helloworld_net_http now as we can no longer abuse "wget 200000
> EFI/arm64/helloworld.efi" for example:
> U-Boot> wget 200000 EFI/arm64/helloworld.efi
> invalid uri, no file path
> Invalid URL. Use http(s)://
> U-Boot>

That's actually caused by commit 356011f7ac25 ("lwip: fix code style
issues") :-/ I've just sent a fix [1]. Sorry for the breakage.


[1] https://lists.denx.de/pipermail/u-boot/2024-November/573054.html

Thanks,
diff mbox series

Patch

diff --git a/net/lwip/dhcp.c b/net/lwip/dhcp.c
index 23b56226921..281f4620958 100644
--- a/net/lwip/dhcp.c
+++ b/net/lwip/dhcp.c
@@ -111,9 +111,21 @@  static int dhcp_loop(struct udevice *udev)
 
 int do_dhcp(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
 {
+	int ret;
+
 	eth_set_current();
 
-	return dhcp_loop(eth_get_dev());
+	ret = dhcp_loop(eth_get_dev());
+	if (ret)
+		return ret;
+
+	if (argc > 1) {
+		struct cmd_tbl cmdtp = {};
+
+		return do_tftpb(&cmdtp, 0, argc, argv);
+	}
+
+	return CMD_RET_SUCCESS;
 }
 
 int dhcp_run(ulong addr, const char *fname, bool autoload)