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:
		| @@ -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 */ | ||||||
		Reference in New Issue
	
	Block a user
	 Hauke Mehrtens
					Hauke Mehrtens