Home | History | Annotate | Download | only in Tcp4Dxe

Lines Matching refs:Tcb

48   Initialize the Tcb local related members.

50 @param Tcb Pointer to the TCP_CB of this TCP instance.
55 IN OUT TCP_CB *Tcb
61 Tcb->HeadSum = NetPseudoHeadChecksum (
62 Tcb->LocalEnd.Ip,
63 Tcb->RemoteEnd.Ip,
68 Tcb->Iss = TcpGetIss ();
69 Tcb->SndUna = Tcb->Iss;
70 Tcb->SndNxt = Tcb->Iss;
72 Tcb->SndWl2 = Tcb->Iss;
73 Tcb->SndWnd = 536;
75 Tcb->RcvWnd = GET_RCV_BUFFSIZE (Tcb->Sk);
80 Tcb->RcvWndScale = 0;
82 Tcb->ProbeTimerOn = FALSE;
89 @param Tcb Pointer to the TCP_CB of this TCP instance.
97 IN OUT TCP_CB *Tcb,
104 ASSERT ((Tcb != NULL) && (Seg != NULL) && (Opt != NULL));
107 Tcb->SndWnd = Seg->Wnd;
108 Tcb->SndWndMax = Tcb->SndWnd;
109 Tcb->SndWl1 = Seg->Seq;
112 Tcb->SndWl2 = Seg->Ack;
114 Tcb->SndWl2 = Tcb->Iss + 1;
118 Tcb->SndMss = (UINT16) MAX (64, Opt->Mss);
120 RcvMss = TcpGetRcvMss (Tcb->Sk);
121 if (Tcb->SndMss > RcvMss) {
122 Tcb->SndMss = RcvMss;
129 Tcb->RcvMss = 536;
132 Tcb->CWnd = Tcb->SndMss;
134 Tcb->Irs = Seg->Seq;
135 Tcb->RcvNxt = Tcb->Irs + 1;
137 Tcb->RcvWl2 = Tcb->RcvNxt;
140 !TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_NO_WS)) {
142 Tcb->SndWndScale = Opt->WndScale;
144 Tcb->RcvWndScale = TcpComputeScale (Tcb);
145 TCP_SET_FLG (Tcb->CtrlFlag, TCP_CTRL_RCVD_WS);
151 Tcb->RcvWndScale = 0;
155 !TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_NO_TS)) {
157 TCP_SET_FLG (Tcb->CtrlFlag, TCP_CTRL_SND_TS);
158 TCP_SET_FLG (Tcb->CtrlFlag, TCP_CTRL_RCVD_TS);
160 Tcb->TsRecent = Opt->TSVal;
167 Tcb->SndMss -= TCP_OPTION_TS_ALIGNED_LEN;
173 Locate a listen TCB that matchs the Local and Remote.
238 Try to find one Tcb whose <Ip, Port> equals to <IN Addr, IN Port>.
243 @return The Tcb which matches the <Addr Port> paire exists or not.
254 TCP_CB *Tcb;
261 Tcb = NET_LIST_USER_STRUCT (Entry, TCP_CB, List);
263 if (EFI_IP4_EQUAL (Addr, &Tcb->LocalEnd.Ip) &&
264 (LocalPort == Tcb->LocalEnd.Port)) {
271 Tcb = NET_LIST_USER_STRUCT (Entry, TCP_CB, List);
273 if (EFI_IP4_EQUAL (Addr, &Tcb->LocalEnd.Ip) &&
274 (LocalPort == Tcb->LocalEnd.Port)) {
309 TCP_CB *Tcb;
321 Tcb = NET_LIST_USER_STRUCT (Entry, TCP_CB, List);
323 if (TCP_PEER_EQUAL (&Remote, &Tcb->RemoteEnd) &&
324 TCP_PEER_EQUAL (&Local, &Tcb->LocalEnd)) {
326 RemoveEntryList (&Tcb->List);
327 InsertHeadList (&mTcpRunQue, &Tcb->List);
329 return Tcb;
345 Insert a Tcb into the proper queue.
347 @param Tcb Pointer to the TCP_CB to be inserted.
349 @retval 0 The Tcb is inserted successfully.
355 IN TCP_CB *Tcb
363 (Tcb != NULL) &&
364 ((Tcb->State == TCP_LISTEN) ||
365 (Tcb->State == TCP_SYN_SENT) ||
366 (Tcb->State == TCP_SYN_RCVD) ||
367 (Tcb->State == TCP_CLOSED))
370 if (Tcb->LocalEnd.Port == 0) {
376 if (Tcb->State == TCP_LISTEN) {
381 // Check that Tcb isn't already on the list.
386 if (TCP_PEER_EQUAL (&Tcb->LocalEnd, &Node->LocalEnd) &&
387 TCP_PEER_EQUAL (&Tcb->RemoteEnd, &Node->RemoteEnd)) {
393 InsertHeadList (Head, &Tcb->List);
400 Clone a TCB_CB from Tcb.
402 @param Tcb Pointer to the TCP_CB to be cloned.
409 IN TCP_CB *Tcb
421 CopyMem (Clone, Tcb, sizeof (TCP_CB));
426 NET_GET_REF (Tcb->IpInfo);
432 Clone->Sk = SockClone (Tcb->Sk);
491 Set the Tcb's state.
493 @param Tcb Pointer to the TCP_CB of this TCP instance.
499 IN OUT TCP_CB *Tcb,
503 ASSERT (Tcb->State < (sizeof (mTcpStateName) / sizeof (CHAR16 *)));
508 "Tcb (%p) state %s --> %s\n",
509 Tcb,
510 mTcpStateName[Tcb->State],
514 Tcb->State = State;
519 SockConnEstablished (Tcb->Sk);
521 if (Tcb->Parent != NULL) {
526 TcpInstallDevicePath (Tcb->Sk);
533 SockConnClosed (Tcb->Sk);
576 @param Tcb Pointer to the TCP_CB of this TCP instance.
584 IN TCP_CB *Tcb,
601 Seg->Wnd = (NTOHS (Head->Wnd) << Tcb->SndWndScale);
624 Reset the connection related with Tcb.
626 @param Tcb Pointer to the TCP_CB of the connection to be
632 IN TCP_CB *Tcb
655 Nhead->Seq = HTONL (Tcb->SndNxt);
656 Nhead->Ack = HTONL (Tcb->RcvNxt);
657 Nhead->SrcPort = Tcb->LocalEnd.Port;
658 Nhead->DstPort = Tcb->RemoteEnd.Port;
664 Nhead->Checksum = TcpChecksum (Nbuf, Tcb->HeadSum);
666 TcpSendIpPacket (Tcb, Nbuf, Tcb->LocalEnd.Ip, Tcb->RemoteEnd.Ip);
675 @param Tcb Pointer to the TCP_CB that wants to initiate a
681 IN OUT TCP_CB *Tcb
684 TcpInitTcbLocal (Tcb);
685 TcpSetState (Tcb, TCP_SYN_SENT);
687 TcpSetTimer (Tcb, TCP_TIMER_CONNECT, Tcb->ConnectTimeout);
688 TcpToSendData (Tcb, 1);
696 @param Tcb Pointer to the TCP_CB of this TCP instance.
701 IN OUT TCP_CB *Tcb
704 ASSERT (Tcb != NULL);
706 if (!IsListEmpty (&Tcb->RcvQue) || GET_RCV_DATASIZE (Tcb->Sk) != 0) {
709 "because data is lost for TCB %p\n", Tcb));
711 TcpResetConnection (Tcb);
712 TcpClose (Tcb);
716 switch (Tcb->State) {
720 TcpSetState (Tcb, TCP_CLOSED);
725 TcpSetState (Tcb, TCP_FIN_WAIT_1);
729 TcpSetState (Tcb, TCP_LAST_ACK);
735 TcpToSendData (Tcb, 1);
742 @param Tcb Pointer to the TCP_CB of this TCP instance.
746 @retval -1 The Tcb is not in a state that data is permitted to
752 IN OUT TCP_CB *Tcb
756 switch (Tcb->State) {
769 TcpToSendData (Tcb, 0);
791 @param Tcb Pointer to the TCP_CB of this TCP instance.
796 IN TCP_CB *Tcb
801 switch (Tcb->State) {
813 TcpOld = TcpRcvWinOld (Tcb);
814 if (TcpRcvWinNow (Tcb) > TcpOld) {
816 if (TcpOld < Tcb->RcvMss) {
819 " update for a window closed Tcb %p\n", Tcb));
821 TcpSendAck (Tcb);
822 } else if (Tcb->DelayedAck == 0) {
825 " ACK to update window for Tcb %p\n", Tcb));
827 Tcb->DelayedAck = 1;
853 @param Tcb Pointer to the TCP_CB of the TCP instance.
858 IN TCP_CB *Tcb
862 "issued by application for TCB %p\n", Tcb));
864 switch (Tcb->State) {
870 TcpResetConnection (Tcb);
876 TcpSetState (Tcb, TCP_CLOSED);
895 TCP_CB *Tcb;
903 Tcb = TcpProto->TcpPcb;
905 LocalPort = NTOHS (Tcb->LocalEnd.Port);
906 RemotePort = NTOHS (Tcb->RemoteEnd.Port);
910 Tcb->LocalEnd.Ip,
912 Tcb->RemoteEnd.Ip,
915 Tcb->UseDefaultAddr
918 IP4_COPY_ADDRESS (&Ip4DPathNode.SubnetMask, &Tcb->SubnetMask);