net_sched: add struct net pointer to tcf_proto_ops->dump
[pandora-kernel.git] / net / sched / cls_flow.c
index 7881e2f..257029c 100644 (file)
@@ -56,11 +56,6 @@ struct flow_filter {
        u32                     hashrnd;
 };
 
-static const struct tcf_ext_map flow_ext_map = {
-       .action = TCA_FLOW_ACT,
-       .police = TCA_FLOW_POLICE,
-};
-
 static inline u32 addr_fold(void *addr)
 {
        unsigned long a = (unsigned long)addr;
@@ -220,7 +215,7 @@ static u32 flow_get_vlan_tag(const struct sk_buff *skb)
 
 static u32 flow_get_rxhash(struct sk_buff *skb)
 {
-       return skb_get_rxhash(skb);
+       return skb_get_hash(skb);
 }
 
 static u32 flow_key_get(struct sk_buff *skb, int key, struct flow_keys *flow)
@@ -397,7 +392,8 @@ static int flow_change(struct net *net, struct sk_buff *in_skb,
                        return -EOPNOTSUPP;
        }
 
-       err = tcf_exts_validate(net, tp, tb, tca[TCA_RATE], &e, &flow_ext_map);
+       tcf_exts_init(&e, TCA_FLOW_ACT, TCA_FLOW_POLICE);
+       err = tcf_exts_validate(net, tp, tb, tca[TCA_RATE], &e);
        if (err < 0)
                return err;
 
@@ -455,6 +451,7 @@ static int flow_change(struct net *net, struct sk_buff *in_skb,
 
                f->handle = handle;
                f->mask   = ~0U;
+               tcf_exts_init(&f->exts, TCA_FLOW_ACT, TCA_FLOW_POLICE);
 
                get_random_bytes(&f->hashrnd, 4);
                f->perturb_timer.function = flow_perturbation;
@@ -566,7 +563,7 @@ static void flow_put(struct tcf_proto *tp, unsigned long f)
 {
 }
 
-static int flow_dump(struct tcf_proto *tp, unsigned long fh,
+static int flow_dump(struct net *net, struct tcf_proto *tp, unsigned long fh,
                     struct sk_buff *skb, struct tcmsg *t)
 {
        struct flow_filter *f = (struct flow_filter *)fh;
@@ -608,7 +605,7 @@ static int flow_dump(struct tcf_proto *tp, unsigned long fh,
            nla_put_u32(skb, TCA_FLOW_PERTURB, f->perturb_period / HZ))
                goto nla_put_failure;
 
-       if (tcf_exts_dump(skb, &f->exts, &flow_ext_map) < 0)
+       if (tcf_exts_dump(skb, &f->exts) < 0)
                goto nla_put_failure;
 #ifdef CONFIG_NET_EMATCH
        if (f->ematches.hdr.nmatches &&
@@ -617,7 +614,7 @@ static int flow_dump(struct tcf_proto *tp, unsigned long fh,
 #endif
        nla_nest_end(skb, nest);
 
-       if (tcf_exts_dump_stats(skb, &f->exts, &flow_ext_map) < 0)
+       if (tcf_exts_dump_stats(skb, &f->exts) < 0)
                goto nla_put_failure;
 
        return skb->len;