efi_selftest: Receive the packets until the receive buffer is empty

Repeatedly receive the packets until the receive buffer is empty.
If the buffer is empty, EFI_SIMPLE_NETWORK_PROTOCOL::Receive()
returns EFI_NOT_READY. We don't need to use the wait_for_event()
every time.

Signed-off-by: Masami Hiramatsu <masami.hiramatsu@linaro.org>
Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
This commit is contained in:
Masami Hiramatsu 2021-09-16 17:53:44 +09:00 committed by Heinrich Schuchardt
parent 9845b92436
commit 28fc87ee3a

View file

@ -362,11 +362,17 @@ static int execute(void)
continue;
}
/*
* Receive packet
* Receive packets until buffer is empty
*/
for (;;) {
buffer_size = sizeof(buffer);
ret = net->receive(net, NULL, &buffer_size, &buffer,
&srcaddr, &destaddr, NULL);
if (ret == EFI_NOT_READY) {
/* The received buffer is empty. */
break;
}
if (ret != EFI_SUCCESS) {
efi_st_error("Failed to receive packet");
return EFI_ST_FAILURE;
@ -392,9 +398,10 @@ static int execute(void)
/*
* We successfully received a DHCP reply.
*/
break;
goto received;
}
}
received:
/*
* Write a log message.
*/