From patchwork Fri Dec 24 06:46:46 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tal Shnaiderman X-Patchwork-Id: 105373 X-Patchwork-Delegate: rasland@nvidia.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id A539EA00C5; Fri, 24 Dec 2021 07:47:25 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 2DC1C4068C; Fri, 24 Dec 2021 07:47:25 +0100 (CET) Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2079.outbound.protection.outlook.com [40.107.243.79]) by mails.dpdk.org (Postfix) with ESMTP id E38ED4067B for ; Fri, 24 Dec 2021 07:47:22 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=IN6Gzj6RcSR0M2TiaFLvB68LOgXaD2/YIi2KFxp7uV7e2/jTrrQJ7bhKtLvX1nYZDPkujINZ/Mx9WNncmOu+9Iysks4u15FPWhH0NdH+5bghxBZEMhTzb3VHpw7fOqHbHCWChs3lpEX4BEwTVBT5HW6hnGYXABl4fK9mTlkV7fknhox0ZOAYW/RfQOmN82a8WA6zuZM3U/zvrHoutUjhF6R/HZ2khagtiteL42aOqETJ7mMG4d+WFlDbU+FfUxeTxo56v6ifeqiO9BZDsB3dJNUrzH7vgn0Io1j+BRwAxdwSV0MEHsQrdzFTC6V48xBVdboe/lCJAupwbtlwwTKhEw== 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=vrARnZQBRRQyWkL9iojErRtweYI8Wv4wLKvYLcXWpsk=; b=EgQOVsLxh1dNo1Ms/jBFFW5DxtzopZ4nwDyhIzNeuCoxahyADkXL1SUeeMnEbL4APJfcIAzlLBh1Q2eZbkwZnOvz0Ikuv7bjbYEhie6FnIKr0qO+ATqMJTNf+ZEYRBgD1ZP+REdHGp9zbjl4UFouQGEbfYieakVU7AV02pgw1IsOYwVDHlEG5nvlVkRAeqTKfhyrRl7XUO+xBrjcXImkuoylprMrAYIjFw9+UEQ20eL9B1u1IjYbQ/xV09VT6W5wLfv1o+McTo901ErUSeoPW9/AG6Mx4h/W3dQzoXRQPxaD+9nqk708wn/qgpxbmsj2ETmVqOgbKXefLeDceIVtqA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 12.22.5.236) smtp.rcpttodomain=microsoft.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vrARnZQBRRQyWkL9iojErRtweYI8Wv4wLKvYLcXWpsk=; b=C3WzY9/cQWipQZKx4GrFyvVLHJzNXIwf2CuT23EgbVV+k0chjwLAolSd4T8zE8N0hDSjzkETADeJ8fbpPMMkeX7ePq9jdT0W4Dd8XMay4MvEpEbdZTnLZO30w4NuXKXBLIq2onDrzJ/zeZHnU6jtNzvIETkOjwTNvgKBeuwiP8hD9vBTN9tjd0K+OF2Rd0ZXEBeg5cXqjVyAh21DPiQtZjByXG2+H2URQ56STbNmgVMY2v5wodz94NPXBmea0JlkenDC/ae41P1+B1TwkfoJ69Yaqbhrq3RKv4zukIyE+LV/DKi/N/YIqTEAz4hhZFnmwLXXoEUEOjm1JXAd30+uYw== Received: from MW4PR03CA0294.namprd03.prod.outlook.com (2603:10b6:303:b5::29) by BN8PR12MB3300.namprd12.prod.outlook.com (2603:10b6:408:6a::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4823.19; Fri, 24 Dec 2021 06:47:18 +0000 Received: from CO1NAM11FT033.eop-nam11.prod.protection.outlook.com (2603:10b6:303:b5:cafe::5d) by MW4PR03CA0294.outlook.office365.com (2603:10b6:303:b5::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4823.14 via Frontend Transport; Fri, 24 Dec 2021 06:47:18 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 12.22.5.236) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 12.22.5.236 as permitted sender) receiver=protection.outlook.com; client-ip=12.22.5.236; helo=mail.nvidia.com; Received: from mail.nvidia.com (12.22.5.236) by CO1NAM11FT033.mail.protection.outlook.com (10.13.174.247) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.4823.18 via Frontend Transport; Fri, 24 Dec 2021 06:47:18 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by DRHQMAIL109.nvidia.com (10.27.9.19) with Microsoft SMTP Server (TLS) id 15.0.1497.18; Fri, 24 Dec 2021 06:47:17 +0000 Received: from nvidia.com (172.20.187.6) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.2.986.9; Thu, 23 Dec 2021 22:47:15 -0800 From: Tal Shnaiderman To: CC: , , , , Subject: [PATCH] net/mlx5: support the imissed counter on Windows Date: Fri, 24 Dec 2021 08:46:46 +0200 Message-ID: <20211224064646.4800-1-talshn@nvidia.com> X-Mailer: git-send-email 2.16.1.windows.4 MIME-Version: 1.0 X-Originating-IP: [172.20.187.6] X-ClientProxiedBy: HQMAIL111.nvidia.com (172.20.187.18) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 50f050d6-4f24-4b1b-04be-08d9c6a93aa4 X-MS-TrafficTypeDiagnostic: BN8PR12MB3300:EE_ X-LD-Processed: 43083d15-7273-40c1-b7db-39efd9ccc17a,ExtAddr X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:785; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: NIqvXrqoGcl1VOyFuW64Na6s7icPcMmqvLwWhiP1AiUv0TSSeCG9FdLsYgItu905PUws0V4ZPvvzDGlwouhf+GxnnJkwEOSr9s3K6mWx0KrfhOdnLFzQkwjEuhPogBXQl3MKsntVzN3vyZoEa8KOPozIK+7LlSLApr/LjCkNHtHCIkOp048YHH7BDjIIlUhPlyJ7AG4WMlB0xUulsgHCGlv7B+Spm9q/WrxbkxhJgLnDwG+fWnhNI8cZJLEMkej8j+UhqzzQcRFECbMl5Fd/X2RPFc6eaUvRxnDn/qr6Wpk+HSVoI3btxeQjFkm+5VmzTApqyC9qrxlfXRLiPoPE7VqIJvYwip6F7QANA+uOYYVUg1hCX97bq9N6w7k7GfW28ticx7a+WXmf1BAsZAKSSevbrbepUUWw0jTBbDUVVALkX3ZR9/z7uXqRNZoE5jITfkJmCJ6/fiUmPOCO+M9Z0DoQcrsUODkOQnSPprV5hNdUhQQUGPuN2kMrVPDuLCE8BqFRt0jyjns3mosxhGIRACxuwvsL4Bwj9kZF2sUyI8RAmbLx6JTwUV/pep/MmJJ/eI/O/KWVLgy8+7jYOlbVxEi07jT/k7H1B2mQuEr246yPA/gmTTkk2oIKT0iOzRQCiTT31AnTCPObfeJPZLGTqslz1LHwu+10DCUO7qn9U5XEFoY45iAubFiFyga/VtBYEeVSMiU9s9eNjn2FLTqo1OrUS9Wx4vsB2SfFOXNQ5YhprQhRGPVNTAr5tEerZVfELgaK2rDeLM23c4qvOw6WSu9KF0lfSfL+PhzHvmFe9MI= X-Forefront-Antispam-Report: CIP:12.22.5.236; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:mail.nvidia.com; PTR:InfoNoRecords; CAT:NONE; SFS:(4636009)(46966006)(36840700001)(40470700002)(86362001)(47076005)(4326008)(8936002)(8676002)(54906003)(26005)(186003)(83380400001)(2906002)(36860700001)(70586007)(36756003)(5660300002)(6666004)(82310400004)(508600001)(55016003)(40460700001)(70206006)(81166007)(336012)(426003)(2616005)(16526019)(356005)(6286002)(7696005)(6916009)(316002)(1076003)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Dec 2021 06:47:18.4142 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 50f050d6-4f24-4b1b-04be-08d9c6a93aa4 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[12.22.5.236]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT033.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN8PR12MB3300 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 Add support for the imissed counter using the DevX API on Windows. imissed is queried by creating a queue counter for the port, attaching it to all created RQs and querying the "out_of_buffer" field. If the counter cannot be created, imissed will always report 0. Signed-off-by: Tal Shnaiderman Acked-by: Matan Azrad --- drivers/common/mlx5/version.map | 4 ++-- drivers/net/mlx5/windows/mlx5_ethdev_os.c | 11 ++++++++++- drivers/net/mlx5/windows/mlx5_os.c | 29 ++++++++++++++++++++++++----- 3 files changed, 36 insertions(+), 8 deletions(-) diff --git a/drivers/common/mlx5/version.map b/drivers/common/mlx5/version.map index 34e86004a0..462b7cea5e 100644 --- a/drivers/common/mlx5/version.map +++ b/drivers/common/mlx5/version.map @@ -55,8 +55,8 @@ INTERNAL { mlx5_devx_cmd_query_parse_samples; mlx5_devx_cmd_query_virtio_q_counters; # WINDOWS_NO_EXPORT mlx5_devx_cmd_query_virtq; - mlx5_devx_cmd_queue_counter_alloc; # WINDOWS_NO_EXPORT - mlx5_devx_cmd_queue_counter_query; # WINDOWS_NO_EXPORT + mlx5_devx_cmd_queue_counter_alloc; + mlx5_devx_cmd_queue_counter_query; mlx5_devx_cmd_register_read; mlx5_devx_cmd_register_write; mlx5_devx_cmd_wq_query; # WINDOWS_NO_EXPORT diff --git a/drivers/net/mlx5/windows/mlx5_ethdev_os.c b/drivers/net/mlx5/windows/mlx5_ethdev_os.c index 359f73df7c..c6315ce368 100644 --- a/drivers/net/mlx5/windows/mlx5_ethdev_os.c +++ b/drivers/net/mlx5/windows/mlx5_ethdev_os.c @@ -203,7 +203,16 @@ mlx5_os_get_stats_n(struct rte_eth_dev *dev) void mlx5_os_stats_init(struct rte_eth_dev *dev) { - RTE_SET_USED(dev); + struct mlx5_priv *priv = dev->data->dev_private; + struct mlx5_stats_ctrl *stats_ctrl = &priv->stats_ctrl; + int ret; + + /* Copy to base at first time. */ + ret = mlx5_os_read_dev_stat(priv, "out_of_buffer", &stats_ctrl->imissed_base); + if (ret) + DRV_LOG(ERR, "port %u cannot read device counters: %s", + dev->data->port_id, strerror(rte_errno)); + stats_ctrl->imissed = 0; } /** diff --git a/drivers/net/mlx5/windows/mlx5_os.c b/drivers/net/mlx5/windows/mlx5_os.c index dec4b923d0..0e31aba892 100644 --- a/drivers/net/mlx5/windows/mlx5_os.c +++ b/drivers/net/mlx5/windows/mlx5_os.c @@ -72,6 +72,22 @@ static struct mlx5_indexed_pool_config icfg[] = { }, }; +static void +mlx5_queue_counter_id_prepare(struct rte_eth_dev *dev) +{ + struct mlx5_priv *priv = dev->data->dev_private; + void *ctx = priv->sh->cdev->ctx; + + priv->q_counters = mlx5_devx_cmd_queue_counter_alloc(ctx); + if (!priv->q_counters) { + DRV_LOG(ERR, "Port %d queue counter object cannot be created " + "by DevX - imissed counter will be unavailable", + dev->data->port_id); + return; + } + priv->counter_set_id = priv->q_counters->id; +} + /** * Initialize shared data between primary and secondary process. * @@ -655,6 +671,7 @@ mlx5_dev_spawn(struct rte_device *dpdk_dev, goto error; } mlx5_flow_counter_mode_config(eth_dev); + mlx5_queue_counter_id_prepare(eth_dev); return eth_dev; error: if (priv) { @@ -718,7 +735,8 @@ mlx5_os_dev_shared_handler_uninstall(struct mlx5_dev_ctx_shared *sh) * @param[out] stat * Pointer to read statistic value. * @return - * 0 on success and stat is valud, 1 if failed to read the value + * 0 on success and stat is valid, non-zero if failed to read the value + * or counter is not supported. * rte_errno is set. * */ @@ -726,10 +744,11 @@ int mlx5_os_read_dev_stat(struct mlx5_priv *priv, const char *ctr_name, uint64_t *stat) { - RTE_SET_USED(priv); - RTE_SET_USED(ctr_name); - RTE_SET_USED(stat); - DRV_LOG(WARNING, "%s: is not supported", __func__); + if (priv->q_counters != NULL && strcmp(ctr_name, "out_of_buffer") == 0) + return mlx5_devx_cmd_queue_counter_query + (priv->q_counters, 0, (uint32_t *)stat); + DRV_LOG(WARNING, "%s: is not supported for the %s counter", + __func__, ctr_name); return -ENOTSUP; }