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