aboutsummaryrefslogtreecommitdiffstats
path: root/net/sched/cls_u32.c
diff options
context:
space:
mode:
authorMatthew Wilcox <mawilcox@microsoft.com>2017-11-28 13:45:02 -0500
committerMatthew Wilcox <mawilcox@microsoft.com>2018-02-06 16:41:27 -0500
commitf730cb93db8e640f95ba4acb339d5732e1721730 (patch)
tree61a9f3a4869bc9f757ec995bdc4c31a7be0b61c1 /net/sched/cls_u32.c
parentcls_u32: Reinstate cyclic allocation (diff)
downloadlinux-dev-f730cb93db8e640f95ba4acb339d5732e1721730.tar.xz
linux-dev-f730cb93db8e640f95ba4acb339d5732e1721730.zip
cls_u32: Convert to idr_alloc_u32
No real benefit to this classifier, but since we're allocating a u32 anyway, we should use this function. Signed-off-by: Matthew Wilcox <mawilcox@microsoft.com>
Diffstat (limited to '')
-rw-r--r--net/sched/cls_u32.c23
1 files changed, 10 insertions, 13 deletions
diff --git a/net/sched/cls_u32.c b/net/sched/cls_u32.c
index d2805f24ddd3..82f85d6a245a 100644
--- a/net/sched/cls_u32.c
+++ b/net/sched/cls_u32.c
@@ -740,19 +740,17 @@ ret:
static u32 gen_new_kid(struct tc_u_hnode *ht, u32 htid)
{
- unsigned long idr_index;
- u32 start = htid | 0x800;
+ u32 index = htid | 0x800;
u32 max = htid | 0xFFF;
- u32 min = htid;
- if (idr_alloc_ext(&ht->handle_idr, NULL, &idr_index,
- start, max + 1, GFP_KERNEL)) {
- if (idr_alloc_ext(&ht->handle_idr, NULL, &idr_index,
- min + 1, max + 1, GFP_KERNEL))
- return max;
+ if (idr_alloc_u32(&ht->handle_idr, NULL, &index, max, GFP_KERNEL)) {
+ index = htid + 1;
+ if (idr_alloc_u32(&ht->handle_idr, NULL, &index, max,
+ GFP_KERNEL))
+ index = max;
}
- return (u32)idr_index;
+ return index;
}
static const struct nla_policy u32_policy[TCA_U32_MAX + 1] = {
@@ -1003,8 +1001,8 @@ static int u32_change(struct net *net, struct sk_buff *in_skb,
return -ENOMEM;
}
} else {
- err = idr_alloc_ext(&tp_c->handle_idr, ht, NULL,
- handle, handle + 1, GFP_KERNEL);
+ err = idr_alloc_u32(&tp_c->handle_idr, ht, &handle,
+ handle, GFP_KERNEL);
if (err) {
kfree(ht);
return err;
@@ -1060,8 +1058,7 @@ static int u32_change(struct net *net, struct sk_buff *in_skb,
return -EINVAL;
}
handle = htid | TC_U32_NODE(handle);
- err = idr_alloc_ext(&ht->handle_idr, NULL, NULL,
- handle, handle + 1,
+ err = idr_alloc_u32(&ht->handle_idr, NULL, &handle, handle,
GFP_KERNEL);
if (err)
return err;