break;\r
\r
case IP_HDRINCL:\r
- *ppOptionData = (void *)pSocket->bIncludeHeader;\r
+ *ppOptionData = (void *)&pSocket->bIncludeHeader;\r
*pOptionLength = sizeof ( pSocket->bIncludeHeader );\r
break;\r
}\r
\r
* TCPv4 transfer rate is slow (< 10 Mbits/sec) - This is an unidentified issue.\r
\r
+* Tcp4Dxe transmits more urgent data than is sent through sockets when normal data is\r
+ queued for transmission before the urgent data. HSD 206365\r
+\r
* Raw socket applications are not able to pass the IP header as part of their\r
payload by using the IP option IP_HDRINCL. This is because the UEFI IPv4 driver\r
(Ip4Dxe) does not support RawData. HSD 206136\r
IN ESL_IO_MGMT ** ppFreeQueue,\r
IN UINTN DebugFlags,\r
IN CHAR8 * pEventName,\r
- IN EFI_EVENT_NOTIFY pfnCompletion\r
+ IN PFN_API_IO_COMPLETE pfnCompletion\r
)\r
{\r
ESL_IO_MGMT * pEnd;\r
int errno;\r
socklen_t LengthInBytes;\r
socklen_t MaxBytes;\r
- UINT8 * pOptionData;\r
+ CONST UINT8 * pOptionData;\r
ESL_SOCKET * pSocket;\r
EFI_STATUS Status;\r
\r
if ( pSocket->pApi->DefaultProtocol == level ) {\r
Status = pSocket->pApi->pfnOptionGet ( pSocket,\r
OptionName,\r
- &pOptionData,\r
+ (CONST void ** __restrict)&pOptionData,\r
&LengthInBytes );\r
errno = pSocket->errno;\r
break;\r
//\r
// Return the listen flag\r
//\r
- pOptionData = (UINT8 *)&pSocket->bListenCalled;\r
+ pOptionData = (CONST UINT8 *)&pSocket->bListenCalled;\r
LengthInBytes = sizeof ( pSocket->bListenCalled );\r
break;\r
\r
//\r
// Return the debug flags\r
//\r
- pOptionData = (UINT8 *)&pSocket->bOobInLine;\r
+ pOptionData = (CONST UINT8 *)&pSocket->bOobInLine;\r
LengthInBytes = sizeof ( pSocket->bOobInLine );\r
break;\r
\r
//\r
// Return the out-of-band inline flag\r
//\r
- pOptionData = (UINT8 *)&pSocket->bOobInLine;\r
+ pOptionData = (CONST UINT8 *)&pSocket->bOobInLine;\r
LengthInBytes = sizeof ( pSocket->bOobInLine );\r
break;\r
\r
//\r
// Return the receive timeout\r
//\r
- pOptionData = (UINT8 *)&pSocket->RxTimeout;\r
+ pOptionData = (CONST UINT8 *)&pSocket->RxTimeout;\r
LengthInBytes = sizeof ( pSocket->RxTimeout );\r
break;\r
\r
//\r
// Return the maximum receive buffer size\r
//\r
- pOptionData = (UINT8 *)&pSocket->MaxRxBuf;\r
+ pOptionData = (CONST UINT8 *)&pSocket->MaxRxBuf;\r
LengthInBytes = sizeof ( pSocket->MaxRxBuf );\r
break;\r
\r
//\r
// Return the maximum transmit buffer size\r
//\r
- pOptionData = (UINT8 *)&pSocket->MaxTxBuf;\r
+ pOptionData = (CONST UINT8 *)&pSocket->MaxTxBuf;\r
LengthInBytes = sizeof ( pSocket->MaxTxBuf );\r
break;\r
\r
//\r
// Return the socket type\r
//\r
- pOptionData = (UINT8 *)&pSocket->Type;\r
+ pOptionData = (CONST UINT8 *)&pSocket->Type;\r
LengthInBytes = sizeof ( pSocket->Type );\r
break;\r
}\r
EFI_UDP4_COMPLETION_TOKEN Udp4Rx; ///< UDP4 receive token\r
EFI_UDP4_COMPLETION_TOKEN Udp4Tx; ///< UDP4 transmit token\r
} Token; ///< Completion token for the network operation\r
-};\r
+} GCC_IO_MGMT;\r
\r
/**\r
IP4 context structure\r
IN BOOLEAN bBindTest\r
);\r
\r
+/**\r
+ Process the completion event\r
+\r
+ This routine handles the I/O completion event.\r
+\r
+ This routine is called by the low level network driver when\r
+ the operation is completed.\r
+\r
+ @param [in] Event The receive completion event\r
+\r
+ @param [in] pIo The address of an ::ESL_IO_MGMT structure\r
+\r
+**/\r
+typedef\r
+VOID\r
+(* PFN_API_IO_COMPLETE) (\r
+ IN EFI_EVENT Event,\r
+ IN ESL_IO_MGMT * pIo\r
+ );\r
+\r
/**\r
Determine if the socket is configured.\r
\r
IN socklen_t SockAddrLength\r
);\r
\r
-/**\r
- Process the receive completion\r
-\r
- This routine handles the receive completion event.\r
-\r
- This routine is called by the low level network driver when\r
- data is received.\r
-\r
- @param [in] Event The receive completion event\r
-\r
- @param [in] pIo The address of an ::ESL_IO_MGMT structure\r
-\r
-**/\r
-typedef\r
-VOID\r
-(* PFN_API_RX_COMPLETE) (\r
- IN EFI_EVENT Event,\r
- IN ESL_IO_MGMT * pIo\r
- );\r
-\r
/**\r
Start a receive operation\r
\r
PFN_API_RECEIVE pfnReceive; ///< Attempt to receive some data\r
PFN_API_REMOTE_ADDR_GET pfnRemoteAddrGet; ///< Get remote address\r
PFN_API_REMOTE_ADDR_SET pfnRemoteAddrSet; ///< Set the remote system address\r
- PFN_API_RX_COMPLETE pfnRxComplete; ///< RX completion\r
+ PFN_API_IO_COMPLETE pfnRxComplete; ///< RX completion\r
PFN_API_RX_START pfnRxStart; ///< Start a network specific receive operation\r
PFN_API_TRANSMIT pfnTransmit; ///< Attempt to buffer a packet for transmit\r
PFN_API_TX_COMPLETE pfnTxComplete; ///< TX completion for normal data\r
IN ESL_IO_MGMT ** ppFreeQueue,\r
IN UINTN DebugFlags,\r
IN CHAR8 * pEventName,\r
- IN EFI_EVENT_NOTIFY pfnCompletion\r
+ IN PFN_API_IO_COMPLETE pfnCompletion\r
);\r
\r
/**\r