X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=datapath%2Flinux%2Fcompat%2Finclude%2Flinux%2Fskbuff.h;h=b011396efb354c9f2bbf20e00445d0c77b3a4cba;hb=73a9f3418e5ad987a1e2c52c63af1ad511ecc1cb;hp=714c955be410de28270c19c7857043bfa9370fd6;hpb=1edc458d61d9846b743310d9dd37ad181b013e5f;p=sliver-openvswitch.git diff --git a/datapath/linux/compat/include/linux/skbuff.h b/datapath/linux/compat/include/linux/skbuff.h index 714c955be..b011396ef 100644 --- a/datapath/linux/compat/include/linux/skbuff.h +++ b/datapath/linux/compat/include/linux/skbuff.h @@ -250,20 +250,27 @@ static inline int skb_orphan_frags(struct sk_buff *skb, gfp_t gfp_mask) } #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); } +#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; @@ -276,6 +283,17 @@ 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) +{ +#ifdef HAVE_RXHASH + skb->rxhash = 0; +#endif +#ifdef HAVE_L4_RXHASH + skb->l4_rxhash = 0; +#endif +} +#endif #ifndef HAVE_SKB_HAS_FRAG_LIST #define skb_has_frag_list skb_has_frags