~kris/9p

9hist

b61ca9187605d0fafa6ddac2c288c9db4912d4ce — David du Colombier 24 years ago 15a6ae6
Plan 9 from Bell Labs 2002-07-13
4 files changed, 18 insertions(+), 15 deletions(-)

M ip/ip.h
M ip/netlog.c
M ip/tcp.c
M port/qio.c
M ip/ip.h => ip/ip.h +2 -1
@@ 390,13 390,14 @@ enum
	Logilmsg=	1<<8,
	Loggre=		1<<9,
	Logppp=		1<<10,
	Logtcpmsg=	1<<11,
	Logtcprxmt=	1<<11,
	Logigmp=	1<<12,
	Logudpmsg=	1<<13,
	Logipmsg=	1<<14,
	Logrudp=	1<<15,
	Logrudpmsg=	1<<16,
	Logesp=		1<<17,
	Logtcpwin=	1<<18,
};

void	netloginit(Fs*);

M ip/netlog.c => ip/netlog.c +2 -1
@@ 46,7 46,8 @@ static Netlogflag flags[] =
	{ "compress",	Logcompress, },
	{ "ilmsg",	Logil|Logilmsg, },
	{ "gre",	Loggre, },
	{ "tcpmsg",	Logtcp|Logtcpmsg, },
	{ "tcpwin",	Logtcp|Logtcpwin, },
	{ "tcprxmt",	Logtcp|Logtcprxmt, },
	{ "udpmsg",	Logudp|Logudpmsg, },
	{ "ipmsg",	Logip|Logipmsg, },
	{ "esp",	Logesp, },

M ip/tcp.c => ip/tcp.c +11 -12
@@ 576,7 576,7 @@ static void
tcpcreate(Conv *c)
{
	c->rq = qopen(QMAX, Qcoalesce, tcpacktimer, c);
	c->wq = qopen(2*QMAX, Qkick, tcpkick, c);
	c->wq = qopen(4*QMAX, Qkick, tcpkick, c);
}

static void


@@ 1662,7 1662,7 @@ update(Conv *s, Tcp *seg)
	&& seg->wnd == tcb->snd.wnd) {

		/* this is a pure ack w/o window update */
		netlog(s->p->f, Logtcpmsg, "dupack %lud ack %lud sndwnd %d advwin %d\n",
		netlog(s->p->f, Logtcprxmt, "dupack %lud ack %lud sndwnd %d advwin %d\n",
			tcb->snd.dupacks, seg->ack, tcb->snd.wnd, seg->wnd);

		if(++tcb->snd.dupacks == TCPREXMTTHRESH) {


@@ 1672,7 1672,7 @@ update(Conv *s, Tcp *seg)
			 */
			tcb->snd.recovery = 1;
			tcb->snd.rxt = tcb->snd.nxt;
			netlog(s->p->f, Logtcpmsg, "fast rxt %lud, nxt %lud\n", tcb->snd.una, tcb->snd.nxt);
			netlog(s->p->f, Logtcprxmt, "fast rxt %lud, nxt %lud\n", tcb->snd.una, tcb->snd.nxt);
			tcprxmit(s);
		} else {
			/* do reno tcp here. */


@@ 2303,7 2303,7 @@ tcpoutput(Conv *s)
			if(sent != 0) {
				if((tcb->flags&FORCE) == 0)
					break;
				tcb->snd.ptr = tcb->snd.una;
//				tcb->snd.ptr = tcb->snd.una;
			}
			usable = 1;
		}


@@ 2443,11 2443,7 @@ tcpoutput(Conv *s)
		tpriv->stats[OutSegs]++;
		if(tcb->kacounter > 0)
			tcpgo(tpriv, &tcb->katimer);
		qunlock(s);
		if(waserror()){
			qlock(s);
			nexterror();
		}

		switch(version){
		case V4:
			ipoput4(f, hbp, 0, s->ttl, s->tos);


@@ 2458,8 2454,11 @@ tcpoutput(Conv *s)
		default:
			panic("tcpoutput2: version %d", version);
		}
		qlock(s);
		poperror();
		if((msgs%4) == 1){
			qunlock(s);
			sched();
			qlock(s);
		}
	}
}



@@ 2641,8 2640,8 @@ tcptimeout(void *arg)
			localclose(s, Etimedout);
			break;
		}
		netlog(s->p->f, Logtcprxmt, "timeout rexmit 0x%lux %d/%d\n", tcb->snd.una, tcb->timer.start, NOW);
		tcpsettimer(tcb);
		netlog(s->p->f, Logtcp, "timeout rexmit 0x%lux\n", tcb->snd.una);
		tcprxmit(s);
		tpriv->stats[RetransTimeouts]++;
		tcb->snd.dupacks = 0;

M port/qio.c => port/qio.c +3 -1
@@ 1124,6 1124,8 @@ qnotfull(void *a)
	return q->len < q->limit || (q->state & Qclosed);
}

ulong noblockcnt;

/*
 *  add a block to a queue obeying flow control
 */


@@ 1156,6 1158,7 @@ qbwrite(Queue *q, Block *b)
		if(q->noblock){
			iunlock(q);
			freeb(b);
			noblockcnt += n;
			qunlock(&q->wlock);
			poperror();
			return n;


@@ 1448,7 1451,6 @@ qsetlimit(Queue *q, int limit)
void
qnoblock(Queue *q, int onoff)
{
print("nonblocking %d\n", onoff);
	q->noblock = onoff;
}