From: Tomasz Jozwiak <tomaszx.jozw...@intel.com>

For all trace on the data-path move to dynamic logging.
Add new QAT_DP_LOG macro to separate from non-dp trace.
Use the overall RTE_LOG_DP_LEVEL to override and compile out
debug data-path trace.
Add "unlikely" in two appropriate error checks.

Signed-off-by: Tomasz Jozwiak <tomaszx.jozw...@intel.com>
Signed-off-by: Fiona Trahe <fiona.tr...@intel.com>
---
 config/common_base            |    2 -
 drivers/crypto/qat/qat_logs.c |   23 ++++++++++++++
 drivers/crypto/qat/qat_logs.h |   20 ++++++++++++
 drivers/crypto/qat/qat_sym.c  |   65 +++++++++++++++++++---------------------
 drivers/crypto/qat/qat_sym.h  |   30 ++++++++++---------
 5 files changed, 90 insertions(+), 50 deletions(-)

diff --git a/config/common_base b/config/common_base
index e15ebac..3cd702e 100644
--- a/config/common_base
+++ b/config/common_base
@@ -482,8 +482,6 @@ CONFIG_RTE_DPAA_SEC_PMD_MAX_NB_SESSIONS=2048
 # Compile PMD for QuickAssist based devices
 #
 CONFIG_RTE_LIBRTE_PMD_QAT=n
-CONFIG_RTE_LIBRTE_PMD_QAT_DEBUG_TX=n
-CONFIG_RTE_LIBRTE_PMD_QAT_DEBUG_RX=n
 #
 # Max. number of QuickAssist devices, which can be detected and attached
 #
diff --git a/drivers/crypto/qat/qat_logs.c b/drivers/crypto/qat/qat_logs.c
index c5ee539..da94eb9 100644
--- a/drivers/crypto/qat/qat_logs.c
+++ b/drivers/crypto/qat/qat_logs.c
@@ -3,8 +3,26 @@
  */
 
 #include <rte_log.h>
+#include <rte_hexdump.h>
+
+#include "qat_logs.h"
 
 int qat_gen_logtype;
+int qat_dp_logtype;
+
+int
+qat_hexdump_log(uint32_t level, uint32_t logtype, const char *title,
+               const void *buf, unsigned int len)
+{
+       if (level > rte_log_get_global_level())
+               return 0;
+       if (level > (uint32_t)(rte_log_get_level(logtype)))
+               return 0;
+
+       rte_hexdump(rte_logs.file == NULL ? stderr : rte_logs.file,
+                               title, buf, len);
+       return 0;
+}
 
 static void
 qat_pci_init_log(void)
@@ -13,6 +31,11 @@
        qat_gen_logtype = rte_log_register("pmd.qat_general");
        if (qat_gen_logtype >= 0)
                rte_log_set_level(qat_gen_logtype, RTE_LOG_NOTICE);
+
+       /* data-path logging for all services */
+       qat_dp_logtype = rte_log_register("pmd.qat_dp");
+       if (qat_dp_logtype >= 0)
+               rte_log_set_level(qat_dp_logtype, RTE_LOG_NOTICE);
 }
 
 RTE_INIT(qat_pci_init_log);
diff --git a/drivers/crypto/qat/qat_logs.h b/drivers/crypto/qat/qat_logs.h
index b12f754..4baea12 100644
--- a/drivers/crypto/qat/qat_logs.h
+++ b/drivers/crypto/qat/qat_logs.h
@@ -6,9 +6,29 @@
 #define _QAT_LOGS_H_
 
 extern int qat_gen_logtype;
