From 8b81d1ef3ca5f1815267a12d44b6ebc96b5a45c1 Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Mon, 9 Sep 2013 22:36:19 -0700 Subject: [PATCH] ofproto: Remove redundant cls parameter from a few functions. 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 Acked-by: Ethan Jackson --- 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 edad2ba3e..7cd9d4409 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 782fe6929..bbb9ba115 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 f3ed8390c..ada11ab11 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); } } } @@ -4228,13 +4220,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 @@ -6493,10 +6484,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); @@ -6517,10 +6509,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 -- 2.43.0