X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=datapath%2Flinux%2Fcompat%2Finclude%2Flinux%2Fskbuff.h;h=a9dc2e71205598d459bafd38afc4e2fe26879f71;hb=9bbf88b238c0f00b6fb2ae1403dfe6759301faee;hp=be134d724b016fd0a47fe27e5d271893ac036d86;hpb=c622970f83e756f8e914c945d2b1044a2b21c158;p=sliver-openvswitch.git diff --git a/datapath/linux/compat/include/linux/skbuff.h b/datapath/linux/compat/include/linux/skbuff.h index be134d724..a9dc2e712 100644 --- a/datapath/linux/compat/include/linux/skbuff.h +++ b/datapath/linux/compat/include/linux/skbuff.h @@ -243,25 +243,72 @@ static inline int skb_unclone(struct sk_buff *skb, gfp_t pri) } #endif +#ifndef HAVE_SKB_ORPHAN_FRAGS +static inline int skb_orphan_frags(struct sk_buff *skb, gfp_t gfp_mask) +{ + return 0; +} +#endif + +#ifndef HAVE_SKB_GET_HASH #if LINUX_VERSION_CODE < KERNEL_VERSION(3,8,0) -#define __skb_get_rxhash rpl__skb_get_rxhash -#define skb_get_rxhash rpl_skb_get_rxhash +#define __skb_get_hash rpl__skb_get_rxhash +#define skb_get_hash rpl_skb_get_rxhash -extern u32 __skb_get_rxhash(struct sk_buff *skb); -static inline __u32 skb_get_rxhash(struct sk_buff *skb) +extern u32 __skb_get_hash(struct sk_buff *skb); +static inline __u32 skb_get_hash(struct sk_buff *skb) { #ifdef HAVE_RXHASH if (skb->rxhash) return skb->rxhash; #endif - return __skb_get_rxhash(skb); + return __skb_get_hash(skb); } -#endif + +#else +#define skb_get_hash skb_get_rxhash +#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(3,8,0) */ +#endif /* HAVE_SKB_GET_HASH */ + +#if LINUX_VERSION_CODE < KERNEL_VERSION(3,8,0) +static inline void skb_tx_error(struct sk_buff *skb) +{ + return; +} +#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(3,8,0) */ #if LINUX_VERSION_CODE < KERNEL_VERSION(3,14,0) unsigned int skb_zerocopy_headlen(const struct sk_buff *from); -void skb_zerocopy(struct sk_buff *to, const struct sk_buff *from, int len, +int skb_zerocopy(struct sk_buff *to, struct sk_buff *from, int len, int hlen); #endif +#ifndef HAVE_SKB_CLEAR_HASH +static inline void skb_clear_hash(struct sk_buff *skb) +{ +#if HAVE_RXHASH + skb->rxhash = 0; +#endif +#if HAVE_L4_RXHASH + skb->l4_rxhash = 0; +#endif +} +#endif + +#ifndef HAVE_SKB_HAS_FRAG_LIST +#define skb_has_frag_list skb_has_frags +#endif + +#ifndef HAVE___SKB_FILL_PAGE_DESC +static inline void __skb_fill_page_desc(struct sk_buff *skb, int i, + struct page *page, int off, int size) +{ + skb_frag_t *frag = &skb_shinfo(skb)->frags[i]; + + __skb_frag_set_page(frag, page); + frag->page_offset = off; + skb_frag_size_set(frag, size); +} +#endif + #endif