> On Mar 27, 2014, at 3:59 PM, Jesse Gross <je...@nicira.com> wrote:
> 
>> On Fri, Feb 21, 2014 at 11:41 AM, Jarno Rajahalme <jrajaha...@nicira.com> 
>> wrote:
>> Minimize padding in sw_flow_key and move 'tp' top the main struct.
>> These changes simplify code when accessing the transport port numbers
>> and the tcp flags, and makes the sw_flow_key 8 bytes smaller on 64-bit
>> systems (128->120 bytes).  These changes also make the keys for IPv4
>> packets to fit in one cache line.
>> 
>> There is a valid concern for safety of packing the struct
>> ovs_key_ipv4_tunnel, as it would be possible to take the address of
>> the tun_id member as a __be64 * which could result in unaligned access
>> in some systems. However:
>> 
>> - sw_flow_key itself is 64-bit aligned, so the tun_id within is always
>>  64-bit aligned.
>> - We never make arrays of ovs_key_ipv4_tunnel (which would force every
>>  second tun_key to be misaligned).
>> - We never take the address of the tun_id in to a __be64 *.
>> - Whereever we use struct ovs_key_ipv4_tunnel outside the sw_flow_key,
>>  it is in stack (on tunnel input functions), where compiler has full
>>  control of the alignment.
> 
> I'm not sure that I understand the last comment here. On the stack,
> the compiler does have control over the layout but it will presumably
> use the alignment specified here when doing that layout.

Maybe the last comment is just redundant, then.

  Jarno
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to