[ovs-dev] [PATCH] ofproto: Send only one OFPT_FLOW_REMOVED message when a flow expires.

Justin Pettit jpettit at nicira.com
Sat Oct 19 00:25:05 UTC 2013


Acked-by: Justin Pettit <jpettit at nicira.com>

--Justin


On Oct 18, 2013, at 4:30 PM, Ben Pfaff <blp at nicira.com> wrote:

> Commit 15aaf59932a3 (ofproto: Add global locking around flow table
> changes.) introduced doubled messages for expirations.
> 
> Reported-by: John Hurley <john.hurley at netronome.com>
> Signed-off-by: Ben Pfaff <blp at nicira.com>
> ---
> ofproto/ofproto.c |   10 +++++-----
> 1 file changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/ofproto/ofproto.c b/ofproto/ofproto.c
> index f44a7c4..f67e1fb 100644
> --- a/ofproto/ofproto.c
> +++ b/ofproto/ofproto.c
> @@ -1139,7 +1139,8 @@ ofproto_get_snoops(const struct ofproto *ofproto, struct sset *snoops)
> }
> 
> static void
> -ofproto_rule_delete__(struct ofproto *ofproto, struct rule *rule)
> +ofproto_rule_delete__(struct ofproto *ofproto, struct rule *rule,
> +                      uint8_t reason)
>     OVS_REQUIRES(ofproto_mutex)
> {
>     struct ofopgroup *group;
> @@ -1147,7 +1148,7 @@ ofproto_rule_delete__(struct ofproto *ofproto, struct rule *rule)
>     ovs_assert(!rule->pending);
> 
>     group = ofopgroup_create_unattached(ofproto);
> -    delete_flow__(rule, group, OFPRR_DELETE);
> +    delete_flow__(rule, group, reason);
>     ofopgroup_submit(group);
> }
> 
> @@ -1202,7 +1203,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, rule);
> +                ofproto_rule_delete__(ofproto, rule, OFPRR_DELETE);
>             }
>         }
>     }
> @@ -4322,8 +4323,7 @@ ofproto_rule_expire(struct rule *rule, uint8_t reason)
>     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, rule);
> +    ofproto_rule_delete__(ofproto, rule, reason);
> }
> 
> /* Reduces '*timeout' to no more than 'max'.  A value of zero in either case
> -- 
> 1.7.10.4
> 
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev




More information about the dev mailing list