efi_selftest: fix simple network protocol test
authorHeinrich Schuchardt <xypron.glpk@gmx.de>
Sat, 20 Oct 2018 20:01:08 +0000 (22:01 +0200)
committerAlexander Graf <agraf@suse.de>
Sun, 2 Dec 2018 20:59:37 +0000 (21:59 +0100)
To use the simple network protocol we have to call the start service first
and the initialize service second.

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Signed-off-by: Alexander Graf <agraf@suse.de>
lib/efi_selftest/efi_selftest_snp.c

index 09bd53d..e10a34b 100644 (file)
@@ -103,7 +103,7 @@ static efi_status_t send_dhcp_discover(void)
        struct dhcp p = {};
 
        /*
-        * Fill ethernet header
+        * Fill Ethernet header
         */
        boottime->copy_mem(p.eth_hdr.et_dest, (void *)BROADCAST_MAC, ARP_HLEN);
        boottime->copy_mem(p.eth_hdr.et_src, &net->mode->current_address,
@@ -229,19 +229,19 @@ static int setup(const efi_handle_t handle,
                return EFI_ST_FAILURE;
        }
        /*
-        * Initialize network adapter.
+        * Start network adapter.
         */
-       ret = net->initialize(net, 0, 0);
-       if (ret != EFI_SUCCESS) {
-               efi_st_error("Failed to initialize network adapter\n");
+       ret = net->start(net);
+       if (ret != EFI_SUCCESS && ret != EFI_ALREADY_STARTED) {
+               efi_st_error("Failed to start network adapter\n");
                return EFI_ST_FAILURE;
        }
        /*
-        * Start network adapter.
+        * Initialize network adapter.
         */
-       ret = net->start(net);
+       ret = net->initialize(net, 0, 0);
        if (ret != EFI_SUCCESS) {
-               efi_st_error("Failed to start network adapter\n");
+               efi_st_error("Failed to initialize network adapter\n");
                return EFI_ST_FAILURE;
        }
        return EFI_ST_SUCCESS;