From: Jan Kiszka <jan.kis...@siemens.com>

CONFIG_NET does not imply that there are actually network devices
available. Neither does CONFIG_NETDEVICES, but it is much closer, and
changing to this dependency obsoletes the check in Kconfig because it
means DM_ETH.

Along this change, make sure that efi_net_set_dhcp_ack is always
defined, at least as stub.

Suggested-by: Tom Rini <tr...@konsulko.com>
Signed-off-by: Jan Kiszka <jan.kis...@siemens.com>
---
 include/efi_loader.h             | 10 +++++++---
 lib/efi_loader/Kconfig           |  1 -
 lib/efi_loader/Makefile          |  2 +-
 lib/efi_loader/efi_device_path.c |  8 +++-----
 lib/efi_loader/efi_setup.c       | 10 +++++-----
 lib/efi_selftest/Makefile        |  2 +-
 6 files changed, 17 insertions(+), 16 deletions(-)

diff --git a/include/efi_loader.h b/include/efi_loader.h
index 0c6c95ba464..43816491a23 100644
--- a/include/efi_loader.h
+++ b/include/efi_loader.h
@@ -94,8 +94,6 @@ void efi_restore_gd(void);
 /* Call this to set the current device name */
 void efi_set_bootdev(const char *dev, const char *devnr, const char *path,
                     void *buffer, size_t buffer_size);
-/* Called by networking code to memorize the dhcp ack package */
-void efi_net_set_dhcp_ack(void *pkt, int len);
 /* Print information about all loaded images */
 void efi_print_image_infos(void *pc);
 
@@ -118,7 +116,6 @@ static inline void efi_restore_gd(void) { }
 static inline void efi_set_bootdev(const char *dev, const char *devnr,
                                   const char *path, void *buffer,
                                   size_t buffer_size) { }
-static inline void efi_net_set_dhcp_ack(void *pkt, int len) { }
 static inline void efi_print_image_infos(void *pc) { }
 static inline efi_status_t efi_launch_capsules(void)
 {
@@ -127,6 +124,13 @@ static inline efi_status_t efi_launch_capsules(void)
 
 #endif /* CONFIG_IS_ENABLED(EFI_LOADER) */
 
+#if CONFIG_IS_ENABLED(EFI_LOADER) && CONFIG_IS_ENABLED(NETDEVICES)
+/* Called by networking code to memorize the dhcp ack package */
+void efi_net_set_dhcp_ack(void *pkt, int len);
+#else
+static inline void efi_net_set_dhcp_ack(void *pkt, int len) { }
+#endif
+
 /* Maximum number of configuration tables */
 #define EFI_MAX_CONFIGURATION_TABLES 16
 
diff --git a/lib/efi_loader/Kconfig b/lib/efi_loader/Kconfig
index 41756ea5396..68e6c2531e1 100644
--- a/lib/efi_loader/Kconfig
+++ b/lib/efi_loader/Kconfig
@@ -11,7 +11,6 @@ config EFI_LOADER
        # We need EFI_STUB_32BIT to be set on x86_32 with EFI_STUB
        depends on !EFI_STUB || !X86 || X86_64 || EFI_STUB_32BIT
        depends on BLK
-       depends on DM_ETH || !NET
        depends on !EFI_APP
        default y if !ARM || SYS_CPU = armv7 || SYS_CPU = armv8
        select CHARSET
diff --git a/lib/efi_loader/Makefile b/lib/efi_loader/Makefile
index f8e8afe1284..8738757dd2c 100644
--- a/lib/efi_loader/Makefile
+++ b/lib/efi_loader/Makefile
@@ -68,7 +68,7 @@ obj-y += efi_watchdog.o
 obj-$(CONFIG_EFI_ESRT) += efi_esrt.o
 obj-$(CONFIG_VIDEO) += efi_gop.o
 obj-$(CONFIG_BLK) += efi_disk.o
-obj-$(CONFIG_NET) += efi_net.o
+obj-$(CONFIG_NETDEVICES) += efi_net.o
 obj-$(CONFIG_GENERATE_ACPI_TABLE) += efi_acpi.o
 obj-$(CONFIG_GENERATE_SMBIOS_TABLE) += efi_smbios.o
 obj-$(CONFIG_EFI_RNG_PROTOCOL) += efi_rng.o
diff --git a/lib/efi_loader/efi_device_path.c b/lib/efi_loader/efi_device_path.c
index acae007f26f..171ee2b4679 100644
--- a/lib/efi_loader/efi_device_path.c
+++ b/lib/efi_loader/efi_device_path.c
@@ -613,7 +613,7 @@ __maybe_unused static void *dp_fill(void *buf, struct 
udevice *dev)
                *vdp = ROOT;
                return &vdp[1];
        }
-#ifdef CONFIG_NET
+#ifdef CONFIG_NETDEVICES
        case UCLASS_ETH: {
                struct efi_device_path_mac_addr *dp =
                        dp_fill(buf, dev->parent);
@@ -1052,7 +1052,7 @@ struct efi_device_path *efi_dp_from_uart(void)
        return buf;
 }
 
-#ifdef CONFIG_NET
+#ifdef CONFIG_NETDEVICES
 struct efi_device_path *efi_dp_from_eth(void)
 {
        void *buf, *start;
@@ -1169,10 +1169,8 @@ efi_status_t efi_dp_from_name(const char *dev, const 
char *devnr,
                return EFI_INVALID_PARAMETER;
 
        if (!strcmp(dev, "Net")) {
-#ifdef CONFIG_NET
-               if (device)
+               if (CONFIG_IS_ENABLED(NETDEVICES) && device)
                        *device = efi_dp_from_eth();
-#endif
        } else if (!strcmp(dev, "Uart")) {
                if (device)
                        *device = efi_dp_from_uart();
diff --git a/lib/efi_loader/efi_setup.c b/lib/efi_loader/efi_setup.c
index a340bc38806..cec799d93e2 100644
--- a/lib/efi_loader/efi_setup.c
+++ b/lib/efi_loader/efi_setup.c
@@ -331,11 +331,11 @@ efi_status_t efi_init_obj_list(void)
                if (ret != EFI_SUCCESS)
                        goto out;
        }
-#ifdef CONFIG_NET
-       ret = efi_net_register();
-       if (ret != EFI_SUCCESS)
-               goto out;
-#endif
+       if (IS_ENABLED(CONFIG_NETDEVICES)) {
+               ret = efi_net_register();
+               if (ret != EFI_SUCCESS)
+                       goto out;
+       }
 #ifdef CONFIG_GENERATE_ACPI_TABLE
        ret = efi_acpi_register();
        if (ret != EFI_SUCCESS)
diff --git a/lib/efi_selftest/Makefile b/lib/efi_selftest/Makefile
index daac6c39682..e4d75420bff 100644
--- a/lib/efi_selftest/Makefile
+++ b/lib/efi_selftest/Makefile
@@ -50,7 +50,7 @@ efi_selftest_variables_runtime.o \
 efi_selftest_watchdog.o
 
 obj-$(CONFIG_EFI_ECPT) += efi_selftest_ecpt.o
-obj-$(CONFIG_NET) += efi_selftest_snp.o
+obj-$(CONFIG_NETDEVICES) += efi_selftest_snp.o
 
 obj-$(CONFIG_EFI_DEVICE_PATH_TO_TEXT) += efi_selftest_devicepath.o
 obj-$(CONFIG_EFI_UNICODE_COLLATION_PROTOCOL2) += \
-- 
2.35.3

Reply via email to