git://git.onelab.eu
/
sliver-openvswitch.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
datapath: Use parallel_ops genl.
[sliver-openvswitch.git]
/
datapath
/
datapath.c
diff --git
a/datapath/datapath.c
b/datapath/datapath.c
index
9a3a07b
..
a6bf70c
100644
(file)
--- a/
datapath/datapath.c
+++ b/
datapath/datapath.c
@@
-63,8
+63,8
@@
#include "vport-netdev.h"
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18) || \
#include "vport-netdev.h"
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18) || \
- LINUX_VERSION_CODE >= KERNEL_VERSION(3,
9
,0)
-#error Kernels before 2.6.18 or after 3.
8
are not supported by this version of Open vSwitch.
+ LINUX_VERSION_CODE >= KERNEL_VERSION(3,
11
,0)
+#error Kernels before 2.6.18 or after 3.
9
are not supported by this version of Open vSwitch.
#endif
#define REHASH_FLOW_INTERVAL (10 * 60 * HZ)
#endif
#define REHASH_FLOW_INTERVAL (10 * 60 * HZ)
@@
-280,6
+280,7
@@
static struct genl_family dp_packet_genl_family = {
.version = OVS_PACKET_VERSION,
.maxattr = OVS_PACKET_ATTR_MAX,
SET_NETNSOK
.version = OVS_PACKET_VERSION,
.maxattr = OVS_PACKET_ATTR_MAX,
SET_NETNSOK
+ SET_PARALLEL_OPS
};
int ovs_dp_upcall(struct datapath *dp, struct sk_buff *skb,
};
int ovs_dp_upcall(struct datapath *dp, struct sk_buff *skb,
@@
-624,7
+625,7
@@
static int validate_and_copy_set_tun(const struct nlattr *attr,
int err, start;
ovs_match_init(&match, &key, NULL);
int err, start;
ovs_match_init(&match, &key, NULL);
- err = ipv4_tun_from_nlattr(nla_data(attr), &match, false);
+ err =
ovs_
ipv4_tun_from_nlattr(nla_data(attr), &match, false);
if (err)
return err;
if (err)
return err;
@@
-1010,6
+1011,7
@@
static struct genl_family dp_flow_genl_family = {
.version = OVS_FLOW_VERSION,
.maxattr = OVS_FLOW_ATTR_MAX,
SET_NETNSOK
.version = OVS_FLOW_VERSION,
.maxattr = OVS_FLOW_ATTR_MAX,
SET_NETNSOK
+ SET_PARALLEL_OPS
};
static struct genl_multicast_group ovs_dp_flow_multicast_group = {
};
static struct genl_multicast_group ovs_dp_flow_multicast_group = {
@@
-1065,8
+1067,8
@@
static int set_action_to_attr(const struct nlattr *a, struct sk_buff *skb)
if (!start)
return -EMSGSIZE;
if (!start)
return -EMSGSIZE;
- err =
ipv4_tun_to_nlattr(skb
,
-
nla_data(ovs_key),
nla_data(ovs_key));
+ err =
ovs_ipv4_tun_to_nlattr(skb, nla_data(ovs_key)
,
+
nla_data(ovs_key));
if (err)
return err;
nla_nest_end(skb, start);
if (err)
return err;
nla_nest_end(skb, start);
@@
-1127,7
+1129,6
@@
static int ovs_flow_cmd_fill_info(struct sw_flow *flow, struct datapath *dp,
u32 seq, u32 flags, u8 cmd)
{
const int skb_orig_len = skb->len;
u32 seq, u32 flags, u8 cmd)
{
const int skb_orig_len = skb->len;
- struct sw_flow_mask *mask;
struct nlattr *start;
struct ovs_flow_stats stats;
struct ovs_header *ovs_header;
struct nlattr *start;
struct ovs_flow_stats stats;
struct ovs_header *ovs_header;
@@
-1157,8
+1158,7
@@
static int ovs_flow_cmd_fill_info(struct sw_flow *flow, struct datapath *dp,
if (!nla)
goto nla_put_failure;
if (!nla)
goto nla_put_failure;
- mask = rcu_dereference_check(flow->mask, lockdep_ovsl_is_held());
- err = ovs_flow_to_nlattrs(&flow->key, &mask->key, skb);
+ err = ovs_flow_to_nlattrs(&flow->key, &flow->mask->key, skb);
if (err)
goto error;
if (err)
goto error;
@@
-1344,7
+1344,7
@@
static int ovs_flow_cmd_new_or_set(struct sk_buff *skb, struct genl_info *info)
}
ovs_sw_flow_mask_add_ref(mask_p);
}
ovs_sw_flow_mask_add_ref(mask_p);
-
rcu_assign_pointer(flow->mask, mask_p)
;
+
flow->mask = mask_p
;
rcu_assign_pointer(flow->sf_acts, acts);
/* Put flow in bucket. */
rcu_assign_pointer(flow->sf_acts, acts);
/* Put flow in bucket. */
@@
-1591,6
+1591,7
@@
static struct genl_family dp_datapath_genl_family = {
.version = OVS_DATAPATH_VERSION,
.maxattr = OVS_DP_ATTR_MAX,
SET_NETNSOK
.version = OVS_DATAPATH_VERSION,
.maxattr = OVS_DP_ATTR_MAX,
SET_NETNSOK
+ SET_PARALLEL_OPS
};
static struct genl_multicast_group ovs_dp_datapath_multicast_group = {
};
static struct genl_multicast_group ovs_dp_datapath_multicast_group = {
@@
-1970,6
+1971,7
@@
static struct genl_family dp_vport_genl_family = {
.version = OVS_VPORT_VERSION,
.maxattr = OVS_VPORT_ATTR_MAX,
SET_NETNSOK
.version = OVS_VPORT_VERSION,
.maxattr = OVS_VPORT_ATTR_MAX,
SET_NETNSOK
+ SET_PARALLEL_OPS
};
struct genl_multicast_group ovs_dp_vport_multicast_group = {
};
struct genl_multicast_group ovs_dp_vport_multicast_group = {