]> git.proxmox.com Git - mirror_edk2.git/blobdiff - NetworkPkg/TcpDxe/TcpProto.h
NetworkPkg: Apply uncrustify changes
[mirror_edk2.git] / NetworkPkg / TcpDxe / TcpProto.h
index 53cfd48026c5cb8d0bac2370ff664615bee84068..81f6a875351f0c94165c2e066b62fe1ed03e0221 100644 (file)
 #define TCP_CLOSE_WAIT   9\r
 #define TCP_LAST_ACK     10\r
 \r
-\r
 ///\r
 /// Flags in the TCP header\r
 ///\r
-#define TCP_FLG_FIN      0x01\r
-#define TCP_FLG_SYN      0x02\r
-#define TCP_FLG_RST      0x04\r
-#define TCP_FLG_PSH      0x08\r
-#define TCP_FLG_ACK      0x10\r
-#define TCP_FLG_URG      0x20\r
-\r
- //\r
- // mask for all the flags\r
- //\r
-#define TCP_FLG_FLAG     0x3F\r
+#define TCP_FLG_FIN  0x01\r
+#define TCP_FLG_SYN  0x02\r
+#define TCP_FLG_RST  0x04\r
+#define TCP_FLG_PSH  0x08\r
+#define TCP_FLG_ACK  0x10\r
+#define TCP_FLG_URG  0x20\r
 \r
+//\r
+// mask for all the flags\r
+//\r
+#define TCP_FLG_FLAG  0x3F\r
 \r
-#define TCP_CONNECT_REFUSED      (-1) ///< TCP error status\r
-#define TCP_CONNECT_RESET        (-2) ///< TCP error status\r
-#define TCP_CONNECT_CLOSED       (-3) ///< TCP error status\r
+#define TCP_CONNECT_REFUSED  (-1)     ///< TCP error status\r
+#define TCP_CONNECT_RESET    (-2)     ///< TCP error status\r
+#define TCP_CONNECT_CLOSED   (-3)     ///< TCP error status\r
 \r
 //\r
 // Current congestion status as suggested by RFC3782.\r
 //\r
-#define TCP_CONGEST_RECOVER      1  ///< During the NewReno fast recovery.\r
-#define TCP_CONGEST_LOSS         2  ///< Retxmit because of retxmit time out.\r
-#define TCP_CONGEST_OPEN         3  ///< TCP is opening its congestion window.\r
+#define TCP_CONGEST_RECOVER  1      ///< During the NewReno fast recovery.\r
+#define TCP_CONGEST_LOSS     2      ///< Retxmit because of retxmit time out.\r
+#define TCP_CONGEST_OPEN     3      ///< TCP is opening its congestion window.\r
 \r
 //\r
 // TCP control flags\r
 //\r
