Hello! > It does seem weird that IP output won't pay attention to
Not so weird, actually. The logic was: Only initial skb allocation tries to reserve all the space to avoid copies in the future. All the rest of places just check, that there is enough space for their immediate needs. If dev->hard_header() is NULL, it means that stack does not need any space at all, so that it does not need to worry. Right logic for reallocation would be: if (skb_headroom(skb) < space_which_I_need_now) { skb2 = skb_realloc_headroom(skb, space_for_future); } That logic was not followed exactly only because of laziness, each time some device is found which forgets to check for space, so reallocation is made in absolutely inappropriate places. F.e. ip_forward() does not need to reallocate skb when skb_headroom() < dev->hard_header_len. It does and it is not good. Good example is ipip tunnel. It sets: dev->hard_header_len = sizeof(iphdr) + LL_MAX_HEADER because it does not know, what device will be used. It is lots of space and most likely it will not use it. So, initial allocation reserves lots of space, but all the rest of stack should not reallocate, tunnel will take care of this itself. Alexey - 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