I'm currently working on a network driver, in particular trying to improve performance when passing data up to the network stack.
For an example, a 9000 byte Ethernet frame comes in, and is DMA'd to the system memory in three transfers of up to approximately 4000 bytes each. Currently we are placing the first of the three transfers in the data part of the sb_buff, we then copy (memcpy) the remaining two transfers to freshly allocated pages (__alloc_pages), tying them onto the end of the sk_buff, before passing it up the network stack. This is hideously wasteful, and I was wondering what the best/proper way to pass up a incoming frame which has been split into three sections is. I can't see any code which does this in any other drivers, so I've got the feeling I'm approaching it from completely the wrong angle. Can anyone give me a few pointers as to how I should go about doing this correctly? Thanks, Steve - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
