RTEMS CPU Kit with SuperCore
4.11.3
Main Page
Related Pages
Modules
+
Data Structures
Data Structures
+
Data Fields
+
All
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
+
Variables
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
+
Files
File List
+
Globals
+
All
_
a
b
c
d
e
f
g
h
i
j
l
m
n
o
p
q
r
s
t
u
v
w
x
+
Functions
_
a
b
c
d
e
f
g
i
j
l
m
n
o
p
q
r
s
t
u
v
w
+
Variables
_
b
c
d
i
r
+
Typedefs
a
b
c
d
f
h
i
m
o
p
q
r
s
t
u
w
x
+
Enumerations
b
c
d
e
h
i
m
o
p
r
s
t
w
+
Enumerator
c
i
m
p
r
s
t
w
+
Macros
_
a
b
c
d
e
f
g
h
i
l
m
n
o
p
r
s
t
w
mnt
data0
chrisj
rtems
releases
rtems-release.git
4.11.3
ws-rtems
rtems-4.11.3
cpukit
libnetworking
netinet
tcp_timer.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 1982, 1986, 1993
3
* The Regents of the University of California. All rights reserved.
4
*
5
* Redistribution and use in source and binary forms, with or without
6
* modification, are permitted provided that the following conditions
7
* are met:
8
* 1. Redistributions of source code must retain the above copyright
9
* notice, this list of conditions and the following disclaimer.
10
* 2. Redistributions in binary form must reproduce the above copyright
11
* notice, this list of conditions and the following disclaimer in the
12
* documentation and/or other materials provided with the distribution.
13
* 4. Neither the name of the University nor the names of its contributors
14
* may be used to endorse or promote products derived from this software
15
* without specific prior written permission.
16
*
17
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
18
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
21
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27
* SUCH DAMAGE.
28
*
29
* @(#)tcp_timer.h 8.1 (Berkeley) 6/10/93
30
* $FreeBSD: src/sys/netinet/tcp_timer.h,v 1.26 2004/08/16 18:32:07 rwatson Exp $
31
*/
32
33
#ifndef _NETINET_TCP_TIMER_H_
34
#define _NETINET_TCP_TIMER_H_
35
36
/*
37
* Definitions of the TCP timers. These timers are counted
38
* down PR_SLOWHZ times a second.
39
*/
40
#define TCPT_NTIMERS 4
41
42
#define TCPT_REXMT 0
/* retransmit */
43
#define TCPT_PERSIST 1
/* retransmit persistence */
44
#define TCPT_KEEP 2
/* keep alive */
45
#define TCPT_2MSL 3
/* 2*msl quiet time timer */
46
47
/*
48
* The TCPT_REXMT timer is used to force retransmissions.
49
* The TCP has the TCPT_REXMT timer set whenever segments
50
* have been sent for which ACKs are expected but not yet
51
* received. If an ACK is received which advances tp->snd_una,
52
* then the retransmit timer is cleared (if there are no more
53
* outstanding segments) or reset to the base value (if there
54
* are more ACKs expected). Whenever the retransmit timer goes off,
55
* we retransmit one unacknowledged segment, and do a backoff
56
* on the retransmit timer.
57
*
58
* The TCPT_PERSIST timer is used to keep window size information
59
* flowing even if the window goes shut. If all previous transmissions
60
* have been acknowledged (so that there are no retransmissions in progress),
61
* and the window is too small to bother sending anything, then we start
62
* the TCPT_PERSIST timer. When it expires, if the window is nonzero,
63
* we go to transmit state. Otherwise, at intervals send a single byte
64
* into the peer's window to force him to update our window information.
65
* We do this at most as often as TCPT_PERSMIN time intervals,
66
* but no more frequently than the current estimate of round-trip
67
* packet time. The TCPT_PERSIST timer is cleared whenever we receive
68
* a window update from the peer.
69
*
70
* The TCPT_KEEP timer is used to keep connections alive. If an
71
* connection is idle (no segments received) for TCPTV_KEEP_INIT amount of time,
72
* but not yet established, then we drop the connection. Once the connection
73
* is established, if the connection is idle for TCPTV_KEEP_IDLE time
74
* (and keepalives have been enabled on the socket), we begin to probe
75
* the connection. We force the peer to send us a segment by sending:
76
* <SEQ=SND.UNA-1><ACK=RCV.NXT><CTL=ACK>
77
* This segment is (deliberately) outside the window, and should elicit
78
* an ack segment in response from the peer. If, despite the TCPT_KEEP
79
* initiated segments we cannot elicit a response from a peer in TCPT_MAXIDLE
80
* amount of time probing, then we drop the connection.
81
*/
82
83
/*
84
* Time constants.
85
*/
86
#define TCPTV_MSL ( 30*PR_SLOWHZ)
/* max seg lifetime (hah!) */
87
#define TCPTV_SRTTBASE 0
/* base roundtrip time;
88
if 0, no idea yet */
89
#define TCPTV_RTOBASE ( 3*PR_SLOWHZ)
/* assumed RTO if no info */
90
#define TCPTV_SRTTDFLT ( 3*PR_SLOWHZ)
/* assumed RTT if no info */
91
92
#define TCPTV_PERSMIN ( 5*PR_SLOWHZ)
/* retransmit persistence */
93
#define TCPTV_PERSMAX ( 60*PR_SLOWHZ)
/* maximum persist interval */
94
95
#define TCPTV_KEEP_INIT ( 75*PR_SLOWHZ)
/* initial connect keep alive */
96
#define TCPTV_KEEP_IDLE (120*60*PR_SLOWHZ)
/* dflt time before probing */
97
#define TCPTV_KEEPINTVL ( 75*PR_SLOWHZ)
/* default probe interval */
98
#define TCPTV_KEEPCNT 8
/* max probes before drop */
99
100
#define TCPTV_MIN ( 1*PR_SLOWHZ)
/* minimum allowable value */
101
#define TCPTV_REXMTMAX ( 64*PR_SLOWHZ)
/* max allowable REXMT value */
102
103
#define TCPTV_TWTRUNC 8
/* RTO factor to truncate TW */
104
105
#define TCP_LINGERTIME 120
/* linger at most 2 minutes */
106
107
#define TCP_MAXRXTSHIFT 12
/* maximum retransmits */
108
109
#ifdef TCPTIMERS
110
static
char
*tcptimers[] =
111
{
"REXMT"
,
"PERSIST"
,
"KEEP"
,
"2MSL"
};
112
#endif
113
114
/*
115
* Force a time value to be in a certain range.
116
*/
117
#define TCPT_RANGESET(tv, value, tvmin, tvmax) { \
118
(tv) = (value); \
119
if ((u_long)(tv) < (u_long)(tvmin)) \
120
(tv) = (tvmin); \
121
else if ((u_long)(tv) > (u_long)(tvmax)) \
122
(tv) = (tvmax); \
123
}
124
125
#ifdef _KERNEL
126
extern
int
tcp_keepinit;
/* time to establish connection */
127
extern
int
tcp_keepidle;
/* time before keepalive probes begin */
128
extern
int
tcp_maxidle;
/* time to drop after starting probes */
129
extern
int
tcp_ttl;
/* time to live for TCP segs */
130
extern
int
tcp_backoff[];
131
#endif
132
133
#endif
Generated by
1.8.13