[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <1324486207.2301.27.camel@edumazet-HP-Compaq-6005-Pro-SFF-PC>
Date: Wed, 21 Dec 2011 17:50:07 +0100
From: Eric Dumazet <eric.dumazet@...il.com>
To: David Laight <David.Laight@...LAB.COM>
Cc: Jun Zhao <mypopydev@...il.com>, monstr@...str.eu,
David Miller <davem@...emloft.net>,
John Williams <john.williams@...alogix.com>,
netdev@...r.kernel.org
Subject: RE: ICMP packets - ll_temac with Microblaze
Le mercredi 21 décembre 2011 à 16:39 +0000, David Laight a écrit :
> Many, many moons ago I wrote an ethernet driver that received into
> an array of 128 (mostly) 512byte buffers. Full sized frames would have
> multiple rx ring entries, but could almost always be copied into a
> correctly
> sized buffer with a single aligned copy (cache-line aligned if useful).
> This was significantly faster than other schemes - especially
> on systems where the iommu needed setting to allow the ethernet
> hardware to access memory.
>
> I don't know if the linux skb buffers would allow the ethernet
> driver to use (say) 1600 byte rx buffers, and link them together
> when a long frame arrives. Most ethernet HW I've seen will
> fragment long receives.
>
> The painful hardware is that which enforces a 4n byte alignment
> on the rx buffer! - on systens that can't do misaligned accesses.
> 2 bytes of junk would be fine!
It all depends on hardware capabilities.
Old hardware required a single area per frame. So driver had to talk to
the hardware the same way.
We now have hardware able to split data into several frags to reduce the
overhead.
(Even using different pools to get a low number of frags, and good
filling ratio)
Take a look at NIU for example.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists