On Mon, Mar 10, 2014 at 2:47 PM, Ben Pfaff <b...@nicira.com> wrote:
> On Mon, Mar 10, 2014 at 02:12:27PM -0700, Gurucharan Shetty wrote:
>> struct ofpact has enums that are packed in case of __GNUC__.
>> This packing does not occur for visual studio. For 'struct ofpact_nest',
>> we are expecting that this structure is less than or equal to 8 bytes
>> which won't be true in compilers where enums are not packed.
>>
>> Signed-off-by: Gurucharan Shetty <gshe...@nicira.com>
>> ---
>> There must have been a reason why there was this BUILD_ASSERT in the
>> first place. But, I do not understand the reason. (Unit tests don't
>> fail after removing the OVS_PACKED_ENUM macro from the related enums
>> and this build assert.)
>
> The goal of OFPACT_ALIGNTO is to make sure that every ofpact starts on
> an 8-byte boundary, which is in turn important because RISC machines
> often require 8-byte alignment for e.g. pointers.  Since ofpact_nest
> contains nested ofpacts, the ofpact[] array inside it needs to be on
> an 8-byte boundary too.  The build assertion checked for that, but it
> was too strict: any multiple of 8 bytes will work, but it required
> exactly 8 bytes.
>
> I think that the build assertion should be relaxed from "<offset> ==
> OFPACT_ALIGNTO", to "<offset> % OFPACT_ALIGNTO == 0".
>
> Does that make sense?
Yes. Thanks. I will make the change as part of an upcoming series.
>
> Thanks,
>
> Ben.
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to