]> git.baikalelectronics.ru Git - kernel.git/commitdiff
tcp: Revert reset of deferred accept changes in 2.6.26
authorDavid S. Miller <davem@davemloft.net>
Mon, 16 Jun 2008 23:57:40 +0000 (16:57 -0700)
committerDavid S. Miller <davem@davemloft.net>
Mon, 16 Jun 2008 23:57:40 +0000 (16:57 -0700)
Ingo's system is still seeing strange behavior, and he
reports that is goes away if the rest of the deferred
accept changes are reverted too.

Therefore this reverts 6409b422cd89d5e97d75ce7fd7c38b6ad11f50b5
("[TCP]: TCP_DEFER_ACCEPT updates - dont retxmt synack") and
c97b4a8fce0e66d0dc656003a63691c7617b874a ("[TCP]: TCP_DEFER_ACCEPT
updates - defer timeout conflicts with max_thresh").

Just like the other revert, these ideas can be revisited for
2.6.27

Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/inet_connection_sock.c

index 045e799d3e1db4e5cc58f72c8a35fc3f05d2eb87..ec834480abe727c3cfee6100824cf87a2f7284fa 100644 (file)
@@ -466,9 +466,9 @@ void inet_csk_reqsk_queue_prune(struct sock *parent,
                reqp=&lopt->syn_table[i];
                while ((req = *reqp) != NULL) {
                        if (time_after_eq(now, req->expires)) {
-                               if ((req->retrans < (inet_rsk(req)->acked ? max_retries : thresh)) &&
-                                   (inet_rsk(req)->acked ||
-                                    !req->rsk_ops->rtx_syn_ack(parent, req))) {
+                               if ((req->retrans < thresh ||
+                                    (inet_rsk(req)->acked && req->retrans < max_retries))
+                                   && !req->rsk_ops->rtx_syn_ack(parent, req)) {
                                        unsigned long timeo;
 
                                        if (req->retrans++ == 0)