udp: align udp_encap_t_ to 2 cachelines 83/28483/2
authorVadym Martsynovskyy <vmartsyn@fb.com>
Fri, 12 Jun 2020 16:50:50 +0000 (09:50 -0700)
committerAndrew Yourtchenko <ayourtch@gmail.com>
Tue, 18 Aug 2020 19:47:21 +0000 (19:47 +0000)
commit347a225866851b88ed595e5a7ecde01e9c0b3260
tree6581d13739b00628b5ab4aa8959cc02416080786
parent86a5a5d5c23ee7ee81967b2fb96b000f9e6ba11f
udp: align udp_encap_t_ to 2 cachelines

Based on the comments in the struct, udp_encap_t_ is meant to span 2
cachelines. Due to the 64 bit alignment of dpo_id_t, the struct spanned
3 cachelines. This caused fetching ue_ip_proto to trigger an additional
cache miss. This patch rearranges the ordering of the struct fields
so that udp_encap_t_ only spans 2 cachelines as intended.

before:
(gdb) print (int)&((struct udp_encap_t_*)0)->cacheline1
$8 = 128

after:
(gdb) print (int)&((struct udp_encap_t_*)0)->cacheline1
$1 = 64

Type: fix
Signed-off-by: Vadym Martsynovskyy <vmartsyn@fb.com>
Change-Id: I066c08654d4a8ef3e2d3954e957d4c5d382b209f
(cherry picked from commit 42386fc974148f812ef3eb73ff09a603caa23565)
src/vnet/udp/udp_encap.h