PERFORCE change 166265 for review
Andre Oppermann
andre at FreeBSD.org
Sun Jul 19 12:05:52 UTC 2009
http://perforce.freebsd.org/chv.cgi?CH=166265
Change 166265 by andre at andre_flirtbox on 2009/07/19 12:05:31
Compile.
Affected files ...
.. //depot/projects/tcp_new/netinet/tcp_input.c#15 edit
.. //depot/projects/tcp_new/netinet/tcp_output.c#15 edit
.. //depot/projects/tcp_new/netinet/tcp_sack.c#11 edit
.. //depot/projects/tcp_new/netinet/tcp_var.h#15 edit
Differences ...
==== //depot/projects/tcp_new/netinet/tcp_input.c#15 (text+ko) ====
@@ -1766,8 +1766,9 @@
* Update congestion control information.
* NB: The algorithm must not increase cwnd when acked is zero.
*/
- if (tp->t_phase < TP_LOSSRECOV)
- tcp_cc_ack(tp, th, tiwin, acked, tlen, sacked);
+ if (tp->t_phase < TP_LOSSRECOV) {
+ //tcp_cc_ack(tp, th, tiwin, acked, tlen, sacked);
+ }
KASSERT(tp->snd_cwnd > tp->snd_mss,
("%s: cwnd < 1*mss after congestion control function", __func__));
@@ -2967,12 +2968,12 @@
if (SEQ_GEQ(tp->snd_una, tp->snd_recover)) {
tp->snd_pipe = 0;
tp->t_phase = TP_SENDING;
- tcp_cc_post_fr(tp);
+ //tcp_cc_post_fr(tp);
}
/* Enter loss recovery phase. */
if (tp->snd_dupack == 3 && tp->t_phase < TP_LOSSRECOV) {
- tcp_cc_pre_fr(tp); /* updates ssthresh */
+ //tcp_cc_pre_fr(tp); /* updates ssthresh */
tp->t_phase = TP_LOSSRECOV;
tp->snd_recover = tp->snd_nxt;
tp->snd_rxmit = tp->snd_una;
==== //depot/projects/tcp_new/netinet/tcp_output.c#15 (text+ko) ====
@@ -810,17 +810,17 @@
* (C.1) modulo (C.3)
*/
if (tp->snd_rxmit == tp->snd_una)
- rlen = tcp_sack_firsthole(tp, &rexmit);
+ rlen = tcp_sack_firsthole(tp, &rxmit);
else
- rlen = tcp_sack_nextseg(tp, &tp->snd_rexmit, slen);
+ rlen = tcp_sack_nextseg(tp, &tp->snd_rxmit, slen);
/*
* If we have nothing to retransmit, see if we can
* send some new data.
* (C.3)
*/
- if (rlen == 0)
+ if (rlen == 0) {
if (slen > 0 && (rxmit >= tp->snd_mss ||
- (rxmit >= slen && dlen == slen))
+ (rxmit >= slen && dlen == slen)))
*len = min(slen, rxmit);
else
*len = 0;
@@ -831,10 +831,10 @@
* (C.1)
*/
if (rxmit >= rlen || (rlen > rxmit && rxmit > tp->snd_mss))
- rlen = min(rlen, pipe);
+ rlen = min(rlen, tp->snd_pipe);
else
break;
- } else if (tp->snd_rexmit == tp->snd_una)
+ } else if (tp->snd_rxmit == tp->snd_una)
rlen = min(tp->snd_mss, SEQ_DELTA(tp->snd_una, tp->snd_nxt));
else
break;
==== //depot/projects/tcp_new/netinet/tcp_sack.c#11 (text+ko) ====
@@ -89,10 +89,10 @@
static int tcp_sack_maxblocks = 32;
SYSCTL_INT(_net_inet_tcp_sack, OID_AUTO, maxblocks, CTLFLAG_RW,
- &tcp_sack_maxholes, 0,
+ &tcp_sack_maxblocks, 0,
"Per connection limit on the number of SACK blocks");
-static int tcp_sack_globalmaxholes = 65536;
+static int tcp_sack_globalmaxblocks = 65536;
SYSCTL_INT(_net_inet_tcp_sack, OID_AUTO, globalmaxblocks, CTLFLAG_RW,
&tcp_sack_globalmaxblocks, 0,
"Global total limit on the number of SACK blocks");
@@ -105,7 +105,7 @@
tcp_sackblock_zone = uma_zcreate("tcpsackblk", sizeof(struct tcp_sack_block),
NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0);
/* XXXAO: limit is not adjusted when changed at runtime. */
- uma_zone_set_max(tcp_sackblock_zone, tcp_sack_globalmaxholes);
+ uma_zone_set_max(tcp_sackblock_zone, tcp_sack_globalmaxblocks);
}
/*
@@ -223,9 +223,9 @@
* We try our best here to avoid false positives.
* RFC2018: section 8
*/
- if (to->to_nsacks == 1 && !RB_EMPTY(tp->snd_sackblocks) &&
+ if (to->to_nsacks == 1 && !RB_EMPTY(&tp->snd_sackblocks) &&
to->to_len <= TCP_MAXOLEN - TCPOLEN_SACK &&
- SEQ_DELTA(sack.tsb_blk.start, sack.tsb_blk.end) <= tp->snd_mss)
+ SEQ_DELTA(sack.tsb_blk.start, sack.tsb_blk.end) <= tp->snd_mss) {
tcp_sack_flush(tp);
}
@@ -323,8 +323,8 @@
struct tcp_sack_block *tsb, *tsbp;
struct tcp_sack_block sack;
- sack.tsb_blk.start = rexmit;
- sack.tsb_blk.end = rexmit;
+ sack.tsb_blk.start = *rexmit;
+ sack.tsb_blk.end = *rexmit;
/*
* Find the sackblock that covers rexmit, or the first one above it.
==== //depot/projects/tcp_new/netinet/tcp_var.h#15 (text+ko) ====
@@ -313,6 +313,7 @@
#define TOF_SIGNATURE 0x0040 /* TCP-MD5 signature option (RFC2385) */
#define TOF_SACK 0x0080 /* Peer sent SACK option */
#define TOF_MAXOPT 0x0100 /* highest option shift one */
+ u_int to_len; /* total length of all options */
tcp_ts to_tsval; /* new timestamp */
tcp_ts to_tsecr; /* reflected timestamp */
u_int16_t to_mss; /* maximum segment size */
@@ -646,7 +647,8 @@
int tcp_sack_doack(struct tcpcb *, struct tcpopt *, tcp_seq);
void tcp_sack_flush(struct tcpcb *);
void tcp_sack_init(void);
-int tcp_sack_nextseg(struct tcpcb *, tcp_seq *);
+int tcp_sack_firsthole(struct tcpcb *, tcp_seq *);
+int tcp_sack_nextseg(struct tcpcb *, tcp_seq *, int);
int tcp_sack_pipe(struct tcpcb *tp);
int tcp_newreno(struct tcpcb *, struct tcphdr *);
More information about the p4-projects
mailing list