From: Alexei Starovoitov > On Tue, Jan 6, 2015 at 6:05 PM, Thomas Graf <tg...@suug.ch> wrote: > > +struct vxlan_gbp { > > +#ifdef __LITTLE_ENDIAN_BITFIELD > > + __u8 reserved_flags1:3, > ... > > + __be16 policy_id; > > +} __packed; > > are you sure that compiler will be smart enough > to do single short load when you pack > u8 + struct vxlan_gbp inside struct vxlanhdr ? > I suspect compiler will use two byte loads > with shifts and ors every time to access policy_id. > Even it works ok, I think this struct layout is ugly. > imo would be much easier to read if you replace > the whole vxlanhdr with vxlanhdr_gbp > or split vxlanhdr into two 32-bit structs. > then __packed hacks won't be needed.
Also, if you are writing the values then you need to write all the members of the bitfield in order to get a single write. Basically you are much better off using explicit masks. David _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev