X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=datapath%2Flinux-2.6%2Fcompat-2.6%2Finclude%2Flinux%2Fskbuff.h;h=6a6b0950be27c3283cb3c3fe59ac7fdcd6acc083;hb=468991ad6c1b2c86220f7b6fb34c7b2b9248848a;hp=d9f043ac6442960e8f5841b06dd070b1881a86da;hpb=02dd3123a0e312f1d33403e744af52dd6096f12d;p=openvswitch diff --git a/datapath/linux-2.6/compat-2.6/include/linux/skbuff.h b/datapath/linux-2.6/compat-2.6/include/linux/skbuff.h index d9f043ac..6a6b0950 100644 --- a/datapath/linux-2.6/compat-2.6/include/linux/skbuff.h +++ b/datapath/linux-2.6/compat-2.6/include/linux/skbuff.h @@ -205,4 +205,41 @@ static inline struct sk_buff *skb_gso_segment(struct sk_buff *skb, } #endif /* before 2.6.18 */ +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,27) + +extern void __skb_warn_lro_forwarding(const struct sk_buff *skb); + +#ifndef NETIF_F_LRO +static inline bool skb_warn_if_lro(const struct sk_buff *skb) +{ + return false; +} +#else +static inline bool skb_warn_if_lro(const struct sk_buff *skb) +{ + /* LRO sets gso_size but not gso_type, whereas if GSO is really + * wanted then gso_type will be set. */ + struct skb_shared_info *shinfo = skb_shinfo(skb); + if (shinfo->gso_size != 0 && unlikely(shinfo->gso_type == 0)) { + __skb_warn_lro_forwarding(skb); + return true; + } + return false; +} +#endif /* NETIF_F_LRO */ +#endif /* kernel < 2.6.27 */ + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33) +static inline struct sk_buff *netdev_alloc_skb_ip_align(struct net_device *dev, + unsigned int length) +{ + struct sk_buff *skb = netdev_alloc_skb(dev, length + NET_IP_ALIGN); + + if (NET_IP_ALIGN && skb) + skb_reserve(skb, NET_IP_ALIGN); + return skb; +} +#endif /* kernel < 2.6.33 */ + + #endif