boot: call dhcp_run in pxe bootmethod
authorHeiko Stuebner <heiko@sntech.de>
Wed, 2 Apr 2025 21:50:25 +0000 (23:50 +0200)
committerTom Rini <trini@konsulko.com>
Sun, 6 Apr 2025 16:03:03 +0000 (10:03 -0600)
A recent change tried to speed up EFI booting by not calling dhcp_run
from eth_bootdev_hunt() every time. PXE so far relied on that dhcp_run
call to get an IP address.

Fix that by adding a dhcp_run call to the pxe bootflow, with autoload
disabled to only get the ip address and nothing else.

Suggested-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Fixes: 1f68057e0320 ("net: eth_bootdev_hunt() should not run DHCP")
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
boot/bootmeth_pxe.c

index b91e61b..6e5e0f9 100644 (file)
@@ -73,6 +73,10 @@ static int extlinux_pxe_read_bootflow(struct udevice *dev,
                return log_msg_ret("pxeb", -EPERM);
        addr = simple_strtoul(addr_str, NULL, 16);
 
+       ret = dhcp_run(addr, NULL, false);
+       if (ret)
+               return log_msg_ret("dhc", ret);
+
        log_debug("calling pxe_get()\n");
        ret = pxe_get(addr, &bootdir, &size, false);
        log_debug("pxe_get() returned %d\n", ret);