From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 2C3D6A00C2; Thu, 10 Feb 2022 11:59:58 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C61C2426F7; Thu, 10 Feb 2022 11:59:26 +0100 (CET) Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2061.outbound.protection.outlook.com [40.107.22.61]) by mails.dpdk.org (Postfix) with ESMTP id B6A45426F0 for ; Thu, 10 Feb 2022 11:59:25 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=O6K/bXo+eGh/kN3miU5Sk+RCm1fWbAhfc5QNn8j9CNQMJAFt7T2+JxUna0440RcbpKPCgiMc2hm2chPAvOY0111UI2yyuthlGTot6Gm57c999v2OPmRBkD4LnH2lLfCdNaGCX38VdIhZaDHqkLiTFwo5nxLt7bcENQ0PHS1A2qykKuMUZlb33ptwx7M+aHDSQybwYBTqXUrbs0dn9QfxylUYWe9NdHN7xzMtS7yfX1siS8BBx7O3en8cVTzbGUOcZJqJF+KqkcXIyIcouPtew6OzswT7JXSetN2DdyClksJGhBXg9hQgIt+dTujG9p3VSkVZyTZvDW3cYaBmPBiRSw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=MkZldIfieOXH1lcLYPbBEqxE8udulT9cZmSaaw/bYME=; b=SRCTLjTFPvDTNphn4Y8csSI3X9o5pSayK03Y1LzRyEqYQOUhmBqqUJojFHajAOgkp08PDDBrH5jxdzp6sdsEUTmf/fRx6lyMru0jffFEXR6bJOtn4cqdDwNdAoHUyX6nCZDe2vJQzenbJhpmQ5WNatcm8mIeFgLAn+d0HxmI9fP8KYki9Ig4XgGhA1Wdoz2fwZ9WC4TgdKdmDWPMF/Vf1+Ikp/rhPK/Og/BabWUnxJxZKNlKMm7zdLhHV1Q/dzX1eT2ZUHdOVsteWCVQeZaeDgG1yLb48RFfUh7a+khEC9x+pj8fDCvAIauTXvcQk9r9uTz0D18NLe+nYNP2tixfZA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=MkZldIfieOXH1lcLYPbBEqxE8udulT9cZmSaaw/bYME=; b=Hzl8fNaabYe0z6XhVBq94riKTTOGSXngW5RQUzrCGQMJhd3VTNBt0TfYmXGf0ZRmID1+bSQ4dpwfNzbMgKWt1+Ch+lYJ3yArMwTAd+DctNTR61WrQjwHWIPk0DAWWfmwM5IqydjTD04XOKn/N7o0SlGJuAP3vRLtK5ZFpvcaSjM= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AS8PR04MB8198.eurprd04.prod.outlook.com (2603:10a6:20b:3b0::14) by AM6PR04MB4294.eurprd04.prod.outlook.com (2603:10a6:209:4a::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4975.11; Thu, 10 Feb 2022 10:59:24 +0000 Received: from AS8PR04MB8198.eurprd04.prod.outlook.com ([fe80::4146:965b:5645:9269]) by AS8PR04MB8198.eurprd04.prod.outlook.com ([fe80::4146:965b:5645:9269%4]) with mapi id 15.20.4975.011; Thu, 10 Feb 2022 10:59:24 +0000 From: Gagandeep Singh To: gakhil@marvell.com, dev@dpdk.org Cc: Gagandeep Singh Subject: [PATCH v4 7/7] crypto/dpaa_sec: add debug framework Date: Thu, 10 Feb 2022 16:28:52 +0530 Message-Id: <20220210105852.1268506-8-g.singh@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220210105852.1268506-1-g.singh@nxp.com> References: <20220210043136.304845-2-g.singh@nxp.com> <20220210105852.1268506-1-g.singh@nxp.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: SG2PR03CA0092.apcprd03.prod.outlook.com (2603:1096:4:7c::20) To AS8PR04MB8198.eurprd04.prod.outlook.com (2603:10a6:20b:3b0::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ab1c711f-42cd-4b2f-dde6-08d9ec846630 X-MS-TrafficTypeDiagnostic: AM6PR04MB4294:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:2150; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: tXTuDFPoUZNIWknE4MdCdpan/JwVYarmUby+QUYJFWrzWoBBHW21VOGowHg4RNjmrYmgsxTLc1bazqlV5xmk9qFATj2COq+Kjg8a3vRh38Yzj6oYgKtP8DomSKvBCIrWIyV42JktqdtqTthtA5hL9mc4jHZ2xqoyocxnn21bDWfwoerxE2JbVhTnajmCS6R31srYhz/hA60AG2yvmw49rgWigeI14rMFzod0AL+X9lljrsW0gPGUXbpxiquLoZMzlvmxUNUFAQPj38FgQFZhd3ASU05w7lxIGCihRXVMBzTvbBQXDHO6RLKFO7vZq/nTmbnQrn3t1q9u2pwizICRS1XtLreQq7J9M3Jhzj/yp/4fEwO1y5imTI82ShW+fhOGNDnfbFsoVvYF9H7eKHqoaMhaWbZoDjdriH32aAQ6wM/Suk7uh1rxGwD+BgFhN3Vt6PT2wtdhGmro3OGG7pivh7Mv6X2g5cbh0EQiSXziltmUh02qe+Q8nDfZamRsZaD0Ex6CjnV1RS3s9xzNlbnIOlHy/mkdPQmOAaRg5/y7v7AilHyCuA6f7Q3ieP4ONCUwOt9rcGhvooB6mCD1UPwv9uAQOfcwHBCfNbd0B3A8v7+TB/lL8uWiTDJzDOztp92RY9P7dvMZjiZpSpwp/ANjGjqUMurxEIA0N5/ObJkJoze6EpzdKo95DEHHCBTly7V+er0wPlMJdqtBxxZQPLGuug== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS8PR04MB8198.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(4636009)(366004)(6666004)(1076003)(30864003)(186003)(86362001)(6486002)(26005)(316002)(508600001)(66556008)(4326008)(66476007)(8676002)(66946007)(2906002)(5660300002)(2616005)(8936002)(6512007)(55236004)(36756003)(83380400001)(38350700002)(38100700002)(52116002)(6506007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?xTqjUrSM9wVSQIajRisVu3nGZVBt+rmHkAHK42C8S7PQqIE/rUIkG9UEyWhh?= =?us-ascii?Q?YOUqxYm0MgnvEkHBlsS6JgWaG3OEJt6Uab7URGMdi9S0lsYZWlPGWNc2COdJ?= =?us-ascii?Q?3160ulu0OrRBhGcMwOVtYHFsptFikJ/ciPfn8DOUMN67rN1I+/iaOjyc7y40?= =?us-ascii?Q?SAENJ89E4vh/mP/zgHxGSmWJ2p326sgUYS+A7PTlk8PCCKaxY+yQCULGhn7x?= =?us-ascii?Q?dkTaPro3m3NUtgxME2MkubBxkm++2IXNH6t0IMHjEYMg/wOVUmw1YUH1eAKZ?= =?us-ascii?Q?BdwEtHRRnC8I5oNkQaCf3UIlr/hcCUCaIrRZ4mk4/Lnmv9vjTEuQ9zJpi9sF?= =?us-ascii?Q?H0VMTMMWX1ZEzUEIWVN16X+JsHU/L0kgoSO6w+jLPrYl2mQbdj/iALCPKN2Y?= =?us-ascii?Q?zKnjt7/BK+bKf9JzW5FD9u/E9EOoHEHemexxIMGA8KYDTcc90ijPc4mALOo+?= =?us-ascii?Q?SDfzkM3yDcqn+YAYOZPLPt+gsBsgRKv0dGmNEj42E5sHzB+lMGbLMB6Lc0jV?= =?us-ascii?Q?Efl9gGbsSPPVaGYoJU4aCRnAUQq0O0QiBm+Narh76jQAUD8ovGvxdv/veODT?= =?us-ascii?Q?dzh6VO1SdCSkoo3I8YCeLc+kPIig3f4tCVhUSPEDHHxRw/anOfB+v9ckFFoW?= =?us-ascii?Q?DgyEqOpaUKYR1f8rH1fpKNkuV+SF2P3XdvoSsP7J663jf7TRAXG6yp5/mkdT?= =?us-ascii?Q?6EICU7FsS6EvcKfqywm9wtDHmIrlWlop6w9V8hgl7ZXZhQEnfRTcwX7EzPLP?= =?us-ascii?Q?eVHxOSHMejCyFZly8qVj3MTVNsXQX7RdB6EzCCQCRaJzxXbeRky71WgQGNr5?= =?us-ascii?Q?hUSvDGOuOAxIk/JC3xkRPscBNV2g/fJUsKShlxjIdSF8eWuINyLU5FkMqSY1?= =?us-ascii?Q?LeRAyWza46CWGUN8pW9CJZTjEgjMjG5Q/M8aB2t8vGNJQz9s4Ix2UlQzQ5E0?= =?us-ascii?Q?6/cwu94rWWYwg1YPA3NvPqabgs+MGHAVNOhD2mvNZfyYHogWG4lPlUTNz7Hp?= =?us-ascii?Q?ZzTLYDEb4pomQhkcgPSCTPFxUTA3QZ6CMiVLbSW86GCZ0+bIOMvO6f8MF7Ub?= =?us-ascii?Q?8+IPvm4n3m0bGGmtgH7YB0r8voF7xiVvRYP0IWTEx8a+zuvUhNbCrsZy7oGZ?= =?us-ascii?Q?XXPjC/xq2juBPHlAqUrWU7XUlF2ocH2uLexDtLV/4eoPOcWHCF9BvZsiT0/U?= =?us-ascii?Q?DJLx+xKD21kmJbpeDAhHKtYcbO8zijYS0Wbp5Jug7ON4+TMzPZkWRE1+dA9O?= =?us-ascii?Q?bY3YtgBYqQdqQ8Y7jqJOo9caj6uZV8tY8FShUq+zXSb2geDhJ1/FeDiRxyw4?= =?us-ascii?Q?cUsIRACrQvB6+TmLwQtppFl05u/h5xJZrmL7MVIJAAxAoO2g381tlXoxXJpH?= =?us-ascii?Q?0ugHDnCrCRpFy9+Bb5ImFyQrR6KbEXiJV4/DtY4V4czoN5cr7ZYnDDBEykGs?= =?us-ascii?Q?DNv9p6ftWLrga0VhE0UsPaPHhZcIdZ3kNWP2Xp/hC5iOMv/PQgpt+/FB2C8h?= =?us-ascii?Q?9jbvBawZAja8zT1zRIplRrIrYfM2UDFpdwPh04DdWegg2bBx2q65RFzHDW2C?= =?us-ascii?Q?jAADciuU4lgQj++G5+s=3D?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: ab1c711f-42cd-4b2f-dde6-08d9ec846630 X-MS-Exchange-CrossTenant-AuthSource: AS8PR04MB8198.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Feb 2022 10:59:24.6295 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: /zbbiTaDGPz3t7jF3oDyv98n99a4kVq4w/iZ7jwfCuOHTGS2euK1Ds/zKES2lRfv X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR04MB4294 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Adding useful debug prints in DPAA driver for easy debugging. Signed-off-by: Gagandeep Singh --- doc/guides/cryptodevs/dpaa_sec.rst | 10 ++ drivers/bus/dpaa/dpaa_bus.c | 16 ++- drivers/crypto/dpaa_sec/dpaa_sec.c | 192 ++++++++++++++++++++++++++++- 3 files changed, 213 insertions(+), 5 deletions(-) diff --git a/doc/guides/cryptodevs/dpaa_sec.rst b/doc/guides/cryptodevs/dpaa_sec.rst index bac82421bc..0c8d6cf3da 100644 --- a/doc/guides/cryptodevs/dpaa_sec.rst +++ b/doc/guides/cryptodevs/dpaa_sec.rst @@ -123,3 +123,13 @@ For enabling logs, use the following EAL parameter: Using ``pmd.crypto.dpaa`` as log matching criteria, all Crypto PMD logs can be enabled which are lower than logging ``level``. + +Enabling debug prints +--------------------- + +Use dev arg option ``drv_dump_mode=x`` to dump useful debug prints on HW sec +error. There are 3 dump modes available 0, 1 and 2. Mode 0 means no dump print +on error, mode 1 means dump HW error code and mode 2 means dump HW error code +along with other useful debugging information like session, queue, descriptor +data. +e.g. ``dpaa_bus:dpaa_sec-1,drv_dump_mode=1`` diff --git a/drivers/bus/dpaa/dpaa_bus.c b/drivers/bus/dpaa/dpaa_bus.c index 5546a9cb8d..e442bc4c33 100644 --- a/drivers/bus/dpaa/dpaa_bus.c +++ b/drivers/bus/dpaa/dpaa_bus.c @@ -429,6 +429,7 @@ rte_dpaa_bus_parse(const char *name, void *out) { unsigned int i, j; size_t delta; + size_t max_name_len; /* There are two ways of passing device name, with and without * separator. "dpaa_bus:fm1-mac3" with separator, and "fm1-mac3" @@ -444,14 +445,21 @@ rte_dpaa_bus_parse(const char *name, void *out) delta = 5; } - if (sscanf(&name[delta], "fm%u-mac%u", &i, &j) != 2 || - i >= 2 || j >= 16) { - return -EINVAL; + if (strncmp("dpaa_sec", &name[delta], 8) == 0) { + if (sscanf(&name[delta], "dpaa_sec-%u", &i) != 1 || + i < 1 || i > 4) + return -EINVAL; + max_name_len = sizeof("dpaa_sec-.") - 1; + } else { + if (sscanf(&name[delta], "fm%u-mac%u", &i, &j) != 2 || + i >= 2 || j >= 16) + return -EINVAL; + + max_name_len = sizeof("fm.-mac..") - 1; } if (out != NULL) { char *out_name = out; - const size_t max_name_len = sizeof("fm.-mac..") - 1; /* Do not check for truncation, either name ends with * '\0' or the device name is followed by parameters and there diff --git a/drivers/crypto/dpaa_sec/dpaa_sec.c b/drivers/crypto/dpaa_sec/dpaa_sec.c index 75e437f696..ed12d6663b 100644 --- a/drivers/crypto/dpaa_sec/dpaa_sec.c +++ b/drivers/crypto/dpaa_sec/dpaa_sec.c @@ -27,6 +27,7 @@ #include #include #include +#include #include #include @@ -45,6 +46,17 @@ #include #include +#define DRIVER_DUMP_MODE "drv_dump_mode" + +/* DPAA_SEC_DP_DUMP levels */ +enum dpaa_sec_dump_levels { + DPAA_SEC_DP_NO_DUMP, + DPAA_SEC_DP_ERR_DUMP, + DPAA_SEC_DP_FULL_DUMP +}; + +uint8_t dpaa_sec_dp_dump = DPAA_SEC_DP_ERR_DUMP; + uint8_t dpaa_cryptodev_driver_id; static inline void @@ -649,6 +661,139 @@ dpaa_sec_prep_cdb(dpaa_sec_session *ses) return 0; } +static void +dpaa_sec_dump(struct dpaa_sec_op_ctx *ctx, struct dpaa_sec_qp *qp) +{ + struct dpaa_sec_job *job = &ctx->job; + struct rte_crypto_op *op = ctx->op; + dpaa_sec_session *sess = NULL; + struct sec_cdb c_cdb, *cdb; + uint8_t bufsize; + struct rte_crypto_sym_op *sym_op; + struct qm_sg_entry sg[2]; + + if (op->sess_type == RTE_CRYPTO_OP_WITH_SESSION) + sess = (dpaa_sec_session *) + get_sym_session_private_data( + op->sym->session, + dpaa_cryptodev_driver_id); +#ifdef RTE_LIBRTE_SECURITY + else if (op->sess_type == RTE_CRYPTO_OP_SECURITY_SESSION) + sess = (dpaa_sec_session *) + get_sec_session_private_data( + op->sym->sec_session); +#endif + if (sess == NULL) { + printf("session is NULL\n"); + goto mbuf_dump; + } + + cdb = &sess->cdb; + rte_memcpy(&c_cdb, cdb, sizeof(struct sec_cdb)); +#ifdef RTE_LIBRTE_SECURITY + printf("\nsession protocol type = %d\n", sess->proto_alg); +#endif + printf("\n****************************************\n" + "session params:\n\tContext type:\t%d\n\tDirection:\t%s\n" + "\tCipher alg:\t%d\n\tAuth alg:\t%d\n\tAead alg:\t%d\n" + "\tCipher key len:\t%"PRIu64"\n\tCipher alg:\t%d\n" + "\tCipher algmode:\t%d\n", sess->ctxt, + (sess->dir == DIR_ENC) ? "DIR_ENC" : "DIR_DEC", + sess->cipher_alg, sess->auth_alg, sess->aead_alg, + (uint64_t)sess->cipher_key.length, sess->cipher_key.alg, + sess->cipher_key.algmode); + rte_hexdump(stdout, "cipher key", sess->cipher_key.data, + sess->cipher_key.length); + rte_hexdump(stdout, "auth key", sess->auth_key.data, + sess->auth_key.length); + printf("\tAuth key len:\t%"PRIu64"\n\tAuth alg:\t%d\n" + "\tAuth algmode:\t%d\n\tIV len:\t\t%d\n\tIV offset:\t%d\n" + "\tdigest length:\t%d\n\tauth only len:\t\t%d\n" + "\taead cipher text:\t%d\n", + (uint64_t)sess->auth_key.length, sess->auth_key.alg, + sess->auth_key.algmode, + sess->iv.length, sess->iv.offset, + sess->digest_length, sess->auth_only_len, + sess->auth_cipher_text); +#ifdef RTE_LIBRTE_SECURITY + printf("PDCP session params:\n" + "\tDomain:\t\t%d\n\tBearer:\t\t%d\n\tpkt_dir:\t%d\n\thfn_ovd:" + "\t%d\n\tsn_size:\t%d\n\tsdap_enabled:\t%d\n\thfn_ovd_offset:" + "\t%d\n\thfn:\t\t%d\n" + "\thfn_threshold:\t0x%x\n", sess->pdcp.domain, + sess->pdcp.bearer, sess->pdcp.pkt_dir, sess->pdcp.hfn_ovd, + sess->pdcp.sn_size, sess->pdcp.sdap_enabled, + sess->pdcp.hfn_ovd_offset, sess->pdcp.hfn, + sess->pdcp.hfn_threshold); +#endif + c_cdb.sh_hdr.hi.word = rte_be_to_cpu_32(c_cdb.sh_hdr.hi.word); + c_cdb.sh_hdr.lo.word = rte_be_to_cpu_32(c_cdb.sh_hdr.lo.word); + bufsize = c_cdb.sh_hdr.hi.field.idlen; + + printf("cdb = %p\n\n", cdb); + printf("Descriptor size = %d\n", bufsize); + int m; + for (m = 0; m < bufsize; m++) + printf("0x%x\n", rte_be_to_cpu_32(c_cdb.sh_desc[m])); + + printf("\n"); +mbuf_dump: + sym_op = op->sym; + if (sym_op->m_src) { + printf("Source mbuf:\n"); + rte_pktmbuf_dump(stdout, sym_op->m_src, + sym_op->m_src->data_len); + } + if (sym_op->m_dst) { + printf("Destination mbuf:\n"); + rte_pktmbuf_dump(stdout, sym_op->m_dst, + sym_op->m_dst->data_len); + } + + printf("Session address = %p\ncipher offset: %d, length: %d\n" + "auth offset: %d, length: %d\n aead offset: %d, length: %d\n", + sym_op->session, sym_op->cipher.data.offset, + sym_op->cipher.data.length, + sym_op->auth.data.offset, sym_op->auth.data.length, + sym_op->aead.data.offset, sym_op->aead.data.length); + printf("\n"); + + printf("******************************************************\n"); + printf("ctx info:\n"); + printf("job->sg[0] output info:\n"); + memcpy(&sg[0], &job->sg[0], sizeof(sg[0])); + printf("\taddr = %"PRIx64",\n\tlen = %d,\n\tfinal = %d,\n\textention = %d" + "\n\tbpid = %d\n\toffset = %d\n", + (uint64_t)sg[0].addr, sg[0].length, sg[0].final, + sg[0].extension, sg[0].bpid, sg[0].offset); + printf("\njob->sg[1] input info:\n"); + memcpy(&sg[1], &job->sg[1], sizeof(sg[1])); + hw_sg_to_cpu(&sg[1]); + printf("\taddr = %"PRIx64",\n\tlen = %d,\n\tfinal = %d,\n\textention = %d" + "\n\tbpid = %d\n\toffset = %d\n", + (uint64_t)sg[1].addr, sg[1].length, sg[1].final, + sg[1].extension, sg[1].bpid, sg[1].offset); + + printf("\nctx pool addr = %p\n", ctx->ctx_pool); + if (ctx->ctx_pool) + printf("ctx pool available counts = %d\n", + rte_mempool_avail_count(ctx->ctx_pool)); + + printf("\nop pool addr = %p\n", op->mempool); + if (op->mempool) + printf("op pool available counts = %d\n", + rte_mempool_avail_count(op->mempool)); + + printf("********************************************************\n"); + printf("Queue data:\n"); + printf("\tFQID = 0x%x\n\tstate = %d\n\tnb_desc = %d\n" + "\tctx_pool = %p\n\trx_pkts = %d\n\ttx_pkts" + "= %d\n\trx_errs = %d\n\ttx_errs = %d\n\n", + qp->outq.fqid, qp->outq.state, qp->outq.nb_desc, + qp->ctx_pool, qp->rx_pkts, qp->tx_pkts, + qp->rx_errs, qp->tx_errs); +} + /* qp is lockless, should be accessed by only one thread */ static int dpaa_sec_deq(struct dpaa_sec_qp *qp, struct rte_crypto_op **ops, int nb_ops) @@ -716,7 +861,12 @@ dpaa_sec_deq(struct dpaa_sec_qp *qp, struct rte_crypto_op **ops, int nb_ops) if (!ctx->fd_status) { op->status = RTE_CRYPTO_OP_STATUS_SUCCESS; } else { - DPAA_SEC_DP_WARN("SEC return err:0x%x", ctx->fd_status); + if (dpaa_sec_dp_dump > DPAA_SEC_DP_NO_DUMP) { + DPAA_SEC_DP_WARN("SEC return err:0x%x\n", + ctx->fd_status); + if (dpaa_sec_dp_dump > DPAA_SEC_DP_ERR_DUMP) + dpaa_sec_dump(ctx, qp); + } op->status = RTE_CRYPTO_OP_STATUS_ERROR; } ops[pkts++] = op; @@ -3458,6 +3608,42 @@ dpaa_sec_uninit(struct rte_cryptodev *dev) return 0; } +static int +check_devargs_handler(__rte_unused const char *key, const char *value, + __rte_unused void *opaque) +{ + dpaa_sec_dp_dump = atoi(value); + if (dpaa_sec_dp_dump > DPAA_SEC_DP_FULL_DUMP) { + DPAA_SEC_WARN("WARN: DPAA_SEC_DP_DUMP_LEVEL is not " + "supported, changing to FULL error prints\n"); + dpaa_sec_dp_dump = DPAA_SEC_DP_FULL_DUMP; + } + + return 0; +} + +static void +dpaa_sec_get_devargs(struct rte_devargs *devargs, const char *key) +{ + struct rte_kvargs *kvlist; + + if (!devargs) + return; + + kvlist = rte_kvargs_parse(devargs->args, NULL); + if (!kvlist) + return; + + if (!rte_kvargs_count(kvlist, key)) { + rte_kvargs_free(kvlist); + return; + } + + rte_kvargs_process(kvlist, key, + check_devargs_handler, NULL); + rte_kvargs_free(kvlist); +} + static int dpaa_sec_dev_init(struct rte_cryptodev *cryptodev) { @@ -3533,6 +3719,8 @@ dpaa_sec_dev_init(struct rte_cryptodev *cryptodev) } } + dpaa_sec_get_devargs(cryptodev->device->devargs, DRIVER_DUMP_MODE); + RTE_LOG(INFO, PMD, "%s cryptodev init\n", cryptodev->data->name); return 0; @@ -3649,4 +3837,6 @@ static struct cryptodev_driver dpaa_sec_crypto_drv; RTE_PMD_REGISTER_DPAA(CRYPTODEV_NAME_DPAA_SEC_PMD, rte_dpaa_sec_driver); RTE_PMD_REGISTER_CRYPTO_DRIVER(dpaa_sec_crypto_drv, rte_dpaa_sec_driver.driver, dpaa_cryptodev_driver_id); +RTE_PMD_REGISTER_PARAM_STRING(CRYPTODEV_NAME_DPAA_SEC_PMD, + DRIVER_DUMP_MODE "="); RTE_LOG_REGISTER(dpaa_logtype_sec, pmd.crypto.dpaa, NOTICE); -- 2.25.1