mac80211: backport skb_get_hash_perturb() for 4.1 and older
authorFelix Fietkau <nbd@nbd.name>
Sun, 3 Jul 2016 15:56:53 +0000 (17:56 +0200)
committerFelix Fietkau <nbd@nbd.name>
Sun, 3 Jul 2016 15:56:53 +0000 (17:56 +0200)
Signed-off-by: Felix Fietkau <nbd@nbd.name>
package/kernel/mac80211/patches/005-backport_skb_get_hash_perturb.patch [new file with mode: 0644]

diff --git a/package/kernel/mac80211/patches/005-backport_skb_get_hash_perturb.patch b/package/kernel/mac80211/patches/005-backport_skb_get_hash_perturb.patch
new file mode 100644 (file)
index 0000000..8212910
--- /dev/null
@@ -0,0 +1,28 @@
+--- a/backport-include/linux/skbuff.h
++++ b/backport-include/linux/skbuff.h
+@@ -1,6 +1,8 @@
+ #ifndef __BACKPORT_SKBUFF_H
+ #define __BACKPORT_SKBUFF_H
+ #include_next <linux/skbuff.h>
++#include <net/flow_keys.h>
++#include <linux/jhash.h>
+ #include <linux/version.h>
+ #include <generated/utsrelease.h>
+@@ -305,6 +307,16 @@ static inline void skb_free_frag(void *d
+ {
+       put_page(virt_to_head_page(data));
+ }
++
++static inline u32 skb_get_hash_perturb(struct sk_buff *skb, u32 key)
++{
++      struct flow_keys keys;
++
++      skb_flow_dissect(skb, &keys);
++      return jhash_3words((__force u32)keys.dst,
++                          (__force u32)keys.src ^ keys.ip_proto,
++                          (__force u32)keys.ports, key);
++}
+ #endif
+ #endif /* __BACKPORT_SKBUFF_H */