-#define TCP_CTRL_NO_NAGLE        0x0001 ///< Disable Nagle algorithm\r
-#define TCP_CTRL_NO_KEEPALIVE    0x0002 ///< Disable keepalive timer.\r
-#define TCP_CTRL_NO_WS           0x0004 ///< Disable window scale option.\r
-#define TCP_CTRL_RCVD_WS         0x0008 ///< Received a wnd scale option in syn.\r
-#define TCP_CTRL_NO_TS           0x0010 ///< Disable Timestamp option.\r
-#define TCP_CTRL_RCVD_TS         0x0020 ///< Received a Timestamp option in syn.\r
-#define TCP_CTRL_SND_TS          0x0040 ///< Send Timestamp option to remote.\r
-#define TCP_CTRL_SND_URG         0x0080 ///< In urgent send mode.\r
-#define TCP_CTRL_RCVD_URG        0x0100 ///< In urgent receive mode.\r
-#define TCP_CTRL_SND_PSH         0x0200 ///< In PUSH send mode.\r
-#define TCP_CTRL_FIN_SENT        0x0400 ///< FIN is sent.\r
-#define TCP_CTRL_FIN_ACKED       0x0800 ///< FIN is ACKed.\r
-#define TCP_CTRL_TIMER_ON        0x1000 ///< At least one of the timer is on.\r
-#define TCP_CTRL_RTT_ON          0x2000 ///< The RTT measurement is on.\r
-#define TCP_CTRL_ACK_NOW         0x4000 ///< Send the ACK now, don't delay.\r
+#define TCP_CTRL_NO_NAGLE      0x0001   ///< Disable Nagle algorithm\r
+#define TCP_CTRL_NO_KEEPALIVE  0x0002   ///< Disable keepalive timer.\r
+#define TCP_CTRL_NO_WS         0x0004   ///< Disable window scale option.\r
+#define TCP_CTRL_RCVD_WS       0x0008   ///< Received a wnd scale option in syn.\r
+#define TCP_CTRL_NO_TS         0x0010   ///< Disable Timestamp option.\r
+#define TCP_CTRL_RCVD_TS       0x0020   ///< Received a Timestamp option in syn.\r
+#define TCP_CTRL_SND_TS        0x0040   ///< Send Timestamp option to remote.\r
+#define TCP_CTRL_SND_URG       0x0080   ///< In urgent send mode.\r
+#define TCP_CTRL_RCVD_URG      0x0100   ///< In urgent receive mode.\r
+#define TCP_CTRL_SND_PSH       0x0200   ///< In PUSH send mode.\r
+#define TCP_CTRL_FIN_SENT      0x0400   ///< FIN is sent.\r
+#define TCP_CTRL_FIN_ACKED     0x0800   ///< FIN is ACKed.\r
+#define TCP_CTRL_TIMER_ON      0x1000   ///< At least one of the timer is on.\r
+#define TCP_CTRL_RTT_ON        0x2000   ///< The RTT measurement is on.\r
+#define TCP_CTRL_ACK_NOW       0x4000   ///< Send the ACK now, don't delay.\r
 \r
 //\r
 // Timer related values\r
 //\r
-#define TCP_TIMER_CONNECT        0                  ///< Connection establishment timer.\r
-#define TCP_TIMER_REXMIT         1                  ///< Retransmit timer.\r
-#define TCP_TIMER_PROBE          2                  ///< Window probe timer.\r
-#define TCP_TIMER_KEEPALIVE      3                  ///< Keepalive timer.\r
-#define TCP_TIMER_FINWAIT2       4                  ///< FIN_WAIT_2 timer.\r
-#define TCP_TIMER_2MSL           5                  ///< TIME_WAIT timer.\r
-#define TCP_TIMER_NUMBER         6                  ///< The total number of the TCP timer.\r
-#define TCP_TICK                 200                ///< Every TCP tick is 200ms.\r
-#define TCP_TICK_HZ              5                  ///< The frequence of TCP tick.\r
-#define TCP_RTT_SHIFT            3                  ///< SRTT & RTTVAR scaled by 8.\r
-#define TCP_RTO_MIN              TCP_TICK_HZ        ///< The minimum value of RTO.\r
-#define TCP_RTO_MAX              (TCP_TICK_HZ * 60) ///< The maximum value of RTO.\r
-#define TCP_FOLD_RTT             4                  ///< Timeout threshold to fold RTT.\r
+#define TCP_TIMER_CONNECT    0                      ///< Connection establishment timer.\r
+#define TCP_TIMER_REXMIT     1                      ///< Retransmit timer.\r
+#define TCP_TIMER_PROBE      2                      ///< Window probe timer.\r
+#define TCP_TIMER_KEEPALIVE  3                      ///< Keepalive timer.\r
+#define TCP_TIMER_FINWAIT2   4                      ///< FIN_WAIT_2 timer.\r
+#define TCP_TIMER_2MSL       5                      ///< TIME_WAIT timer.\r
+#define TCP_TIMER_NUMBER     6                      ///< The total number of the TCP timer.\r
+#define TCP_TICK             200                    ///< Every TCP tick is 200ms.\r
+#define TCP_TICK_HZ          5                      ///< The frequence of TCP tick.\r
+#define TCP_RTT_SHIFT        3                      ///< SRTT & RTTVAR scaled by 8.\r
+#define TCP_RTO_MIN          TCP_TICK_HZ            ///< The minimum value of RTO.\r
+#define TCP_RTO_MAX          (TCP_TICK_HZ * 60)     ///< The maximum value of RTO.\r
+#define TCP_FOLD_RTT         4                      ///< Timeout threshold to fold RTT.\r
 \r
 //\r
 // Default values for some timers\r
 //\r
