VirtualBox

Ignore:
Timestamp:
Apr 14, 2023 3:17:44 PM (22 months ago)
Author:
vboxsync
Message:

Devices/EFI/FirmwareNew: Update to edk2-stable202302 and make it build, bugref:4643

Location:
trunk/src/VBox/Devices/EFI/FirmwareNew
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/EFI/FirmwareNew

  • trunk/src/VBox/Devices/EFI/FirmwareNew/NetworkPkg/TcpDxe/TcpProto.h

    r85718 r99404  
    2727#define TCP_LAST_ACK     10
    2828
    29 
    3029///
    3130/// Flags in the TCP header
    3231///
    33 #define TCP_FLG_FIN      0x01
    34 #define TCP_FLG_SYN      0x02
    35 #define TCP_FLG_RST      0x04
    36 #define TCP_FLG_PSH      0x08
    37 #define TCP_FLG_ACK      0x10
    38 #define TCP_FLG_URG      0x20
    39 
    40  //
    41  // mask for all the flags
    42  //
    43 #define TCP_FLG_FLAG     0x3F
    44 
    45 
    46 #define TCP_CONNECT_REFUSED      (-1) ///< TCP error status
    47 #define TCP_CONNECT_RESET        (-2) ///< TCP error status
    48 #define TCP_CONNECT_CLOSED       (-3) ///< TCP error status
     32#define TCP_FLG_FIN  0x01
     33#define TCP_FLG_SYN  0x02
     34#define TCP_FLG_RST  0x04
     35#define TCP_FLG_PSH  0x08
     36#define TCP_FLG_ACK  0x10
     37#define TCP_FLG_URG  0x20
     38
     39//
     40// mask for all the flags
     41//
     42#define TCP_FLG_FLAG  0x3F
     43
     44#define TCP_CONNECT_REFUSED  (-1)     ///< TCP error status
     45#define TCP_CONNECT_RESET    (-2)     ///< TCP error status
     46#define TCP_CONNECT_CLOSED   (-3)     ///< TCP error status
    4947
    5048//
    5149// Current congestion status as suggested by RFC3782.
    5250//
    53 #define TCP_CONGEST_RECOVER      1  ///< During the NewReno fast recovery.
    54 #define TCP_CONGEST_LOSS         2  ///< Retxmit because of retxmit time out.
    55 #define TCP_CONGEST_OPEN         3  ///< TCP is opening its congestion window.
     51#define TCP_CONGEST_RECOVER  1      ///< During the NewReno fast recovery.
     52#define TCP_CONGEST_LOSS     2      ///< Retxmit because of retxmit time out.
     53#define TCP_CONGEST_OPEN     3      ///< TCP is opening its congestion window.
    5654
    5755//
    5856// TCP control flags
    5957//
    60 #define TCP_CTRL_NO_NAGLE        0x0001 ///< Disable Nagle algorithm
    61 #define TCP_CTRL_NO_KEEPALIVE    0x0002 ///< Disable keepalive timer.
    62 #define TCP_CTRL_NO_WS           0x0004 ///< Disable window scale option.
    63 #define TCP_CTRL_RCVD_WS         0x0008 ///< Received a wnd scale option in syn.
    64 #define TCP_CTRL_NO_TS           0x0010 ///< Disable Timestamp option.
    65 #define TCP_CTRL_RCVD_TS         0x0020 ///< Received a Timestamp option in syn.
    66 #define TCP_CTRL_SND_TS          0x0040 ///< Send Timestamp option to remote.
    67 #define TCP_CTRL_SND_URG         0x0080 ///< In urgent send mode.
    68 #define TCP_CTRL_RCVD_URG        0x0100 ///< In urgent receive mode.
    69 #define TCP_CTRL_SND_PSH         0x0200 ///< In PUSH send mode.
    70 #define TCP_CTRL_FIN_SENT        0x0400 ///< FIN is sent.
    71 #define TCP_CTRL_FIN_ACKED       0x0800 ///< FIN is ACKed.
    72 #define TCP_CTRL_TIMER_ON        0x1000 ///< At least one of the timer is on.
    73 #define TCP_CTRL_RTT_ON          0x2000 ///< The RTT measurement is on.
    74 #define TCP_CTRL_ACK_NOW         0x4000 ///< Send the ACK now, don't delay.
     58#define TCP_CTRL_NO_NAGLE      0x0001  ///< Disable Nagle algorithm
     59#define TCP_CTRL_NO_KEEPALIVE  0x0002  ///< Disable keepalive timer.
     60#define TCP_CTRL_NO_WS         0x0004  ///< Disable window scale option.
     61#define TCP_CTRL_RCVD_WS       0x0008  ///< Received a wnd scale option in syn.
     62#define TCP_CTRL_NO_TS         0x0010  ///< Disable Timestamp option.
     63#define TCP_CTRL_RCVD_TS       0x0020  ///< Received a Timestamp option in syn.
     64#define TCP_CTRL_SND_TS        0x0040  ///< Send Timestamp option to remote.
     65#define TCP_CTRL_SND_URG       0x0080  ///< In urgent send mode.
     66#define TCP_CTRL_RCVD_URG      0x0100  ///< In urgent receive mode.
     67#define TCP_CTRL_SND_PSH       0x0200  ///< In PUSH send mode.
     68#define TCP_CTRL_FIN_SENT      0x0400  ///< FIN is sent.
     69#define TCP_CTRL_FIN_ACKED     0x0800  ///< FIN is ACKed.
     70#define TCP_CTRL_TIMER_ON      0x1000  ///< At least one of the timer is on.
     71#define TCP_CTRL_RTT_ON        0x2000  ///< The RTT measurement is on.
     72#define TCP_CTRL_ACK_NOW       0x4000  ///< Send the ACK now, don't delay.
    7573
    7674//
    7775// Timer related values
    7876//
    79 #define TCP_TIMER_CONNECT        0                  ///< Connection establishment timer.
    80 #define TCP_TIMER_REXMIT         1                  ///< Retransmit timer.
    81 #define TCP_TIMER_PROBE          2                  ///< Window probe timer.
    82 #define TCP_TIMER_KEEPALIVE      3                  ///< Keepalive timer.
    83 #define TCP_TIMER_FINWAIT2       4                  ///< FIN_WAIT_2 timer.
    84 #define TCP_TIMER_2MSL           5                  ///< TIME_WAIT timer.
    85 #define TCP_TIMER_NUMBER         6                  ///< The total number of the TCP timer.
    86 #define TCP_TICK                 200                ///< Every TCP tick is 200ms.
    87 #define TCP_TICK_HZ              5                  ///< The frequence of TCP tick.
    88 #define TCP_RTT_SHIFT            3                  ///< SRTT & RTTVAR scaled by 8.
    89 #define TCP_RTO_MIN              TCP_TICK_HZ        ///< The minimum value of RTO.
    90 #define TCP_RTO_MAX              (TCP_TICK_HZ * 60) ///< The maximum value of RTO.
    91 #define TCP_FOLD_RTT             4                  ///< Timeout threshold to fold RTT.
     77#define TCP_TIMER_CONNECT    0                      ///< Connection establishment timer.
     78#define TCP_TIMER_REXMIT     1                      ///< Retransmit timer.
     79#define TCP_TIMER_PROBE      2                      ///< Window probe timer.
     80#define TCP_TIMER_KEEPALIVE  3                      ///< Keepalive timer.
     81#define TCP_TIMER_FINWAIT2   4                      ///< FIN_WAIT_2 timer.
     82#define TCP_TIMER_2MSL       5                      ///< TIME_WAIT timer.
     83#define TCP_TIMER_NUMBER     6                      ///< The total number of the TCP timer.
     84#define TCP_TICK             200                    ///< Every TCP tick is 200ms.
     85#define TCP_TICK_HZ          5                      ///< The frequence of TCP tick.
     86#define TCP_RTT_SHIFT        3                      ///< SRTT & RTTVAR scaled by 8.
     87#define TCP_RTO_MIN          TCP_TICK_HZ            ///< The minimum value of RTO.
     88#define TCP_RTO_MAX          (TCP_TICK_HZ * 60)    ///< The maximum value of RTO.
     89#define TCP_FOLD_RTT         4                      ///< Timeout threshold to fold RTT.
    9290
    9391//
    9492// Default values for some timers
    9593//
    96 #define TCP_MAX_LOSS             12                          ///< Default max times to retxmit.
    97 #define TCP_KEEPALIVE_IDLE_MIN   (TCP_TICK_HZ * 60 * 60 * 2) ///< First keepalive.
    98 #define TCP_KEEPALIVE_PERIOD     (TCP_TICK_HZ * 60)
    99 #define TCP_MAX_KEEPALIVE        8
    100 #define TCP_FIN_WAIT2_TIME       (2 * TCP_TICK_HZ)
    101 #define TCP_TIME_WAIT_TIME       (2 * TCP_TICK_HZ)
    102 #define TCP_PAWS_24DAY           (24 * 24 * 60 * 60 * TCP_TICK_HZ)
    103 #define TCP_CONNECT_TIME         (75 * TCP_TICK_HZ)
     94#define TCP_MAX_LOSS            12                           ///< Default max times to retxmit.
     95#define TCP_KEEPALIVE_IDLE_MIN  (TCP_TICK_HZ * 60 * 60 * 2) ///< First keepalive.
     96#define TCP_KEEPALIVE_PERIOD    (TCP_TICK_HZ * 60)
     97#define TCP_MAX_KEEPALIVE       8
     98#define TCP_FIN_WAIT2_TIME      (2 * TCP_TICK_HZ)
     99#define TCP_TIME_WAIT_TIME      (2 * TCP_TICK_HZ)
     100#define TCP_PAWS_24DAY          (24 * 24 * 60 * 60 * TCP_TICK_HZ)
     101#define TCP_CONNECT_TIME        (75 * TCP_TICK_HZ)
    104102
    105103//
     
    107105// 60byte IP head + 60byte TCP head + link layer head
    108106//
    109 #define TCP_MAX_HEAD             192
     107#define TCP_MAX_HEAD  192
    110108
    111109//
    112110// Value ranges for some control option
    113111//
    114 #define TCP_RCV_BUF_SIZE         (2 * 1024 * 1024)
    115 #define TCP_RCV_BUF_SIZE_MIN     (8 * 1024)
    116 #define TCP_SND_BUF_SIZE         (2 * 1024 * 1024)
    117 #define TCP_SND_BUF_SIZE_MIN     (8 * 1024)
    118 #define TCP_BACKLOG              10
    119 #define TCP_BACKLOG_MIN          5
    120 #define TCP_MAX_LOSS_MIN         6
    121 #define TCP_CONNECT_TIME_MIN     (60 * TCP_TICK_HZ)
    122 #define TCP_MAX_KEEPALIVE_MIN    4
    123 #define TCP_KEEPALIVE_IDLE_MAX   (TCP_TICK_HZ * 60 * 60 * 4)
    124 #define TCP_KEEPALIVE_PERIOD_MIN (TCP_TICK_HZ * 30)
    125 #define TCP_FIN_WAIT2_TIME_MAX   (4 * TCP_TICK_HZ)
    126 #define TCP_TIME_WAIT_TIME_MAX   (60 * TCP_TICK_HZ)
     112#define TCP_RCV_BUF_SIZE          (2 * 1024 * 1024)
     113#define TCP_RCV_BUF_SIZE_MIN      (8 * 1024)
     114#define TCP_SND_BUF_SIZE          (2 * 1024 * 1024)
     115#define TCP_SND_BUF_SIZE_MIN      (8 * 1024)
     116#define TCP_BACKLOG               10
     117#define TCP_BACKLOG_MIN           5
     118#define TCP_MAX_LOSS_MIN          6
     119#define TCP_CONNECT_TIME_MIN      (60 * TCP_TICK_HZ)
     120#define TCP_MAX_KEEPALIVE_MIN     4
     121#define TCP_KEEPALIVE_IDLE_MAX    (TCP_TICK_HZ * 60 * 60 * 4)
     122#define TCP_KEEPALIVE_PERIOD_MIN  (TCP_TICK_HZ * 30)
     123#define TCP_FIN_WAIT2_TIME_MAX    (4 * TCP_TICK_HZ)
     124#define TCP_TIME_WAIT_TIME_MAX    (60 * TCP_TICK_HZ)
    127125
    128126///
    129127/// TCP_CONNECTED: both ends have synchronized their ISN.
    130128///
    131 #define TCP_CONNECTED(state)     ((state) > TCP_SYN_RCVD)
     129#define TCP_CONNECTED(state)  ((state) > TCP_SYN_RCVD)
    132130
    133131#define TCP_FIN_RCVD(State) \
     
    151149// Get the TCP_SEG point from a net buffer's ProtoData.
    152150//
    153 #define TCPSEG_NETBUF(NBuf)     ((TCP_SEG *) ((NBuf)->ProtoData))
     151#define TCPSEG_NETBUF(NBuf)  ((TCP_SEG *) ((NBuf)->ProtoData))
    154152
    155153//
    156154// Macros to compare sequence no
    157155//
    158 #define TCP_SEQ_LT(SeqA, SeqB)  ((INT32) ((SeqA) - (SeqB)) < 0)
    159 #define TCP_SEQ_LEQ(SeqA, SeqB) ((INT32) ((SeqA) - (SeqB)) <= 0)
    160 #define TCP_SEQ_GT(SeqA, SeqB)  ((INT32) ((SeqB) - (SeqA)) < 0)
    161 #define TCP_SEQ_GEQ(SeqA, SeqB) ((INT32) ((SeqB) - (SeqA)) <= 0)
     156#define TCP_SEQ_LT(SeqA, SeqB)   ((INT32) ((SeqA) - (SeqB)) < 0)
     157#define TCP_SEQ_LEQ(SeqA, SeqB)  ((INT32) ((SeqA) - (SeqB)) <= 0)
     158#define TCP_SEQ_GT(SeqA, SeqB)   ((INT32) ((SeqB) - (SeqA)) < 0)
     159#define TCP_SEQ_GEQ(SeqA, SeqB)  ((INT32) ((SeqB) - (SeqA)) <= 0)
    162160
    163161//
    164162// TCP_SEQ_BETWEEN return whether b <= m <= e
    165163//
    166 #define TCP_SEQ_BETWEEN(b, m, e)    ((e) - (b) >= (m) - (b))
     164#define TCP_SEQ_BETWEEN(b, m, e)  ((e) - (b) >= (m) - (b))
    167165
    168166//
    169167// TCP_SUB_SEQ returns Seq1 - Seq2. Make sure Seq1 >= Seq2
    170168//
    171 #define TCP_SUB_SEQ(Seq1, Seq2)     ((UINT32) ((Seq1) - (Seq2)))
     169#define TCP_SUB_SEQ(Seq1, Seq2)  ((UINT32) ((Seq1) - (Seq2)))
    172170
    173171//
    174172// Check whether Flag is on
    175173//
    176 #define TCP_FLG_ON(Value, Flag)     ((BOOLEAN) (((Value) & (Flag)) != 0))
     174#define TCP_FLG_ON(Value, Flag)  ((BOOLEAN) (((Value) & (Flag)) != 0))
    177175//
    178176// Set and Clear operation on a Flag
     
    201199#define TCP_CLEAR_TIMER(Flag, Timer)  ((Flag) = (UINT16) ((Flag) & (~(1 << (Timer)))))
    202200
    203 
    204 #define TCP_TIME_LT(Ta, Tb)           ((INT32) ((Ta) - (Tb)) < 0)
    205 #define TCP_TIME_LEQ(Ta, Tb)          ((INT32) ((Ta) - (Tb)) <= 0)
    206 #define TCP_SUB_TIME(Ta, Tb)          ((UINT32) ((Ta) - (Tb)))
    207 
    208 #define TCP_MAX_WIN                   0xFFFFU
     201#define TCP_TIME_LT(Ta, Tb)   ((INT32) ((Ta) - (Tb)) < 0)
     202#define TCP_TIME_LEQ(Ta, Tb)  ((INT32) ((Ta) - (Tb)) <= 0)
     203#define TCP_SUB_TIME(Ta, Tb)  ((UINT32) ((Ta) - (Tb)))
     204
     205#define TCP_MAX_WIN  0xFFFFU
    209206
    210207///
     
    212209///
    213210typedef struct _TCP_SEG {
    214   TCP_SEQNO Seq;  ///< Starting sequence number.
    215   TCP_SEQNO End;  ///< The sequence of the last byte + 1, include SYN/FIN. End-Seq = SEG.LEN.
    216   TCP_SEQNO Ack;  ///< ACK field in the segment.
    217   UINT8     Flag; ///< TCP header flags.
    218   UINT16    Urg;  ///< Valid if URG flag is set.
    219   UINT32    Wnd;  ///< TCP window size field.
     211  TCP_SEQNO    Seq;  ///< Starting sequence number.
     212  TCP_SEQNO    End;  ///< The sequence of the last byte + 1, include SYN/FIN. End-Seq = SEG.LEN.
     213  TCP_SEQNO    Ack;  ///< ACK field in the segment.
     214  UINT8        Flag; ///< TCP header flags.
     215  UINT16       Urg;  ///< Valid if URG flag is set.
     216  UINT32       Wnd;  ///< TCP window size field.
    220217} TCP_SEG;
    221218
     
    224221///
    225222typedef struct _TCP_PEER {
    226   EFI_IP_ADDRESS  Ip;     ///< IP address, in network byte order.
    227   TCP_PORTNO      Port;  ///< Port number, in network byte order.
     223  EFI_IP_ADDRESS    Ip;   ///< IP address, in network byte order.
     224  TCP_PORTNO        Port; ///< Port number, in network byte order.
    228225} TCP_PEER;
    229226
    230 typedef struct _TCP_CONTROL_BLOCK  TCP_CB;
     227typedef struct _TCP_CONTROL_BLOCK TCP_CB;
    231228
    232229///
     
    234231///
    235232struct _TCP_CONTROL_BLOCK {
    236   LIST_ENTRY        List;     ///< Back and forward link entry
    237   TCP_CB            *Parent; ///< The parent TCP_CB structure
    238 
    239   SOCKET            *Sk;      ///< The socket it controlled.
    240   TCP_PEER          LocalEnd; ///< Local endpoint.
    241   TCP_PEER          RemoteEnd;///< Remote endpoint.
    242 
    243   LIST_ENTRY        SndQue;   ///< Retxmission queue.
    244   LIST_ENTRY        RcvQue;   ///< Reassemble queue.
    245   UINT32            CtrlFlag; ///< Control flags, such as NO_NAGLE.
    246   INT32             Error;    ///< Soft error status, such as TCP_CONNECT_RESET.
     233  LIST_ENTRY          List;    ///< Back and forward link entry
     234  TCP_CB              *Parent; ///< The parent TCP_CB structure
     235
     236  SOCKET              *Sk;       ///< The socket it controlled.
     237  TCP_PEER            LocalEnd; ///< Local endpoint.
     238  TCP_PEER            RemoteEnd; ///< Remote endpoint.
     239
     240  LIST_ENTRY          SndQue;   ///< Retxmission queue.
     241  LIST_ENTRY          RcvQue;   ///< Reassemble queue.
     242  UINT32              CtrlFlag; ///< Control flags, such as NO_NAGLE.
     243  INT32               Error;    ///< Soft error status, such as TCP_CONNECT_RESET.
    247244
    248245  //
    249246  // RFC793 and RFC1122 defined variables
    250247  //
    251   UINT8             State;      ///< TCP state, such as SYN_SENT, LISTEN.
    252   UINT8             DelayedAck; ///< Number of delayed ACKs.
    253   UINT16            HeadSum;    ///< Checksum of the fixed parts of pesudo
    254                                 ///< header: Src IP, Dst IP, 0, Protocol,
    255                                 ///< do not include the TCP length.
    256 
    257   TCP_SEQNO         Iss;        ///< Initial Sending Sequence.
    258   TCP_SEQNO         SndUna;     ///< First unacknowledged data.
    259   TCP_SEQNO         SndNxt;     ///< Next data sequence to send.
    260   TCP_SEQNO         SndPsh;     ///< Send PUSH point.
    261   TCP_SEQNO         SndUp;      ///< Send urgent point.
    262   UINT32            SndWnd;     ///< Window advertised by the remote peer.
    263   UINT32            SndWndMax; ///< Max send window advertised by the peer.
    264   TCP_SEQNO         SndWl1;     ///< Seq number used for last window update.
    265   TCP_SEQNO         SndWl2;     ///< Ack no of last window update.
    266   UINT16            SndMss;     ///< Max send segment size.
    267   TCP_SEQNO         RcvNxt;     ///< Next sequence no to receive.
    268   UINT32            RcvWnd;     ///< Window advertised by the local peer.
    269   TCP_SEQNO         RcvWl2;     ///< The RcvNxt (or ACK) of last window update.
    270                                 ///< It is necessary because of delayed ACK.
    271 
    272   TCP_SEQNO         RcvUp;                   ///< Urgent point;
    273   TCP_SEQNO         Irs;                     ///< Initial Receiving Sequence.
    274   UINT16            RcvMss;                  ///< Max receive segment size.
    275   UINT16            EnabledTimer;            ///< Which timer is currently enabled.
    276   UINT32            Timer[TCP_TIMER_NUMBER]; ///< When the timer will expire.
    277   INT32             NextExpire;  ///< Countdown offset for the nearest timer.
    278   UINT32            Idle;        ///< How long the connection is in idle.
    279   UINT32            ProbeTime;   ///< The time out value for current window prober.
    280   BOOLEAN           ProbeTimerOn;///< If TRUE, the probe time is on.
     248  UINT8               State;      ///< TCP state, such as SYN_SENT, LISTEN.
     249  UINT8               DelayedAck; ///< Number of delayed ACKs.
     250  UINT16              HeadSum;    ///< Checksum of the fixed parts of pesudo
     251                                  ///< header: Src IP, Dst IP, 0, Protocol,
     252                                  ///< do not include the TCP length.
     253
     254  TCP_SEQNO           Iss;       ///< Initial Sending Sequence.
     255  TCP_SEQNO           SndUna;    ///< First unacknowledged data.
     256  TCP_SEQNO           SndNxt;    ///< Next data sequence to send.
     257  TCP_SEQNO           SndPsh;    ///< Send PUSH point.
     258  TCP_SEQNO           SndUp;     ///< Send urgent point.
     259  UINT32              SndWnd;    ///< Window advertised by the remote peer.
     260  UINT32              SndWndMax; ///< Max send window advertised by the peer.
     261  TCP_SEQNO           SndWl1;    ///< Seq number used for last window update.
     262  TCP_SEQNO           SndWl2;    ///< Ack no of last window update.
     263  UINT16              SndMss;    ///< Max send segment size.
     264  TCP_SEQNO           RcvNxt;    ///< Next sequence no to receive.
     265  UINT32              RcvWnd;    ///< Window advertised by the local peer.
     266  TCP_SEQNO           RcvWl2;    ///< The RcvNxt (or ACK) of last window update.
     267                                 ///< It is necessary because of delayed ACK.
     268
     269  TCP_SEQNO           RcvUp;                   ///< Urgent point;
     270  TCP_SEQNO           Irs;                     ///< Initial Receiving Sequence.
     271  UINT16              RcvMss;                  ///< Max receive segment size.
     272  UINT16              EnabledTimer;            ///< Which timer is currently enabled.
     273  UINT32              Timer[TCP_TIMER_NUMBER]; ///< When the timer will expire.
     274  INT32               NextExpire;              ///< Countdown offset for the nearest timer.
     275  UINT32              Idle;                    ///< How long the connection is in idle.
     276  UINT32              ProbeTime;               ///< The time out value for current window prober.
     277  BOOLEAN             ProbeTimerOn;            ///< If TRUE, the probe time is on.
    281278
    282279  //
     
    284281  // timestamp and PAWS
    285282  //
    286   UINT8             SndWndScale; ///< Wndscale received from the peer.
    287   UINT8             RcvWndScale; ///< Wndscale used to scale local buffer.
    288   UINT32            TsRecent;     ///< TsRecent to echo to the remote peer.
    289   UINT32            TsRecentAge; ///< When this TsRecent is updated.
     283  UINT8               SndWndScale; ///< Wndscale received from the peer.
     284  UINT8               RcvWndScale; ///< Wndscale used to scale local buffer.
     285  UINT32              TsRecent;    ///< TsRecent to echo to the remote peer.
     286  UINT32              TsRecentAge; ///< When this TsRecent is updated.
    290287
    291288  //
    292289  // RFC2988 defined variables. about RTT measurement
    293290  //
    294   TCP_SEQNO         RttSeq;     ///< The seq of measured segment now.
    295   UINT32            RttMeasure; ///< Currently measured RTT in heartbeats.
    296   UINT32            SRtt;       ///< Smoothed RTT, scaled by 8.
    297   UINT32            RttVar;     ///< RTT variance, scaled by 8.
    298   UINT32            Rto;        ///< Current RTO, not scaled.
     291  TCP_SEQNO           RttSeq;     ///< The seq of measured segment now.
     292  UINT32              RttMeasure; ///< Currently measured RTT in heartbeats.
     293  UINT32              SRtt;       ///< Smoothed RTT, scaled by 8.
     294  UINT32              RttVar;     ///< RTT variance, scaled by 8.
     295  UINT32              Rto;        ///< Current RTO, not scaled.
    299296
    300297  //
     
    302299  // Congestion control + NewReno fast recovery.
    303300  //
    304   UINT32            CWnd;         ///< Sender's congestion window.
    305   UINT32            Ssthresh;     ///< Slow start threshold.
    306   TCP_SEQNO         Recover;      ///< Recover point for NewReno.
    307   UINT16            DupAck;       ///< Number of duplicate ACKs.
    308   UINT8             CongestState; ///< The current congestion state(RFC3782).
    309   UINT8             LossTimes;    ///< Number of retxmit timeouts in a row.
    310   TCP_SEQNO         LossRecover;  ///< Recover point for retxmit.
     301  UINT32              CWnd;         ///< Sender's congestion window.
     302  UINT32              Ssthresh;     ///< Slow start threshold.
     303  TCP_SEQNO           Recover;      ///< Recover point for NewReno.
     304  UINT16              DupAck;       ///< Number of duplicate ACKs.
     305  UINT8               CongestState; ///< The current congestion state(RFC3782).
     306  UINT8               LossTimes;    ///< Number of retxmit timeouts in a row.
     307  TCP_SEQNO           LossRecover;  ///< Recover point for retxmit.
    311308
    312309  //
     
    314311  // Addressing Window Retraction for TCP Window Scale Option.
    315312  //
    316   TCP_SEQNO         RetxmitSeqMax;       ///< Max Seq number in previous retransmission.
     313  TCP_SEQNO           RetxmitSeqMax;     ///< Max Seq number in previous retransmission.
    317314
    318315  //
    319316  // configuration parameters, for EFI_TCP4_PROTOCOL specification
    320317  //
    321   UINT32            KeepAliveIdle;   ///< Idle time before sending first probe.
    322   UINT32            KeepAlivePeriod; ///< Interval for subsequent keep alive probe.
    323   UINT8             MaxKeepAlive;    ///< Maximum keep alive probe times.
    324   UINT8             KeepAliveProbes; ///< The number of keep alive probe.
    325   UINT16            MaxRexmit;       ///< The maximum number of retxmit before abort.
    326   UINT32            FinWait2Timeout; ///< The FIN_WAIT_2 timeout.
    327   UINT32            TimeWaitTimeout; ///< The TIME_WAIT timeout.
    328   UINT32            ConnectTimeout;  ///< The connect establishment timeout.
     318  UINT32              KeepAliveIdle;   ///< Idle time before sending first probe.
     319  UINT32              KeepAlivePeriod; ///< Interval for subsequent keep alive probe.
     320  UINT8               MaxKeepAlive;    ///< Maximum keep alive probe times.
     321  UINT8               KeepAliveProbes; ///< The number of keep alive probe.
     322  UINT16              MaxRexmit;       ///< The maximum number of retxmit before abort.
     323  UINT32              FinWait2Timeout; ///< The FIN_WAIT_2 timeout.
     324  UINT32              TimeWaitTimeout; ///< The TIME_WAIT timeout.
     325  UINT32              ConnectTimeout;  ///< The connect establishment timeout.
    329326
    330327  //
    331328  // configuration for tcp provided by user
    332329  //
    333   BOOLEAN           UseDefaultAddr;
    334   UINT8             Tos;
    335   UINT8             Ttl;
    336   EFI_IPv4_ADDRESS  SubnetMask;
    337 
    338 
    339   BOOLEAN           RemoteIpZero;   ///< RemoteEnd.Ip is ZERO when configured.
    340   IP_IO_IP_INFO     *IpInfo;        ///< Pointer reference to Ip used to send pkt
    341   UINT32            Tick;           ///< 1 tick = 200ms
     330  BOOLEAN             UseDefaultAddr;
     331  UINT8               Tos;
     332  UINT8               Ttl;
     333  EFI_IPv4_ADDRESS    SubnetMask;
     334
     335  BOOLEAN             RemoteIpZero; ///< RemoteEnd.Ip is ZERO when configured.
     336  IP_IO_IP_INFO       *IpInfo;      ///< Pointer reference to Ip used to send pkt
     337  UINT32              Tick;         ///< 1 tick = 200ms
    342338};
    343339
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette