This->SupportedLanguages,\r
mTcpDriverNameTable,\r
DriverName,\r
- (BOOLEAN)(This == &gTcp4ComponentName)\r
+ (BOOLEAN) (This == &gTcp4ComponentName)\r
);\r
}\r
\r
**/\r
VOID\r
SockProcessSndToken (\r
- IN SOCKET *Sock\r
+ IN OUT SOCKET *Sock\r
);\r
\r
/**\r
@param Sock Pointer to the socket.\r
@param TcpRxData Pointer to the application provided receive buffer.\r
@param RcvdBytes The maximum length of the data can be copied.\r
- @param IsOOB If TURE the data is OOB, else the data is normal.\r
+ @param IsOOB If TURE the data is OOB, FALSE the data is normal.\r
\r
**/\r
VOID\r
**/\r
UINT32\r
SockProcessRcvToken (\r
- IN SOCKET *Sock,\r
- IN SOCK_IO_TOKEN *RcvToken\r
+ IN SOCKET *Sock,\r
+ IN OUT SOCK_IO_TOKEN *RcvToken\r
)\r
{\r
UINT32 TokenRcvdBytes;\r
the buffer to socket send buffer,then try to send it.\r
\r
@param Sock Pointer to the socket.\r
- @param TcpTxData Pointer to the tcp txdata.\r
+ @param TcpTxData Pointer to the application provided send buffer.\r
\r
@retval EFI_SUCCESS The operation is completed successfully.\r
@retval EFI_OUT_OF_RESOURCES Failed due to resource limit.\r
**/\r
VOID\r
SockWakeConnToken (\r
- IN SOCKET *Sock\r
+ IN OUT SOCKET *Sock\r
)\r
{\r
ASSERT (Sock->ConnectionToken != NULL);\r
**/\r
VOID\r
SockWakeListenToken (\r
- IN SOCKET *Sock\r
+ IN OUT SOCKET *Sock\r
)\r
{\r
SOCKET *Parent;\r
**/\r
VOID\r
SockProcessSndToken (\r
- IN SOCKET *Sock\r
+ IN OUT SOCKET *Sock\r
)\r
{\r
UINT32 FreeSpace;\r
**/\r
VOID\r
SockDestroy (\r
- IN SOCKET *Sock\r
+ IN OUT SOCKET *Sock\r
)\r
{\r
VOID *SockProtocol;\r
\r
\r
/**\r
- Flush the socket.\r
+ Flush the sndBuffer and rcvBuffer of socket.\r
\r
@param Sock Pointer to the socket.\r
\r
**/\r
VOID\r
SockConnFlush (\r
- IN SOCKET *Sock\r
+ IN OUT SOCKET *Sock\r
)\r
{\r
SOCKET *Child;\r
**/\r
VOID\r
SockSetState (\r
- IN SOCKET *Sock,\r
- IN SOCK_STATE State\r
+ IN OUT SOCKET *Sock,\r
+ IN SOCK_STATE State\r
)\r
{\r
Sock->State = State;\r
**/\r
VOID\r
SockConnClosed (\r
- IN SOCKET *Sock\r
+ IN OUT SOCKET *Sock\r
)\r
{\r
if (Sock->CloseToken != NULL) {\r
**/\r
VOID\r
SockDataRcvd (\r
- IN SOCKET *Sock,\r
- IN NET_BUF *NetBuffer,\r
- IN UINT32 UrgLen\r
+ IN SOCKET *Sock,\r
+ IN OUT NET_BUF *NetBuffer,\r
+ IN UINT32 UrgLen\r
)\r
{\r
ASSERT ((Sock != NULL) && (Sock->RcvBuffer.DataQueue != NULL) &&\r
**/\r
VOID\r
SockRcvdErr (\r
- IN SOCKET *Sock,\r
- IN EFI_STATUS Error\r
+ IN OUT SOCKET *Sock,\r
+ IN EFI_STATUS Error\r
)\r
{\r
SOCK_TOKEN *SockToken;\r
**/\r
VOID\r
SockNoMoreData (\r
- IN SOCKET *Sock\r
+ IN OUT SOCKET *Sock\r
)\r
{\r
EFI_STATUS Err;\r
**/\r
UINT32\r
SockProcessRcvToken (\r
- IN SOCKET *Sock,\r
- IN SOCK_IO_TOKEN *RcvToken\r
+ IN SOCKET *Sock,\r
+ IN OUT SOCK_IO_TOKEN *RcvToken\r
);\r
\r
/**\r
**/\r
VOID\r
SockConnFlush (\r
- IN SOCKET *Sock\r
+ IN OUT SOCKET *Sock\r
);\r
\r
/**\r
**/\r
VOID\r
SockDestroy (\r
- IN SOCKET *Sock\r
+ IN OUT SOCKET *Sock\r
);\r
\r
#endif\r
@param Event The event to be checked.\r
\r
@retval TRUE The specific Event exists in the List. \r
- @retval False The specific Event is not in the List.\r
+ @retval FALSE The specific Event is not in the List.\r
\r
**/\r
BOOLEAN\r
@param Sock Pointer to the instance's socket.\r
@param Event The event to be checked.\r
\r
- @return The specific Event exists in one of socket's lists or not.\r
+ @retval TRUE The Event exists in related socket's lists. \r
+ @retval FALSE The Event is not in related socket's lists.\r
\r
**/\r
BOOLEAN\r
**/\r
EFI_STATUS\r
SockDestroyChild (\r
- IN SOCKET *Sock\r
+ IN SOCKET *Sock\r
)\r
{\r
EFI_STATUS Status;\r
#ifndef _SOCKET_H_\r
#define _SOCKET_H_\r
\r
-#include <PiDxe.h>\r
+#include <Uefi.h>\r
\r
#include <Protocol/Ip4.h>\r
#include <Protocol/Tcp4.h>\r
#include <Library/NetLib.h>\r
#include <Library/DebugLib.h>\r
#include <Library/UefiRuntimeServicesTableLib.h>\r
-#include <Library/UefiDriverEntryPoint.h>\r
#include <Library/UefiBootServicesTableLib.h>\r
-#include <Library/BaseLib.h>\r
#include <Library/UefiLib.h>\r
-#include <Library/MemoryAllocationLib.h>\r
-#include <Library/BaseMemoryLib.h>\r
\r
#define SOCK_SND_BUF 0\r
#define SOCK_RCV_BUF 1\r
**/\r
VOID\r
SockSetState (\r
- IN SOCKET *Sock,\r
- IN SOCK_STATE State\r
+ IN OUT SOCKET *Sock,\r
+ IN SOCK_STATE State\r
);\r
\r
/**\r
**/\r
VOID\r
SockConnClosed (\r
- IN SOCKET *Sock\r
+ IN OUT SOCKET *Sock\r
);\r
\r
/**\r
**/\r
VOID\r
SockNoMoreData (\r
- IN SOCKET *Sock\r
+ IN OUT SOCKET *Sock\r
);\r
\r
/**\r
**/\r
VOID\r
SockDataRcvd (\r
- IN SOCKET *Sock,\r
- IN NET_BUF *NetBuffer,\r
- IN UINT32 UrgLen\r
+ IN SOCKET *Sock,\r
+ IN OUT NET_BUF *NetBuffer,\r
+ IN UINT32 UrgLen\r
);\r
\r
/**\r
**/\r
VOID\r
SockRcvdErr (\r
- IN SOCKET *Sock,\r
- IN EFI_STATUS Error\r
+ IN OUT SOCKET *Sock,\r
+ IN EFI_STATUS Error\r
);\r
\r
///\r
**/\r
VOID\r
TcpInitTcbLocal (\r
- IN TCP_CB *Tcb\r
+ IN OUT TCP_CB *Tcb\r
);\r
\r
/**\r
**/\r
VOID\r
TcpInitTcbPeer (\r
- IN TCP_CB *Tcb,\r
- IN TCP_SEG *Seg,\r
- IN TCP_OPTION *Opt\r
+ IN OUT TCP_CB *Tcb,\r
+ IN TCP_SEG *Seg,\r
+ IN TCP_OPTION *Opt\r
);\r
\r
/**\r
**/\r
VOID\r
TcpSetState (\r
- IN TCP_CB *Tcb,\r
- IN UINT8 State\r
+ IN OUT TCP_CB *Tcb,\r
+ IN UINT8 State\r
);\r
\r
//\r
**/\r
INTN\r
TcpToSendData (\r
- IN TCP_CB *Tcb,\r
- IN INTN Force\r
+ IN OUT TCP_CB *Tcb,\r
+ IN INTN Force\r
);\r
\r
/**\r
**/\r
VOID\r
TcpToSendAck (\r
- IN TCP_CB *Tcb\r
+ IN OUT TCP_CB *Tcb\r
);\r
\r
/**\r
**/\r
VOID\r
TcpSendAck (\r
- IN TCP_CB *Tcb\r
+ IN OUT TCP_CB *Tcb\r
);\r
\r
/**\r
**/\r
INTN\r
TcpSendZeroProbe (\r
- IN TCP_CB *Tcb\r
+ IN OUT TCP_CB *Tcb\r
);\r
\r
/**\r
**/\r
INTN\r
TcpDeliverData (\r
- IN TCP_CB *Tcb\r
+ IN OUT TCP_CB *Tcb\r
);\r
\r
/**\r
**/\r
VOID\r
TcpFastRecover (\r
- IN TCP_CB *Tcb,\r
- IN TCP_SEG *Seg\r
+ IN OUT TCP_CB *Tcb,\r
+ IN TCP_SEG *Seg\r
);\r
\r
/**\r
**/\r
VOID\r
TcpFastLossRecover (\r
- IN TCP_CB *Tcb,\r
- IN TCP_SEG *Seg\r
+ IN OUT TCP_CB *Tcb,\r
+ IN TCP_SEG *Seg\r
);\r
\r
/**\r
**/\r
VOID\r
TcpComputeRtt (\r
- IN TCP_CB *Tcb,\r
- IN UINT32 Measure\r
+ IN OUT TCP_CB *Tcb,\r
+ IN UINT32 Measure\r
);\r
\r
/**\r
**/\r
VOID\r
TcpQueueData (\r
- IN TCP_CB *Tcb,\r
- IN NET_BUF *Nbuf\r
+ IN OUT TCP_CB *Tcb,\r
+ IN NET_BUF *Nbuf\r
);\r
\r
/**\r
**/\r
TCP_SEG *\r
TcpFormatNetbuf (\r
- IN TCP_CB *Tcb,\r
- IN NET_BUF *Nbuf\r
+ IN TCP_CB *Tcb,\r
+ IN OUT NET_BUF *Nbuf\r
);\r
\r
/**\r
**/\r
VOID\r
TcpOnAppConnect (\r
- IN TCP_CB *Tcb\r
+ IN OUT TCP_CB *Tcb\r
);\r
\r
/**\r
**/\r
VOID\r
TcpOnAppClose (\r
- IN TCP_CB *Tcb\r
+ IN OUT TCP_CB *Tcb\r
);\r
\r
/**\r
**/\r
INTN\r
TcpOnAppSend (\r
- IN TCP_CB *Tcb\r
+ IN OUT TCP_CB *Tcb\r
);\r
\r
/**\r
**/\r
VOID\r
TcpClose (\r
- IN TCP_CB *Tcb\r
+ IN OUT TCP_CB *Tcb\r
);\r
\r
/**\r
**/\r
VOID\r
TcpSetTimer (\r
- IN TCP_CB *Tcb,\r
- IN UINT16 Timer,\r
- IN UINT32 TimeOut\r
+ IN OUT TCP_CB *Tcb,\r
+ IN UINT16 Timer,\r
+ IN UINT32 TimeOut\r
);\r
\r
/**\r
**/\r
VOID\r
TcpClearTimer (\r
- IN TCP_CB *Tcb,\r
- IN UINT16 Timer\r
+ IN OUT TCP_CB *Tcb,\r
+ IN UINT16 Timer\r
);\r
\r
/**\r
**/\r
VOID\r
TcpClearAllTimer (\r
- IN TCP_CB *Tcb\r
+ IN OUT TCP_CB *Tcb\r
);\r
\r
/**\r
**/\r
VOID\r
TcpSetProbeTimer (\r
- IN TCP_CB *Tcb\r
+ IN OUT TCP_CB *Tcb\r
);\r
\r
/**\r
**/\r
VOID\r
TcpSetKeepaliveTimer (\r
- IN TCP_CB *Tcb\r
+ IN OUT TCP_CB *Tcb\r
);\r
\r
/**\r
**/\r
VOID\r
TcpBackoffRto (\r
- IN TCP_CB *Tcb\r
+ IN OUT TCP_CB *Tcb\r
);\r
\r
/**\r
**/\r
VOID\r
TcpFastRecover (\r
- IN TCP_CB *Tcb,\r
- IN TCP_SEG *Seg\r
+ IN OUT TCP_CB *Tcb,\r
+ IN TCP_SEG *Seg\r
)\r
{\r
UINT32 FlightSize;\r
**/\r
VOID\r
TcpFastLossRecover (\r
- IN TCP_CB *Tcb,\r
- IN TCP_SEG *Seg\r
+ IN OUT TCP_CB *Tcb,\r
+ IN TCP_SEG *Seg\r
)\r
{\r
if (TCP_SEQ_GT (Seg->Ack, Tcb->SndUna)) {\r
**/\r
VOID\r
TcpComputeRtt (\r
- IN TCP_CB *Tcb,\r
- IN UINT32 Measure\r
+ IN OUT TCP_CB *Tcb,\r
+ IN UINT32 Measure\r
)\r
{\r
INT32 Var;\r
**/\r
INTN\r
TcpDeliverData (\r
- IN TCP_CB *Tcb\r
+ IN OUT TCP_CB *Tcb\r
)\r
{\r
LIST_ENTRY *Entry;\r
**/\r
VOID\r
TcpQueueData (\r
- IN TCP_CB *Tcb,\r
- IN NET_BUF *Nbuf\r
+ IN OUT TCP_CB *Tcb,\r
+ IN NET_BUF *Nbuf\r
)\r
{\r
TCP_SEG *Seg;\r
@param Context Pointer to the context configured in IpIoOpen(), not used\r
now.\r
\r
- @return None\r
-\r
**/\r
VOID\r
Tcp4RxCallback (\r
**/\r
VOID\r
TcpInitTcbLocal (\r
- IN TCP_CB *Tcb\r
+ IN OUT TCP_CB *Tcb\r
)\r
{\r
//\r
**/\r
VOID\r
TcpInitTcbPeer (\r
- IN TCP_CB *Tcb,\r
- IN TCP_SEG *Seg,\r
- IN TCP_OPTION *Opt\r
+ IN OUT TCP_CB *Tcb,\r
+ IN TCP_SEG *Seg,\r
+ IN TCP_OPTION *Opt\r
)\r
{\r
UINT16 RcvMss;\r
**/\r
VOID\r
TcpSetState (\r
- IN TCP_CB *Tcb,\r
- IN UINT8 State\r
+ IN OUT TCP_CB *Tcb,\r
+ IN UINT8 State\r
)\r
{\r
DEBUG (\r
**/\r
TCP_SEG *\r
TcpFormatNetbuf (\r
- IN TCP_CB *Tcb,\r
- IN NET_BUF *Nbuf\r
+ IN TCP_CB *Tcb,\r
+ IN OUT NET_BUF *Nbuf\r
)\r
{\r
TCP_SEG *Seg;\r
**/\r
VOID\r
TcpOnAppConnect (\r
- IN TCP_CB *Tcb\r
+ IN OUT TCP_CB *Tcb\r
)\r
{\r
TcpInitTcbLocal (Tcb);\r
**/\r
VOID\r
TcpOnAppClose (\r
- IN TCP_CB *Tcb\r
+ IN OUT TCP_CB *Tcb\r
)\r
{\r
ASSERT (Tcb != NULL);\r
**/\r
INTN\r
TcpOnAppSend (\r
- IN TCP_CB *Tcb\r
+ IN OUT TCP_CB *Tcb\r
)\r
{\r
\r
switch (Tcb->State) {\r
case TCP_CLOSED:\r
return -1;\r
- break;\r
\r
case TCP_LISTEN:\r
return -1;\r
- break;\r
\r
case TCP_SYN_SENT:\r
case TCP_SYN_RCVD:\r
return 0;\r
- break;\r
\r
case TCP_ESTABLISHED:\r
case TCP_CLOSE_WAIT:\r
TcpToSendData (Tcb, 0);\r
return 0;\r
- break;\r
\r
case TCP_FIN_WAIT_1:\r
case TCP_FIN_WAIT_2:\r
case TCP_LAST_ACK:\r
case TCP_TIME_WAIT:\r
return -1;\r
- break;\r
+\r
default:\r
break;\r
}\r
case TCP_CLOSE_WAIT:\r
TcpResetConnection (Tcb);\r
break;\r
+ default:\r
+ break;\r
}\r
\r
TcpSetState (Tcb, TCP_CLOSED);\r
**/\r
VOID\r
TcpPutUint32 (\r
- IN UINT8 *Buf,\r
- IN UINT32 Data\r
+ OUT UINT8 *Buf,\r
+ IN UINT32 Data\r
)\r
{\r
Data = HTONL (Data);\r
**/\r
INTN\r
TcpParseOption (\r
- IN TCP_HEAD *Tcp,\r
- IN TCP_OPTION *Option\r
+ IN TCP_HEAD *Tcp,\r
+ IN OUT TCP_OPTION *Option\r
)\r
{\r
UINT8 *Head;\r
**/\r
INTN\r
TcpParseOption (\r
- IN TCP_HEAD *Tcp,\r
- IN TCP_OPTION *Option\r
+ IN TCP_HEAD *Tcp,\r
+ IN OUT TCP_OPTION *Option\r
);\r
\r
/**\r
**/\r
UINT16\r
TcpComputeWnd (\r
- IN TCP_CB *Tcb,\r
- IN BOOLEAN Syn\r
+ IN OUT TCP_CB *Tcb,\r
+ IN BOOLEAN Syn\r
)\r
{\r
UINT32 Wnd;\r
**/\r
INTN\r
TcpTransmitSegment (\r
- IN TCP_CB *Tcb,\r
- IN NET_BUF *Nbuf\r
+ IN OUT TCP_CB *Tcb,\r
+ IN NET_BUF *Nbuf\r
)\r
{\r
UINT16 Len;\r
**/\r
INTN\r
TcpToSendData (\r
- IN TCP_CB *Tcb,\r
- IN INTN Force\r
+ IN OUT TCP_CB *Tcb,\r
+ IN INTN Force\r
)\r
{\r
UINT32 Len;\r
**/\r
VOID\r
TcpSendAck (\r
- IN TCP_CB *Tcb\r
+ IN OUT TCP_CB *Tcb\r
)\r
{\r
NET_BUF *Nbuf;\r
**/\r
INTN\r
TcpSendZeroProbe (\r
- IN TCP_CB *Tcb\r
+ IN OUT TCP_CB *Tcb\r
)\r
{\r
NET_BUF *Nbuf;\r
**/\r
VOID\r
TcpToSendAck (\r
- IN TCP_CB *Tcb\r
+ IN OUT TCP_CB *Tcb\r
)\r
{\r
UINT32 TcpNow;\r
**/\r
VOID\r
TcpConnectTimeout (\r
- IN TCP_CB *Tcb\r
+ IN OUT TCP_CB *Tcb\r
);\r
\r
/**\r
**/\r
VOID\r
TcpRexmitTimeout (\r
- IN TCP_CB *Tcb\r
+ IN OUT TCP_CB *Tcb\r
);\r
\r
/**\r
**/\r
VOID\r
TcpProbeTimeout (\r
- IN TCP_CB *Tcb\r
+ IN OUT TCP_CB *Tcb\r
);\r
\r
/**\r
**/\r
VOID\r
TcpKeepaliveTimeout (\r
- IN TCP_CB *Tcb\r
+ IN OUT TCP_CB *Tcb\r
);\r
\r
/**\r
**/\r
VOID\r
TcpFinwait2Timeout (\r
- IN TCP_CB *Tcb\r
+ IN OUT TCP_CB *Tcb\r
);\r
\r
/**\r
**/\r
VOID\r
Tcp2MSLTimeout (\r
- IN TCP_CB *Tcb\r
+ IN OUT TCP_CB *Tcb\r
);\r
\r
TCP_TIMER_HANDLER mTcpTimerHandler[TCP_TIMER_NUMBER] = {\r
**/\r
VOID\r
TcpClose (\r
- IN TCP_CB *Tcb\r
+ IN OUT TCP_CB *Tcb\r
)\r
{\r
NetbufFreeList (&Tcb->SndQue);\r
**/\r
VOID\r
TcpConnectTimeout (\r
- IN TCP_CB *Tcb\r
+ IN OUT TCP_CB *Tcb\r
)\r
{\r
if (!TCP_CONNECTED (Tcb->State)) {\r
**/\r
VOID\r
TcpRexmitTimeout (\r
- IN TCP_CB *Tcb\r
+ IN OUT TCP_CB *Tcb\r
)\r
{\r
UINT32 FlightSize;\r
**/\r
VOID\r
TcpProbeTimeout (\r
- IN TCP_CB *Tcb\r
+ IN OUT TCP_CB *Tcb\r
)\r
{\r
//\r
**/\r
VOID\r
TcpKeepaliveTimeout (\r
- IN TCP_CB *Tcb\r
+ IN OUT TCP_CB *Tcb\r
)\r
{\r
Tcb->KeepAliveProbes++;\r
**/\r
VOID\r
TcpFinwait2Timeout (\r
- IN TCP_CB *Tcb\r
+ IN OUT TCP_CB *Tcb\r
)\r
{\r
DEBUG ((EFI_D_WARN, "TcpFinwait2Timeout: connection closed "\r
**/\r
VOID\r
Tcp2MSLTimeout (\r
- IN TCP_CB *Tcb\r
+ IN OUT TCP_CB *Tcb\r
)\r
{\r
DEBUG ((EFI_D_WARN, "Tcp2MSLTimeout: connection closed "\r
**/\r
VOID\r
TcpUpdateTimer (\r
- IN TCP_CB *Tcb\r
+ IN OUT TCP_CB *Tcb\r
)\r
{\r
UINT16 Index;\r
**/\r
VOID\r
TcpSetTimer (\r
- IN TCP_CB *Tcb,\r
- IN UINT16 Timer,\r
- IN UINT32 TimeOut\r
+ IN OUT TCP_CB *Tcb,\r
+ IN UINT16 Timer,\r
+ IN UINT32 TimeOut\r
)\r
{\r
TCP_SET_TIMER (Tcb->EnabledTimer, Timer);\r
**/\r
VOID\r
TcpClearTimer (\r
- IN TCP_CB *Tcb,\r
- IN UINT16 Timer\r
+ IN OUT TCP_CB *Tcb,\r
+ IN UINT16 Timer\r
)\r
{\r
TCP_CLEAR_TIMER (Tcb->EnabledTimer, Timer);\r
**/\r
VOID\r
TcpClearAllTimer (\r
- IN TCP_CB *Tcb\r
+ IN OUT TCP_CB *Tcb\r
)\r
{\r
Tcb->EnabledTimer = 0;\r
**/\r
VOID\r
TcpSetProbeTimer (\r
- IN TCP_CB *Tcb\r
+ IN OUT TCP_CB *Tcb\r
)\r
{\r
if (!TCP_TIMER_ON (Tcb->EnabledTimer, TCP_TIMER_PROBE)) {\r
**/\r
VOID\r
TcpSetKeepaliveTimer (\r
- IN TCP_CB *Tcb\r
+ IN OUT TCP_CB *Tcb\r
)\r
{\r
if (TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_NO_KEEPALIVE)) {\r
**/\r
VOID\r
TcpBackoffRto (\r
- IN TCP_CB *Tcb\r
+ IN OUT TCP_CB *Tcb\r
)\r
{\r
//\r
}\r
}\r
}\r
+ \r
+ //\r
+ // If the Tcb still exist or some timer is set, update the timer\r
+ //\r
if (Index == TCP_TIMER_NUMBER) {\r
TcpUpdateTimer (Tcb);\r
}\r