kernel: make sched_act_connmark compile for 3.14

The upstream API changed, which allowed to simplify the code a bit.

Signed-off-by: Jonas Gorski <jogo@openwrt.org>

SVN-Revision: 40376
This commit is contained in:
Jonas Gorski 2014-04-04 10:16:49 +00:00
parent 96c4e3eed0
commit a8363fadcd

View File

@ -1,6 +1,6 @@
--- /dev/null --- /dev/null
+++ b/net/sched/act_connmark.c +++ b/net/sched/act_connmark.c
@@ -0,0 +1,148 @@ @@ -0,0 +1,144 @@
+/* +/*
+ * Copyright (c) 2011 Felix Fietkau <nbd@openwrt.org> + * Copyright (c) 2011 Felix Fietkau <nbd@openwrt.org>
+ * + *
@ -36,15 +36,8 @@
+#define TCA_ACT_CONNMARK 20 +#define TCA_ACT_CONNMARK 20
+ +
+#define CONNMARK_TAB_MASK 3 +#define CONNMARK_TAB_MASK 3
+static struct tcf_common *tcf_connmark_ht[CONNMARK_TAB_MASK + 1];
+static u32 connmark_idx_gen;
+static DEFINE_RWLOCK(connmark_lock);
+ +
+static struct tcf_hashinfo connmark_hash_info = { +static struct tcf_hashinfo connmark_hash_info;
+ .htab = tcf_connmark_ht,
+ .hmask = CONNMARK_TAB_MASK,
+ .lock = &connmark_lock,
+};
+ +
+static int tcf_connmark(struct sk_buff *skb, const struct tc_action *a, +static int tcf_connmark(struct sk_buff *skb, const struct tc_action *a,
+ struct tcf_result *res) + struct tcf_result *res)
@ -88,10 +81,9 @@
+ struct tcf_common *pc; + struct tcf_common *pc;
+ int ret = 0; + int ret = 0;
+ +
+ pc = tcf_hash_check(0, a, bind, &connmark_hash_info); + pc = tcf_hash_check(0, a, bind);
+ if (!pc) { + if (!pc) {
+ pc = tcf_hash_create(0, est, a, sizeof(*pc), bind, + pc = tcf_hash_create(0, est, a, sizeof(*pc), bind);
+ &connmark_idx_gen, &connmark_hash_info);
+ if (IS_ERR(pc)) + if (IS_ERR(pc))
+ return PTR_ERR(pc); + return PTR_ERR(pc);
+ +
@ -124,13 +116,11 @@
+ .kind = "connmark", + .kind = "connmark",
+ .hinfo = &connmark_hash_info, + .hinfo = &connmark_hash_info,
+ .type = TCA_ACT_CONNMARK, + .type = TCA_ACT_CONNMARK,
+ .capab = TCA_CAP_NONE,
+ .owner = THIS_MODULE, + .owner = THIS_MODULE,
+ .act = tcf_connmark, + .act = tcf_connmark,
+ .dump = tcf_connmark_dump, + .dump = tcf_connmark_dump,
+ .cleanup = tcf_connmark_cleanup, + .cleanup = tcf_connmark_cleanup,
+ .init = tcf_connmark_init, + .init = tcf_connmark_init,
+ .walk = tcf_generic_walker,
+}; +};
+ +
+MODULE_AUTHOR("Felix Fietkau <nbd@openwrt.org>"); +MODULE_AUTHOR("Felix Fietkau <nbd@openwrt.org>");
@ -139,6 +129,12 @@
+ +
+static int __init connmark_init_module(void) +static int __init connmark_init_module(void)
+{ +{
+ int ret;
+
+ ret = tcf_hashinfo_init(&connmark_hash_info, CONNMARK_TAB_MASK);
+ if (ret)
+ return ret;
+
+ return tcf_register_action(&act_connmark_ops); + return tcf_register_action(&act_connmark_ops);
+} +}
+ +