datapath: remove RCU annotation from flow->mask
[sliver-openvswitch.git] / datapath / flow.h
index 2b6f217..59c7f6e 100644 (file)
@@ -30,7 +30,9 @@
 #include <linux/jiffies.h>
 #include <linux/time.h>
 #include <linux/flex_array.h>
+
 #include <net/inet_ecn.h>
+#include <net/ip_tunnels.h>
 
 struct sk_buff;
 struct sw_flow_mask;
@@ -42,11 +44,6 @@ struct sw_flow_actions {
        struct nlattr actions[];
 };
 
-/* Tunnel flow flags. */
-#define OVS_TNL_F_DONT_FRAGMENT                (1 << 0)
-#define OVS_TNL_F_CSUM                 (1 << 1)
-#define OVS_TNL_F_KEY                  (1 << 2)
-
 /* Used to memset ovs_key_ipv4_tunnel padding. */
 #define OVS_TUNNEL_KEY_SIZE                                    \
         (offsetof(struct ovs_key_ipv4_tunnel, ipv4_ttl) +      \
@@ -56,7 +53,7 @@ struct ovs_key_ipv4_tunnel {
        __be64 tun_id;
        __be32 ipv4_src;
        __be32 ipv4_dst;
-       u16  tun_flags;
+       __be16 tun_flags;
        u8   ipv4_tos;
        u8   ipv4_ttl;
 };
@@ -123,7 +120,7 @@ struct sw_flow {
 
        struct sw_flow_key key;
        struct sw_flow_key unmasked_key;
-       struct sw_flow_mask __rcu *mask;
+       struct sw_flow_mask *mask;
        struct sw_flow_actions __rcu *sf_acts;
 
        spinlock_t lock;        /* Lock for values below. */
@@ -194,7 +191,7 @@ struct flow_table {
        struct flex_array *buckets;
        unsigned int count, n_buckets;
        struct rcu_head rcu;
-       struct list_head mask_list;
+       struct list_head *mask_list;
        int node_ver;
        u32 hash_seed;
        bool keep_flows;
@@ -219,9 +216,8 @@ void ovs_flow_tbl_destroy(struct flow_table *table, bool deferred);
 struct flow_table *ovs_flow_tbl_alloc(int new_size);
 struct flow_table *ovs_flow_tbl_expand(struct flow_table *table);
 struct flow_table *ovs_flow_tbl_rehash(struct flow_table *table);
-void ovs_flow_insert(struct flow_table *table, struct sw_flow *flow,
-               const struct sw_flow_key *key, int key_len);
 
+void ovs_flow_insert(struct flow_table *table, struct sw_flow *flow);
 void ovs_flow_remove(struct flow_table *table, struct sw_flow *flow);
 
 struct sw_flow *ovs_flow_dump_next(struct flow_table *table, u32 *bucket, u32 *idx);
@@ -261,4 +257,6 @@ void ovs_sw_flow_mask_del_ref(struct sw_flow_mask *, bool deferred);
 void ovs_sw_flow_mask_insert(struct flow_table *, struct sw_flow_mask *);
 struct sw_flow_mask *ovs_sw_flow_mask_find(const struct flow_table *,
                const struct sw_flow_mask *);
+void ovs_flow_key_mask(struct sw_flow_key *dst, const struct sw_flow_key *src,
+                      const struct sw_flow_mask *mask);
 #endif /* flow.h */