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
