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
_______________________________________________
ipxe-devel mailing list
ipxe-devel@lists.ipxe.org
https://lists.ipxe.org/mailman/listinfo.cgi/ipxe-devel

Reply via email to