+extern int qat_dp_logtype;
 
 #define QAT_LOG(level, fmt, args...)                   \
        rte_log(RTE_LOG_ ## level, qat_gen_logtype,             \
                        "%s(): " fmt "\n", __func__, ## args)
 
+#define QAT_DP_LOG(level, fmt, args...)                        \
+       rte_log(RTE_LOG_ ## level, qat_dp_logtype,              \
+                       "%s(): " fmt "\n", __func__, ## args)
+
+#define QAT_DP_HEXDUMP_LOG(level, title, buf, len)             \
+       qat_hexdump_log(RTE_LOG_ ## level, qat_dp_logtype, title, buf, len)
+
+/**
+ * qat_hexdump_log - Dump out memory in a special hex dump format.
+ *
+ * Dump out the message buffer in a special hex dump output format with
+ * characters printed for each line of 16 hex values. The message will be sent
+ * to the stream defined by rte_logs.file or to stderr in case of rte_logs.file
+ * is undefined.
+ */
+int
+qat_hexdump_log(uint32_t level, uint32_t logtype, const char *title,
+               const void *buf, unsigned int len);
+
 #endif /* _QAT_LOGS_H_ */
diff --git a/drivers/crypto/qat/qat_sym.c b/drivers/crypto/qat/qat_sym.c
index 7bedad3..17d63eb 100644
--- a/drivers/crypto/qat/qat_sym.c
+++ b/drivers/crypto/qat/qat_sym.c
@@ -6,12 +6,10 @@
 
 #include <rte_mempool.h>
 #include <rte_mbuf.h>
-#include <rte_hexdump.h>
 #include <rte_crypto_sym.h>
 #include <rte_bus_pci.h>
 #include <rte_byteorder.h>
 
-#include "qat_logs.h"
 #include "qat_sym.h"
 
 /** Decrypt a single partial block
@@ -39,7 +37,7 @@
        return 0;
 
 cipher_decrypt_err:
-       QAT_LOG(ERR, "libcrypto ECB cipher decrypt for BPI IV failed");
+       QAT_DP_LOG(ERR, "libcrypto ECB cipher decrypt for BPI IV failed");
        return -EINVAL;
 }
 
@@ -78,21 +76,21 @@
                        iv = rte_crypto_op_ctod_offset(op, uint8_t *,
                                        ctx->cipher_iv.offset);
 
-#ifdef RTE_LIBRTE_PMD_QAT_DEBUG_TX
-               rte_hexdump(stdout, "BPI: src before pre-process:", last_block,
-                       last_block_len);
+#if RTE_LOG_DP_LEVEL >= RTE_LOG_DEBUG
+               QAT_DP_HEXDUMP_LOG(DEBUG, "BPI: src before pre-process:",
+                       last_block, last_block_len);
                if (sym_op->m_dst != NULL)
-                       rte_hexdump(stdout, "BPI: dst before pre-process:", dst,
-                               last_block_len);
+                       QAT_DP_HEXDUMP_LOG(DEBUG, "BPI:dst before pre-process:",
+                       dst, last_block_len);
 #endif
                bpi_cipher_decrypt(last_block, dst, iv, block_len,
                                last_block_len, ctx->bpi_ctx);
-#ifdef RTE_LIBRTE_PMD_QAT_DEBUG_TX
-               rte_hexdump(stdout, "BPI: src after pre-process:", last_block,
-                       last_block_len);
+#if RTE_LOG_DP_LEVEL >= RTE_LOG_DEBUG
+               QAT_DP_HEXDUMP_LOG(DEBUG, "BPI: src after pre-process:",
+                       last_block, last_block_len);
                if (sym_op->m_dst != NULL)
-                       rte_hexdump(stdout, "BPI: dst after pre-process:", dst,
-                               last_block_len);
+                       QAT_DP_HEXDUMP_LOG(DEBUG, "BPI: dst after pre-process:",
+                       dst, last_block_len);
 #endif
        }
 
@@ -163,16 +161,15 @@
        struct qat_sym_op_cookie *cookie =
                                (struct qat_sym_op_cookie *)op_cookie;
 
-#ifdef RTE_LIBRTE_PMD_QAT_DEBUG_TX
        if (unlikely(op->type != RTE_CRYPTO_OP_TYPE_SYMMETRIC)) {
-               QAT_LOG(ERR, "QAT PMD only supports symmetric crypto "
+               QAT_DP_LOG(ERR, "QAT PMD only supports symmetric crypto "
                                "operation requests, op (%p) is not a "
                                "symmetric operation.", op);
                return -EINVAL;
        }
-#endif
+
        if (unlikely(op->sess_type == RTE_CRYPTO_OP_SESSIONLESS)) {
-               QAT_LOG(ERR, "QAT PMD only supports session oriented"
+               QAT_DP_LOG(ERR, "QAT PMD only supports session oriented"
                                " requests, op (%p) is sessionless.", op);
                return -EINVAL;
        }
@@ -181,12 +178,12 @@
                        op->sym->session, cryptodev_qat_driver_id);
 
        if (unlikely(ctx == NULL)) {
-               QAT_LOG(ERR, "Session was not created for this device");
+               QAT_DP_LOG(ERR, "Session was not created for this device");
                return -EINVAL;
        }
 
        if (unlikely(ctx->min_qat_dev_gen > qat_dev_gen)) {
-               QAT_LOG(ERR, "Session alg not supported on this device gen");
+               QAT_DP_LOG(ERR, "Session alg not supported on this device gen");
                op->status = RTE_CRYPTO_OP_STATUS_INVALID_SESSION;
                return -EINVAL;
        }
@@ -231,7 +228,7 @@
                                (cipher_param->cipher_length % BYTE_LENGTH != 0)
                                 || (cipher_param->cipher_offset
                                                        % BYTE_LENGTH != 0))) {
-                               QAT_LOG(ERR,
+                               QAT_DP_LOG(ERR,
                  "SNOW3G/KASUMI/ZUC in QAT PMD only supports byte aligned 
values");
                                op->status = RTE_CRYPTO_OP_STATUS_INVALID_ARGS;
                                return -EINVAL;
@@ -265,7 +262,7 @@
                                ICP_QAT_HW_AUTH_ALGO_ZUC_3G_128_EIA3) {
                        if (unlikely((auth_param->auth_off % BYTE_LENGTH != 0)
                                || (auth_param->auth_len % BYTE_LENGTH != 0))) {
-                               QAT_LOG(ERR,
+                               QAT_DP_LOG(ERR,
                "For SNOW3G/KASUMI/ZUC, QAT PMD only supports byte aligned 
values");
                                op->status = RTE_CRYPTO_OP_STATUS_INVALID_ARGS;
                                return -EINVAL;
@@ -500,8 +497,9 @@
                ret = qat_sgl_fill_array(op->sym->m_src, src_buf_start,
                                &cookie->qat_sgl_src,
                                qat_req->comn_mid.src_length);
-               if (ret) {
-                       QAT_LOG(ERR, "QAT PMD Cannot fill sgl array");
+
+               if (unlikely(ret)) {
+                       QAT_DP_LOG(ERR, "QAT PMD Cannot fill sgl array");
                        return ret;
                }
 
@@ -515,9 +513,8 @@
                                        &cookie->qat_sgl_dst,
                                                qat_req->comn_mid.dst_length);
 
-                       if (ret) {
-                               QAT_LOG(ERR, "QAT PMD Cannot "
-                                               "fill sgl array");
+                       if (unlikely(ret)) {
+                               QAT_DP_LOG(ERR, "QAT PMD can't fill sgl array");
                                return ret;
                        }
 
@@ -531,17 +528,17 @@
                qat_req->comn_mid.dest_data_addr = dst_buf_start;
        }
 
-#ifdef RTE_LIBRTE_PMD_QAT_DEBUG_TX
-       rte_hexdump(stdout, "qat_req:", qat_req,
+#if RTE_LOG_DP_LEVEL >= RTE_LOG_DEBUG
+       QAT_DP_HEXDUMP_LOG(DEBUG, "qat_req:", qat_req,
                        sizeof(struct icp_qat_fw_la_bulk_req));
-       rte_hexdump(stdout, "src_data:",
+       QAT_DP_HEXDUMP_LOG(DEBUG, "src_data:",
                        rte_pktmbuf_mtod(op->sym->m_src, uint8_t*),
                        rte_pktmbuf_data_len(op->sym->m_src));
        if (do_cipher) {
                uint8_t *cipher_iv_ptr = rte_crypto_op_ctod_offset(op,
                                                uint8_t *,
                                                ctx->cipher_iv.offset);
-               rte_hexdump(stdout, "cipher iv:", cipher_iv_ptr,
+               QAT_DP_HEXDUMP_LOG(DEBUG, "cipher iv:", cipher_iv_ptr,
                                ctx->cipher_iv.length);
        }
 
@@ -550,17 +547,17 @@
                        uint8_t *auth_iv_ptr = rte_crypto_op_ctod_offset(op,
                                                        uint8_t *,
                                                        ctx->auth_iv.offset);
-                       rte_hexdump(stdout, "auth iv:", auth_iv_ptr,
+                       QAT_DP_HEXDUMP_LOG(DEBUG, "auth iv:", auth_iv_ptr,
                                                ctx->auth_iv.length);
                }
-               rte_hexdump(stdout, "digest:", op->sym->auth.digest.data,
+               QAT_DP_HEXDUMP_LOG(DEBUG, "digest:", op->sym->auth.digest.data,
                                ctx->digest_length);
        }
 
        if (do_aead) {
-               rte_hexdump(stdout, "digest:", op->sym->aead.digest.data,
+               QAT_DP_HEXDUMP_LOG(DEBUG, "digest:", op->sym->aead.digest.data,
                                ctx->digest_length);
-               rte_hexdump(stdout, "aad:", op->sym->aead.aad.data,
+               QAT_DP_HEXDUMP_LOG(DEBUG, "aad:", op->sym->aead.aad.data,
                                ctx->aad_len);
        }
 #endif
diff --git a/drivers/crypto/qat/qat_sym.h b/drivers/crypto/qat/qat_sym.h
index b693a4d..f9e72a6 100644
--- a/drivers/crypto/qat/qat_sym.h
+++ b/drivers/crypto/qat/qat_sym.h
@@ -6,13 +6,13 @@
 #define _QAT_SYM_H_
 
 #include <rte_cryptodev_pmd.h>
-#include <rte_hexdump.h>
 
 #include <openssl/evp.h>
 
 #include "qat_common.h"
 #include "qat_sym_session.h"
 #include "qat_sym_pmd.h"
+#include "qat_logs.h"
 
 #define BYTE_LENGTH    8
 /* bpi is only used for partial blocks of DES and AES
@@ -59,7 +59,7 @@ struct qat_sym_op_cookie {
        return 0;
 
 cipher_encrypt_err:
-       QAT_LOG(ERR, "libcrypto ECB cipher encrypt failed");
+       QAT_DP_LOG(ERR, "libcrypto ECB cipher encrypt failed");
        return -EINVAL;
 }
 
@@ -99,21 +99,23 @@ struct qat_sym_op_cookie {
                        iv = rte_crypto_op_ctod_offset(op, uint8_t *,
                                        ctx->cipher_iv.offset);
 
-#ifdef RTE_LIBRTE_PMD_QAT_DEBUG_RX
-               rte_hexdump(stdout, "BPI: src before post-process:", last_block,
-                       last_block_len);
+#if RTE_LOG_DP_LEVEL >= RTE_LOG_DEBUG
+               QAT_DP_HEXDUMP_LOG(DEBUG, "BPI: src before post-process:",
+                       last_block, last_block_len);
                if (sym_op->m_dst != NULL)
-                       rte_hexdump(stdout, "BPI: dst before post-process:",
-                                       dst, last_block_len);
+                       QAT_DP_HEXDUMP_LOG(DEBUG,
+                               "BPI: dst before post-process:",
+                               dst, last_block_len);
 #endif
                bpi_cipher_encrypt(last_block, dst, iv, block_len,
                                last_block_len, ctx->bpi_ctx);
-#ifdef RTE_LIBRTE_PMD_QAT_DEBUG_RX
-               rte_hexdump(stdout, "BPI: src after post-process:", last_block,
-                       last_block_len);
+#if RTE_LOG_DP_LEVEL >= RTE_LOG_DEBUG
+               QAT_DP_HEXDUMP_LOG(DEBUG, "BPI: src after post-process:",
+                               last_block, last_block_len);
                if (sym_op->m_dst != NULL)
-                       rte_hexdump(stdout, "BPI: dst after post-process:", dst,
-                               last_block_len);
+                       QAT_DP_HEXDUMP_LOG(DEBUG,
+                               "BPI: dst after post-process:",
+                               dst, last_block_len);
 #endif
        }
        return sym_op->cipher.data.length - last_block_len;
@@ -128,8 +130,8 @@ struct qat_sym_op_cookie {
        struct rte_crypto_op *rx_op = (struct rte_crypto_op *)(uintptr_t)
                        (resp_msg->opaque_data);
 
-#ifdef RTE_LIBRTE_PMD_QAT_DEBUG_RX
-       rte_hexdump(stdout, "qat_response:", (uint8_t *)resp_msg,
+#if RTE_LOG_DP_LEVEL >= RTE_LOG_DEBUG
+       QAT_DP_HEXDUMP_LOG(DEBUG, "qat_response:", (uint8_t *)resp_msg,
                        sizeof(struct icp_qat_fw_comn_resp));
 #endif
 
-- 
1.7.0.7

Reply via email to