Acked-by: Ethan Jackson <[email protected]>
On Thu, Sep 12, 2013 at 12:39 AM, Ben Pfaff <[email protected]> wrote: > Previously this parameter was useful for Clang locking annotations > but it isn't actually a locking requirement anymore, so remove > the parameter. > > Signed-off-by: Ben Pfaff <[email protected]> > --- > ofproto/ofproto-dpif.c | 2 +- > ofproto/ofproto-provider.h | 3 +-- > ofproto/ofproto.c | 33 +++++++++++---------------------- > 3 files changed, 13 insertions(+), 25 deletions(-) > > diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c > index edad2ba..7cd9d44 100644 > --- a/ofproto/ofproto-dpif.c > +++ b/ofproto/ofproto-dpif.c > @@ -1423,7 +1423,7 @@ destruct(struct ofproto *ofproto_) > cls_cursor_init(&cursor, &table->cls, NULL); > ovs_rwlock_unlock(&table->cls.rwlock); > CLS_CURSOR_FOR_EACH_SAFE (rule, next_rule, up.cr, &cursor) { > - ofproto_rule_delete(&ofproto->up, &table->cls, &rule->up); > + ofproto_rule_delete(&ofproto->up, &rule->up); > } > } > > diff --git a/ofproto/ofproto-provider.h b/ofproto/ofproto-provider.h > index a24b95c..8fa9d58 100644 > --- a/ofproto/ofproto-provider.h > +++ b/ofproto/ofproto-provider.h > @@ -457,8 +457,7 @@ rule_from_cls_rule(const struct cls_rule *cls_rule) > > void ofproto_rule_expire(struct rule *rule, uint8_t reason) > OVS_REQUIRES(ofproto_mutex); > -void ofproto_rule_delete(struct ofproto *, struct classifier *cls, > - struct rule *) > +void ofproto_rule_delete(struct ofproto *, struct rule *) > OVS_EXCLUDED(ofproto_mutex); > void ofproto_rule_reduce_timeouts(struct rule *rule, uint16_t idle_timeout, > uint16_t hard_timeout) > diff --git a/ofproto/ofproto.c b/ofproto/ofproto.c > index 7f25422..05c65ec 100644 > --- a/ofproto/ofproto.c > +++ b/ofproto/ofproto.c > @@ -154,8 +154,7 @@ static void oftable_enable_eviction(struct oftable *, > size_t n_fields); > > static void oftable_remove_rule(struct rule *rule) > OVS_REQUIRES(ofproto_mutex); > -static void oftable_remove_rule__(struct ofproto *ofproto, > - struct classifier *cls, struct rule *rule) > +static void oftable_remove_rule__(struct ofproto *, struct rule *) > OVS_REQUIRES(ofproto_mutex); > static void oftable_insert_rule(struct rule *); > > @@ -1130,14 +1129,12 @@ ofproto_get_snoops(const struct ofproto *ofproto, > struct sset *snoops) > } > > static void > -ofproto_rule_delete__(struct ofproto *ofproto, struct classifier *cls, > - struct rule *rule) > +ofproto_rule_delete__(struct ofproto *ofproto, struct rule *rule) > OVS_REQUIRES(ofproto_mutex) > { > struct ofopgroup *group; > > ovs_assert(!rule->pending); > - ovs_assert(cls == &ofproto->tables[rule->table_id].cls); > > group = ofopgroup_create_unattached(ofproto); > delete_flow__(rule, group, OFPRR_DELETE); > @@ -1152,24 +1149,19 @@ ofproto_rule_delete__(struct ofproto *ofproto, struct > classifier *cls, > * ofproto implementation. > * > * This function implements steps 4.4 and 4.5 in the section titled "Rule > Life > - * Cycle" in ofproto-provider.h. > - > - * The 'cls' argument is redundant (it is > &ofproto->tables[rule->table_id].cls) > - * but it allows Clang to do better checking. */ > + * Cycle" in ofproto-provider.h. */ > void > -ofproto_rule_delete(struct ofproto *ofproto, struct classifier *cls, > - struct rule *rule) > +ofproto_rule_delete(struct ofproto *ofproto, struct rule *rule) > OVS_EXCLUDED(ofproto_mutex) > { > struct ofopgroup *group; > > ovs_mutex_lock(&ofproto_mutex); > ovs_assert(!rule->pending); > - ovs_assert(cls == &ofproto->tables[rule->table_id].cls); > > group = ofopgroup_create_unattached(ofproto); > ofoperation_create(group, rule, OFOPERATION_DELETE, OFPRR_DELETE); > - oftable_remove_rule__(ofproto, cls, rule); > + oftable_remove_rule__(ofproto, rule); > ofproto->ofproto_class->rule_delete(rule); > ofopgroup_submit(group); > > @@ -1200,7 +1192,7 @@ ofproto_flush__(struct ofproto *ofproto) > ovs_rwlock_unlock(&table->cls.rwlock); > CLS_CURSOR_FOR_EACH_SAFE (rule, next_rule, cr, &cursor) { > if (!rule->pending) { > - ofproto_rule_delete__(ofproto, &table->cls, rule); > + ofproto_rule_delete__(ofproto, rule); > } > } > } > @@ -4226,13 +4218,12 @@ ofproto_rule_expire(struct rule *rule, uint8_t reason) > OVS_REQUIRES(ofproto_mutex) > { > struct ofproto *ofproto = rule->ofproto; > - struct classifier *cls = &ofproto->tables[rule->table_id].cls; > > ovs_assert(reason == OFPRR_HARD_TIMEOUT || reason == OFPRR_IDLE_TIMEOUT > || reason == OFPRR_DELETE || reason == OFPRR_GROUP_DELETE); > > ofproto_rule_send_removed(rule, reason); > - ofproto_rule_delete__(ofproto, cls, rule); > + ofproto_rule_delete__(ofproto, rule); > } > > /* Reduces '*timeout' to no more than 'max'. A value of zero in either case > @@ -6488,10 +6479,11 @@ oftable_enable_eviction(struct oftable *table, > > /* Removes 'rule' from the oftable that contains it. */ > static void > -oftable_remove_rule__(struct ofproto *ofproto, struct classifier *cls, > - struct rule *rule) > +oftable_remove_rule__(struct ofproto *ofproto, struct rule *rule) > OVS_REQUIRES(ofproto_mutex) > { > + struct classifier *cls = &ofproto->tables[rule->table_id].cls; > + > ovs_rwlock_wrlock(&cls->rwlock); > classifier_remove(cls, CONST_CAST(struct cls_rule *, &rule->cr)); > ovs_rwlock_unlock(&cls->rwlock); > @@ -6512,10 +6504,7 @@ static void > oftable_remove_rule(struct rule *rule) > OVS_REQUIRES(ofproto_mutex) > { > - struct ofproto *ofproto = rule->ofproto; > - struct oftable *table = &ofproto->tables[rule->table_id]; > - > - oftable_remove_rule__(ofproto, &table->cls, rule); > + oftable_remove_rule__(rule->ofproto, rule); > } > > /* Inserts 'rule' into its oftable, which must not already contain any rule > for > -- > 1.7.10.4 > > _______________________________________________ > dev mailing list > [email protected] > http://openvswitch.org/mailman/listinfo/dev _______________________________________________ dev mailing list [email protected] http://openvswitch.org/mailman/listinfo/dev
