dpdk/ipsec: fix digest physical address 59/9159/2
authorSergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
Tue, 31 Oct 2017 15:55:39 +0000 (15:55 +0000)
committerDamjan Marion <dmarion.lists@gmail.com>
Wed, 1 Nov 2017 09:28:47 +0000 (09:28 +0000)
VPP-1034

Change-Id: I02b4db9e52446ab8578df1f011dd27f39de64c70
Signed-off-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
src/plugins/dpdk/ipsec/esp_decrypt.c
src/plugins/dpdk/ipsec/esp_encrypt.c
src/plugins/dpdk/ipsec/ipsec.h

index 6de1f00..ab98d56 100644 (file)
@@ -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);
index 7d14a3a..ac60fdd 100644 (file)
@@ -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))
index 2289062..2a48e4e 100644 (file)
@@ -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;