From: Andi Kleen <[EMAIL PROTECTED]> Date: Tue, 12 Jul 2005 06:48:02 +0200
> >> > # skb->real_dev, it is used in one place, in bonding device. Suggestion > is to remove it and replace with an ugly per-cpu static variable (but > still less ugly than keeping a useless pointer in struct sk_buff) We > can add per-cpu variable real_dev, save real_dev there and bonding can > fetch it from there. The trick relies on the fact that real_dev can be > forgotten after we leave softirq handler. > << > > You can just put it into ->cb while bond is active. Yes, but we must have a consistent layout with other things potentially stuff into there in the pre-protocol input path. See my other email. > >> > skb->h is really useless and can be eliminated immediately. The only place > where it is really used is checksumming offload on output. skb->h is used > there to mark the beginning of area to checksum, the idea was to support > offload for protocols other than TCP and UDP. Given that this generality is > not used, it can be replaced with direct parsing of IP header. > << > > I would rather add an u16 header_offset field instead of adding > header parsing code in all drivers. With some other fields > being u16 there should be enough padding for that. The idea is, rather, that skb->data is not pushed by the drivers, it is left at the MAC header when the SKB is given to netif_receive_skb(). I think this is a much cleaner thing than what happens now. Then we just pass skb->data to the ptype handlers. So it's not really "all drivers", it's things like eth_header_type() and friends that get changed. - 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