Thanks, applied.
On Fri, Aug 16, 2013 at 08:51:18AM +0800, Ethan Jackson wrote: > Acked-by: Ethan Jackson <et...@nicira.com> > > Thanks a lot. > > On Fri, Aug 16, 2013 at 8:39 AM, Ben Pfaff <b...@nicira.com> wrote: > > The OpenFlow OFPFF_CHECK_OVERLAP flag requires us to check whether the flow > > being inserted overlaps with any existing flows. That isn't efficiently > > implemented and typically requires us to compare the new flow against most > > or all of the existing flows. We don't have to do that work if > > OFPFF_CHECK_OVERLAP is not requested, but commit 0b4f207828c (classifier: > > Make use of the classifier thread safe.) inadvertently made us do it > > anyway. > > > > Signed-off-by: Ben Pfaff <b...@nicira.com> > > --- > > ofproto/ofproto.c | 20 ++++++++++++-------- > > 1 file changed, 12 insertions(+), 8 deletions(-) > > > > diff --git a/ofproto/ofproto.c b/ofproto/ofproto.c > > index bbdb2d2..a22cce4 100644 > > --- a/ofproto/ofproto.c > > +++ b/ofproto/ofproto.c > > @@ -3345,7 +3345,6 @@ add_flow(struct ofproto *ofproto, struct ofconn > > *ofconn, > > struct rule *victim; > > struct rule *rule; > > uint8_t table_id; > > - bool overlaps; > > int error; > > > > error = check_table_id(ofproto, fm->table_id); > > @@ -3402,13 +3401,18 @@ add_flow(struct ofproto *ofproto, struct ofconn > > *ofconn, > > } > > > > /* Check for overlap, if requested. */ > > - ovs_rwlock_rdlock(&table->cls.rwlock); > > - overlaps = classifier_rule_overlaps(&table->cls, &rule->cr); > > - ovs_rwlock_unlock(&table->cls.rwlock); > > - if (fm->flags & OFPFF_CHECK_OVERLAP && overlaps) { > > - cls_rule_destroy(&rule->cr); > > - ofproto->ofproto_class->rule_dealloc(rule); > > - return OFPERR_OFPFMFC_OVERLAP; > > + if (fm->flags & OFPFF_CHECK_OVERLAP) { > > + bool overlaps; > > + > > + ovs_rwlock_rdlock(&table->cls.rwlock); > > + overlaps = classifier_rule_overlaps(&table->cls, &rule->cr); > > + ovs_rwlock_unlock(&table->cls.rwlock); > > + > > + if (overlaps) { > > + cls_rule_destroy(&rule->cr); > > + ofproto->ofproto_class->rule_dealloc(rule); > > + return OFPERR_OFPFMFC_OVERLAP; > > + } > > } > > > > /* FIXME: Implement OFPFF12_RESET_COUNTS */ > > -- > > 1.7.10.4 > > > > _______________________________________________ > > dev mailing list > > dev@openvswitch.org > > http://openvswitch.org/mailman/listinfo/dev _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev