dpdk: fix missing symbol 36/32436/2
authorFan Zhang <roy.fan.zhang@intel.com>
Tue, 25 May 2021 14:50:30 +0000 (15:50 +0100)
committerDamjan Marion <dmarion@me.com>
Wed, 26 May 2021 21:06:34 +0000 (21:06 +0000)
Type: fix

This patch fixes the missing symbol of dpdk_plugin.so when
creating symmetric key. The solution is to add dependency
of libssl to dpdk cryptodev and disable cryptodev engine
when libssl is not presented.

Signed-off-by: Fan Zhang <roy.fan.zhang@intel.com>
Change-Id: I30aa6e3e3af1faefa82883bad613e1d82235a2ec

src/plugins/dpdk/CMakeLists.txt
src/plugins/dpdk/cryptodev/cryptodev.h
src/plugins/dpdk/device/init.c

index 386515e..5de75e7 100644 (file)
@@ -117,9 +117,15 @@ endif()
 # DPDK plugin
 ##############################################################################
 
-if (${DPDK_VERSION} VERSION_GREATER_EQUAL "20.8.0")
-  set(DPDK_CRYPTODEV_RAW_SOURCE cryptodev/cryptodev_raw_data_path.c)
-endif ()
+if(OPENSSL_FOUND)
+  include_directories(${OPENSSL_INCLUDE_DIR})
+
+  set(DPDK_CRYPTODEV_OP_SOURCE cryptodev/cryptodev_op_data_path.c)
+  set(DPDK_CRYPTODEV_SOURCE cryptodev/cryptodev.c)
+  if (${DPDK_VERSION} VERSION_GREATER_EQUAL "20.8.0")
+    set(DPDK_CRYPTODEV_RAW_SOURCE cryptodev/cryptodev_raw_data_path.c)
+  endif()
+endif()
 
 add_vpp_plugin(dpdk
   SOURCES
@@ -133,8 +139,8 @@ add_vpp_plugin(dpdk
   device/format.c
   device/init.c
   device/node.c
-  cryptodev/cryptodev_op_data_path.c
-  cryptodev/cryptodev.c
+  ${DPDK_CRYPTODEV_OP_SOURCE}
+  ${DPDK_CRYPTODEV_SOURCE}
   ${DPDK_CRYPTODEV_RAW_SOURCE}
 
   MULTIARCH_SOURCES
@@ -151,6 +157,9 @@ add_vpp_plugin(dpdk
   LINK_LIBRARIES
   ${DPDK_LINK_LIBRARIES}
 
+  LINK_LIBRARIES
+  ${OPENSSL_LIBRARIES}
+
   COMPONENT
   vpp-plugin-dpdk
 )
index 1c013be..3b47b43 100644 (file)
@@ -200,7 +200,6 @@ clib_error_t *cryptodev_register_cop_hdl (vlib_main_t *vm, u32 eidx);
 clib_error_t *__clib_weak cryptodev_register_raw_hdl (vlib_main_t *vm,
                                                      u32 eidx);
 
-clib_error_t *
-dpdk_cryptodev_init (vlib_main_t * vm);
+clib_error_t *__clib_weak dpdk_cryptodev_init (vlib_main_t *vm);
 
 #endif
index 59d46f0..8b07e00 100644 (file)
@@ -1842,11 +1842,15 @@ dpdk_process (vlib_main_t * vm, vlib_node_runtime_t * rt, vlib_frame_t * f)
   if (error)
     clib_error_report (error);
 
-  error = dpdk_cryptodev_init (vm);
-  if (error)
+  if (dpdk_cryptodev_init)
     {
-      vlib_log_warn (dpdk_main.log_cryptodev, "%U", format_clib_error, error);
-      clib_error_free (error);
+      error = dpdk_cryptodev_init (vm);
+      if (error)
+       {
+         vlib_log_warn (dpdk_main.log_cryptodev, "%U", format_clib_error,
+                        error);
+         clib_error_free (error);
+       }
     }
 
   tm->worker_thread_release = 1;