Re: several packets in a single buffer in Rx
From: Ben Hutchings <hidden>
Date: 2011-05-16 20:15:12
Also in:
netdev
On Mon, 2011-05-16 at 23:04 +0300, Tomas Winkler wrote:
2011/5/16 Emmanuel Grumbach [off-list ref]:quoted
2011/5/16 Michał Mirosław [off-list ref]:quoted
W dniu 16 maja 2011 14:59 użytkownik Emmanuel Grumbach [off-list ref] napisał:quoted
2011/5/16 Michał Mirosław [off-list ref]:quoted
2011/5/16 Emmanuel Grumbach [off-list ref]:quoted
I would like to be able to deliver the same page several times to the stack without having the stack consume it before the last time I deliver it. Of course I would like to avoid cloning it.Just do get_page() on the page having another packet in it before passing skb up.I can see the path: __kfree_skb -> skb_release_all -> skb_release_data -> put_page put_page will free the page iff the _count variable reaches 0. Of course, _count is incremented by get_page. I will give it try. I understand that this will work regardless the order given to alloc_pages right ?Yes. Remember that if you put a lot of packets in a big-order page then the memory will be freed only after all packets are freed.Sure. Thanks for the help.How it is ensured that skb manipulation won't corrupt another packet on the same page?
Fragments attached to an skb are always treated as read-only. The headers will be copied into the skb's header buffer and may be modified there. Ben. -- Ben Hutchings, Senior Software Engineer, Solarflare Not speaking for my employer; that's the marketing department's job. They asked us to note that Solarflare product names are trademarked.