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 8705FA00C2; Thu, 10 Feb 2022 05:32:47 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 91DB340041; Thu, 10 Feb 2022 05:32:14 +0100 (CET) Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2043.outbound.protection.outlook.com [40.107.21.43]) by mails.dpdk.org (Postfix) with ESMTP id 9965341141 for ; Thu, 10 Feb 2022 05:32:13 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=g77tXbEoruFdtY7hmew9M4GQUpvr1VKgov9BOpMDd7EM9xur0DhD4mJ50CuUH+MOJ14eQ5kYUo/QgK3HQA9wBAxnIVlcUPYF6hyKpV2TQLhQYH7Sry3X4ADYxsA384mmaskw5k6MwyyqtjoJ4TPoQLqKne6mHY9ugXgHkAWJS9Dg56My5TPDLXSZOR/dvJUv133zx/naWjsR4z7lj5P0FdABIt4pnKt/DbD/AvqGn1iPaMckDKt/s1Ta8ObXQjuGcWg2HfdRX+vQrdmK7cGRnya7G9hZpklaMCw5vLn5B9aKWlPdXE8apw/rHx/ahvP5k2o5hwvVNP95+HCZmcGh+A== 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=1hP95C59AkDnJ5Tz+MMK8sIzZWFU/sdQZzH5lMjQYxU=; b=hjn/6o2/2qofK52Y39sEaMp8xAs0ADoNSKj+/bsuFG4WUnL1V16lFegBvtHvmAfKSlEycB5B1Fdd8HGbumsAtDWdiIfeETYjbkIrmPSyYguFXrka9GbonABNgH5/xdizcmpPSKqXFS8VHMSAXJKlhsN7csUERvfBXzC5JP+II2tQnx4wZHWkP9/S7IupH2dL4CWalEQW845zenV+YjuiLZ+tdX6TSaAj1etoOHTvzmWwnZWgfEnSlQsi7hok4k+YsXd9xHmmbh+Kld0wUb4ydPc51QYeU+HnMrjsPeNOxkrxQPYvrVKGvKmIoYYN0gkeI0LD6GLUNR0cMYI/OGe1gg== 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=1hP95C59AkDnJ5Tz+MMK8sIzZWFU/sdQZzH5lMjQYxU=; b=oj8bAUcXJude5EzpJhkQhvof/RVuSzX/6L4hiKX6kxAg1vSzwcX46pXN4U92BGoj/EYhrIBJ+JiJviXPolXeQPfPXx/DLeqQzE2vKoJsVxjt6OvXCISt9kEFJKEMJn8hU39U8DWuEFv486ISm+bYyuXguASZpY6AMoeFk2Hv3GU= 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 PAXPR04MB8526.eurprd04.prod.outlook.com (2603:10a6:102:211::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4951.19; Thu, 10 Feb 2022 04:32:12 +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 04:32:12 +0000 From: Gagandeep Singh To: gakhil@marvell.com, dev@dpdk.org Cc: Gagandeep Singh Subject: [PATCH v3 7/7] crypto/dpaa_sec: add debug framework Date: Thu, 10 Feb 2022 10:01:36 +0530 Message-Id: <20220210043136.304845-8-g.singh@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220210043136.304845-1-g.singh@nxp.com> References: <20211228091058.3620177-2-g.singh@nxp.com> <20220210043136.304845-1-g.singh@nxp.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: SG3P274CA0003.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:be::15) 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: d5a40b1c-8751-4e51-fc54-08d9ec4e4eb8 X-MS-TrafficTypeDiagnostic: PAXPR04MB8526: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: yEXapQZdkW1De4eWfTaqqfcIpti9fgbDgX7Lte6Muwl7c0+d1TaiaojPeRKxgW6GF97PHVGNLu0dJZ/29XHTL7ai282sRVDUIxTR1tOBOWVDNJI9xMvIqd1wuQsqZBvHcV/p/3ib9cHVidRaBlemUK/zD943+W9fSY31dcZYwrIn0afeCHBs5DppYN2sn1MmlJ5Sv09pUGeLaiBkcXcnWSJSFxmzsTVCnsopkLm/F31WAgibVWpB6W1PiCRXeTQ/MGGg9U/69sJsQKJXtBcGh7a/+CGcL1TYtDEWDrTnHxdisS9BWcHDnNGXIAz/ixNXTQJ9N3j0xQ/CrZcgfQSmBYzDqS/VbgIDIGokBPgucIonUIpMflgbUnBtnUmVYuV+VWuKoF/Zvfj5edWuPP1Chwsg2LyXMuw3ginyq9g3ntRanbMstox3+z595/mBKz/EGWYuQ740JpTKjBvZnadyaUAGp6MifFDtmgmzip3Q2TrkHQi4o3/+T6spkHvwQDDibAL4qt6Y77bHrum+glkelMJJwBEn2wNwSYNQc6kFKZp8S6TAZ/6fGZkvLxLeYSSh8+S5Qtk1l320JA3RhD3G39e7QjhD+Yhh3jGRSmO+wts9+yoAuSCPvRayS/z0mTRDhKU7IkiJPjPct8qBVfNkUIh6+PcoWr4ckI/DKBOtaju9rwsHO8dBiF0J0zHpoh0ONdsJsuhOy3DwTWlARCrf+g== 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)(66946007)(66556008)(30864003)(1076003)(2616005)(38350700002)(38100700002)(8936002)(66476007)(83380400001)(4326008)(316002)(5660300002)(2906002)(186003)(86362001)(508600001)(52116002)(55236004)(26005)(8676002)(6486002)(6666004)(6506007)(36756003)(6512007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?3/lJJpqopfA3FmR1uyV5F6NqOQ4AOE+IMVRmCToNUCZK45ge7rHqJv8PRX8q?= =?us-ascii?Q?jAg1DRI00gTjLVl9u3gsPgZtHdXtrPTrHB3lvRNsHa5jWTAJiPLAfLp+8Kn/?= =?us-ascii?Q?phV6J+xnCpP8z2OQ0AC/hrHPSNi9zZRtuAigoaEuSRCiqt4yDigMVXHv3EXl?= =?us-ascii?Q?ulbCTSqVYDNyUtWgDOsZLj9cxC5zhz7aaaYIGJf09k+jUsor5k97VSntUqyR?= =?us-ascii?Q?YMSkawuqxMsNAQf1uafa5tsgMx/cxa9ZCSy/KAxx/X16BfZzXBiQU0wliNfT?= =?us-ascii?Q?f3GSuQvVJJs0N1QUHUNn+MOkGEDItkZ4rIXV+ga7tqYcQnInoYvA+C55AEu4?= =?us-ascii?Q?t13HK2eBtXAxW16V/SQ/x6o/rnVo/ffuaiJy5bJifJaAFAHb2OkMOlv8nSbv?= =?us-ascii?Q?BuaYDcQb76QZN0IcJDsh1w7aFKAAd7/t40Q/73QspzHckhIv8DtKSVZ5DZkP?= =?us-ascii?Q?Cw54Dl7WtaMI9cr6AdT3OBdSpEIdgECPUsd3rzcwYt7T2/IWQbirxvO8LWI3?= =?us-ascii?Q?Z4yzefO2Z/nM1oxIDRnnGA0ApcSR0n1JUQSekpMwT2OPNi2kaubPs8dLk4tG?= =?us-ascii?Q?UYxEUTmi0/CCqYdzzYBximGS5y6h6j8Z7QaTVma96pjlMcuwycGTdyncmql3?= =?us-ascii?Q?zcwv8tAXdoYrG9m+29XPk+HG1OeH3MbqCk1lffMi7NPMUx8TlXLxrJknVLvO?= =?us-ascii?Q?LJpEHXfPA26F+fAdWZzMg9xXoFI+3V/Su964WhSrHc3AmSFFMlv6GZUuGQDv?= =?us-ascii?Q?dEFiyxxp1hkeH07Uj6defYXAJbt8R5qdijxUR2hIRzwSKoFOlK59dr1d0oIu?= =?us-ascii?Q?dWCFGnyP2tg3MOSWGor9aZf9f8mhGSrZ7bN9Buf0k9qaiUnRtZp3YS0QrUe9?= =?us-ascii?Q?SSeYpV6EVJMeOPdTEjB5zE+MCCOzklDAK5tHyDOpRJ92S/nNIP4A3UJCTOcU?= =?us-ascii?Q?3GJ6ZR1Om2Y8LPfyqBBCtscG46YMt5cOMBTswoMXP30bAH4rIlgO28223bzL?= =?us-ascii?Q?PLGk/ljyEhs74ILyT1uTt8gUg1CIdYi2wId2voeDx+PkRyRRNVvdnad6NymN?= =?us-ascii?Q?JzaSbikY+JB/geHuaWP7Odi+yp/qPD3/oWpDqRWY0VQdjzkifqfwtT/G9ftq?= =?us-ascii?Q?WpCtSROL9LuCC+SdjvKscDSZUITdeZBjxZCZi2E/x6JNJMKghIsudPnrIqEK?= =?us-ascii?Q?Oo0IBAWzqKEOkvREk3lF/O/jBJDq+6GaCxRizstSR+7vZrXObzos1q6niiyD?= =?us-ascii?Q?ZlOTHmaCBz/GrqCRcn6E50jJPdXqPuDiseSGSz6ZOLbvXbgySH6tmAGxr2vk?= =?us-ascii?Q?Is97b1dfZRHCBkLvR/ruhwG0wYL3DFYzMfQn/OtZ62fItkLtYmpzOrsXKpwX?= =?us-ascii?Q?xvY3Z7p5YR8c8g7D0R3d7O8s4XZOCfZvR9Boz/WB/cc6s0q8lgrQ7GHFOE4a?= =?us-ascii?Q?4BEmtepGhDI7QSOwt+IOUYUqPVl9DYV3Jn7YgVLeagyDLGu9f8Yu4twffLWh?= =?us-ascii?Q?VCVWJLLOHlzE2GHCYK495gxkG4m+GZZWOpeb+Geh2IqO8B9IQAHq762lE5sk?= =?us-ascii?Q?wM6pO1ykkRaVvADSark=3D?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: d5a40b1c-8751-4e51-fc54-08d9ec4e4eb8 X-MS-Exchange-CrossTenant-AuthSource: AS8PR04MB8198.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Feb 2022 04:32:12.6049 (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: qzjUK2/+UWCNLORbMe9+zH6jijdyp2cBy6vGkf18xeTLhJZHXsN6puIc5IoVi8Ro X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8526 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 737ac8d8c5..a1db25dce9 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 af166252ca..2a926ca124 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, + 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", + 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", + (unsigned long)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", + (unsigned long)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