shithub: riscv

Download patch

ref: 03a52c7cf794c65b51cf2c658f2db67dcbbb811a
parent: 032081309174e6f419dc8c981b99dfee367bc518
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Wed Apr 24 05:06:22 EDT 2024

tcp: remove "MaxSegment" MIB stat, add InLimbo stat

This global "Mss" MIB element does not really exists,
and it makes no sense as the MSS is negotiated
per connection.

Put the InLimbo in the statistics table.

--- a/sys/src/9/ip/tcp.c
+++ b/sys/src/9/ip/tcp.c
@@ -308,7 +308,6 @@
 enum {
 	/* MIB stats */
 	MaxConn,
-	Mss,
 	ActiveOpens,
 	PassiveOpens,
 	EstabResets,
@@ -339,6 +338,8 @@
 	RecoveryCwind,
 	RecoveryPA,
 
+	InLimbo,
+
 	Nstats
 };
 
@@ -345,7 +346,6 @@
 static char *statnames[Nstats] =
 {
 [MaxConn]	"MaxConn",
-[Mss]		"MaxSegment",
 [ActiveOpens]	"ActiveOpens",
 [PassiveOpens]	"PassiveOpens",
 [EstabResets]	"EstabResets",
@@ -374,6 +374,8 @@
 [RecoveryNoSeq]	"RecoveryNoSeq",
 [RecoveryCwind]	"RecoveryCwind",
 [RecoveryPA]	"RecoveryPA",
+
+[InLimbo]	"InLimbo",
 };
 
 typedef struct Tcppriv Tcppriv;
@@ -887,7 +889,6 @@
 	Tcpctl *tcb;
 	Tcp4hdr* h4;
 	Tcp6hdr* h6;
-	Tcppriv *tpriv;
 	int mss;
 
 	tcb = (Tcpctl*)s->ptcl;
@@ -944,9 +945,6 @@
 
 	tcb->mss = tcb->cwind = mss;
 	tcb->abcbytes = 0;
-	tpriv = s->p->priv;
-	tpriv->stats[Mss] = tcb->mss;
-
 	/* default is no window scaling */
 	tcpsetscale(s, tcb, 0, 0);
 }
@@ -1304,8 +1302,6 @@
 static void
 tcpsndsyn(Conv *s, Tcpctl *tcb)
 {
-	Tcppriv *tpriv;
-
 	tcb->iss = (nrand(1<<16)<<16)|nrand(1<<16);
 	tcb->rttseq = tcb->iss;
 	tcb->snd.wl2 = tcb->iss;
@@ -1319,8 +1315,6 @@
 
 	/* set desired mss and scale */
 	tcb->mss = tcpmtu(v6lookup(s->p->f, s->raddr, s->laddr, s), s->ipversion, &tcb->scale);
-	tpriv = s->p->priv;
-	tpriv->stats[Mss] = tcb->mss;
 }
 
 static int
@@ -1754,7 +1748,6 @@
 	/* our sending max segment size cannot be bigger than what he asked for */
 	if(lp->mss != 0 && lp->mss < tcb->mss)
 		tcb->mss = lp->mss;
-	tpriv->stats[Mss] = tcb->mss;
 
 	/* window scaling */
 	tcpsetscale(new, tcb, lp->rcvscale, lp->sndscale);
@@ -2985,7 +2978,6 @@
 procsyn(Conv *s, Tcp *seg)
 {
 	Tcpctl *tcb;
-	Tcppriv *tpriv;
 
 	tcb = (Tcpctl*)s->ptcl;
 	tcb->flags |= FORCE;
@@ -2997,11 +2989,8 @@
 	tcb->irs = seg->seq;
 
 	/* our sending max segment size cannot be bigger than what he asked for */
-	if(seg->mss != 0 && seg->mss < tcb->mss) {
+	if(seg->mss != 0 && seg->mss < tcb->mss)
 		tcb->mss = seg->mss;
-		tpriv = s->p->priv;
-		tpriv->stats[Mss] = tcb->mss;
-	}
 
 	/* if the server does not support ws option, disable window scaling */
 	if(seg->ws == 0){
@@ -3393,9 +3382,9 @@
 	priv = tcp->priv;
 	p = buf;
 	e = p+len;
+	priv->stats[InLimbo] = priv->nlimbo;
 	for(i = 0; i < Nstats; i++)
 		p = seprint(p, e, "%s: %llud\n", statnames[i], priv->stats[i]);
-	p = seprint(p, e, "InLimbo: %d\n", priv->nlimbo);
 	return p - buf;
 }