mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-19 13:48:06 +00:00
mac80211: Adapt to changes to skb_get_hash_perturb()
The skb_get_hash_perturb() function now takes a siphash_key_t instead of an u32. This was changed in commit 55667441c84f ("net/flow_dissector: switch to siphash"). Use the correct type in the fq header file depending on the kernel version. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> Signed-off-by: Stefan Lippers-Hollmann <s.l-h@gmx.de>
This commit is contained in:
parent
cde8c2f2fb
commit
eaa047179a
@ -0,0 +1,68 @@
|
|||||||
|
From e3c57dd949835419cee8d3b45db38de58bf6ebd5 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Hauke Mehrtens <hauke@hauke-m.de>
|
||||||
|
Date: Mon, 18 Nov 2019 01:13:37 +0100
|
||||||
|
Subject: [PATCH] backports: Adapt to changes to skb_get_hash_perturb()
|
||||||
|
|
||||||
|
The skb_get_hash_perturb() function now takes a siphash_key_t instead of
|
||||||
|
an u32. This was changed in commit 55667441c84f ("net/flow_dissector:
|
||||||
|
switch to siphash"). Use the correct type in the fq header file
|
||||||
|
depending on the kernel version.
|
||||||
|
|
||||||
|
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||||
|
---
|
||||||
|
include/net/fq.h | 8 ++++++++
|
||||||
|
include/net/fq_impl.h | 8 ++++++++
|
||||||
|
2 files changed, 16 insertions(+)
|
||||||
|
|
||||||
|
--- a/include/net/fq.h
|
||||||
|
+++ b/include/net/fq.h
|
||||||
|
@@ -69,7 +69,15 @@ struct fq {
|
||||||
|
struct list_head backlogs;
|
||||||
|
spinlock_t lock;
|
||||||
|
u32 flows_cnt;
|
||||||
|
+#if LINUX_VERSION_IS_GEQ(5,3,10) || \
|
||||||
|
+ LINUX_VERSION_IN_RANGE(4,19,83, 4,20,0) || \
|
||||||
|
+ LINUX_VERSION_IN_RANGE(4,14,153, 4,15,0) || \
|
||||||
|
+ LINUX_VERSION_IN_RANGE(4,9,200, 4,10,0) || \
|
||||||
|
+ LINUX_VERSION_IN_RANGE(4,4,200, 4,5,0)
|
||||||
|
+ siphash_key_t perturbation;
|
||||||
|
+#else
|
||||||
|
u32 perturbation;
|
||||||
|
+#endif
|
||||||
|
u32 limit;
|
||||||
|
u32 memory_limit;
|
||||||
|
u32 memory_usage;
|
||||||
|
--- a/include/net/fq_impl.h
|
||||||
|
+++ b/include/net/fq_impl.h
|
||||||
|
@@ -108,7 +108,15 @@ begin:
|
||||||
|
|
||||||
|
static u32 fq_flow_idx(struct fq *fq, struct sk_buff *skb)
|
||||||
|
{
|
||||||
|
+#if LINUX_VERSION_IS_GEQ(5,3,10) || \
|
||||||
|
+ LINUX_VERSION_IN_RANGE(4,19,83, 4,20,0) || \
|
||||||
|
+ LINUX_VERSION_IN_RANGE(4,14,153, 4,15,0) || \
|
||||||
|
+ LINUX_VERSION_IN_RANGE(4,9,200, 4,10,0) || \
|
||||||
|
+ LINUX_VERSION_IN_RANGE(4,4,200, 4,5,0)
|
||||||
|
+ u32 hash = skb_get_hash_perturb(skb, &fq->perturbation);
|
||||||
|
+#else
|
||||||
|
u32 hash = skb_get_hash_perturb(skb, fq->perturbation);
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
return reciprocal_scale(hash, fq->flows_cnt);
|
||||||
|
}
|
||||||
|
@@ -308,7 +316,15 @@ static int fq_init(struct fq *fq, int fl
|
||||||
|
INIT_LIST_HEAD(&fq->backlogs);
|
||||||
|
spin_lock_init(&fq->lock);
|
||||||
|
fq->flows_cnt = max_t(u32, flows_cnt, 1);
|
||||||
|
+#if LINUX_VERSION_IS_GEQ(5,3,10) || \
|
||||||
|
+ LINUX_VERSION_IN_RANGE(4,19,83, 4,20,0) || \
|
||||||
|
+ LINUX_VERSION_IN_RANGE(4,14,153, 4,15,0) || \
|
||||||
|
+ LINUX_VERSION_IN_RANGE(4,9,200, 4,10,0) || \
|
||||||
|
+ LINUX_VERSION_IN_RANGE(4,4,200, 4,5,0)
|
||||||
|
+ get_random_bytes(&fq->perturbation, sizeof(fq->perturbation));
|
||||||
|
+#else
|
||||||
|
fq->perturbation = prandom_u32();
|
||||||
|
+#endif
|
||||||
|
fq->quantum = 300;
|
||||||
|
fq->limit = 8192;
|
||||||
|
fq->memory_limit = 16 << 20; /* 16 MBytes */
|
Loading…
Reference in New Issue
Block a user