Messages in this thread | | | Date | Sat, 20 Dec 2008 13:02:50 +1100 | From | Herbert Xu <> | Subject | Re: [PATCH][RFC 23/23]: Support for zero-copy TCP transmit of user space data |
| |
On Fri, Dec 19, 2008 at 05:56:11PM -0800, Jeremy Fitzhardinge wrote: > Evgeniy Polyakov wrote: >> Shared info is freed when there are no skbs referring to the shared info >> in question. Skb holds all pages in shared info in the fraglist array, >> so when it is about to be freed, it means that network stack does not >> use it (particulary it will putpage every page in fraglist). Usually >> there are two skbs in the network stack per packet in TCP (allocated at >> once though via fastclone mechanims): one is provided to the device >> (and will be freed there) and another one is placed into retransmit >> queue, where it will be located and freed when ack has been received. >> >> There may be another layers which may clone skb, but its shared info >> structure (shared between the clones) will only be freed when all users >> freed appropriate cloned skbs.
This is all correct. However, please note that that if any clone does a pskb_expand_head then it will get its own private copy of of the shared info. So you can't use the shared info to ref count the pages in it.
Cheers, -- Visit Openswan at http://www.openswan.org/ Email: Herbert Xu ~{PmV>HI~} <herbert@gondor.apana.org.au> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
| |