-#define TCP_MAX_LOSS             12                          ///< Default max times to retxmit.\r
-#define TCP_KEEPALIVE_IDLE_MIN   (TCP_TICK_HZ * 60 * 60 * 2) ///< First keepalive.\r
-#define TCP_KEEPALIVE_PERIOD     (TCP_TICK_HZ * 60)\r
-#define TCP_MAX_KEEPALIVE        8\r
-#define TCP_FIN_WAIT2_TIME       (2 * TCP_TICK_HZ)\r
-#define TCP_TIME_WAIT_TIME       (2 * TCP_TICK_HZ)\r
-#define TCP_PAWS_24DAY           (24 * 24 * 60 * 60 * TCP_TICK_HZ)\r
-#define TCP_CONNECT_TIME         (75 * TCP_TICK_HZ)\r
+#define TCP_MAX_LOSS            12                           ///< Default max times to retxmit.\r
+#define TCP_KEEPALIVE_IDLE_MIN  (TCP_TICK_HZ * 60 * 60 * 2)  ///< First keepalive.\r
+#define TCP_KEEPALIVE_PERIOD    (TCP_TICK_HZ * 60)\r
+#define TCP_MAX_KEEPALIVE       8\r
+#define TCP_FIN_WAIT2_TIME      (2 * TCP_TICK_HZ)\r
+#define TCP_TIME_WAIT_TIME      (2 * TCP_TICK_HZ)\r
+#define TCP_PAWS_24DAY          (24 * 24 * 60 * 60 * TCP_TICK_HZ)\r
+#define TCP_CONNECT_TIME        (75 * TCP_TICK_HZ)\r
 \r
 //\r
 // The header space to be reserved before TCP data to accommodate:\r
 // 60byte IP head + 60byte TCP head + link layer head\r
 //\r
-#define TCP_MAX_HEAD             192\r
+#define TCP_MAX_HEAD  192\r
 \r
 //\r
 // Value ranges for some control option\r
 //\r
-#define TCP_RCV_BUF_SIZE         (2 * 1024 * 1024)\r
-#define TCP_RCV_BUF_SIZE_MIN     (8 * 1024)\r
-#define TCP_SND_BUF_SIZE         (2 * 1024 * 1024)\r
-#define TCP_SND_BUF_SIZE_MIN     (8 * 1024)\r
-#define TCP_BACKLOG              10\r
-#define TCP_BACKLOG_MIN          5\r
-#define TCP_MAX_LOSS_MIN         6\r
-#define TCP_CONNECT_TIME_MIN     (60 * TCP_TICK_HZ)\r
-#define TCP_MAX_KEEPALIVE_MIN    4\r
-#define TCP_KEEPALIVE_IDLE_MAX   (TCP_TICK_HZ * 60 * 60 * 4)\r
-#define TCP_KEEPALIVE_PERIOD_MIN (TCP_TICK_HZ * 30)\r
-#define TCP_FIN_WAIT2_TIME_MAX   (4 * TCP_TICK_HZ)\r
-#define TCP_TIME_WAIT_TIME_MAX   (60 * TCP_TICK_HZ)\r
+#define TCP_RCV_BUF_SIZE          (2 * 1024 * 1024)\r
+#define TCP_RCV_BUF_SIZE_MIN      (8 * 1024)\r
+#define TCP_SND_BUF_SIZE          (2 * 1024 * 1024)\r
+#define TCP_SND_BUF_SIZE_MIN      (8 * 1024)\r
+#define TCP_BACKLOG               10\r
+#define TCP_BACKLOG_MIN           5\r
+#define TCP_MAX_LOSS_MIN          6\r
+#define TCP_CONNECT_TIME_MIN      (60 * TCP_TICK_HZ)\r
+#define TCP_MAX_KEEPALIVE_MIN     4\r
+#define TCP_KEEPALIVE_IDLE_MAX    (TCP_TICK_HZ * 60 * 60 * 4)\r
+#define TCP_KEEPALIVE_PERIOD_MIN  (TCP_TICK_HZ * 30)\r
+#define TCP_FIN_WAIT2_TIME_MAX    (4 * TCP_TICK_HZ)\r
+#define TCP_TIME_WAIT_TIME_MAX    (60 * TCP_TICK_HZ)\r
 \r
 ///\r
 /// TCP_CONNECTED: both ends have synchronized their ISN.\r
 ///\r
