https://github.com/torvalds/linux
Revision fd6149d332973bafa50f03ddb0ea9513e67f4517 authored by Ilpo Järvinen on 23 October 2008, 21:06:35 UTC, committed by David S. Miller on 23 October 2008, 21:06:35 UTC
This is not our bug! Sadly some devices cannot cope with the change of TCP option ordering which was a result of the recent rewrite of the option code (not that there was some particular reason steming from the rewrite for the reordering) though any ordering of TCP options is perfectly legal. Thus we restore the original ordering to allow interoperability with/through such broken devices and add some warning about this trap. Since the reordering just happened without any particular reason, this change shouldn't cost us anything. There are already couple of known failure reports (within close proximity of the last release), so the problem might be more wide-spread than a single device. And other reports which may be due to the same problem though the symptoms were less obvious. Analysis of one of the case revealed (with very high probability) that sack capability cannot be negotiated as the first option (SYN never got a response). Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi> Reported-by: Aldo Maggi <sentiniate@tiscali.it> Tested-by: Aldo Maggi <sentiniate@tiscali.it> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent b63365a
Tip revision: fd6149d332973bafa50f03ddb0ea9513e67f4517 authored by Ilpo Järvinen on 23 October 2008, 21:06:35 UTC
tcp: Restore ordering of TCP options for the sake of inter-operability
tcp: Restore ordering of TCP options for the sake of inter-operability
Tip revision: fd6149d
File | Mode | Size |
---|---|---|
irq | ||
power | ||
time | ||
trace | ||
.gitignore | -rw-r--r-- | 63 bytes |
Kconfig.freezer | -rw-r--r-- | 52 bytes |
Kconfig.hz | -rw-r--r-- | 1.7 KB |
Kconfig.preempt | -rw-r--r-- | 2.8 KB |
Makefile | -rw-r--r-- | 4.5 KB |
acct.c | -rw-r--r-- | 17.3 KB |
audit.c | -rw-r--r-- | 39.4 KB |
audit.h | -rw-r--r-- | 5.5 KB |
audit_tree.c | -rw-r--r-- | 20.5 KB |
auditfilter.c | -rw-r--r-- | 45.6 KB |
auditsc.c | -rw-r--r-- | 62.7 KB |
backtracetest.c | -rw-r--r-- | 2.1 KB |
bounds.c | -rw-r--r-- | 526 bytes |
capability.c | -rw-r--r-- | 12.9 KB |
cgroup.c | -rw-r--r-- | 82.8 KB |
cgroup_debug.c | -rw-r--r-- | 2.0 KB |
cgroup_freezer.c | -rw-r--r-- | 9.0 KB |
compat.c | -rw-r--r-- | 27.6 KB |
configs.c | -rw-r--r-- | 2.8 KB |
cpu.c | -rw-r--r-- | 12.0 KB |
cpuset.c | -rw-r--r-- | 70.3 KB |
delayacct.c | -rw-r--r-- | 4.9 KB |
dma-coherent.c | -rw-r--r-- | 4.1 KB |
dma.c | -rw-r--r-- | 3.6 KB |
exec_domain.c | -rw-r--r-- | 4.3 KB |
exit.c | -rw-r--r-- | 45.7 KB |
extable.c | -rw-r--r-- | 2.0 KB |
fork.c | -rw-r--r-- | 40.7 KB |
freezer.c | -rw-r--r-- | 3.7 KB |
futex.c | -rw-r--r-- | 50.3 KB |
futex_compat.c | -rw-r--r-- | 4.4 KB |
hrtimer.c | -rw-r--r-- | 42.2 KB |
itimer.c | -rw-r--r-- | 7.4 KB |
kallsyms.c | -rw-r--r-- | 11.7 KB |
kexec.c | -rw-r--r-- | 37.4 KB |
kfifo.c | -rw-r--r-- | 5.1 KB |
kgdb.c | -rw-r--r-- | 38.5 KB |
kmod.c | -rw-r--r-- | 14.0 KB |
kprobes.c | -rw-r--r-- | 32.1 KB |
ksysfs.c | -rw-r--r-- | 4.6 KB |
kthread.c | -rw-r--r-- | 7.3 KB |
latencytop.c | -rw-r--r-- | 5.2 KB |
lockdep.c | -rw-r--r-- | 85.1 KB |
lockdep_internals.h | -rw-r--r-- | 2.9 KB |
lockdep_proc.c | -rw-r--r-- | 18.1 KB |
marker.c | -rw-r--r-- | 23.9 KB |
module.c | -rw-r--r-- | 72.6 KB |
mutex-debug.c | -rw-r--r-- | 3.0 KB |
mutex-debug.h | -rw-r--r-- | 1.7 KB |
mutex.c | -rw-r--r-- | 10.4 KB |
mutex.h | -rw-r--r-- | 1.1 KB |
notifier.c | -rw-r--r-- | 16.7 KB |
ns_cgroup.c | -rw-r--r-- | 2.3 KB |
nsproxy.c | -rw-r--r-- | 5.4 KB |
panic.c | -rw-r--r-- | 8.7 KB |
params.c | -rw-r--r-- | 17.5 KB |
pid.c | -rw-r--r-- | 12.7 KB |
pid_namespace.c | -rw-r--r-- | 4.2 KB |
pm_qos_params.c | -rw-r--r-- | 11.6 KB |
posix-cpu-timers.c | -rw-r--r-- | 44.5 KB |
posix-timers.c | -rw-r--r-- | 28.0 KB |
printk.c | -rw-r--r-- | 32.5 KB |
profile.c | -rw-r--r-- | 16.2 KB |
ptrace.c | -rw-r--r-- | 16.1 KB |
rcuclassic.c | -rw-r--r-- | 21.8 KB |
rcupdate.c | -rw-r--r-- | 4.8 KB |
rcupreempt.c | -rw-r--r-- | 40.5 KB |
rcupreempt_trace.c | -rw-r--r-- | 9.3 KB |
rcutorture.c | -rw-r--r-- | 31.1 KB |
relay.c | -rw-r--r-- | 32.6 KB |
res_counter.c | -rw-r--r-- | 3.0 KB |
resource.c | -rw-r--r-- | 19.9 KB |
rtmutex-debug.c | -rw-r--r-- | 5.7 KB |
rtmutex-debug.h | -rw-r--r-- | 1.4 KB |
rtmutex-tester.c | -rw-r--r-- | 9.1 KB |
rtmutex.c | -rw-r--r-- | 25.9 KB |
rtmutex.h | -rw-r--r-- | 1.1 KB |
rtmutex_common.h | -rw-r--r-- | 3.3 KB |
rwsem.c | -rw-r--r-- | 2.6 KB |
sched.c | -rw-r--r-- | 224.8 KB |
sched_clock.c | -rw-r--r-- | 5.7 KB |
sched_cpupri.c | -rw-r--r-- | 4.4 KB |
sched_cpupri.h | -rw-r--r-- | 880 bytes |
sched_debug.c | -rw-r--r-- | 10.5 KB |
sched_fair.c | -rw-r--r-- | 38.4 KB |
sched_features.h | -rw-r--r-- | 401 bytes |
sched_idletask.c | -rw-r--r-- | 2.9 KB |
sched_rt.c | -rw-r--r-- | 35.7 KB |
sched_stats.h | -rw-r--r-- | 10.3 KB |
seccomp.c | -rw-r--r-- | 1.6 KB |
semaphore.c | -rw-r--r-- | 7.2 KB |
signal.c | -rw-r--r-- | 64.5 KB |
smp.c | -rw-r--r-- | 10.6 KB |
softirq.c | -rw-r--r-- | 18.4 KB |
softlockup.c | -rw-r--r-- | 8.9 KB |
spinlock.c | -rw-r--r-- | 11.4 KB |
srcu.c | -rw-r--r-- | 8.4 KB |
stacktrace.c | -rw-r--r-- | 522 bytes |
stop_machine.c | -rw-r--r-- | 4.2 KB |
sys.c | -rw-r--r-- | 41.5 KB |
sys_ni.c | -rw-r--r-- | 4.9 KB |
sysctl.c | -rw-r--r-- | 70.6 KB |
sysctl_check.c | -rw-r--r-- | 50.4 KB |
taskstats.c | -rw-r--r-- | 13.6 KB |
test_kprobes.c | -rw-r--r-- | 4.9 KB |
time.c | -rw-r--r-- | 17.3 KB |
timeconst.pl | -rw-r--r-- | 7.2 KB |
timer.c | -rw-r--r-- | 39.3 KB |
tracepoint.c | -rw-r--r-- | 12.2 KB |
tsacct.c | -rw-r--r-- | 4.1 KB |
uid16.c | -rw-r--r-- | 5.3 KB |
user.c | -rw-r--r-- | 12.4 KB |
user_namespace.c | -rw-r--r-- | 1.6 KB |
utsname.c | -rw-r--r-- | 1.5 KB |
utsname_sysctl.c | -rw-r--r-- | 3.4 KB |
wait.c | -rw-r--r-- | 6.9 KB |
workqueue.c | -rw-r--r-- | 23.8 KB |
Computing file changes ...