]> git.baikalelectronics.ru Git - kernel.git/commit
tcp: Revert per-route SACK/DSACK/TIMESTAMP changes.
authorDavid S. Miller <davem@davemloft.net>
Wed, 16 Dec 2009 04:56:42 +0000 (20:56 -0800)
committerDavid S. Miller <davem@davemloft.net>
Wed, 16 Dec 2009 04:56:42 +0000 (20:56 -0800)
commit3c81d328f4906d7c2e2a7da5fdd54d73466c40dd
tree7a639cbd6d6ad968ca22427f2b8697aadb37a907
parentcee6262ee27ada15a3bb481e7c28cca919ef4efc
tcp: Revert per-route SACK/DSACK/TIMESTAMP changes.

It creates a regression, triggering badness for SYN_RECV
sockets, for example:

[19148.022102] Badness at net/ipv4/inet_connection_sock.c:293
[19148.022570] NIP: c02a0914 LR: c02a0904 CTR: 00000000
[19148.023035] REGS: eeecbd30 TRAP: 0700   Not tainted  (2.6.32)
[19148.023496] MSR: 00029032 <EE,ME,CE,IR,DR>  CR: 24002442  XER: 00000000
[19148.024012] TASK = eee9a820[1756] 'privoxy' THREAD: eeeca000

This is likely caused by the change in the 'estab' parameter
passed to tcp_parse_options() when invoked by the functions
in net/ipv4/tcp_minisocks.c

But even if that is fixed, the ->conn_request() changes made in
this patch series is fundamentally wrong.  They try to use the
listening socket's 'dst' to probe the route settings.  The
listening socket doesn't even have a route, and you can't
get the right route (the child request one) until much later
after we setup all of the state, and it must be done by hand.

This stuff really isn't ready, so the best thing to do is a
full revert.  This reverts the following commits:

0cd9d69c8de3d979a7542877fbcd2e02c92d5309
f07996fb786158a52f9bbc44f921765898826a57
11660b98947e50b0a18c2a77778ae4f3efd40a5e
4633f82b4439edccfa6ff68508b93527ad6995c7
b3542ac9a762565b681be57fab413714d78a6271
5788d6350180ae669b6382ecc1da48d5e4f00c3f
fe18d05ef50620d4bab9426d9f949c414666ee6e
02d720774e5b01018b25eeb1464c71299eeb1ae7

Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/rtnetlink.h
include/net/dst.h
include/net/tcp.h
net/ipv4/syncookies.c
net/ipv4/tcp_input.c
net/ipv4/tcp_ipv4.c
net/ipv4/tcp_minisocks.c
net/ipv4/tcp_output.c
net/ipv6/syncookies.c
net/ipv6/tcp_ipv6.c