PERFORCE change 135867 for review
Kip Macy
kmacy at FreeBSD.org
Thu Feb 21 02:24:26 UTC 2008
http://perforce.freebsd.org/chv.cgi?CH=135867
Change 135867 by kmacy at kmacy:entropy:iwarp on 2008/02/21 02:23:32
bump rcv_nxt if we haven't received a FIN before
Affected files ...
.. //depot/projects/iwarp/sys/dev/cxgb/ulp/tom/cxgb_cpl_io.c#14 edit
Differences ...
==== //depot/projects/iwarp/sys/dev/cxgb/ulp/tom/cxgb_cpl_io.c#14 (text+ko) ====
@@ -2389,7 +2389,6 @@
struct tcpcb *tp = sototcpcb(so);
struct toepcb *toep = tp->t_toe;
int keep = 0;
-
DPRINTF("do_peer_fin state=%d\n", tp->t_state);
#ifdef T3_TRACE
@@ -2411,8 +2410,22 @@
return;
}
}
- if (TCPS_HAVERCVDFIN(tp->t_state) == 0)
+ if (TCPS_HAVERCVDFIN(tp->t_state) == 0) {
socantrcvmore(so);
+ /*
+ * If connection is half-synchronized
+ * (ie NEEDSYN flag on) then delay ACK,
+ * so it may be piggybacked when SYN is sent.
+ * Otherwise, since we received a FIN then no
+ * more input can be expected, send ACK now.
+ */
+ if (tp->t_flags & TF_NEEDSYN)
+ tp->t_flags |= TF_DELACK;
+ else
+ tp->t_flags |= TF_ACKNOW;
+ tp->rcv_nxt++;
+ }
+
switch (tp->t_state) {
case TCPS_SYN_RECEIVED:
tp->t_starttime = ticks;
@@ -3113,7 +3126,6 @@
to.to_mss = mss;
to.to_wscale = wsf;
to.to_flags = (mss ? TOF_MSS : 0) | (wsf ? TOF_SCALE : 0) | (ts ? TOF_TS : 0) | (sack ? TOF_SACKPERM : 0);
-
INP_INFO_WLOCK(&tcbinfo);
INP_LOCK(inp);
syncache_offload_add(&inc, &to, &th, inp, &lso, &cxgb_toe_usrreqs, toep);
@@ -3359,8 +3371,9 @@
tp->t_flags |= G_TCPOPT_TSTAMP(opt) ? TF_RCVD_TSTMP : 0;
tp->t_flags |= G_TCPOPT_SACK(opt) ? TF_SACK_PERMIT : 0;
tp->t_flags |= G_TCPOPT_WSCALE_OK(opt) ? TF_RCVD_SCALE : 0;
- if (tp->t_flags & TF_RCVD_SCALE)
- tp->rcv_scale = 0;
+ if ((tp->t_flags & (TF_RCVD_SCALE|TF_REQ_SCALE)) ==
+ (TF_RCVD_SCALE|TF_REQ_SCALE))
+ tp->rcv_scale = tp->request_r_scale;
}
/*
More information about the p4-projects
mailing list