summaryrefslogtreecommitdiffstats
path: root/src/plugins/dpdk/ipsec
diff options
context:
space:
mode:
authorSergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>2017-10-31 15:55:39 +0000
committerDamjan Marion <dmarion.lists@gmail.com>2017-11-01 09:28:47 +0000
commitaa3a25c1c9534a634ca20f64cbeb287733c67d9d (patch)
tree655187fcbec3918a04edd6eddbca3118f03e66ff /src/plugins/dpdk/ipsec
parent812ed39f9da336310e815c361ab5a9f118657d94 (diff)
dpdk/ipsec: fix digest physical address
VPP-1034 Change-Id: I02b4db9e52446ab8578df1f011dd27f39de64c70 Signed-off-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
Diffstat (limited to 'src/plugins/dpdk/ipsec')
-rw-r--r--src/plugins/dpdk/ipsec/esp_decrypt.c7
-rw-r--r--src/plugins/dpdk/ipsec/esp_encrypt.c4
-rw-r--r--src/plugins/dpdk/ipsec/ipsec.h3
3 files changed, 7 insertions, 7 deletions
diff --git a/src/plugins/dpdk/ipsec/esp_decrypt.c b/src/plugins/dpdk/ipsec/esp_decrypt.c
index 6de1f004347..ab98d56bbfd 100644
--- a/src/plugins/dpdk/ipsec/esp_decrypt.c
+++ b/src/plugins/dpdk/ipsec/esp_decrypt.c
@@ -271,8 +271,7 @@ dpdk_esp_decrypt_node_fn (vlib_main_t * vm,
u32 cipher_off, cipher_len;
u32 auth_len = 0, aad_size = 0;
- u8 *aad = NULL, *digest = NULL;
- u64 digest_paddr = 0;
+ u8 *aad = NULL;
u8 *iv = (u8 *) (esp0 + 1);
@@ -281,7 +280,9 @@ dpdk_esp_decrypt_node_fn (vlib_main_t * vm,
cipher_off = sizeof (esp_header_t) + iv_size;
cipher_len = payload_len;
- digest = vlib_buffer_get_tail (b0) - trunc_size;
+ u8 *digest = vlib_buffer_get_tail (b0) - trunc_size;
+ u64 digest_paddr =
+ mb0->buf_physaddr + digest - ((u8 *) mb0->buf_addr);
if (!is_aead && cipher_alg->alg == RTE_CRYPTO_CIPHER_AES_CBC)
clib_memcpy(icb, iv, 16);
diff --git a/src/plugins/dpdk/ipsec/esp_encrypt.c b/src/plugins/dpdk/ipsec/esp_encrypt.c
index 7d14a3a2007..ac60fdd589f 100644
--- a/src/plugins/dpdk/ipsec/esp_encrypt.c
+++ b/src/plugins/dpdk/ipsec/esp_encrypt.c
@@ -420,6 +420,8 @@ dpdk_esp_encrypt_node_fn (vlib_main_t * vm,
u32 auth_len = 0, aad_size = 0;
u32 *aad = NULL;
u8 *digest = vlib_buffer_get_tail (b0) - trunc_size;
+ u64 digest_paddr =
+ mb0->buf_physaddr + digest - ((u8 *) mb0->buf_addr);
if (!is_aead && cipher_alg->alg == RTE_CRYPTO_CIPHER_AES_CBC)
{
@@ -466,7 +468,7 @@ dpdk_esp_encrypt_node_fn (vlib_main_t * vm,
crypto_op_setup (is_aead, mb0, op, session,
cipher_off, cipher_len, (u8 *) icb, iv_size,
0, auth_len, (u8 *) aad, aad_size,
- digest, 0, trunc_size);
+ digest, digest_paddr, trunc_size);
trace:
if (PREDICT_FALSE (b0->flags & VLIB_BUFFER_IS_TRACED))
diff --git a/src/plugins/dpdk/ipsec/ipsec.h b/src/plugins/dpdk/ipsec/ipsec.h
index 22890628ec6..2a48e4e6110 100644
--- a/src/plugins/dpdk/ipsec/ipsec.h
+++ b/src/plugins/dpdk/ipsec/ipsec.h
@@ -328,9 +328,6 @@ crypto_op_setup (u8 is_aead, struct rte_mbuf *mb0,
sym_op->m_src = mb0;
sym_op->session = session;
- if (!digest_paddr)
- digest_paddr = mb0->buf_physaddr + ((u8 *) digest) - ((u8 *) mb0);
-
#if DPDK_NO_AEAD
sym_op->cipher.data.offset = cipher_off;
sym_op->cipher.data.length = cipher_len;