Thread (186 messages) 186 messages, 11 authors, 2009-02-06

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.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help