From d709cbcb1ef80633af657c5427608831e5bbd919 Mon Sep 17 00:00:00 2001 From: Damjan Marion Date: Tue, 26 Mar 2019 13:16:42 +0100 Subject: ipsec: compress ipsec_sa_t so data used by dataplane code fits in cacheline Change-Id: I81ecdf9fdcfcb017117b47dc031f93208e004d7c Signed-off-by: Damjan Marion Signed-off-by: Neale Ranns --- src/plugins/dpdk/ipsec/esp_decrypt.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) (limited to 'src/plugins/dpdk/ipsec/esp_decrypt.c') diff --git a/src/plugins/dpdk/ipsec/esp_decrypt.c b/src/plugins/dpdk/ipsec/esp_decrypt.c index 20040433420..dcc276f99bc 100644 --- a/src/plugins/dpdk/ipsec/esp_decrypt.c +++ b/src/plugins/dpdk/ipsec/esp_decrypt.c @@ -234,13 +234,13 @@ dpdk_esp_decrypt_inline (vlib_main_t * vm, } /* anti-replay check */ - if (sa0->use_anti_replay) + if (ipsec_sa_is_set_USE_ANTI_REPLAY (sa0)) { int rv = 0; seq = clib_net_to_host_u32 (esp0->seq); - if (PREDICT_TRUE (sa0->use_esn)) + if (PREDICT_TRUE (ipsec_sa_is_set_USE_EXTENDED_SEQ_NUM (sa0))) rv = esp_replay_check_esn (sa0, seq); else rv = esp_replay_check (sa0, seq); @@ -339,7 +339,7 @@ dpdk_esp_decrypt_inline (vlib_main_t * vm, clib_memcpy_fast (aad, esp0, 8); /* _aad[3] should always be 0 */ - if (PREDICT_FALSE (sa0->use_esn)) + if (PREDICT_FALSE (ipsec_sa_is_set_USE_EXTENDED_SEQ_NUM (sa0))) _aad[2] = clib_host_to_net_u32 (sa0->seq_hi); else _aad[2] = 0; @@ -348,7 +348,7 @@ dpdk_esp_decrypt_inline (vlib_main_t * vm, { auth_len = sizeof (esp_header_t) + iv_size + payload_len; - if (sa0->use_esn) + if (ipsec_sa_is_set_USE_EXTENDED_SEQ_NUM (sa0)) { clib_memcpy_fast (priv->icv, digest, trunc_size); u32 *_digest = (u32 *) digest; @@ -560,18 +560,19 @@ dpdk_esp_decrypt_post_inline (vlib_main_t * vm, iv_size = cipher_alg->iv_len; - if (sa0->use_anti_replay) + if (ipsec_sa_is_set_USE_ANTI_REPLAY (sa0)) { u32 seq; seq = clib_host_to_net_u32 (esp0->seq); - if (PREDICT_TRUE (sa0->use_esn)) + if (PREDICT_TRUE (ipsec_sa_is_set_USE_EXTENDED_SEQ_NUM (sa0))) esp_replay_advance_esn (sa0, seq); else esp_replay_advance (sa0, seq); } /* if UDP encapsulation is used adjust the address of the IP header */ - if (sa0->udp_encap && (b0->flags & VNET_BUFFER_F_IS_IP4)) + if (ipsec_sa_is_set_UDP_ENCAP (sa0) + && (b0->flags & VNET_BUFFER_F_IS_IP4)) { udp_encap_adv = sizeof (udp_header_t); } @@ -599,11 +600,11 @@ dpdk_esp_decrypt_post_inline (vlib_main_t * vm, goto trace; } #endif - if (sa0->is_tunnel) + if (ipsec_sa_is_set_IS_TUNNEL (sa0)) { if (f0->next_header == IP_PROTOCOL_IP_IN_IP) next0 = ESP_DECRYPT_NEXT_IP4_INPUT; - else if (sa0->is_tunnel_ip6 + else if (ipsec_sa_is_set_IS_TUNNEL_V6 (sa0) && f0->next_header == IP_PROTOCOL_IPV6) next0 = ESP_DECRYPT_NEXT_IP6_INPUT; else @@ -629,7 +630,7 @@ dpdk_esp_decrypt_post_inline (vlib_main_t * vm, u16 ih4_len = ip4_header_bytes (ih4); vlib_buffer_advance (b0, -ih4_len - udp_encap_adv); next0 = ESP_DECRYPT_NEXT_IP4_INPUT; - if (!sa0->udp_encap) + if (!ipsec_sa_is_set_UDP_ENCAP (sa0)) { oh4 = vlib_buffer_get_current (b0); memmove (oh4, ih4, ih4_len); -- cgit 1.2.3-korg