📄 tcprtt.c,v
字号:
head 1.2;access;symbols;locks dls:1.2; strict;comment @ * @;1.2date 97.09.21.19.29.52; author dls; state Dist;branches;next 1.1;1.1date 94.01.14.03.51.20; author dls; state v2e1;branches;next ;desc@@1.2log@pre-3e code@text@/* tcprtt.c - tcprtt */#include <conf.h>#include <kernel.h>#include <network.h>/*------------------------------------------------------------------------ * tcprtt - do round trip time estimates & cong. window processing *------------------------------------------------------------------------ */int tcprtt(ptcb)struct tcb *ptcb;{ int rrt, /* raw round trip */ delta; /* deviation from smoothed */ rrt = tmclear(tcps_oport, MKEVENT(RETRANSMIT, ptcb-&tcbtab[0])); if (rrt != SYSERR && ptcb->tcb_ostate != TCPO_REXMT) { if (ptcb->tcb_srt == 0) ptcb->tcb_srt = rrt<<3; /* prime the pump */ /* * "srt" is scaled X 8 here, so this is really: * delta = rrt - srt */ delta = rrt - (ptcb->tcb_srt>>3); ptcb->tcb_srt += delta; /* srt = srt + delta/8 */ if (delta < 0) delta = -delta; /* * "rtde" is scaled X 4 here, so this is really: * rtde = rtde + (|delta| - rtde)/4 */ ptcb->tcb_rtde += delta - (ptcb->tcb_rtde>>2); /* * "srt" is scaled X 8, rtde scaled X 4, so this is: * rto = srt + 2 * rtde */ ptcb->tcb_rexmt = ((ptcb->tcb_srt>>2)+ptcb->tcb_rtde)>>1; if (ptcb->tcb_rexmt < TCP_MINRXT) ptcb->tcb_rexmt = TCP_MINRXT; } if (ptcb->tcb_cwnd < ptcb->tcb_ssthresh) ptcb->tcb_cwnd += ptcb->tcb_smss; else ptcb->tcb_cwnd += (ptcb->tcb_smss * ptcb->tcb_smss) / ptcb->tcb_cwnd; return OK;}@1.1log@Initial revision@text@@
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -