efi_selftest: Use EFI_SIMPLE_NETWORK_PROTOCOL::GetStatus() for media check
authorMasami Hiramatsu <masami.hiramatsu@linaro.org>
Thu, 16 Sep 2021 08:53:27 +0000 (17:53 +0900)
committerHeinrich Schuchardt <xypron.glpk@gmx.de>
Thu, 21 Oct 2021 01:46:03 +0000 (03:46 +0200)
According to the UEF specification v2.9, the main purpose of the
EFI_SIMPLE_NETWORK_PROTOCOL::GetStatus() is for checking the link
status via EFI_SIMPLE_NETWORK_MODE::MediaPresent.
So this uses net->get_status() for checking the link status before
running network test.

Signed-off-by: Masami Hiramatsu <masami.hiramatsu@linaro.org>
Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
lib/efi_selftest/efi_selftest_snp.c

index 79f0467..cb0db7e 100644 (file)
@@ -309,6 +309,18 @@ static int execute(void)
                return EFI_ST_FAILURE;
        }
 
+       /* Check media connected */
+       ret = net->get_status(net, NULL, NULL);
+       if (ret != EFI_SUCCESS) {
+               efi_st_error("Failed to get status");
+               return EFI_ST_FAILURE;
+       }
+       if (net->mode && net->mode->media_present_supported &&
+           !net->mode->media_present) {
+               efi_st_error("Network media is not connected");
+               return EFI_ST_FAILURE;
+       }
+
        /*
         * Send DHCP discover message
         */