]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
net: sched: cls_flower: change fl_init_dissector to accept mask and dissector
authorJiri Pirko <jiri@mellanox.com>
Mon, 23 Jul 2018 07:23:09 +0000 (09:23 +0200)
committerDavid S. Miller <davem@davemloft.net>
Tue, 24 Jul 2018 03:44:12 +0000 (20:44 -0700)
This function is going to be used for templates as well, so we need to
pass the pointer separately.

Signed-off-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/sched/cls_flower.c

index ab10a7c883592dee8840e9a0ca384df0359a9bee..bb7aa1e9d281a9c93c5614b9636d02e0ee9eefdb 100644 (file)
@@ -826,51 +826,52 @@ static int fl_init_mask_hashtable(struct fl_flow_mask *mask)
                        FL_KEY_SET(keys, cnt, id, member);                      \
        } while(0);
 
-static void fl_init_dissector(struct fl_flow_mask *mask)
+static void fl_init_dissector(struct flow_dissector *dissector,
+                             struct fl_flow_key *mask)
 {
        struct flow_dissector_key keys[FLOW_DISSECTOR_KEY_MAX];
        size_t cnt = 0;
 
        FL_KEY_SET(keys, cnt, FLOW_DISSECTOR_KEY_CONTROL, control);
        FL_KEY_SET(keys, cnt, FLOW_DISSECTOR_KEY_BASIC, basic);
-       FL_KEY_SET_IF_MASKED(&mask->key, keys, cnt,
+       FL_KEY_SET_IF_MASKED(mask, keys, cnt,
                             FLOW_DISSECTOR_KEY_ETH_ADDRS, eth);
-       FL_KEY_SET_IF_MASKED(&mask->key, keys, cnt,
+       FL_KEY_SET_IF_MASKED(mask, keys, cnt,
                             FLOW_DISSECTOR_KEY_IPV4_ADDRS, ipv4);
-       FL_KEY_SET_IF_MASKED(&mask->key, keys, cnt,
+       FL_KEY_SET_IF_MASKED(mask, keys, cnt,
                             FLOW_DISSECTOR_KEY_IPV6_ADDRS, ipv6);
-       FL_KEY_SET_IF_MASKED(&mask->key, keys, cnt,
+       FL_KEY_SET_IF_MASKED(mask, keys, cnt,
                             FLOW_DISSECTOR_KEY_PORTS, tp);
-       FL_KEY_SET_IF_MASKED(&mask->key, keys, cnt,
+       FL_KEY_SET_IF_MASKED(mask, keys, cnt,
                             FLOW_DISSECTOR_KEY_IP, ip);
-       FL_KEY_SET_IF_MASKED(&mask->key, keys, cnt,
+       FL_KEY_SET_IF_MASKED(mask, keys, cnt,
                             FLOW_DISSECTOR_KEY_TCP, tcp);
-       FL_KEY_SET_IF_MASKED(&mask->key, keys, cnt,
+       FL_KEY_SET_IF_MASKED(mask, keys, cnt,
                             FLOW_DISSECTOR_KEY_ICMP, icmp);
-       FL_KEY_SET_IF_MASKED(&mask->key, keys, cnt,
+       FL_KEY_SET_IF_MASKED(mask, keys, cnt,
                             FLOW_DISSECTOR_KEY_ARP, arp);
-       FL_KEY_SET_IF_MASKED(&mask->key, keys, cnt,
+       FL_KEY_SET_IF_MASKED(mask, keys, cnt,
                             FLOW_DISSECTOR_KEY_MPLS, mpls);
-       FL_KEY_SET_IF_MASKED(&mask->key, keys, cnt,
+       FL_KEY_SET_IF_MASKED(mask, keys, cnt,
                             FLOW_DISSECTOR_KEY_VLAN, vlan);
-       FL_KEY_SET_IF_MASKED(&mask->key, keys, cnt,
+       FL_KEY_SET_IF_MASKED(mask, keys, cnt,
                             FLOW_DISSECTOR_KEY_CVLAN, cvlan);
-       FL_KEY_SET_IF_MASKED(&mask->key, keys, cnt,
+       FL_KEY_SET_IF_MASKED(mask, keys, cnt,
                             FLOW_DISSECTOR_KEY_ENC_KEYID, enc_key_id);
-       FL_KEY_SET_IF_MASKED(&mask->key, keys, cnt,
+       FL_KEY_SET_IF_MASKED(mask, keys, cnt,
                             FLOW_DISSECTOR_KEY_ENC_IPV4_ADDRS, enc_ipv4);
-       FL_KEY_SET_IF_MASKED(&mask->key, keys, cnt,
+       FL_KEY_SET_IF_MASKED(mask, keys, cnt,
                             FLOW_DISSECTOR_KEY_ENC_IPV6_ADDRS, enc_ipv6);
-       if (FL_KEY_IS_MASKED(&mask->key, enc_ipv4) ||
-           FL_KEY_IS_MASKED(&mask->key, enc_ipv6))
+       if (FL_KEY_IS_MASKED(mask, enc_ipv4) ||
+           FL_KEY_IS_MASKED(mask, enc_ipv6))
                FL_KEY_SET(keys, cnt, FLOW_DISSECTOR_KEY_ENC_CONTROL,
                           enc_control);
-       FL_KEY_SET_IF_MASKED(&mask->key, keys, cnt,
+       FL_KEY_SET_IF_MASKED(mask, keys, cnt,
                             FLOW_DISSECTOR_KEY_ENC_PORTS, enc_tp);
-       FL_KEY_SET_IF_MASKED(&mask->key, keys, cnt,
+       FL_KEY_SET_IF_MASKED(mask, keys, cnt,
                             FLOW_DISSECTOR_KEY_ENC_IP, enc_ip);
 
-       skb_flow_dissector_init(&mask->dissector, keys, cnt);
+       skb_flow_dissector_init(dissector, keys, cnt);
 }
 
 static struct fl_flow_mask *fl_create_new_mask(struct cls_fl_head *head,
@@ -889,7 +890,7 @@ static struct fl_flow_mask *fl_create_new_mask(struct cls_fl_head *head,
        if (err)
                goto errout_free;
 
-       fl_init_dissector(newmask);
+       fl_init_dissector(&newmask->dissector, &newmask->key);
 
        INIT_LIST_HEAD_RCU(&newmask->filters);