From mboxrd@z Thu Jan 1 00:00:00 1970 From: erik quanstrom Date: Sat, 18 Aug 2012 16:26:10 -0400 To: 9fans@9fans.net Message-ID: <377d293c5366a0fb65398923b7a6ed38@brasstown.quanstro.net> In-Reply-To: <1835b565a7a0babdf4dc6f2787284674@brasstown.quanstro.net> References: <1835b565a7a0babdf4dc6f2787284674@brasstown.quanstro.net> MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Subject: Re: [9fans] tcp! Topicbox-Message-UUID: ac323336-ead7-11e9-9d60-3106f5b1d025 > - add support for new reno, i apoligize for not mentioning that the new reno work was part of the nix/9k tcp. i'm not sure who wrote it. sorry! also i forgot to mention that this version of qread can potentially cut the number of reads on tcp channels by up to 1/2. one might as well completely satisfy the read, if possible. especially since typical iounits (8192) do not divide up into typical mss-sized (1460) packets evenly. [...] /* if we get here, there's at least one block in the queue */ if(q->state & Qcoalesce){ /* when coalescing, 0 length blocks just go away */ b = q->bfirst; if(BLEN(b) <= 0){ freeb(qremove(q)); goto again; } /* * grab the first block and as many following * blocks as will partially fit in the read */ n = 0; l = &first; for(;;) { *l = qremove(q); l = &b->next; n += BLEN(b); if(n >= len || (b = q->bfirst) == nil) break; } - erik