Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
1e632d02
Commit
1e632d02
authored
Aug 26, 2004
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
bk://kernel.bkbits.net/davem/net-2.6
into ppc970.osdl.org:/home/torvalds/v2.6/linux
parents
0a310d2a
d2de2127
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
67 additions
and
77 deletions
+67
-77
include/net/tcp.h
include/net/tcp.h
+6
-65
net/ipv4/sysctl_net_ipv4.c
net/ipv4/sysctl_net_ipv4.c
+0
-8
net/ipv4/tcp.c
net/ipv4/tcp.c
+0
-2
net/ipv4/tcp_output.c
net/ipv4/tcp_output.c
+59
-0
net/ipv6/netfilter/ip6t_LOG.c
net/ipv6/netfilter/ip6t_LOG.c
+2
-2
No files found.
include/net/tcp.h
View file @
1e632d02
...
...
@@ -611,7 +611,6 @@ extern int sysctl_tcp_nometrics_save;
extern
int
sysctl_tcp_bic
;
extern
int
sysctl_tcp_bic_fast_convergence
;
extern
int
sysctl_tcp_bic_low_window
;
extern
int
sysctl_tcp_default_win_scale
;
extern
int
sysctl_tcp_moderate_rcvbuf
;
extern
atomic_t
tcp_memory_allocated
;
...
...
@@ -1690,68 +1689,10 @@ static inline void tcp_syn_build_options(__u32 *ptr, int mss, int ts, int sack,
*
ptr
++
=
htonl
((
TCPOPT_NOP
<<
24
)
|
(
TCPOPT_WINDOW
<<
16
)
|
(
TCPOLEN_WINDOW
<<
8
)
|
(
wscale
));
}
/* Determine a window scaling and initial window to offer.
* Based on the assumption that the given amount of space
* will be offered. Store the results in the tp structure.
* NOTE: for smooth operation initial space offering should
* be a multiple of mss if possible. We assume here that mss >= 1.
* This MUST be enforced by all callers.
*/
static
inline
void
tcp_select_initial_window
(
int
__space
,
__u32
mss
,
__u32
*
rcv_wnd
,
__u32
*
window_clamp
,
int
wscale_ok
,
__u8
*
rcv_wscale
)
{
unsigned
int
space
=
(
__space
<
0
?
0
:
__space
);
/* If no clamp set the clamp to the max possible scaled window */
if
(
*
window_clamp
==
0
)
(
*
window_clamp
)
=
(
65535
<<
14
);
space
=
min
(
*
window_clamp
,
space
);
/* Quantize space offering to a multiple of mss if possible. */
if
(
space
>
mss
)
space
=
(
space
/
mss
)
*
mss
;
/* NOTE: offering an initial window larger than 32767
* will break some buggy TCP stacks. We try to be nice.
* If we are not window scaling, then this truncates
* our initial window offering to 32k. There should also
* be a sysctl option to stop being nice.
*/
(
*
rcv_wnd
)
=
min
(
space
,
MAX_TCP_WINDOW
);
(
*
rcv_wscale
)
=
0
;
if
(
wscale_ok
)
{
/* See RFC1323 for an explanation of the limit to 14 */
while
(
space
>
65535
&&
(
*
rcv_wscale
)
<
14
)
{
space
>>=
1
;
(
*
rcv_wscale
)
++
;
}
if
(
*
rcv_wscale
&&
sysctl_tcp_app_win
&&
space
>=
mss
&&
space
-
max
((
space
>>
sysctl_tcp_app_win
),
mss
>>*
rcv_wscale
)
<
65536
/
2
)
(
*
rcv_wscale
)
--
;
*
rcv_wscale
=
max
((
__u8
)
sysctl_tcp_default_win_scale
,
*
rcv_wscale
);
}
/* Set initial window to value enough for senders,
* following RFC1414. Senders, not following this RFC,
* will be satisfied with 2.
*/
if
(
mss
>
(
1
<<*
rcv_wscale
))
{
int
init_cwnd
=
4
;
if
(
mss
>
1460
*
3
)
init_cwnd
=
2
;
else
if
(
mss
>
1460
)
init_cwnd
=
3
;
if
(
*
rcv_wnd
>
init_cwnd
*
mss
)
*
rcv_wnd
=
init_cwnd
*
mss
;
}
/* Set the clamp no higher than max representable value */
(
*
window_clamp
)
=
min
(
65535U
<<
(
*
rcv_wscale
),
*
window_clamp
);
}
/* Determine a window scaling and initial window to offer. */
extern
void
tcp_select_initial_window
(
int
__space
,
__u32
mss
,
__u32
*
rcv_wnd
,
__u32
*
window_clamp
,
int
wscale_ok
,
__u8
*
rcv_wscale
);
static
inline
int
tcp_win_from_space
(
int
space
)
{
...
...
@@ -1761,13 +1702,13 @@ static inline int tcp_win_from_space(int space)
}
/* Note: caller must be prepared to deal with negative returns */
static
inline
int
tcp_space
(
struct
sock
*
sk
)
static
inline
int
tcp_space
(
const
struct
sock
*
sk
)
{
return
tcp_win_from_space
(
sk
->
sk_rcvbuf
-
atomic_read
(
&
sk
->
sk_rmem_alloc
));
}
static
inline
int
tcp_full_space
(
struct
sock
*
sk
)
static
inline
int
tcp_full_space
(
const
struct
sock
*
sk
)
{
return
tcp_win_from_space
(
sk
->
sk_rcvbuf
);
}
...
...
net/ipv4/sysctl_net_ipv4.c
View file @
1e632d02
...
...
@@ -666,14 +666,6 @@ ctl_table ipv4_table[] = {
.
mode
=
0644
,
.
proc_handler
=
&
proc_dointvec
,
},
{
.
ctl_name
=
NET_TCP_DEFAULT_WIN_SCALE
,
.
procname
=
"tcp_default_win_scale"
,
.
data
=
&
sysctl_tcp_default_win_scale
,
.
maxlen
=
sizeof
(
int
),
.
mode
=
0644
,
.
proc_handler
=
&
proc_dointvec
,
},
{
.
ctl_name
=
NET_TCP_MODERATE_RCVBUF
,
.
procname
=
"tcp_moderate_rcvbuf"
,
...
...
net/ipv4/tcp.c
View file @
1e632d02
...
...
@@ -276,8 +276,6 @@ kmem_cache_t *tcp_timewait_cachep;
atomic_t
tcp_orphan_count
=
ATOMIC_INIT
(
0
);
int
sysctl_tcp_default_win_scale
=
7
;
int
sysctl_tcp_mem
[
3
];
int
sysctl_tcp_wmem
[
3
]
=
{
4
*
1024
,
16
*
1024
,
128
*
1024
};
int
sysctl_tcp_rmem
[
3
]
=
{
4
*
1024
,
87380
,
87380
*
2
};
...
...
net/ipv4/tcp_output.c
View file @
1e632d02
...
...
@@ -143,6 +143,65 @@ static __inline__ void tcp_event_ack_sent(struct sock *sk)
tcp_clear_xmit_timer
(
sk
,
TCP_TIME_DACK
);
}
/* Determine a window scaling and initial window to offer.
* Based on the assumption that the given amount of space
* will be offered. Store the results in the tp structure.
* NOTE: for smooth operation initial space offering should
* be a multiple of mss if possible. We assume here that mss >= 1.
* This MUST be enforced by all callers.
*/
void
tcp_select_initial_window
(
int
__space
,
__u32
mss
,
__u32
*
rcv_wnd
,
__u32
*
window_clamp
,
int
wscale_ok
,
__u8
*
rcv_wscale
)
{
unsigned
int
space
=
(
__space
<
0
?
0
:
__space
);
/* If no clamp set the clamp to the max possible scaled window */
if
(
*
window_clamp
==
0
)
(
*
window_clamp
)
=
(
65535
<<
14
);
space
=
min
(
*
window_clamp
,
space
);
/* Quantize space offering to a multiple of mss if possible. */
if
(
space
>
mss
)
space
=
(
space
/
mss
)
*
mss
;
/* NOTE: offering an initial window larger than 32767
* will break some buggy TCP stacks. We try to be nice.
* If we are not window scaling, then this truncates
* our initial window offering to 32k. There should also
* be a sysctl option to stop being nice.
*/
(
*
rcv_wnd
)
=
min
(
space
,
MAX_TCP_WINDOW
);
(
*
rcv_wscale
)
=
0
;
if
(
wscale_ok
)
{
/* Set window scaling on max possible window
* See RFC1323 for an explanation of the limit to 14
*/
space
=
max_t
(
u32
,
sysctl_tcp_rmem
[
2
],
sysctl_rmem_max
);
while
(
space
>
65535
&&
(
*
rcv_wscale
)
<
14
)
{
space
>>=
1
;
(
*
rcv_wscale
)
++
;
}
}
/* Set initial window to value enough for senders,
* following RFC1414. Senders, not following this RFC,
* will be satisfied with 2.
*/
if
(
mss
>
(
1
<<*
rcv_wscale
))
{
int
init_cwnd
=
4
;
if
(
mss
>
1460
*
3
)
init_cwnd
=
2
;
else
if
(
mss
>
1460
)
init_cwnd
=
3
;
if
(
*
rcv_wnd
>
init_cwnd
*
mss
)
*
rcv_wnd
=
init_cwnd
*
mss
;
}
/* Set the clamp no higher than max representable value */
(
*
window_clamp
)
=
min
(
65535U
<<
(
*
rcv_wscale
),
*
window_clamp
);
}
/* Chose a new window to advertise, update state in tcp_opt for the
* socket, and return result with RFC1323 scaling applied. The return
* value can be stuffed directly into th->window for an outgoing
...
...
net/ipv6/netfilter/ip6t_LOG.c
View file @
1e632d02
...
...
@@ -61,7 +61,7 @@ static u_int8_t ip6_nexthdr(u_int8_t currenthdr, u_int8_t **hdrptr)
repeatedly...with a large stick...no, an even LARGER
stick...no, you're still not thinking big enough */
nexthdr
=
**
hdrptr
;
hdrlen
=
*
hdrptr
[
1
]
*
4
+
8
;
hdrlen
=
(
*
hdrptr
)
[
1
]
*
4
+
8
;
*
hdrptr
=
*
hdrptr
+
hdrlen
;
break
;
/*stupid rfc2402 */
...
...
@@ -69,7 +69,7 @@ static u_int8_t ip6_nexthdr(u_int8_t currenthdr, u_int8_t **hdrptr)
case
IPPROTO_ROUTING
:
case
IPPROTO_HOPOPTS
:
nexthdr
=
**
hdrptr
;
hdrlen
=
*
hdrptr
[
1
]
*
8
+
8
;
hdrlen
=
(
*
hdrptr
)
[
1
]
*
8
+
8
;
*
hdrptr
=
*
hdrptr
+
hdrlen
;
break
;
case
IPPROTO_FRAGMENT
:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment