From: Roy Pledge <Roy.Pledge@freescale.com>
To: Stephen Hemminger <shemminger@linux-foundation.org>
Cc: vinay ravuri <vinaynyc@yahoo.com>, netdev@vger.kernel.org
Subject: Re: Socket Buffers and Memory Managment
Date: Wed, 18 Jul 2007 13:13:21 -0400 [thread overview]
Message-ID: <469E4A31.6030603@freescale.com> (raw)
In-Reply-To: <20070717204129.79e7fe0d@oldman>
Stephen Hemminger wrote:
>
> You could play tricks with skb frags but it would be fragile
> and not worth the trouble. The problem is that the receive
> skb can stay in the system for a really long time (until the application
> reads the data) so your fixed size buffer pool in hardware
> would get exhausted.
>
Perhaps you could elaborate on why this is considered fragile? It seems to me
that as long as proper page management is performed, this mechanism should be
stable for processing non-contiguous receive buffers. I agree that
replenishment needs to be addressed, but I see that as an independent issue from
using frag lists on receive.
>> Also, if the h/w gives me a single packet in multiple
>> locations (i.e. non-contiguous chunks of memory), can
>> socket buffers handle chains of buffers? I am looking
>> for a facility like mbuf's in netbsd where one can
>> chain multiple buffers together to make construct a
>> single packet.
>
> Yes, skb frag list could be used for that but you don't
> want to do that. See above. Copy the data into an new
> skb and reserve any necessary bytes so IP header is
> aligned. I.e. if using ethernet header (14 bytes), do
> skb_reserve(skb, 2) before copying the data.
But isn't avoiding the copy the point of all this? With some hardware models
using skbs as receive buffers is inconvenient and can be wasteful if jumbo
frames are required. Wouldn't a mechanism where it is possible to create (or
populate) an skb from data in a pre existing buffer without copying be more
general and address more hardware models? It seems to me that more and more
hardware is supporting scatter/gather output for received data, but the page*
model in the frag list can be restrictive in how data is placed before being
passed into the stack.
Thanks
Roy
next prev parent reply other threads:[~2007-07-18 17:14 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-07-17 17:20 Socket Buffers and Memory Managment vinay ravuri
2007-07-17 19:41 ` Stephen Hemminger
2007-07-17 19:44 ` David Miller
2007-07-18 17:13 ` Roy Pledge [this message]
2007-07-18 21:22 ` Stephen Hemminger
2007-07-19 6:51 ` vinay ravuri
2007-07-19 7:04 ` pradeep singh
2007-07-19 8:10 ` Stephen Hemminger
2007-07-19 9:08 ` Evgeniy Polyakov
2007-07-20 11:50 ` Andi Kleen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=469E4A31.6030603@freescale.com \
--to=roy.pledge@freescale.com \
--cc=netdev@vger.kernel.org \
--cc=shemminger@linux-foundation.org \
--cc=vinaynyc@yahoo.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).