On Sun, Aug 06, 2006 at 11:23:39PM -0700, David Miller ([EMAIL PROTECTED]) wrote: > > + if ((1UL << order) > size + sizeof(void *) + sizeof(struct > > skb_shared_info)) { > > get_order() returns a PAGE_SIZE order not a byte one. So this test > here at the end is incorrect. It should probably be something > like "if ((PAGE_SIZE << order) > ..." > > I don't know if I want to eat an entire extra allocation for every SKB > just to handle broken e1000 cards that can't be bothered to support > non-power-of-2 receive buffer sizes and a proper MTU setting. > > I guess we might have to, but this is extremely unfortunate. :-/
I have even better idea - create alloc_skb_aligned() for those who knows in advance, that it's size is always aligned to power of 2, so additional skb_shared_info will 100% require higher order allocation. Then e1000 can use that instead of usual alloc_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