-#define TCP_CONNECTED(state)     ((state) > TCP_SYN_RCVD)\r
+#define TCP_CONNECTED(state)  ((state) > TCP_SYN_RCVD)\r
 \r
 #define TCP_FIN_RCVD(State) \\r
   ( \\r
 //\r
 // Get the TCP_SEG point from a net buffer's ProtoData.\r
 //\r
-#define TCPSEG_NETBUF(NBuf)     ((TCP_SEG *) ((NBuf)->ProtoData))\r
+#define TCPSEG_NETBUF(NBuf)  ((TCP_SEG *) ((NBuf)->ProtoData))\r
 \r
 //\r
 // Macros to compare sequence no\r
 //\r
-#define TCP_SEQ_LT(SeqA, SeqB)  ((INT32) ((SeqA) - (SeqB)) < 0)\r
-#define TCP_SEQ_LEQ(SeqA, SeqB) ((INT32) ((SeqA) - (SeqB)) <= 0)\r
-#define TCP_SEQ_GT(SeqA, SeqB)  ((INT32) ((SeqB) - (SeqA)) < 0)\r
-#define TCP_SEQ_GEQ(SeqA, SeqB) ((INT32) ((SeqB) - (SeqA)) <= 0)\r
+#define TCP_SEQ_LT(SeqA, SeqB)   ((INT32) ((SeqA) - (SeqB)) < 0)\r
+#define TCP_SEQ_LEQ(SeqA, SeqB)  ((INT32) ((SeqA) - (SeqB)) <= 0)\r
+#define TCP_SEQ_GT(SeqA, SeqB)   ((INT32) ((SeqB) - (SeqA)) < 0)\r
+#define TCP_SEQ_GEQ(SeqA, SeqB)  ((INT32) ((SeqB) - (SeqA)) <= 0)\r
 \r
 //\r
 // TCP_SEQ_BETWEEN return whether b <= m <= e\r
 //\r
-#define TCP_SEQ_BETWEEN(b, m, e)    ((e) - (b) >= (m) - (b))\r
+#define TCP_SEQ_BETWEEN(b, m, e)  ((e) - (b) >= (m) - (b))\r
 \r
 //\r
 // TCP_SUB_SEQ returns Seq1 - Seq2. Make sure Seq1 >= Seq2\r
 //\r
-#define TCP_SUB_SEQ(Seq1, Seq2)     ((UINT32) ((Seq1) - (Seq2)))\r
+#define TCP_SUB_SEQ(Seq1, Seq2)  ((UINT32) ((Seq1) - (Seq2)))\r
 \r
 //\r
 // Check whether Flag is on\r
 //\r
-#define TCP_FLG_ON(Value, Flag)     ((BOOLEAN) (((Value) & (Flag)) != 0))\r
+#define TCP_FLG_ON(Value, Flag)  ((BOOLEAN) (((Value) & (Flag)) != 0))\r
 //\r
 // Set and Clear operation on a Flag\r
 //\r
 #define TCP_SET_TIMER(Flag, Timer)    ((Flag) = (UINT16) ((Flag) | (1 << (Timer))))\r
 #define TCP_CLEAR_TIMER(Flag, Timer)  ((Flag) = (UINT16) ((Flag) & (~(1 << (Timer)))))\r
 \r
+#define TCP_TIME_LT(Ta, Tb)   ((INT32) ((Ta) - (Tb)) < 0)\r
+#define TCP_TIME_LEQ(Ta, Tb)  ((INT32) ((Ta) - (Tb)) <= 0)\r
+#define TCP_SUB_TIME(Ta, Tb)  ((UINT32) ((Ta) - (Tb)))\r
 \r
-#define TCP_TIME_LT(Ta, Tb)           ((INT32) ((Ta) - (Tb)) < 0)\r
-#define TCP_TIME_LEQ(Ta, Tb)          ((INT32) ((Ta) - (Tb)) <= 0)\r
-#define TCP_SUB_TIME(Ta, Tb)          ((UINT32) ((Ta) - (Tb)))\r
-\r
-#define TCP_MAX_WIN                   0xFFFFU\r
+#define TCP_MAX_WIN  0xFFFFU\r
 \r
 ///\r
 /// TCP segmentation data.\r
 ///\r
 typedef struct _TCP_SEG {\r
-  TCP_SEQNO Seq;  ///< Starting sequence number.\r
-  TCP_SEQNO End;  ///< The sequence of the last byte + 1, include SYN/FIN. End-Seq = SEG.LEN.\r
-  TCP_SEQNO Ack;  ///< ACK field in the segment.\r
-  UINT8     Flag; ///< TCP header flags.\r
-  UINT16    Urg;  ///< Valid if URG flag is set.\r
-  UINT32    Wnd;  ///< TCP window size field.\r
+  TCP_SEQNO    Seq;  ///< Starting sequence number.\r
+  TCP_SEQNO    End;  ///< The sequence of the last byte + 1, include SYN/FIN. End-Seq = SEG.LEN.\r
+  TCP_SEQNO    Ack;  ///< ACK field in the segment.\r
+  UINT8        Flag; ///< TCP header flags.\r
+  UINT16       Urg;  ///< Valid if URG flag is set.\r
+  UINT32       Wnd;  ///< TCP window size field.\r
 } TCP_SEG;\r
 \r
 ///\r
 /// Network endpoint, IP plus Port structure.\r
 ///\r
 typedef struct _TCP_PEER {\r
-  EFI_IP_ADDRESS  Ip;     ///< IP address, in network byte order.\r
-  TCP_PORTNO      Port;   ///< Port number, in network byte order.\r
+  EFI_IP_ADDRESS    Ip;   ///< IP address, in network byte order.\r
+  TCP_PORTNO        Port; ///< Port number, in network byte order.\r
 } TCP_PEER;\r
 \r
-typedef struct _TCP_CONTROL_BLOCK  TCP_CB;\r
+typedef struct _TCP_CONTROL_BLOCK TCP_CB;\r
 \r
 ///\r
 /// TCP control block: it includes various states.\r
 ///\r
 struct _TCP_CONTROL_BLOCK {\r
-  LIST_ENTRY        List;     ///< Back and forward link entry\r
-  TCP_CB            *Parent;  ///< The parent TCP_CB structure\r
+  LIST_ENTRY          List;    ///< Back and forward link entry\r
+  TCP_CB              *Parent; ///< The parent TCP_CB structure\r
 \r
-  SOCKET            *Sk;      ///< The socket it controlled.\r
-  TCP_PEER          LocalEnd; ///< Local endpoint.\r
-  TCP_PEER          RemoteEnd;///< Remote endpoint.\r
+  SOCKET              *Sk;       ///< The socket it controlled.\r
+  TCP_PEER            LocalEnd;  ///< Local endpoint.\r
+  TCP_PEER            RemoteEnd; ///< Remote endpoint.\r
 \r
-  LIST_ENTRY        SndQue;   ///< Retxmission queue.\r
-  LIST_ENTRY        RcvQue;   ///< Reassemble queue.\r
-  UINT32            CtrlFlag; ///< Control flags, such as NO_NAGLE.\r
-  INT32             Error;    ///< Soft error status, such as TCP_CONNECT_RESET.\r
+  LIST_ENTRY          SndQue;   ///< Retxmission queue.\r
+  LIST_ENTRY          RcvQue;   ///< Reassemble queue.\r
+  UINT32              CtrlFlag; ///< Control flags, such as NO_NAGLE.\r
+  INT32               Error;    ///< Soft error status, such as TCP_CONNECT_RESET.\r
 \r
   //\r
   // RFC793 and RFC1122 defined variables\r
   //\r
-  UINT8             State;      ///< TCP state, such as SYN_SENT, LISTEN.\r
-  UINT8             DelayedAck; ///< Number of delayed ACKs.\r
-  UINT16            HeadSum;    ///< Checksum of the fixed parts of pesudo\r
-                                ///< header: Src IP, Dst IP, 0, Protocol,\r
-                                ///< do not include the TCP length.\r
-\r
-  TCP_SEQNO         Iss;        ///< Initial Sending Sequence.\r
-  TCP_SEQNO         SndUna;     ///< First unacknowledged data.\r
-  TCP_SEQNO         SndNxt;     ///< Next data sequence to send.\r
-  TCP_SEQNO         SndPsh;     ///< Send PUSH point.\r
-  TCP_SEQNO         SndUp;      ///< Send urgent point.\r
-  UINT32            SndWnd;     ///< Window advertised by the remote peer.\r
-  UINT32            SndWndMax;  ///< Max send window advertised by the peer.\r
-  TCP_SEQNO         SndWl1;     ///< Seq number used for last window update.\r
-  TCP_SEQNO         SndWl2;     ///< Ack no of last window update.\r
-  UINT16            SndMss;     ///< Max send segment size.\r
-  TCP_SEQNO         RcvNxt;     ///< Next sequence no to receive.\r
-  UINT32            RcvWnd;     ///< Window advertised by the local peer.\r
-  TCP_SEQNO         RcvWl2;     ///< The RcvNxt (or ACK) of last window update.\r
-                                ///< It is necessary because of delayed ACK.\r
-\r
-  TCP_SEQNO         RcvUp;                   ///< Urgent point;\r
-  TCP_SEQNO         Irs;                     ///< Initial Receiving Sequence.\r
-  UINT16            RcvMss;                  ///< Max receive segment size.\r
-  UINT16            EnabledTimer;            ///< Which timer is currently enabled.\r
-  UINT32            Timer[TCP_TIMER_NUMBER]; ///< When the timer will expire.\r
-  INT32             NextExpire;  ///< Countdown offset for the nearest timer.\r
-  UINT32            Idle;        ///< How long the connection is in idle.\r
-  UINT32            ProbeTime;   ///< The time out value for current window prober.\r
-  BOOLEAN           ProbeTimerOn;///< If TRUE, the probe time is on.\r
+  UINT8               State;      ///< TCP state, such as SYN_SENT, LISTEN.\r
+  UINT8               DelayedAck; ///< Number of delayed ACKs.\r
+  UINT16              HeadSum;    ///< Checksum of the fixed parts of pesudo\r
+                                  ///< header: Src IP, Dst IP, 0, Protocol,\r
+                                  ///< do not include the TCP length.\r
+\r
+  TCP_SEQNO           Iss;       ///< Initial Sending Sequence.\r
+  TCP_SEQNO           SndUna;    ///< First unacknowledged data.\r
+  TCP_SEQNO           SndNxt;    ///< Next data sequence to send.\r
+  TCP_SEQNO           SndPsh;    ///< Send PUSH point.\r
+  TCP_SEQNO           SndUp;     ///< Send urgent point.\r
+  UINT32              SndWnd;    ///< Window advertised by the remote peer.\r
+  UINT32              SndWndMax; ///< Max send window advertised by the peer.\r
+  TCP_SEQNO           SndWl1;    ///< Seq number used for last window update.\r
+  TCP_SEQNO           SndWl2;    ///< Ack no of last window update.\r
+  UINT16              SndMss;    ///< Max send segment size.\r
+  TCP_SEQNO           RcvNxt;    ///< Next sequence no to receive.\r
+  UINT32              RcvWnd;    ///< Window advertised by the local peer.\r
+  TCP_SEQNO           RcvWl2;    ///< The RcvNxt (or ACK) of last window update.\r
+                                 ///< It is necessary because of delayed ACK.\r
+\r
+  TCP_SEQNO           RcvUp;                   ///< Urgent point;\r
+  TCP_SEQNO           Irs;                     ///< Initial Receiving Sequence.\r
+  UINT16              RcvMss;                  ///< Max receive segment size.\r
+  UINT16              EnabledTimer;            ///< Which timer is currently enabled.\r
+  UINT32              Timer[TCP_TIMER_NUMBER]; ///< When the timer will expire.\r
+  INT32               NextExpire;              ///< Countdown offset for the nearest timer.\r
+  UINT32              Idle;                    ///< How long the connection is in idle.\r
+  UINT32              ProbeTime;               ///< The time out value for current window prober.\r
+  BOOLEAN             ProbeTimerOn;            ///< If TRUE, the probe time is on.\r
 \r
   //\r
   // RFC1323 defined variables, about window scale,\r
   // timestamp and PAWS\r
   //\r
-  UINT8             SndWndScale;  ///< Wndscale received from the peer.\r
-  UINT8             RcvWndScale;  ///< Wndscale used to scale local buffer.\r
-  UINT32            TsRecent;     ///< TsRecent to echo to the remote peer.\r
-  UINT32            TsRecentAge;  ///< When this TsRecent is updated.\r
+  UINT8               SndWndScale; ///< Wndscale received from the peer.\r
+  UINT8               RcvWndScale; ///< Wndscale used to scale local buffer.\r
+  UINT32              TsRecent;    ///< TsRecent to echo to the remote peer.\r
+  UINT32              TsRecentAge; ///< When this TsRecent is updated.\r
 \r
   //\r
   // RFC2988 defined variables. about RTT measurement\r
   //\r
-  TCP_SEQNO         RttSeq;     ///< The seq of measured segment now.\r
-  UINT32            RttMeasure; ///< Currently measured RTT in heartbeats.\r
-  UINT32            SRtt;       ///< Smoothed RTT, scaled by 8.\r
-  UINT32            RttVar;     ///< RTT variance, scaled by 8.\r
-  UINT32            Rto;        ///< Current RTO, not scaled.\r
+  TCP_SEQNO           RttSeq;     ///< The seq of measured segment now.\r
+  UINT32              RttMeasure; ///< Currently measured RTT in heartbeats.\r
+  UINT32              SRtt;       ///< Smoothed RTT, scaled by 8.\r
+  UINT32              RttVar;     ///< RTT variance, scaled by 8.\r
+  UINT32              Rto;        ///< Current RTO, not scaled.\r
 \r
   //\r
   // RFC2581, and 3782 variables.\r
   // Congestion control + NewReno fast recovery.\r
   //\r
-  UINT32            CWnd;         ///< Sender's congestion window.\r
-  UINT32            Ssthresh;     ///< Slow start threshold.\r
-  TCP_SEQNO         Recover;      ///< Recover point for NewReno.\r
-  UINT16            DupAck;       ///< Number of duplicate ACKs.\r
-  UINT8             CongestState; ///< The current congestion state(RFC3782).\r
-  UINT8             LossTimes;    ///< Number of retxmit timeouts in a row.\r
-  TCP_SEQNO         LossRecover;  ///< Recover point for retxmit.\r
+  UINT32              CWnd;         ///< Sender's congestion window.\r
+  UINT32              Ssthresh;     ///< Slow start threshold.\r
+  TCP_SEQNO           Recover;      ///< Recover point for NewReno.\r
+  UINT16              DupAck;       ///< Number of duplicate ACKs.\r
+  UINT8               CongestState; ///< The current congestion state(RFC3782).\r
+  UINT8               LossTimes;    ///< Number of retxmit timeouts in a row.\r
+  TCP_SEQNO           LossRecover;  ///< Recover point for retxmit.\r
 \r
   //\r
   // RFC7323\r
   // Addressing Window Retraction for TCP Window Scale Option.\r
   //\r
-  TCP_SEQNO         RetxmitSeqMax;       ///< Max Seq number in previous retransmission.\r
+  TCP_SEQNO           RetxmitSeqMax;     ///< Max Seq number in previous retransmission.\r
 \r
   //\r
   // configuration parameters, for EFI_TCP4_PROTOCOL specification\r
   //\r
-  UINT32            KeepAliveIdle;   ///< Idle time before sending first probe.\r
-  UINT32            KeepAlivePeriod; ///< Interval for subsequent keep alive probe.\r
-  UINT8             MaxKeepAlive;    ///< Maximum keep alive probe times.\r
-  UINT8             KeepAliveProbes; ///< The number of keep alive probe.\r
-  UINT16            MaxRexmit;       ///< The maximum number of retxmit before abort.\r
-  UINT32            FinWait2Timeout; ///< The FIN_WAIT_2 timeout.\r
-  UINT32            TimeWaitTimeout; ///< The TIME_WAIT timeout.\r
-  UINT32            ConnectTimeout;  ///< The connect establishment timeout.\r
+  UINT32              KeepAliveIdle;   ///< Idle time before sending first probe.\r
+  UINT32              KeepAlivePeriod; ///< Interval for subsequent keep alive probe.\r
+  UINT8               MaxKeepAlive;    ///< Maximum keep alive probe times.\r
+  UINT8               KeepAliveProbes; ///< The number of keep alive probe.\r
+  UINT16              MaxRexmit;       ///< The maximum number of retxmit before abort.\r
+  UINT32              FinWait2Timeout; ///< The FIN_WAIT_2 timeout.\r
+  UINT32              TimeWaitTimeout; ///< The TIME_WAIT timeout.\r
+  UINT32              ConnectTimeout;  ///< The connect establishment timeout.\r
 \r
   //\r
   // configuration for tcp provided by user\r
   //\r
-  BOOLEAN           UseDefaultAddr;\r
-  UINT8             Tos;\r
-  UINT8             Ttl;\r
-  EFI_IPv4_ADDRESS  SubnetMask;\r
-\r
-\r
-  BOOLEAN           RemoteIpZero;   ///< RemoteEnd.Ip is ZERO when configured.\r
-  IP_IO_IP_INFO     *IpInfo;        ///< Pointer reference to Ip used to send pkt\r
-  UINT32            Tick;           ///< 1 tick = 200ms\r
+  BOOLEAN             UseDefaultAddr;\r
+  UINT8               Tos;\r
+  UINT8               Ttl;\r
+  EFI_IPv4_ADDRESS    SubnetMask;\r
+\r
+  BOOLEAN             RemoteIpZero; ///< RemoteEnd.Ip is ZERO when configured.\r
+  IP_IO_IP_INFO       *IpInfo;      ///< Pointer reference to Ip used to send pkt\r
+  UINT32              Tick;         ///< 1 tick = 200ms\r
 };\r
 \r
 #endif\r