[ovs-dev] [PATCH 2/6] ofproto: Make 'importance' immutable.
Ben Pfaff
blp at nicira.com
Fri Jul 3 00:42:15 UTC 2015
Applied to master, thanks!
On Thu, Jul 02, 2015 at 05:50:48AM -0700, Jarno Rajahalme wrote:
> Acked-by: Jarno Rajahalme <jrajahalme at nicira.com>
>
> Jarno
>
> > On Jun 24, 2015, at 10:57 AM, Ben Pfaff <blp at nicira.com> wrote:
> >
> > OpenFlow provides no means to change the importance of a flow after it is
> > added, so make it immutable so that it is reasonable to read it without
> > locking.
> >
> > Signed-off-by: Ben Pfaff <blp at nicira.com>
> > ---
> > ofproto/ofproto-provider.h | 2 +-
> > ofproto/ofproto.c | 5 ++---
> > 2 files changed, 3 insertions(+), 4 deletions(-)
> >
> > diff --git a/ofproto/ofproto-provider.h b/ofproto/ofproto-provider.h
> > index 527823a..495f787 100644
> > --- a/ofproto/ofproto-provider.h
> > +++ b/ofproto/ofproto-provider.h
> > @@ -354,7 +354,7 @@ struct rule {
> > uint16_t idle_timeout OVS_GUARDED; /* In seconds from ->used. */
> >
> > /* Eviction precedence. */
> > - uint16_t importance OVS_GUARDED;
> > + const uint16_t importance;
> >
> > /* Removal reason for sending flow removed message.
> > * Used only if 'flags' has OFPUTIL_FF_SEND_FLOW_REM set and if the
> > diff --git a/ofproto/ofproto.c b/ofproto/ofproto.c
> > index 278c97f..d48c31c 100644
> > --- a/ofproto/ofproto.c
> > +++ b/ofproto/ofproto.c
> > @@ -4633,7 +4633,7 @@ replace_rule_create(struct ofproto *ofproto, struct ofputil_flow_mod *fm,
> > ovs_mutex_lock(&rule->mutex);
> > rule->idle_timeout = fm->idle_timeout;
> > rule->hard_timeout = fm->hard_timeout;
> > - rule->importance = fm->importance;
> > + *CONST_CAST(uint16_t *, &rule->importance) = fm->importance;
> > rule->removed_reason = OVS_OFPRR_NONE;
> >
> > *CONST_CAST(uint8_t *, &rule->table_id) = table_id;
> > @@ -4649,7 +4649,6 @@ replace_rule_create(struct ofproto *ofproto, struct ofputil_flow_mod *fm,
> >
> > /* Copy values from old rule for modify semantics. */
> > if (old_rule && fm->delete_reason != OFPRR_EVICTION) {
> > - /* 'fm' says that */
> > bool change_cookie = (fm->modify_cookie
> > && fm->new_cookie != OVS_BE64_MAX
> > && fm->new_cookie != old_rule->flow_cookie);
> > @@ -4658,7 +4657,7 @@ replace_rule_create(struct ofproto *ofproto, struct ofputil_flow_mod *fm,
> > if (fm->command != OFPFC_ADD) {
> > rule->idle_timeout = old_rule->idle_timeout;
> > rule->hard_timeout = old_rule->hard_timeout;
> > - rule->importance = old_rule->importance;
> > + *CONST_CAST(uint16_t *, &rule->importance) = old_rule->importance;
> > rule->flags = old_rule->flags;
> > rule->created = old_rule->created;
> > }
> > --
> > 2.1.3
> >
> > _______________________________________________
> > dev mailing list
> > dev at openvswitch.org
> > http://openvswitch.org/mailman/listinfo/dev
>
More information about the dev
mailing list