aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVadym Martsynovskyy <vmartsyn@fb.com>2020-06-12 09:50:50 -0700
committerAndrew Yourtchenko <ayourtch@gmail.com>2020-08-18 19:47:21 +0000
commit347a225866851b88ed595e5a7ecde01e9c0b3260 (patch)
tree6581d13739b00628b5ab4aa8959cc02416080786
parent86a5a5d5c23ee7ee81967b2fb96b000f9e6ba11f (diff)
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)
-rw-r--r--src/vnet/udp/udp_encap.h8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/vnet/udp/udp_encap.h b/src/vnet/udp/udp_encap.h
index 888efa8c37c..9d82e59ba55 100644
--- a/src/vnet/udp/udp_encap.h
+++ b/src/vnet/udp/udp_encap.h
@@ -68,14 +68,14 @@ typedef struct udp_encap_t_
} __attribute__ ((packed)) ue_hdrs;
/**
- * Flags controlling fixup behaviour
+ * The DPO used to forward to the next node in the VLIB graph
*/
- udp_encap_fixup_flags_t ue_flags;
+ dpo_id_t ue_dpo;
/**
- * The DPO used to forward to the next node in the VLIB graph
+ * Flags controlling fixup behaviour
*/
- dpo_id_t ue_dpo;
+ udp_encap_fixup_flags_t ue_flags;
/**
* the protocol of the IP header imposed