X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=datapath%2Flinux%2Fcompat%2Finclude%2Flinux%2Fskbuff.h;h=461e07cfb0a0d2ecd065c20e301054e9ca6675ad;hb=dc0d542d5254c1e6b749df4c34aeb549e5599df4;hp=456d7446736c357e6467b1f5cbb66f9058fb384d;hpb=143af30e2d940ad78412a287de1f3ac15ab4a1aa;p=sliver-openvswitch.git diff --git a/datapath/linux/compat/include/linux/skbuff.h b/datapath/linux/compat/include/linux/skbuff.h index 456d74467..461e07cfb 100644 --- a/datapath/linux/compat/include/linux/skbuff.h +++ b/datapath/linux/compat/include/linux/skbuff.h @@ -34,6 +34,12 @@ static inline void skb_copy_to_linear_data_offset(struct sk_buff *skb, #endif /* !HAVE_SKB_COPY_FROM_LINEAR_DATA_OFFSET */ +#ifndef HAVE_SKB_RESET_TAIL_POINTER +static inline void skb_reset_tail_pointer(struct sk_buff *skb) +{ + skb->tail = skb->data; +} +#endif /* * The networking layer reserves some headroom in skb data (via * dev_alloc_skb). This is used to avoid having to reallocate skb data when @@ -232,11 +238,41 @@ static inline bool skb_warn_if_lro(const struct sk_buff *skb) #define consume_skb kfree_skb #endif -#if LINUX_VERSION_CODE < KERNEL_VERSION(3,2,0) +#ifndef HAVE_SKB_FRAG_PAGE static inline struct page *skb_frag_page(const skb_frag_t *frag) { return frag->page; } #endif +#ifndef HAVE_SKB_RESET_MAC_LEN +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