On Thu, Aug 03, 2006 at 07:16:31PM +0400, Evgeniy Polyakov ([EMAIL PROTECTED]) wrote: > > >then skb_alloc adds a little > > >(sizeof(struct skb_shared_info)) at the end, and this ends up > > >in 32k request just for 9k jumbo frame. > > > > Strange, why this skb_shared_info cannon be added before first alignment? > > And what about smaller frames like 1500, does this driver behave similar > > (first align then add)? > > It can be. > Could attached (completely untested) patch help?
Actually this patch will not help, this new one could. diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c index da62db8..1514628 100644 --- a/drivers/net/e1000/e1000_main.c +++ b/drivers/net/e1000/e1000_main.c @@ -3978,9 +3978,11 @@ e1000_alloc_rx_buffers(struct e1000_adap buffer_info = &rx_ring->buffer_info[i]; while (cleaned_count--) { - if (!(skb = buffer_info->skb)) + if (!(skb = buffer_info->skb)) { + if (SKB_DATA_ALIGN(adapter->hw.max_frame_size) + sizeof(struct skb_shared_info) <= bufsz) + bufsz -= sizeof(struct skb_shared_info); skb = dev_alloc_skb(bufsz); - else { + } else { skb_trim(skb, 0); goto map_skb; } -- Evgeniy Polyakov - 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