[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