- This is the snp interface routine for transmitting a packet. this routine\r
- basically retrieves the snp structure, checks the snp state and calls\r
- pxe_fill_header and pxe_transmit calls to complete the transmission.\r
-\r
- @param this pointer to SNP driver context\r
- @param MacHeaderSize size of the memory at MacHeaderPtr\r
- @param BufferLength Size of data in the BufferPtr\r
- @param BufferPtr data buffer pointer\r
- @param SourceAddrPtr address of the source mac address buffer\r
- @param DestinationAddrPtr address of the destination mac address buffer\r
- @param ProtocolPtr address of the protocol type\r
-\r
- @retval EFI_SUCCESS if successfully completed the undi call\r
- @retval Other error return from undi call.\r
+ Places a packet in the transmit queue of a network interface.\r
+ \r
+ This function places the packet specified by Header and Buffer on the transmit\r
+ queue. If HeaderSize is nonzero and HeaderSize is not equal to \r
+ This->Mode->MediaHeaderSize, then EFI_INVALID_PARAMETER will be returned. If \r
+ BufferSize is less than This->Mode->MediaHeaderSize, then EFI_BUFFER_TOO_SMALL\r
+ will be returned. If Buffer is NULL, then EFI_INVALID_PARAMETER will be \r
+ returned. If HeaderSize is nonzero and DestAddr or Protocol is NULL, then\r
+ EFI_INVALID_PARAMETER will be returned. If the transmit engine of the network\r
+ interface is busy, then EFI_NOT_READY will be returned. If this packet can be \r
+ accepted by the transmit engine of the network interface, the packet contents \r
+ specified by Buffer will be placed on the transmit queue of the network \r
+ interface, and EFI_SUCCESS will be returned. GetStatus() can be used to \r
+ determine when the packet has actually been transmitted. The contents of the \r
+ Buffer must not be modified until the packet has actually been transmitted. \r
+ The Transmit() function performs nonblocking I/O. A caller who wants to perform\r
+ blocking I/O, should call Transmit(), and then GetStatus() until the \r
+ transmitted buffer shows up in the recycled transmit buffer.\r
+ If the driver has not been initialized, EFI_DEVICE_ERROR will be returned.\r
+\r
+ @param This A pointer to the EFI_SIMPLE_NETWORK_PROTOCOL instance.\r
+ @param HeaderSize The size, in bytes, of the media header to be filled in by the \r
+ Transmit() function. If HeaderSize is nonzero, then it must\r
+ be equal to This->Mode->MediaHeaderSize and the DestAddr and\r
+ Protocol parameters must not be NULL.\r
+ @param BufferSize The size, in bytes, of the entire packet (media header and\r
+ data) to be transmitted through the network interface.\r
+ @param Buffer A pointer to the packet (media header followed by data) to be \r
+ transmitted. This parameter cannot be NULL. If HeaderSize is \r
+ zero, then the media header in Buffer must already be filled\r
+ in by the caller. If HeaderSize is nonzero, then the media \r
+ header will be filled in by the Transmit() function.\r
+ @param SrcAddr The source HW MAC address. If HeaderSize is zero, then this \r
+ parameter is ignored. If HeaderSize is nonzero and SrcAddr \r
+ is NULL, then This->Mode->CurrentAddress is used for the \r
+ source HW MAC address.\r
+ @param DestAddr The destination HW MAC address. If HeaderSize is zero, then \r
+ this parameter is ignored.\r
+ @param Protocol The type of header to build. If HeaderSize is zero, then this \r
+ parameter is ignored. See RFC 1700, section "Ether Types," \r
+ for examples.\r
+\r
+ @retval EFI_SUCCESS The packet was placed on the transmit queue.\r
+ @retval EFI_NOT_STARTED The network interface has not been started.\r
+ @retval EFI_NOT_READY The network interface is too busy to accept this\r
+ transmit request.\r
+ @retval EFI_BUFFER_TOO_SMALL The BufferSize parameter is too small.\r
+ @retval EFI_INVALID_PARAMETER One or more of the parameters has an unsupported\r
+ value.\r
+ @retval EFI_DEVICE_ERROR The command could not be sent to the network interface.\r
+ @retval EFI_UNSUPPORTED This function is not supported by the network interface.\r