From: Andy Zhou Date: Tue, 30 Jul 2013 17:52:34 +0000 (-0700) Subject: ofproto-dpif: Unset DPIF_FP_MODIFY flag when creating a new flo X-Git-Tag: sliver-openvswitch-2.0.90-1~34^2~14 X-Git-Url: http://git.onelab.eu/?p=sliver-openvswitch.git;a=commitdiff_plain;h=0f74f625166ed49d7623bd1a3216a1d73fdeb208 ofproto-dpif: Unset DPIF_FP_MODIFY flag when creating a new flo Remove the DPIF_FP_MODIFY flag when creating a new flow. When flows arrive in a batch, userspace may push down multiple unique flow definitions that overlap when wildcards are applied. Kernels support flow wildcarding will reject these flow as duplicates (EEXIST), which will be logged at a lower logging level. Signed-off-by: Andy Zhou Signed-off-by: Ben Pfaff --- diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c index ca0a317d9..8c7164b2b 100644 --- a/ofproto/ofproto-dpif.c +++ b/ofproto/ofproto-dpif.c @@ -3540,7 +3540,7 @@ handle_flow_miss_with_facet(struct flow_miss *miss, struct facet *facet, op->xout_garbage = false; op->dpif_op.type = DPIF_OP_FLOW_PUT; op->subfacet = subfacet; - put->flags = DPIF_FP_CREATE | DPIF_FP_MODIFY; + put->flags = DPIF_FP_CREATE; put->key = miss->key; put->key_len = miss->key_len; put->mask = op->mask.data; @@ -5088,7 +5088,8 @@ subfacet_install(struct subfacet *subfacet, const struct ofpbuf *odp_actions, enum dpif_flow_put_flags flags; int ret; - flags = DPIF_FP_CREATE | DPIF_FP_MODIFY; + flags = subfacet->path == SF_NOT_INSTALLED ? DPIF_FP_CREATE + : DPIF_FP_MODIFY; if (stats) { flags |= DPIF_FP_ZERO_STATS; }