summaryrefslogtreecommitdiffstats
path: root/sys/netinet/tcp_sack.c
diff options
context:
space:
mode:
authorps <ps@FreeBSD.org>2005-02-17 23:04:56 +0000
committerps <ps@FreeBSD.org>2005-02-17 23:04:56 +0000
commitc54115d548403a18776fc113c093f02b9b1b7cd6 (patch)
treef499192558595efb6ec36ffea0115a881a6c068d /sys/netinet/tcp_sack.c
parentf37aa50bc87784bdc8c08c58bd6437518e57167e (diff)
downloadFreeBSD-src-c54115d548403a18776fc113c093f02b9b1b7cd6.zip
FreeBSD-src-c54115d548403a18776fc113c093f02b9b1b7cd6.tar.gz
Remove 2 (SACK) fields from the tcpcb. These are only used by a
function that is called from tcp_input(), so they oughta be passed on the stack instead of stuck in the tcpcb. Submitted by: Mohan Srinivasan
Diffstat (limited to 'sys/netinet/tcp_sack.c')
-rw-r--r--sys/netinet/tcp_sack.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/sys/netinet/tcp_sack.c b/sys/netinet/tcp_sack.c
index 8637fa2..afedbdf 100644
--- a/sys/netinet/tcp_sack.c
+++ b/sys/netinet/tcp_sack.c
@@ -175,8 +175,9 @@ TUNABLE_INT("net.inet.tcp.sack.enable", &tcp_do_sack);
* prediction mode), and it updates the ordered list of sacks.
*/
void
-tcp_update_sack_list(tp)
+tcp_update_sack_list(tp, rcv_laststart, rcv_lastend)
struct tcpcb *tp;
+ tcp_seq rcv_laststart, rcv_lastend;
{
/*
* First reported block MUST be the most recent one. Subsequent
@@ -206,10 +207,10 @@ tcp_update_sack_list(tp)
tp->rcv_numsacks -= count;
if (tp->rcv_numsacks == 0) { /* no sack blocks currently (fast path) */
tcp_clean_sackreport(tp);
- if (SEQ_LT(tp->rcv_nxt, tp->rcv_laststart)) {
+ if (SEQ_LT(tp->rcv_nxt, rcv_laststart)) {
/* ==> need first sack block */
- tp->sackblks[0].start = tp->rcv_laststart;
- tp->sackblks[0].end = tp->rcv_lastend;
+ tp->sackblks[0].start = rcv_laststart;
+ tp->sackblks[0].end = rcv_lastend;
tp->rcv_numsacks = 1;
}
return;
@@ -217,14 +218,14 @@ tcp_update_sack_list(tp)
/* Otherwise, sack blocks are already present. */
for (i = 0; i < tp->rcv_numsacks; i++)
tp->sackblks[i] = temp[i]; /* first copy back sack list */
- if (SEQ_GEQ(tp->rcv_nxt, tp->rcv_lastend))
+ if (SEQ_GEQ(tp->rcv_nxt, rcv_lastend))
return; /* sack list remains unchanged */
/*
* From here, segment just received should be (part of) the 1st sack.
* Go through list, possibly coalescing sack block entries.
*/
- firstsack.start = tp->rcv_laststart;
- firstsack.end = tp->rcv_lastend;
+ firstsack.start = rcv_laststart;
+ firstsack.end = rcv_lastend;
for (i = 0; i < tp->rcv_numsacks; i++) {
sack = tp->sackblks[i];
if (SEQ_LT(sack.end, firstsack.start) ||
OpenPOWER on IntegriCloud