plan 9 kernel history: overview | file list | diff list

2002/0713/ip/tcp.c (diff list | history)

2002/0712/sys/src/9/ip/tcp.c:576,5822002/0713/sys/src/9/ip/tcp.c:576,582 (short | long | prev | next)
1997/0327    
tcpcreate(Conv *c) 
{ 
2002/0711    
	c->rq = qopen(QMAX, Qcoalesce, tcpacktimer, c); 
2002/0712    
	c->wq = qopen(2*QMAX, Qkick, tcpkick, c); 
2002/0713    
	c->wq = qopen(4*QMAX, Qkick, tcpkick, c); 
1997/0327    
} 
 
2000/0101    
static void 
2002/0712/sys/src/9/ip/tcp.c:1662,16682002/0713/sys/src/9/ip/tcp.c:1662,1668
2001/0531    
	&& seg->wnd == tcb->snd.wnd) { 
1999/0401    
 
		/* this is a pure ack w/o window update */ 
2001/0118    
		netlog(s->p->f, Logtcpmsg, "dupack %lud ack %lud sndwnd %d advwin %d\n", 
2002/0713    
		netlog(s->p->f, Logtcprxmt, "dupack %lud ack %lud sndwnd %d advwin %d\n", 
2001/0118    
			tcb->snd.dupacks, seg->ack, tcb->snd.wnd, seg->wnd); 
1999/0401    
 
		if(++tcb->snd.dupacks == TCPREXMTTHRESH) { 
2002/0712/sys/src/9/ip/tcp.c:1672,16782002/0713/sys/src/9/ip/tcp.c:1672,1678
1999/0401    
			 */ 
			tcb->snd.recovery = 1; 
			tcb->snd.rxt = tcb->snd.nxt; 
2001/0118    
			netlog(s->p->f, Logtcpmsg, "fast rxt %lud, nxt %lud\n", tcb->snd.una, tcb->snd.nxt); 
2002/0713    
			netlog(s->p->f, Logtcprxmt, "fast rxt %lud, nxt %lud\n", tcb->snd.una, tcb->snd.nxt); 
2000/0102    
			tcprxmit(s); 
1999/0401    
		} else { 
			/* do reno tcp here. */ 
2002/0712/sys/src/9/ip/tcp.c:2303,23092002/0713/sys/src/9/ip/tcp.c:2303,2309
1997/0327    
			if(sent != 0) { 
2002/0507    
				if((tcb->flags&FORCE) == 0) 
1997/0327    
					break; 
				tcb->snd.ptr = tcb->snd.una; 
2002/0713    
//				tcb->snd.ptr = tcb->snd.una; 
1997/0327    
			} 
			usable = 1; 
		} 
2002/0712/sys/src/9/ip/tcp.c:2443,24532002/0713/sys/src/9/ip/tcp.c:2443,2449
2000/0706    
		tpriv->stats[OutSegs]++; 
1998/1118    
		if(tcb->kacounter > 0) 
			tcpgo(tpriv, &tcb->katimer); 
2000/1221    
		qunlock(s); 
		if(waserror()){ 
			qlock(s); 
			nexterror(); 
		} 
2002/0713    
 
2002/0601    
		switch(version){ 
		case V4: 
2002/0507    
			ipoput4(f, hbp, 0, s->ttl, s->tos); 
2002/0712/sys/src/9/ip/tcp.c:2458,24652002/0713/sys/src/9/ip/tcp.c:2454,2464
2002/0601    
		default: 
			panic("tcpoutput2: version %d", version); 
		} 
2000/1221    
		qlock(s); 
		poperror(); 
2002/0713    
		if((msgs%4) == 1){ 
			qunlock(s); 
			sched(); 
			qlock(s); 
		} 
1997/0327    
	} 
} 
 
2002/0712/sys/src/9/ip/tcp.c:2641,26482002/0713/sys/src/9/ip/tcp.c:2640,2647
1997/0327    
			localclose(s, Etimedout); 
			break; 
		} 
2002/0713    
		netlog(s->p->f, Logtcprxmt, "timeout rexmit 0x%lux %d/%d\n", tcb->snd.una, tcb->timer.start, NOW); 
2001/0530    
		tcpsettimer(tcb); 
2001/0118    
		netlog(s->p->f, Logtcp, "timeout rexmit 0x%lux\n", tcb->snd.una); 
2000/0102    
		tcprxmit(s); 
2000/0706    
		tpriv->stats[RetransTimeouts]++; 
1999/0401    
		tcb->snd.dupacks = 0; 


source code copyright © 1990-2005 Lucent Technologies; see license
Plan 9 distribution
comments to russ cox (rsc@swtch.com)