]> git.kernelconcepts.de Git - karo-tx-linux.git/commit
tcp: Restore ordering of TCP options for the sake of inter-operability
authorIlpo Järvinen <ilpo.jarvinen@helsinki.fi>
Thu, 23 Oct 2008 21:06:35 +0000 (14:06 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 7 Nov 2008 03:05:41 +0000 (19:05 -0800)
commitd4c9dac18e980a46ab767b2fd0182e58f8e44279
tree07d879f1baf20c911235c5ed9b8d71e9eec2c75c
parentf29062d0ec12ee3a58c67228dc829574b4ced378
tcp: Restore ordering of TCP options for the sake of inter-operability

[ Upstream commit fd6149d332973bafa50f03ddb0ea9513e67f4517 ]

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>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
net/ipv4/tcp_output.c