Thanks, I applied this patch to master.

On Sat, Jul 26, 2014 at 08:20:27AM -0700, Jarno Rajahalme wrote:
> Acked-by: Jarno Rajahalme <[email protected]>
> 
> On Jul 25, 2014, at 10:25 PM, Ben Pfaff <[email protected]> wrote:
> 
> > At the time that Open vSwitch implemented registers, there was a high cost
> > to adding additional fields, so I wrote the code so that the number of
> > registers could be reduced at compile time.  Now, fields are cheaper
> > (though not free) and in the meantime I have never heard of anyone reducing
> > the number of registers.  Since I intend to add more code that would
> > require awkward "#if"s like this, I think that this is a good time to
> > simplify it by requiring FLOW_N_REGS to be fixed.  This commit does that.
> > 
> > Signed-off-by: Ben Pfaff <[email protected]>
> > ---
> > lib/meta-flow.c | 21 +++------------------
> > lib/meta-flow.h | 50 +++++++-------------------------------------------
> > 2 files changed, 10 insertions(+), 61 deletions(-)
> > 
> > diff --git a/lib/meta-flow.c b/lib/meta-flow.c
> > index 44fc2a9..e980a2a 100644
> > --- a/lib/meta-flow.c
> > +++ b/lib/meta-flow.c
> > @@ -223,32 +223,17 @@ const struct mf_field mf_fields[MFF_N_IDS] = {
> >         OFPUTIL_P_NXM_OXM_ANY,                  \
> >         -1,                                     \
> >     }
> > -#if FLOW_N_REGS > 0
> > +#if FLOW_N_REGS == 8
> >     REGISTER(0),
> > -#endif
> > -#if FLOW_N_REGS > 1
> >     REGISTER(1),
> > -#endif
> > -#if FLOW_N_REGS > 2
> >     REGISTER(2),
> > -#endif
> > -#if FLOW_N_REGS > 3
> >     REGISTER(3),
> > -#endif
> > -#if FLOW_N_REGS > 4
> >     REGISTER(4),
> > -#endif
> > -#if FLOW_N_REGS > 5
> >     REGISTER(5),
> > -#endif
> > -#if FLOW_N_REGS > 6
> >     REGISTER(6),
> > -#endif
> > -#if FLOW_N_REGS > 7
> >     REGISTER(7),
> > -#endif
> > -#if FLOW_N_REGS > 8
> > -#error
> > +#else
> > +#error "Need to update mf_fields[] to match FLOW_N_REGS"
> > #endif
> > 
> >     /* ## -- ## */
> > diff --git a/lib/meta-flow.h b/lib/meta-flow.h
> > index 7a4b8dc..3208137 100644
> > --- a/lib/meta-flow.h
> > +++ b/lib/meta-flow.h
> > @@ -1,5 +1,5 @@
> > /*
> > - * Copyright (c) 2011, 2012, 2013 Nicira, Inc.
> > + * Copyright (c) 2011, 2012, 2013, 2014 Nicira, Inc.
> >  *
> >  * Licensed under the Apache License, Version 2.0 (the "License");
> >  * you may not use this file except in compliance with the License.
> > @@ -47,29 +47,17 @@ enum OVS_PACKED_ENUM mf_field_id {
> >     MFF_SKB_PRIORITY,           /* be32 */
> >     MFF_PKT_MARK,               /* be32 */
> > 
> > -#if FLOW_N_REGS > 0
> > +#if FLOW_N_REGS == 8
> >     MFF_REG0,                   /* be32 */
> > -#endif
> > -#if FLOW_N_REGS > 1
> >     MFF_REG1,                   /* be32 */
> > -#endif
> > -#if FLOW_N_REGS > 2
> >     MFF_REG2,                   /* be32 */
> > -#endif
> > -#if FLOW_N_REGS > 3
> >     MFF_REG3,                   /* be32 */
> > -#endif
> > -#if FLOW_N_REGS > 4
> >     MFF_REG4,                   /* be32 */
> > -#endif
> > -#if FLOW_N_REGS > 5
> >     MFF_REG5,                   /* be32 */
> > -#endif
> > -#if FLOW_N_REGS > 6
> >     MFF_REG6,                   /* be32 */
> > -#endif
> > -#if FLOW_N_REGS > 7
> >     MFF_REG7,                   /* be32 */
> > +#else
> > +#error "Need to update MFF_REG* to match FLOW_N_REGS"
> > #endif
> > 
> >     /* L2. */
> > @@ -148,36 +136,12 @@ enum OVS_PACKED_ENUM mf_field_id {
> > 
> > /* Use this macro as CASE_MFF_REGS: in a switch statement to choose all of 
> > the
> >  * MFF_REGx cases. */
> > -#if FLOW_N_REGS == 1
> > -# define CASE_MFF_REGS                                          \
> > -    case MFF_REG0
> > -#elif FLOW_N_REGS == 2
> > -# define CASE_MFF_REGS                                          \
> > -    case MFF_REG0: case MFF_REG1
> > -#elif FLOW_N_REGS == 3
> > -# define CASE_MFF_REGS                                          \
> > -    case MFF_REG0: case MFF_REG1: case MFF_REG2
> > -#elif FLOW_N_REGS == 4
> > -# define CASE_MFF_REGS                                          \
> > -    case MFF_REG0: case MFF_REG1: case MFF_REG2: case MFF_REG3
> > -#elif FLOW_N_REGS == 5
> > -# define CASE_MFF_REGS                                          \
> > -    case MFF_REG0: case MFF_REG1: case MFF_REG2: case MFF_REG3: \
> > -    case MFF_REG4
> > -#elif FLOW_N_REGS == 6
> > -# define CASE_MFF_REGS                                          \
> > -    case MFF_REG0: case MFF_REG1: case MFF_REG2: case MFF_REG3: \
> > -    case MFF_REG4: case MFF_REG5
> > -#elif FLOW_N_REGS == 7
> > -# define CASE_MFF_REGS                                          \
> > -    case MFF_REG0: case MFF_REG1: case MFF_REG2: case MFF_REG3: \
> > -    case MFF_REG4: case MFF_REG5: case MFF_REG6
> > -#elif FLOW_N_REGS == 8
> > -# define CASE_MFF_REGS                                          \
> > +#if FLOW_N_REGS == 8
> > +#define CASE_MFF_REGS                                           \
> >     case MFF_REG0: case MFF_REG1: case MFF_REG2: case MFF_REG3: \
> >     case MFF_REG4: case MFF_REG5: case MFF_REG6: case MFF_REG7
> > #else
> > -# error
> > +#error "Need to update CASE_MFF_REGS to match FLOW_N_REGS"
> > #endif
> > 
> > /* Prerequisites for matching a field.
> > -- 
> > 1.9.1
> > 
> > _______________________________________________
> > dev mailing list
> > [email protected]
> > http://openvswitch.org/mailman/listinfo/dev
> 
_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev

Reply via email to