X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=datapath%2Flinux%2Fcompat%2Finclude%2Flinux%2Fskbuff.h;h=461e07cfb0a0d2ecd065c20e301054e9ca6675ad;hb=dc0d542d5254c1e6b749df4c34aeb549e5599df4;hp=d485b39a5655dda576c7458fbf16d29358ca8ad0;hpb=d923a695edf35ac45854aa374136e991877c7d57;p=sliver-openvswitch.git diff --git a/datapath/linux/compat/include/linux/skbuff.h b/datapath/linux/compat/include/linux/skbuff.h index d485b39a5..461e07cfb 100644 --- a/datapath/linux/compat/include/linux/skbuff.h +++ b/datapath/linux/compat/include/linux/skbuff.h @@ -251,4 +251,28 @@ static inline void skb_reset_mac_len(struct sk_buff *skb) skb->mac_len = skb->network_header - skb->mac_header; } #endif + +#ifndef HAVE_SKB_UNCLONE +static inline int skb_unclone(struct sk_buff *skb, gfp_t pri) +{ + might_sleep_if(pri & __GFP_WAIT); + + if (skb_cloned(skb)) + return pskb_expand_head(skb, 0, 0, pri); + + return 0; +} +#endif + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,37) +extern u32 __skb_get_rxhash(struct sk_buff *skb); +static inline __u32 skb_get_rxhash(struct sk_buff *skb) +{ +#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,34) + if (!skb->rxhash) +#endif + return __skb_get_rxhash(skb); +} +#endif + #endif