Re: [PATCH v2] tcp: splice as many packets as possible at once
From: Jarek Poplawski <hidden>
Date: 2009-02-06 11:48:17
Also in:
lkml
On Fri, Feb 06, 2009 at 12:10:15PM +0100, Willy Tarreau wrote:
On Fri, Feb 06, 2009 at 10:58:07AM +0000, Jarek Poplawski wrote:quoted
On Fri, Feb 06, 2009 at 09:28:22PM +1100, Herbert Xu wrote:quoted
On Fri, Feb 06, 2009 at 09:51:20AM +0000, Jarek Poplawski wrote:quoted
OK, but since there is not so much difference, and we need to waste it in some cases anyway, plus handle it later some special way, I'm a bit in doubt.Well the thing is cards that don't support SG on tx probably don't support jumbo frames either.?? I mean this 128 byte chunk would be hard to reuse after copying to skb->data, and if reused, we could miss this for some NICs on TX, so the whole packed would need a copy.couldn't we stuff up to 32 128-byte chunks in a page and use a 32-bit map to indicate which slot is used and which one is free ? This would just be a matter of calling ffz() to find one spare place in a page. Also, that bitmap might serve as a refcount, because if it drops to zero, it means all slots are unused. And -1 means all slots are used. This would reduce wastage if wee need to allocate 128 bytes often.
Something like this would be useful for SG NICs for the paged skb->data area. But I'm concerned with non-SG ones: if I got it right, for 1500 byte packets we need to allocate such a chunk, copy 128+ bytes to skb->data, and we have 128+ unused. If there are later such short packets, we don't need this space: why copy? But even if we find the way to use this, or don't reserve such space while receiving from SG NIC, than we will need to copy both chunks to another page for TX on non-SG NICs. Jarek P.