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 E520144183; Fri, 7 Jun 2024 16:29:29 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 6FA6B42E15; Fri, 7 Jun 2024 16:28:36 +0200 (CEST) Received: from NAM02-BN1-obe.outbound.protection.outlook.com (mail-bn1nam02on2040.outbound.protection.outlook.com [40.107.212.40]) by mails.dpdk.org (Postfix) with ESMTP id 7CB0342E05 for ; Fri, 7 Jun 2024 16:28:34 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Y6wdljiIzrtMg0iPlk4uxEFlkUhp9aZKNYnLH1CyGpjjQfkQzRwjcF1E49XolpJM+amj1/V4zQsaNfpT20IrpNsWnkXHYTtYK0e3rGUqVzmHvO2J8k0HdIQ4rP4wh9vQQNvaRTwJaXT05k9O3Ap3PLaCb3FOnJZhq5rvXetLQsyD6gyedbZ0lXFDu6w95vQ4kVUxsf5GZr3C5wCjMjQDtYcDiaouQ33XF+lkgeXITOgTi8KEcZzKQMmHOjIcx+lSUrC2A4J+Fszs+bxxttfy9S52eNOuQ85H2ZIKz2lVdnaoNEVnAtD5/PGkZyCHg2TS9q3ePi1hUIVEGw4B9Mpggw== 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=6oJEihLm4DIGBPBPB82tfl+RKefTiv+6jZsup1AGGAo=; b=W+RnnarFZJeWChZlyzjG8iBAV+znWxNaVjadlG3ETQQrnUvQECGADL62ZQL+6t9BbkQ29qhvw5D7R74Oambyt7Dk9OWY6dHCj6tm6aH1Pz7B4zOlep7H/qealkJVJCT5vDs+0wT9mKs7ap5UT9o/2jOrlaG6uxaO0PWiJf5Ci43KIQ8cn/frkS+9MvVeBjKQDbHQP9gbNofvvf8EglSgELlzt/sXtr8BdHBFAw0mXXi+L5P12Q4NBoNWp5OGwnypqGasSBGRbz9RMAyIzmyqtxlg3mQeCrLKNCSBKG/MftwxkijPew/vphHyd5q4oM3nu5+xsXoQp+ZebPCTym/nwQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=dpdk.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6oJEihLm4DIGBPBPB82tfl+RKefTiv+6jZsup1AGGAo=; b=0qStJ/immE6l1joQq1f+eLwUaaZDx7i6aSKdhpV8c2X/MJIQypey+U/fOpHmcVWgApN3jIYmB3YNzoEJ3sc8KuQzKe1Bk6GEYa+30zsrvQkNf2L/yUzFFnKMa9e0sn5fP+XUVSBgN1PnM4Gud8DTZ96+Yz4ptto4XHBt5Y7zFak= Received: from CH0P223CA0026.NAMP223.PROD.OUTLOOK.COM (2603:10b6:610:116::27) by DS0PR12MB9322.namprd12.prod.outlook.com (2603:10b6:8:1bd::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7633.34; Fri, 7 Jun 2024 14:28:32 +0000 Received: from DS2PEPF0000343B.namprd02.prod.outlook.com (2603:10b6:610:116:cafe::e1) by CH0P223CA0026.outlook.office365.com (2603:10b6:610:116::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7656.22 via Frontend Transport; Fri, 7 Jun 2024 14:28:32 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by DS2PEPF0000343B.mail.protection.outlook.com (10.167.18.38) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7633.15 via Frontend Transport; Fri, 7 Jun 2024 14:28:32 +0000 Received: from driver-dev1.pensando.io (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Fri, 7 Jun 2024 09:28:30 -0500 From: Andrew Boyer To: CC: Andrew Boyer Subject: [PATCH v3 9/9] crypto/ionic: add stats support Date: Fri, 7 Jun 2024 07:27:40 -0700 Message-ID: <20240607142740.60175-10-andrew.boyer@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20240607142740.60175-1-andrew.boyer@amd.com> References: <20240430202144.49899-2-andrew.boyer@amd.com> <20240607142740.60175-1-andrew.boyer@amd.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS2PEPF0000343B:EE_|DS0PR12MB9322:EE_ X-MS-Office365-Filtering-Correlation-Id: 6d207280-ef3f-4b58-9fb6-08dc86fe1b84 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230031|82310400017|376005|36860700004|1800799015; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?qjS6WP7UTxdzX/oJ95dk+otjFqlSOItGd3X/EF38v8kDDJ4IUBcQT/4u/SMx?= =?us-ascii?Q?NzpHMr9E4MJONdhkw/n5BCi5KaPOt0lXcxvxknSc/zpCxGaj/Iu6c6Inml1t?= =?us-ascii?Q?v7Rv309vh5zGlMSgSm1RUUcv+PuFli6tqWkCaXbTHodnGnvmh7lvLYYLqFyz?= =?us-ascii?Q?BkO//ts7V0Ztf7IdMbuXd86s5QgVI6HZExxxUS7zoK+4PJBC5rzEgH/Kv62+?= =?us-ascii?Q?kPk6NHcsiuGl9sOlDMcX95aCVmfaXUBUIuuO481tCPTkwZ7ZZ+zs//HZuF9x?= =?us-ascii?Q?zB+1QpjLbjOmAeAic4WESB9jstiIf9z6TxRu/zRa9JtekopXYhkVLja01q6W?= =?us-ascii?Q?90WWq+0SEXGYdfNudpZr3/tseVcjYiUoqyFCTaqb8Yf+mppPcqLdFoAAKcfY?= =?us-ascii?Q?emHMQHe8XNOLq79H2zKcf4zu6ROPMopGQOHTj0OzvxmpghODO+I0539khyDk?= =?us-ascii?Q?B1KQWcScq1JZS8aneBQ0n8OEUz1ABQfc0Lhg1TcW/kvfjvdb/ImDYDeWJksu?= =?us-ascii?Q?3ZHCMEYiclfLUkyQKzet9mnfLmJH7StDYdORL2660v8qs6aceRkxrHvMvz65?= =?us-ascii?Q?caZ75hvbEK+eLpx/sThj80kjSjiCggpmVTfFb0i1l/pDJUWG9IYW88/0AY0p?= =?us-ascii?Q?E6H+bznEcsH3KHy8g1VkB88WStoIvMNqaoDQYbAvpcaR/N8f4/E1sn1UJ0Ky?= =?us-ascii?Q?0j2es06CiBLDsSxPNBkVyH+ZygSXyaQsiCI64jm80smMqCahbM+M9zyRUE7L?= =?us-ascii?Q?9Tql/A/n9b7W/XD6rkIpwl0hA/82K/ToHQrHmhAiMmzgNiOo+EYuxWaRr8ve?= =?us-ascii?Q?5iOyUS+2+t1nXEDoiF8bIGncD/7JeuDXaYtQvW0f35ku9aC/EjtzJ8HxUlyH?= =?us-ascii?Q?JgEWs1tTcjE59gCpTil5AOhQcc5tlgA6ifsdprrZl06BHsB9J3ChyOag5MZ0?= =?us-ascii?Q?rclJlWiQDMaihD9C6tEKwzJD5BBZx/MFxm39giwY9u5oHa9iaQPH6U6UBDxR?= =?us-ascii?Q?MdOecAsOFVb2SnJJsAzI7yDFkjRnkgUT1o4O8/kY3t0Xqta7+7fKQnX/Wtq3?= =?us-ascii?Q?EACJ8zsO/1Y8oBusDzwiHP0HqOVL6jGcPJNIZhT2vfB+wYG62vjOny9T47fX?= =?us-ascii?Q?DWf00SJMGQXd+KBHxYFlce8w6sU0qhVwdVYgHpxDP9Em96LD5LJDHEFMvGCj?= =?us-ascii?Q?ZbeiIuBKQFjQcBGkMegVBguxr1ExxoJ8v0XNUOskRm3gWdxROU+h9VBdz7Xg?= =?us-ascii?Q?QCb+mLXUox0CfGM6UF9PuophMjAvM2sxfAweHAl5ezDsreDjloTivEJP1jEH?= =?us-ascii?Q?R9cwTktYI53x0zNJyTqAnUFz/vn/J7YwChFH82kj3C1E4WA+VUW+A9P4NaTE?= =?us-ascii?Q?S3OZt+9Z7gjXdZJkx+7othSOp5bbji22FHSHb9aNigJHX9bl4w=3D=3D?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230031)(82310400017)(376005)(36860700004)(1800799015); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jun 2024 14:28:32.0009 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6d207280-ef3f-4b58-9fb6-08dc86fe1b84 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS2PEPF0000343B.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB9322 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 This defines the stats handlers and exposes them to the stack. Signed-off-by: Andrew Boyer --- drivers/crypto/ionic/ionic_crypto.h | 8 ++++ drivers/crypto/ionic/ionic_crypto_main.c | 48 ++++++++++++++++++++++++ drivers/crypto/ionic/ionic_crypto_ops.c | 33 +++++++++++++++- 3 files changed, 87 insertions(+), 2 deletions(-) diff --git a/drivers/crypto/ionic/ionic_crypto.h b/drivers/crypto/ionic/ionic_crypto.h index 69c17887fb..db87ea0490 100644 --- a/drivers/crypto/ionic/ionic_crypto.h +++ b/drivers/crypto/ionic/ionic_crypto.h @@ -174,6 +174,8 @@ struct iocpt_crypto_q { uint16_t flags; /* cacheline3 */ + struct rte_cryptodev_stats stats; + uint64_t enqueued_wdogs; uint64_t dequeued_wdogs; uint8_t wdog_iv[IOCPT_Q_WDOG_IV_LEN]; @@ -252,6 +254,8 @@ struct iocpt_dev { struct iocpt_qtype_info qtype_info[IOCPT_QTYPE_MAX]; uint8_t qtype_ver[IOCPT_QTYPE_MAX]; + + struct rte_cryptodev_stats stats_base; }; struct iocpt_dev_intf { @@ -313,6 +317,10 @@ typedef bool (*iocpt_cq_cb)(struct iocpt_cq *cq, uint16_t cq_desc_index, uint32_t iocpt_cq_service(struct iocpt_cq *cq, uint32_t work_to_do, iocpt_cq_cb cb, void *cb_arg); +void iocpt_get_stats(const struct iocpt_dev *dev, + struct rte_cryptodev_stats *stats); +void iocpt_reset_stats(struct iocpt_dev *dev); + static inline uint16_t iocpt_q_space_avail(struct iocpt_queue *q) { diff --git a/drivers/crypto/ionic/ionic_crypto_main.c b/drivers/crypto/ionic/ionic_crypto_main.c index 76afe9b3f6..d4810e3617 100644 --- a/drivers/crypto/ionic/ionic_crypto_main.c +++ b/drivers/crypto/ionic/ionic_crypto_main.c @@ -128,6 +128,52 @@ iocpt_q_free(struct iocpt_queue *q) } } +static void +iocpt_get_abs_stats(const struct iocpt_dev *dev, + struct rte_cryptodev_stats *stats) +{ + uint32_t i; + + memset(stats, 0, sizeof(*stats)); + + /* Sum up the per-queue stats counters */ + for (i = 0; i < dev->crypto_dev->data->nb_queue_pairs; i++) { + struct rte_cryptodev_stats *q_stats = &dev->cryptoqs[i]->stats; + + stats->enqueued_count += q_stats->enqueued_count; + stats->dequeued_count += q_stats->dequeued_count; + stats->enqueue_err_count += q_stats->enqueue_err_count; + stats->dequeue_err_count += q_stats->dequeue_err_count; + } +} + +void +iocpt_get_stats(const struct iocpt_dev *dev, struct rte_cryptodev_stats *stats) +{ + /* Retrieve the new absolute stats values */ + iocpt_get_abs_stats(dev, stats); + + /* Subtract the base stats values to get relative values */ + stats->enqueued_count -= dev->stats_base.enqueued_count; + stats->dequeued_count -= dev->stats_base.dequeued_count; + stats->enqueue_err_count -= dev->stats_base.enqueue_err_count; + stats->dequeue_err_count -= dev->stats_base.dequeue_err_count; +} + +void +iocpt_reset_stats(struct iocpt_dev *dev) +{ + uint32_t i; + + /* Erase the per-queue stats counters */ + for (i = 0; i < dev->crypto_dev->data->nb_queue_pairs; i++) + memset(&dev->cryptoqs[i]->stats, 0, + sizeof(dev->cryptoqs[i]->stats)); + + /* Update the base stats values */ + iocpt_get_abs_stats(dev, &dev->stats_base); +} + static int iocpt_session_write(struct iocpt_session_priv *priv, enum iocpt_sess_control_oper oper) @@ -669,6 +715,8 @@ iocpt_init(struct iocpt_dev *dev) { int err; + memset(&dev->stats_base, 0, sizeof(dev->stats_base)); + /* Uses dev_cmds */ err = iocpt_dev_init(dev, dev->info_pa); if (err != 0) diff --git a/drivers/crypto/ionic/ionic_crypto_ops.c b/drivers/crypto/ionic/ionic_crypto_ops.c index 0330fd76ad..839bbf69d1 100644 --- a/drivers/crypto/ionic/ionic_crypto_ops.c +++ b/drivers/crypto/ionic/ionic_crypto_ops.c @@ -65,6 +65,23 @@ iocpt_op_info_get(struct rte_cryptodev *cdev, struct rte_cryptodev_info *info) info->min_mbuf_tailroom_req = 0; } +static void +iocpt_op_stats_get(struct rte_cryptodev *cdev, + struct rte_cryptodev_stats *stats) +{ + struct iocpt_dev *dev = cdev->data->dev_private; + + iocpt_get_stats(dev, stats); +} + +static void +iocpt_op_stats_reset(struct rte_cryptodev *cdev) +{ + struct iocpt_dev *dev = cdev->data->dev_private; + + iocpt_reset_stats(dev); +} + static int iocpt_op_queue_release(struct rte_cryptodev *cdev, uint16_t queue_id) { @@ -350,6 +367,7 @@ iocpt_enqueue_sym(void *qp, struct rte_crypto_op **ops, uint16_t nb_ops) struct iocpt_crypto_q *cptq = qp; struct rte_crypto_op *op; struct iocpt_session_priv *priv; + struct rte_cryptodev_stats *stats = &cptq->stats; uint16_t avail, count; int err; @@ -375,6 +393,7 @@ iocpt_enqueue_sym(void *qp, struct rte_crypto_op **ops, uint16_t nb_ops) err = iocpt_enq_one_aead(cptq, priv, op); if (unlikely(err != 0)) { op->status = RTE_CRYPTO_OP_STATUS_INVALID_ARGS; + stats->enqueue_err_count++; break; } @@ -386,6 +405,8 @@ iocpt_enqueue_sym(void *qp, struct rte_crypto_op **ops, uint16_t nb_ops) /* Restart timer if ops are being enqueued */ cptq->last_wdog_cycles = rte_get_timer_cycles(); + + stats->enqueued_count += count; } return count; @@ -439,8 +460,8 @@ iocpt_enqueue_wdog(struct iocpt_crypto_q *cptq) q->info[q->head_idx] = wdog_op; q->head_idx = Q_NEXT_TO_POST(q, 1); - IOCPT_PRINT(DEBUG, "Queue %u wdog enq %p", - q->index, wdog_op); + IOCPT_PRINT(DEBUG, "Queue %u wdog enq %p ops %"PRIu64, + q->index, wdog_op, cptq->stats.enqueued_count); cptq->enqueued_wdogs++; out_flush: @@ -456,6 +477,7 @@ iocpt_dequeue_sym(void *qp, struct rte_crypto_op **ops, uint16_t nb_ops) struct rte_crypto_op *op; struct iocpt_crypto_comp *cq_desc_base = cq->base; volatile struct iocpt_crypto_comp *cq_desc; + struct rte_cryptodev_stats *stats = &cptq->stats; uint64_t then, now, hz, delta; uint16_t count = 0; @@ -515,6 +537,9 @@ iocpt_dequeue_sym(void *qp, struct rte_crypto_op **ops, uint16_t nb_ops) continue; } + if (unlikely(op->status != RTE_CRYPTO_OP_STATUS_SUCCESS)) + stats->dequeue_err_count++; + ops[count] = op; q->info[q->tail_idx] = NULL; @@ -542,6 +567,8 @@ iocpt_dequeue_sym(void *qp, struct rte_crypto_op **ops, uint16_t nb_ops) /* Restart timer if the queue is making progress */ cptq->last_wdog_cycles = rte_get_timer_cycles(); + stats->dequeued_count += count; + return count; } @@ -552,6 +579,8 @@ static struct rte_cryptodev_ops iocpt_ops = { .dev_close = iocpt_op_close, .dev_infos_get = iocpt_op_info_get, + .stats_get = iocpt_op_stats_get, + .stats_reset = iocpt_op_stats_reset, .queue_pair_setup = iocpt_op_queue_setup, .queue_pair_release = iocpt_op_queue_release, -- 2.17.1