[ipxe-devel] [PATCH] efi_snp: improve compliance with the EFI_SIMPLE_NETWORK_PROTOCOL spec
Michael Brown
mcb30 at ipxe.org
Wed Jul 22 19:45:34 UTC 2015
On 10/06/15 12:31, Gerd Hoffmann wrote:
> The efi_snp interface dates back to 2008, when the GetStatus() interface
> must have been seriously under-specified. The UEFI Specification (2.4)
> specifies EFI_SIMPLE_NETWORK_PROTOCOL in detail however. In short:
>
> - the Transmit() interface is assumed to link (not copy) the SNP client's
> buffer and return at once (without blocking), taking ownership of the
> buffer temporarily;
>
> - the GetStatus() interface releases one of the completed (transmitted or
> internally copied) buffers back to the caller. If there are several
> completed buffers, it is unspecified which one is returned.
>
> The EFI build of the grub boot loader actually verifies the buffer address
> returned by GetStatus(), therefore in efi_snp we must at least fake the
> queueing of client buffers. This patch doesn't track client buffers
> together with the internally queued io_buffer structures, we consider a
> client buffer recyclable as soon as we make a deep copy of it and queue
> the copy internally.
Thanks. Reworked to simplify the whole RX/TX completion reporting, and
pushed as
http://git.ipxe.org/ipxe.git/commitdiff/88a5f56
Michael
More information about the ipxe-devel
mailing list