summaryrefslogtreecommitdiffstats
path: root/block
diff options
context:
space:
mode:
authorJarno Rajahalme <jrajahalme@nicira.com>2014-05-05 09:54:49 -0700
committerPravin B Shelar <pshelar@nicira.com>2014-05-22 16:27:34 -0700
commit1139e241ec436b9e9610c7a33ac5c6657f87fda1 (patch)
tree55695454aef14f07009148a6919b52c04308152a /block
parent091b64868b43ed84334c6623ea6a08497529d4ff (diff)
downloadlinux-1139e241ec436b9e9610c7a33ac5c6657f87fda1.tar.bz2
openvswitch: Compact sw_flow_key.
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. Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com> Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
Diffstat (limited to 'block')
0 files changed, 0 insertions, 0 deletions