From patchwork Mon Feb 14 08:56:52 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Slava Ovsiienko X-Patchwork-Id: 107414 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 DB8CCA00C4; Mon, 14 Feb 2022 09:57:27 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id A68A7410F7; Mon, 14 Feb 2022 09:57:27 +0100 (CET) Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2044.outbound.protection.outlook.com [40.107.220.44]) by mails.dpdk.org (Postfix) with ESMTP id C55DD40C35 for ; Mon, 14 Feb 2022 09:57:25 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XIxFb3PqgB73CWJOuLcY3jQped1ChhtCVZ3OceRxlG+xqS98qum0YpfLEXgu9MzQ5MoE1Mh+9KZSsHzIsHwq6+CqsZ2GJ7+cDvPmFGPyHEdaykDjB/gfmoIaKbkbbGXVSBSZ8S9lV3mMqwz+VKhw1ZbxZs+15kPWyvnShSRhdHEeM7vlUDA9JrYaXdYxzhHONKwnkgArHhtYgSUp6+TvSoSTxLz4rhLghOiJxQaG2a4iwGmAJ+0xfjXNlcKbgjkpzhLjvqgdoR5eu25ku0NqVls5hQqeEzeFM+rnmMo6Q+7z2v1wNZUKsdlm8dEs8Qj7Ndp2OV+0+yklYMSSJviwJw== 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=/3jTdSuaju3bX78OmgBlzePJl+Xy8zj4FvOO70xhx4U=; b=F4jkNp9EH1tCQBAEhUlyd3njcIFDHdgFN49Dfkz+/NPKgowDAdFKU0UzQw2p//jmhJVBuzZ+Zi3cFyE1VHwAKdr4dwpiO9fq3ZiaNfY5r8Fj2g5sWHy/ASnVFohpG31NtBRvbQZMZ1NNtPzqVyhhPdDHaWE9blZzdtyu4idG2tKgRJd8UVIZ3aBiX7WK+tFPinO9AENp8/3kctHdBL4mfsCjFCgomh0LDCttVwDlRVEqdvJZSoqSNOUinHkL+Vl+cZAqICnYEWVRivM0g+9/EwC7SCPaHzsB6RF9LbHHYgq1bsWzLGnLt2pOrhlAMtN2tG6wtnZDcneSrhvCi6F6UQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 12.22.5.238) smtp.rcpttodomain=dpdk.org 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=/3jTdSuaju3bX78OmgBlzePJl+Xy8zj4FvOO70xhx4U=; b=dAZT/B5q2FFwa/eChcUlviX0lo/BVFfS3jOZViivygY5dVWmZJ8hfUXxAUp1tUrBfQkgoBhfWF7kmY98N2huGY/u3dA5giyXcvNE5DW5YQRxPIqrvGJ3Q0gctlnjTn5LTkseesuJPPWl9VtqxJNwRpp8WHqW0mSAMg+OF2TofJngiG6+F8bppgf5UiBT6lSvsUknIaGS+2A+nBRJQEGDtIJ+r/kmeabzJUx2hBrtLsg4doiYpFkHnlXF5zv5CVXgR+MLakg9rOaIH9If9k3R5nQMGIuB997Vbal+wwjFPuxIrWahYLXAUbQGb0nfXqW4UcopxpO7VYSprbsFCl21wA== Received: from MWHPR1401CA0022.namprd14.prod.outlook.com (2603:10b6:301:4b::32) by CH2PR12MB3784.namprd12.prod.outlook.com (2603:10b6:610:21::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4975.15; Mon, 14 Feb 2022 08:57:22 +0000 Received: from CO1NAM11FT035.eop-nam11.prod.protection.outlook.com (2603:10b6:301:4b:cafe::66) by MWHPR1401CA0022.outlook.office365.com (2603:10b6:301:4b::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4975.11 via Frontend Transport; Mon, 14 Feb 2022 08:57:22 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 12.22.5.238) 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.238 as permitted sender) receiver=protection.outlook.com; client-ip=12.22.5.238; helo=mail.nvidia.com; Received: from mail.nvidia.com (12.22.5.238) by CO1NAM11FT035.mail.protection.outlook.com (10.13.175.36) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.4975.11 via Frontend Transport; Mon, 14 Feb 2022 08:57:21 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by DRHQMAIL105.nvidia.com (10.27.9.14) with Microsoft SMTP Server (TLS) id 15.0.1497.18; Mon, 14 Feb 2022 08:57:21 +0000 Received: from nvidia.com (10.126.231.35) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.9; Mon, 14 Feb 2022 00:57:19 -0800 From: Viacheslav Ovsiienko To: CC: , Subject: [PATCH 1/4] common/mlx5: add send on time capability check Date: Mon, 14 Feb 2022 10:56:52 +0200 Message-ID: <20220214085655.22648-2-viacheslavo@nvidia.com> X-Mailer: git-send-email 2.18.1 In-Reply-To: <20220214085655.22648-1-viacheslavo@nvidia.com> References: <20220214085655.22648-1-viacheslavo@nvidia.com> MIME-Version: 1.0 X-Originating-IP: [10.126.231.35] X-ClientProxiedBy: rnnvmail203.nvidia.com (10.129.68.9) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 887268a9-57f4-40b9-5c0e-08d9ef98032e X-MS-TrafficTypeDiagnostic: CH2PR12MB3784:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:2657; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 8MXC1sXxGf3tRgcGxjnqi3PPvWXnf96k65Xck0Y/dqYqGhI38arKuJVUw3GDT76VBh9iJgkS5AHDV5kyd2Cmw1s1N8RYSym17Tehi3uMLFtj4rfWjhjXv2WoTZjvFgVGC1gwGY+ekIbZuhTIGG3erUaKVnxYH/jy/2X+2UaKOTiold1d+974E/gw59nwUDFoXjn66X1db31uoa3DaFEAo79n2xPgempTwnL8oUFFLzgsOqiv8YUpHZEBKLtX1nDDkcuudUaznNKwT3tNOwSm64M+1Ddrb+i09k3OUHPMYh7o1cqyRSPWlEkgLuhS9iZ8xYFMhycMjNcHBzj8eHoPpCRZ/2Bwk8UNdXHXXS+hYaPNxvt0IDv83s+4xtKQJRpdU/WRzx6dynrT3/nl1dxK0zySqNc6EgTJ9o8BI8M2Bj9zCiH4DVrjHBDP3SbPtjFZuKGCwaN/PzSskaDehMf87Y/gvXyrYPcmfjmsy2m7rP2VBc5Gj5jn8tjByWyBxlzT0UHsH7XkbPty2O3o8+bDNLpCHpsKbd7H+bZwMDc842r+LuaOod2rY/p2B4fIQU907Ih2tOCLwUfcqkr278WEluGLTP5Sd/JnFp31cNgCRvUlFCHbnoso1t7Dyztoc24olHsrUWQwPfMCKdH1sS9C2BMHBj+Pd3UxZTYO/yAGhU81MjO4UcaPT55KYjvRntj1yYGlLjldAYoMIX8Anw3/aQ== X-Forefront-Antispam-Report: CIP:12.22.5.238; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:mail.nvidia.com; PTR:InfoNoRecords; CAT:NONE; SFS:(13230001)(4636009)(46966006)(36840700001)(40470700004)(81166007)(36860700001)(55016003)(356005)(47076005)(82310400004)(7696005)(6666004)(8936002)(70206006)(336012)(36756003)(6916009)(5660300002)(8676002)(70586007)(4326008)(508600001)(426003)(186003)(16526019)(6286002)(54906003)(107886003)(2616005)(26005)(1076003)(40460700003)(86362001)(83380400001)(316002)(2906002)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Feb 2022 08:57:21.5823 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 887268a9-57f4-40b9-5c0e-08d9ef98032e 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.238]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT035.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR12MB3784 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 The patch provides check for send scheduling on time hardware capability. With this capability enabled hardware is able to handle Wait WQEs with directly specified timestamp values. No Clock Queue is needed anymore to handle send scheduling. Signed-off-by: Viacheslav Ovsiienko --- drivers/common/mlx5/mlx5_devx_cmds.c | 1 + drivers/common/mlx5/mlx5_devx_cmds.h | 1 + drivers/common/mlx5/mlx5_prm.h | 27 ++++++++++++++++++++++++++- 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/drivers/common/mlx5/mlx5_devx_cmds.c b/drivers/common/mlx5/mlx5_devx_cmds.c index 2e807a0829..fb55ef96ea 100644 --- a/drivers/common/mlx5/mlx5_devx_cmds.c +++ b/drivers/common/mlx5/mlx5_devx_cmds.c @@ -962,6 +962,7 @@ mlx5_devx_cmd_query_hca_attr(void *ctx, MLX5_GET(cmd_hca_cap, hcattr, umr_indirect_mkey_disabled); attr->umr_modify_entity_size_disabled = MLX5_GET(cmd_hca_cap, hcattr, umr_modify_entity_size_disabled); + attr->wait_on_time = MLX5_GET(cmd_hca_cap, hcattr, wait_on_time); attr->crypto = MLX5_GET(cmd_hca_cap, hcattr, crypto); if (attr->crypto) attr->aes_xts = MLX5_GET(cmd_hca_cap, hcattr, aes_xts); diff --git a/drivers/common/mlx5/mlx5_devx_cmds.h b/drivers/common/mlx5/mlx5_devx_cmds.h index 37821b493e..909d91adae 100644 --- a/drivers/common/mlx5/mlx5_devx_cmds.h +++ b/drivers/common/mlx5/mlx5_devx_cmds.h @@ -201,6 +201,7 @@ struct mlx5_hca_attr { uint32_t scatter_fcs_w_decap_disable:1; uint32_t flow_hit_aso:1; /* General obj type FLOW_HIT_ASO supported. */ uint32_t roce:1; + uint32_t wait_on_time:1; uint32_t rq_ts_format:2; uint32_t sq_ts_format:2; uint32_t steering_format_version:4; diff --git a/drivers/common/mlx5/mlx5_prm.h b/drivers/common/mlx5/mlx5_prm.h index 495b63191a..4ce302b478 100644 --- a/drivers/common/mlx5/mlx5_prm.h +++ b/drivers/common/mlx5/mlx5_prm.h @@ -133,6 +133,19 @@ #define MLX5_OPCODE_WAIT 0x0fu #endif +#define MLX5_OPC_MOD_WAIT_CQ_PI 0u +#define MLX5_OPC_MOD_WAIT_DATA 1u +#define MLX5_OPC_MOD_WAIT_TIME 2u + + +#define MLX5_WAIT_COND_INVERT 0x10u +#define MLX5_WAIT_COND_ALWAYS_TRUE 0u +#define MLX5_WAIT_COND_EQUAL 1u +#define MLX5_WAIT_COND_BIGGER 2u +#define MLX5_WAIT_COND_SMALLER 3u +#define MLX5_WAIT_COND_CYCLIC_BIGGER 4u +#define MLX5_WAIT_COND_CYCLIC_SMALLER 5u + #ifndef HAVE_MLX5_OPCODE_ACCESS_ASO #define MLX5_OPCODE_ACCESS_ASO 0x2du #endif @@ -348,6 +361,15 @@ struct mlx5_wqe_qseg { uint32_t qpn_cqn; } __rte_packed; +struct mlx5_wqe_wseg { + uint32_t operation; + uint32_t lkey; + uint32_t va_high; + uint32_t va_low; + uint64_t value; + uint64_t mask; +} __rte_packed; + /* The title WQEBB, header of WQE. */ struct mlx5_wqe { union { @@ -1659,7 +1681,10 @@ struct mlx5_ifc_cmd_hca_cap_bits { u8 num_vhca_ports[0x8]; u8 reserved_at_618[0x6]; u8 sw_owner_id[0x1]; - u8 reserved_at_61f[0x129]; + u8 reserved_at_61f[0x6C]; + u8 wait_on_data[0x1]; + u8 wait_on_time[0x1]; + u8 reserved_at_68d[0xBB]; u8 dma_mmo_qp[0x1]; u8 regexp_mmo_qp[0x1]; u8 compress_mmo_qp[0x1]; From patchwork Mon Feb 14 08:56:53 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Slava Ovsiienko X-Patchwork-Id: 107415 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 49E4FA00C4; Mon, 14 Feb 2022 09:57:33 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B9BB14114A; Mon, 14 Feb 2022 09:57:28 +0100 (CET) Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2064.outbound.protection.outlook.com [40.107.237.64]) by mails.dpdk.org (Postfix) with ESMTP id EF06040C35 for ; Mon, 14 Feb 2022 09:57:26 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jTcV/IlNoTBixAnZZJV9m60glJvR8Jdttq3xk2HyQl6O7sRSaiYr7A7WmAsqpJ5r22rRULUwQt3E/Vb64ELSV55JpY6ds+fevCjSpnEKTR0jiGt0i7sy8QNTg7BiHi7vZYAYhmdVUgwtuZHVg+Q4cdafcyadoLvlFZXkoY6HTch1O8XlYIjqeltGMcNAi3UY53bTWZ9Ahwl4mo5uU/tC6ozODdjfZW8eDB8UVv1l5k+LvEM6D1DGd1ZwdSeo+ik7/4xqrpNDKaDt2f5lVK/Je0FF25s+U3rWPh4RZbA3STsMBwhuSgziAEioUfmcelGMKkyEjOHIFzfOfXAK3yZpAg== 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=z2OeDAk4QG+tGKh24NcXlGhqfhohFuo8gys+NRzQYJU=; b=X6PK8UDe9o7Qug3BNSzrWIQlQL553UeDkS4cBBzA5p6kKhL4RJZEv3QpdhB+ZfLtFkeojXLZC0HrdvsSLKmFPwSRzQBUNVvQ6rtK0uOc4aAQbjcopmNO7UIK9wIsgEM+mu072YIExpB2vcTHxgQlkQU57VynaKzgy/7zyguBW5rRA8S5RaaZcD8g303/IQoNnGJvCOGLEEZWYYKqzMc8JWuGrr5kjQM7SlTmvxIdeX5CBfJSW6l7UXymuYnuoaRy6JZnVwUEH1lXFXyA9DnwNCZ5y5tBpW4T0aWqe+/Z3J9NBN4tcVkeltNSdp4yJV9P0zNGmRs1Pov2XC5QCcPegw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 12.22.5.234) smtp.rcpttodomain=dpdk.org 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=z2OeDAk4QG+tGKh24NcXlGhqfhohFuo8gys+NRzQYJU=; b=oXm92h15jVhyRSI3pbqmM7X2Vxztg1qJUTOSglgEGad1tiCXzgVZo/ntkiu0Y5R9lojW5HuqFlwWiin5FkesTp8HXLOtbjrTe0DIQPuBSvNvPlpvGqJyrOx9LmulRAMPmDdbWH/w2qi7eKiO+gl5xVnCOGp0fVihPXtsqGzma7N6XBKxCTEA317iclUOEmraRusdYncRH/jRqmNbaVlDFbL8OK9D+HR0P8KPOLo5Zy5UMF4K5G/bbuoO4aHqxzydDWilsT6/cfXswR1AbWP2/FYEALQ6Z5foQ1XRrcyLE9gRdaz2dpozvTnaUdvfcMHfgMKy+PsvfTMzz/VVkC8x4A== Received: from BN6PR22CA0025.namprd22.prod.outlook.com (2603:10b6:404:37::11) by MWHPR1201MB0160.namprd12.prod.outlook.com (2603:10b6:301:50::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4975.11; Mon, 14 Feb 2022 08:57:25 +0000 Received: from BN8NAM11FT025.eop-nam11.prod.protection.outlook.com (2603:10b6:404:37:cafe::af) by BN6PR22CA0025.outlook.office365.com (2603:10b6:404:37::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4951.19 via Frontend Transport; Mon, 14 Feb 2022 08:57:24 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 12.22.5.234) 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.234 as permitted sender) receiver=protection.outlook.com; client-ip=12.22.5.234; helo=mail.nvidia.com; Received: from mail.nvidia.com (12.22.5.234) by BN8NAM11FT025.mail.protection.outlook.com (10.13.177.136) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.4975.11 via Frontend Transport; Mon, 14 Feb 2022 08:57:24 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by DRHQMAIL101.nvidia.com (10.27.9.10) with Microsoft SMTP Server (TLS) id 15.0.1497.18; Mon, 14 Feb 2022 08:57:23 +0000 Received: from nvidia.com (10.126.231.35) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.9; Mon, 14 Feb 2022 00:57:21 -0800 From: Viacheslav Ovsiienko To: CC: , Subject: [PATCH 2/4] net/mlx5: configure Tx queue with send on time offload Date: Mon, 14 Feb 2022 10:56:53 +0200 Message-ID: <20220214085655.22648-3-viacheslavo@nvidia.com> X-Mailer: git-send-email 2.18.1 In-Reply-To: <20220214085655.22648-1-viacheslavo@nvidia.com> References: <20220214085655.22648-1-viacheslavo@nvidia.com> MIME-Version: 1.0 X-Originating-IP: [10.126.231.35] X-ClientProxiedBy: rnnvmail203.nvidia.com (10.129.68.9) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 507e9b19-da90-4dce-5694-08d9ef9804f3 X-MS-TrafficTypeDiagnostic: MWHPR1201MB0160:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7219; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: F/wcvBwWZhaXYnBplE91QPTp9VE1rnDadK7pyHulMNwX5T4UEkx1xawvhemjBVrjMkh+tebeJO533x/Oxu8lFKnEPAHmg8IWHHUwnAHRPYCBkOctHH+DLpH6YLYkxnL4DtPYl81ybNeRDkL//RH3VcXOiGf7minGNuLB9YwTn+ZL9h1OdPqdv91jsXctInuwMoBuZToffZdimBOWq/BqXqsEKi0Z66D85vOVHkyGYfomojghrAbffZoT/DS1td2Bdfl90tSUcLyKWfrAk+hXim1bH7OmznK4vdw/Bwj0nI5WqdcQgLJJRGlZ9/Dq0ib2TXxjPR69EeAxbyXuFvlD6RydO3fCB0xCntycEPQdwbSlucdyQSgLpvgcD9DsRGgnNlkG3n7doITYPiX+rUxHMSEdT24BpEVvNuseY9jVwlvUyZx1aH+Lm2yWJ/zwlf1R37SjpdRi5ToFEnvXClVkjbQm8nRpAkI/Gm0JN46JIDSgjjt0kMiKBDO6GnKf47zVecV1nnP8MJdA6uKDVXYsuVfY47nyYi7F/YgDpQLybU+/sZEVsi8D/2ATMzqz5cI9noruGJ6oDgrQ+u6DhQbT6s4XJgb7AImuntf8ePwNzZRBQi0ej7/MMUqNAyeWvYpSA5jsItYanVjOFj5hZDxR+r1vAElN7puvIRvWffaa8TSLA+0lp5LIyAgKXxVpsiaLuB+2ULvBWB3jFYOyZyeh8A== X-Forefront-Antispam-Report: CIP:12.22.5.234; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:mail.nvidia.com; PTR:InfoNoRecords; CAT:NONE; SFS:(13230001)(4636009)(40470700004)(46966006)(36840700001)(6286002)(356005)(186003)(54906003)(107886003)(8676002)(81166007)(26005)(508600001)(4326008)(70206006)(36860700001)(2616005)(16526019)(40460700003)(6916009)(55016003)(70586007)(82310400004)(86362001)(316002)(8936002)(47076005)(36756003)(83380400001)(6666004)(5660300002)(7696005)(336012)(426003)(1076003)(2906002)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Feb 2022 08:57:24.5040 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 507e9b19-da90-4dce-5694-08d9ef9804f3 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.234]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT025.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR1201MB0160 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 The wait on time configuration flag is copied to the Tx queue structure due to performance considerations. Timestamp mask is preparted and stored in queue structure as well. Signed-off-by: Viacheslav Ovsiienko --- drivers/net/mlx5/linux/mlx5_verbs.c | 2 ++ drivers/net/mlx5/mlx5.h | 3 +++ drivers/net/mlx5/mlx5_devx.c | 2 ++ drivers/net/mlx5/mlx5_tx.h | 3 +++ drivers/net/mlx5/mlx5_txq.c | 11 ++++++++++- 5 files changed, 20 insertions(+), 1 deletion(-) diff --git a/drivers/net/mlx5/linux/mlx5_verbs.c b/drivers/net/mlx5/linux/mlx5_verbs.c index 2b6eef44a7..80dd0bb6c1 100644 --- a/drivers/net/mlx5/linux/mlx5_verbs.c +++ b/drivers/net/mlx5/linux/mlx5_verbs.c @@ -1036,6 +1036,8 @@ mlx5_txq_ibv_obj_new(struct rte_eth_dev *dev, uint16_t idx) txq_data->wqe_pi = 0; txq_data->wqe_comp = 0; txq_data->wqe_thres = txq_data->wqe_s / MLX5_TX_COMP_THRESH_INLINE_DIV; + txq_data->wait_on_time = !!(!priv->config.tx_pp && + priv->config.hca_attr.wait_on_time); #ifdef HAVE_IBV_FLOW_DV_SUPPORT /* * If using DevX need to query and store TIS transport domain value. diff --git a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h index 737ad6895c..3983d3aa50 100644 --- a/drivers/net/mlx5/mlx5.h +++ b/drivers/net/mlx5/mlx5.h @@ -341,6 +341,9 @@ struct mlx5_lb_ctx { #define MLX5_CNT_ARRAY_IDX(pool, cnt) \ ((int)(((uint8_t *)(cnt) - (uint8_t *)((pool) + 1)) / \ MLX5_CNT_LEN(pool))) +#define MLX5_TS_MASK_SECS 8ull +/* timestamp wrapping in seconds, must be power of 2. */ + /* * The pool index and offset of counter in the pool array makes up the * counter index. In case the counter is from pool 0 and offset 0, it diff --git a/drivers/net/mlx5/mlx5_devx.c b/drivers/net/mlx5/mlx5_devx.c index 91243f684f..c6994e4a75 100644 --- a/drivers/net/mlx5/mlx5_devx.c +++ b/drivers/net/mlx5/mlx5_devx.c @@ -1327,6 +1327,8 @@ mlx5_txq_devx_obj_new(struct rte_eth_dev *dev, uint16_t idx) txq_data->qp_num_8s = txq_obj->sq_obj.sq->id << 8; txq_data->db_heu = sh->cdev->config.dbnc == MLX5_TXDB_HEURISTIC; txq_data->db_nc = sh->tx_uar.dbnc; + txq_data->wait_on_time = !!(!priv->config.tx_pp && + priv->config.hca_attr.wait_on_time); /* Change Send Queue state to Ready-to-Send. */ ret = mlx5_txq_devx_modify(txq_obj, MLX5_TXQ_MOD_RST2RDY, 0); if (ret) { diff --git a/drivers/net/mlx5/mlx5_tx.h b/drivers/net/mlx5/mlx5_tx.h index c4b8271f6f..b50deb8b67 100644 --- a/drivers/net/mlx5/mlx5_tx.h +++ b/drivers/net/mlx5/mlx5_tx.h @@ -138,6 +138,8 @@ struct mlx5_txq_data { uint16_t vlan_en:1; /* VLAN insertion in WQE is supported. */ uint16_t db_nc:1; /* Doorbell mapped to non-cached region. */ uint16_t db_heu:1; /* Doorbell heuristic write barrier. */ + uint16_t rt_timestamp:1; /* Realtime timestamp format. */ + uint16_t wait_on_time:1; /* WQE with timestamp is supported. */ uint16_t fast_free:1; /* mbuf fast free on Tx is enabled. */ uint16_t inlen_send; /* Ordinary send data inline size. */ uint16_t inlen_empw; /* eMPW max packet size to inline. */ @@ -157,6 +159,7 @@ struct mlx5_txq_data { volatile uint32_t *cq_db; /* Completion queue doorbell. */ uint16_t port_id; /* Port ID of device. */ uint16_t idx; /* Queue index. */ + uint64_t rt_timemask; /* Scheduling timestamp mask. */ uint64_t ts_mask; /* Timestamp flag dynamic mask. */ int32_t ts_offset; /* Timestamp field dynamic offset. */ struct mlx5_dev_ctx_shared *sh; /* Shared context. */ diff --git a/drivers/net/mlx5/mlx5_txq.c b/drivers/net/mlx5/mlx5_txq.c index 4e0bf7af9c..3585546628 100644 --- a/drivers/net/mlx5/mlx5_txq.c +++ b/drivers/net/mlx5/mlx5_txq.c @@ -108,7 +108,7 @@ mlx5_get_tx_port_offloads(struct rte_eth_dev *dev) RTE_ETH_TX_OFFLOAD_TCP_CKSUM); if (config->tso) offloads |= RTE_ETH_TX_OFFLOAD_TCP_TSO; - if (config->tx_pp) + if (config->tx_pp || config->hca_attr.wait_on_time) offloads |= RTE_ETH_TX_OFFLOAD_SEND_ON_TIMESTAMP; if (config->swp) { if (config->swp & MLX5_SW_PARSING_CSUM_CAP) @@ -1290,7 +1290,14 @@ mlx5_txq_dynf_timestamp_set(struct rte_eth_dev *dev) int off, nbit; unsigned int i; uint64_t mask = 0; + uint64_t ts_mask; + if (priv->config.rt_timestamp || !priv->config.hca_attr.dev_freq_khz) + ts_mask = MLX5_TS_MASK_SECS << 32; + else + ts_mask = rte_align64pow2(MLX5_TS_MASK_SECS * 1000ull * + priv->config.hca_attr.dev_freq_khz); + ts_mask = rte_cpu_to_be_64(ts_mask - 1ull); nbit = rte_mbuf_dynflag_lookup (RTE_MBUF_DYNFLAG_TX_TIMESTAMP_NAME, NULL); off = rte_mbuf_dynfield_lookup @@ -1304,5 +1311,7 @@ mlx5_txq_dynf_timestamp_set(struct rte_eth_dev *dev) data->sh = sh; data->ts_mask = mask; data->ts_offset = off; + data->rt_timestamp = priv->config.rt_timestamp; + data->rt_timemask = ts_mask; } } From patchwork Mon Feb 14 08:56:54 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Slava Ovsiienko X-Patchwork-Id: 107416 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 D6A52A00C4; Mon, 14 Feb 2022 09:57:40 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 1387641159; Mon, 14 Feb 2022 09:57:30 +0100 (CET) Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2062.outbound.protection.outlook.com [40.107.243.62]) by mails.dpdk.org (Postfix) with ESMTP id BD6474114B for ; Mon, 14 Feb 2022 09:57:28 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dmBYHMa0GnZLwlmLSL3++gyTrIS/b/yOfkJYpJmvKR6hEhlSp3ArBmyrOwGIDqJM4z7CdFdNcxdPpiIrmFM/A4nfH2L/mDUMcCqWJOSmC/Qf8Wsc94461tUvKdJpompJCOyeHuU0hAQ4vXx81hE735knav3wpCf2Qod6lxfn6PE9HUgCZ0cgArogMHf7xKUYUISPwEw1SUBx2l5UqrAz8Yo5l/wP5nWlRBxmrpMD2ruaLEtpHi45Hptt5eXMC7M19W+49h9pHdIxprbGFplINXQb9rcaCqQvkpLbMtEafINciBinRRN5VvJD1oAfLpag+SmDYUaB4NgcLASHuZ2p0Q== 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=r/mkmq4F1Ozg7XAK7Bufbq5B/O+przom0e94UuT1T/M=; b=d7gWtxohI8fuKCBWEVzh+PaVMpoYhoWwcUzO5vPYWCVtEitv14WSWPwPy+x3toG42CqHbAo7FWSye/NYj8n5AGPrEuXhQXriJxjEvFoG2TGnezyui6vE/ctEZa15LoQNYTiEV93EY5ggirNYtZDgObdp/npqO2uxmpF93bly0PWRHVwBP2QG+CorqLUtBiH9tdzDjhvRw1QrdTyaYjQ3ddw+HUWGvzehITIBx/CEA6IdXoSbtdhLIpaBcF285g98ow8BcyxAZDioUjfGOOBgPHpTXVv/LKVOUByDwFHZYI+KFLuLHUxEyCDKS9sKt8cfB2iYR7ooUsXk/kLRMQL61Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 12.22.5.236) smtp.rcpttodomain=dpdk.org 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=r/mkmq4F1Ozg7XAK7Bufbq5B/O+przom0e94UuT1T/M=; b=aAL8lmNRj+vReZgnFZZs7kfstThlTJm22gVJcb4hoRQJEzngYnkygE8vOS5TcEoZguJf8klFVPiMEW65c/YJMeO4x/XrJPFZN+TloBBYOEB1ufRrTL8P7lupVWvQ2fVhRKpCbotYsXqSO2xMyj7dWXKkcREKuYkSBpl2HX3HJIDpZ2qpABE2V7GrgRA/QRlfD9Ewzauqc3ZrLKWpG1ac8iPzko9plVHdoA4vatAUtKeQK2jnqC/7hHkoL0KisuFv/0UuPwARgx8k08it+FwKkvxI6E/OvxRp0JSq57cG+HaGKFdWC7cVVZuNMrYHujZ3R1AgGqEy5PjKMg+/LIU9LQ== Received: from DM6PR03CA0019.namprd03.prod.outlook.com (2603:10b6:5:40::32) by BN6PR12MB1553.namprd12.prod.outlook.com (2603:10b6:405:6::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4975.11; Mon, 14 Feb 2022 08:57:27 +0000 Received: from DM6NAM11FT008.eop-nam11.prod.protection.outlook.com (2603:10b6:5:40:cafe::d9) by DM6PR03CA0019.outlook.office365.com (2603:10b6:5:40::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4975.11 via Frontend Transport; Mon, 14 Feb 2022 08:57:26 +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 DM6NAM11FT008.mail.protection.outlook.com (10.13.172.85) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.4975.11 via Frontend Transport; Mon, 14 Feb 2022 08:57:26 +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; Mon, 14 Feb 2022 08:57:25 +0000 Received: from nvidia.com (10.126.231.35) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.9; Mon, 14 Feb 2022 00:57:23 -0800 From: Viacheslav Ovsiienko To: CC: , Subject: [PATCH 3/4] net/mlx5: add wait on time support in Tx datapath Date: Mon, 14 Feb 2022 10:56:54 +0200 Message-ID: <20220214085655.22648-4-viacheslavo@nvidia.com> X-Mailer: git-send-email 2.18.1 In-Reply-To: <20220214085655.22648-1-viacheslavo@nvidia.com> References: <20220214085655.22648-1-viacheslavo@nvidia.com> MIME-Version: 1.0 X-Originating-IP: [10.126.231.35] X-ClientProxiedBy: rnnvmail203.nvidia.com (10.129.68.9) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 44c1313a-1789-4f4e-0981-08d9ef980621 X-MS-TrafficTypeDiagnostic: BN6PR12MB1553:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7219; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: WD8oN9IdgG7nL9KzKedKf1b3t2A1v1yHdZYJCcxkezL+PprRHtPicmxS7qtPBSFh2Ez1HXZrhgsKT+jCFzvfd7Xp+MfZ+PNs/VfrphkOOMlH1IiK2DIPjQktPAL/jls8LS64TM6I2OQU+ouNNyfvVYqaX0HO6fX3Y0IWne89CP3kOHku11E06f6ip/xHyKgRBvHZ2UaGWCwthAmEiIPT1Y4PfK2a4UqzoJOB0e/gcrfcP/D4yg9U7oGePRZ5uUaLe/0Otmma5pm72rFHd7wF2R1643xeGXM7MlSdU6vnFZe6zQjt+VUGvnJKSlm++KlAb9b2WjaqWH/zxuAHESxD7TFpEaN/F9QemjRPbpxzmeACs4eStLvMP24SuSSj8jXsH0v11UyKwJMS/kTsT1YdjHhX/jz6vUvlFgDnIhrr+OqfQn8fxyuKPC8WcQ5qaZKCU2DZtUrC3mAw6+v3mvUtiB0rEePC6JfFOxRzDfMc+97Q3AgaXMmo3Kq/dOCuzYJ//UjM+1UVjU/BrA00c0IahK4ekjIr2kxeJxtXcfKnPiUxQFIy4SZeFfmM9dLB+tIPQUrDp/1G8skqqQHKt35vvhY06/ojk2EkYTMiTG+F28t5bG7OH+5aZpL3xVtWzNzFupVAOImC94v0N1qIaXiHP9Uh0ji40FzRerhDyivspST84S9IaKvyOsX7enJjUxzUZbCNb1g5mv73nYbVbuTkzQ== 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:(13230001)(4636009)(46966006)(36840700001)(40470700004)(6286002)(82310400004)(186003)(16526019)(70206006)(70586007)(4326008)(26005)(8676002)(1076003)(36860700001)(86362001)(7696005)(8936002)(107886003)(6666004)(5660300002)(40460700003)(2616005)(83380400001)(47076005)(6916009)(336012)(54906003)(426003)(81166007)(356005)(55016003)(36756003)(2906002)(508600001)(316002)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Feb 2022 08:57:26.5438 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 44c1313a-1789-4f4e-0981-08d9ef980621 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: DM6NAM11FT008.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR12MB1553 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 The hardware since ConnectX-7 supports waiting on specified moment of time with new introduced wait descriptor. A timestamp can be directrly placed into descriptor and pushed to sending queue. Once hardware encounter the wait descriptor the queue operation is suspended till specified moment of time. This patch update the Tx datapath to handle this new hardware wait capability. Signed-off-by: Viacheslav Ovsiienko --- drivers/net/mlx5/linux/mlx5_verbs.c | 4 +- drivers/net/mlx5/mlx5_tx.h | 72 +++++++++++++++++++++++++---- drivers/net/mlx5/mlx5_txq.c | 7 ++- 3 files changed, 72 insertions(+), 11 deletions(-) diff --git a/drivers/net/mlx5/linux/mlx5_verbs.c b/drivers/net/mlx5/linux/mlx5_verbs.c index 80dd0bb6c1..5f821c4645 100644 --- a/drivers/net/mlx5/linux/mlx5_verbs.c +++ b/drivers/net/mlx5/linux/mlx5_verbs.c @@ -1037,7 +1037,9 @@ mlx5_txq_ibv_obj_new(struct rte_eth_dev *dev, uint16_t idx) txq_data->wqe_comp = 0; txq_data->wqe_thres = txq_data->wqe_s / MLX5_TX_COMP_THRESH_INLINE_DIV; txq_data->wait_on_time = !!(!priv->config.tx_pp && - priv->config.hca_attr.wait_on_time); + priv->config.hca_attr.wait_on_time && + txq_data->offloads & + DEV_TX_OFFLOAD_SEND_ON_TIMESTAMP); #ifdef HAVE_IBV_FLOW_DV_SUPPORT /* * If using DevX need to query and store TIS transport domain value. diff --git a/drivers/net/mlx5/mlx5_tx.h b/drivers/net/mlx5/mlx5_tx.h index b50deb8b67..0adc3f4839 100644 --- a/drivers/net/mlx5/mlx5_tx.h +++ b/drivers/net/mlx5/mlx5_tx.h @@ -780,7 +780,7 @@ mlx5_tx_cseg_init(struct mlx5_txq_data *__rte_restrict txq, * compile time and may be used for optimization. */ static __rte_always_inline void -mlx5_tx_wseg_init(struct mlx5_txq_data *restrict txq, +mlx5_tx_qseg_init(struct mlx5_txq_data *restrict txq, struct mlx5_txq_local *restrict loc __rte_unused, struct mlx5_wqe *restrict wqe, unsigned int wci, @@ -795,6 +795,43 @@ mlx5_tx_wseg_init(struct mlx5_txq_data *restrict txq, qs->reserved1 = RTE_BE32(0); } +/** + * Build the Wait on Time Segment with specified timestamp value. + * + * @param txq + * Pointer to TX queue structure. + * @param loc + * Pointer to burst routine local context. + * @param wqe + * Pointer to WQE to fill with built Control Segment. + * @param ts + * Timesatmp value to wait. + * @param olx + * Configured Tx offloads mask. It is fully defined at + * compile time and may be used for optimization. + */ +static __rte_always_inline void +mlx5_tx_wseg_init(struct mlx5_txq_data *restrict txq, + struct mlx5_txq_local *restrict loc __rte_unused, + struct mlx5_wqe *restrict wqe, + uint64_t ts, + unsigned int olx __rte_unused) +{ + struct mlx5_wqe_wseg *ws; + + ws = RTE_PTR_ADD(wqe, MLX5_WSEG_SIZE); + ws->operation = rte_cpu_to_be_32(MLX5_WAIT_COND_CYCLIC_BIGGER); + ws->lkey = RTE_BE32(0); + ws->va_high = RTE_BE32(0); + ws->va_low = RTE_BE32(0); + if (txq->rt_timestamp) { + ts = ts % (uint64_t)NS_PER_S + | (ts / (uint64_t)NS_PER_S) << 32; + } + ws->value = rte_cpu_to_be_64(ts); + ws->mask = txq->rt_timemask; +} + /** * Build the Ethernet Segment without inlined data. * Supports Software Parser, Checksums and VLAN insertion Tx offload features. @@ -1626,9 +1663,9 @@ mlx5_tx_schedule_send(struct mlx5_txq_data *restrict txq, { if (MLX5_TXOFF_CONFIG(TXPP) && loc->mbuf->ol_flags & txq->ts_mask) { + struct mlx5_dev_ctx_shared *sh; struct mlx5_wqe *wqe; uint64_t ts; - int32_t wci; /* * Estimate the required space quickly and roughly. @@ -1640,13 +1677,32 @@ mlx5_tx_schedule_send(struct mlx5_txq_data *restrict txq, return MLX5_TXCMP_CODE_EXIT; /* Convert the timestamp into completion to wait. */ ts = *RTE_MBUF_DYNFIELD(loc->mbuf, txq->ts_offset, uint64_t *); - wci = mlx5_txpp_convert_tx_ts(txq->sh, ts); - if (unlikely(wci < 0)) - return MLX5_TXCMP_CODE_SINGLE; - /* Build the WAIT WQE with specified completion. */ wqe = txq->wqes + (txq->wqe_ci & txq->wqe_m); - mlx5_tx_cseg_init(txq, loc, wqe, 2, MLX5_OPCODE_WAIT, olx); - mlx5_tx_wseg_init(txq, loc, wqe, wci, olx); + sh = txq->sh; + if (txq->wait_on_time) { + /* The wait on time capability should be used. */ + ts -= sh->txpp.skew; + mlx5_tx_cseg_init(txq, loc, wqe, + 1 + sizeof(struct mlx5_wqe_wseg) / + MLX5_WSEG_SIZE, + MLX5_OPCODE_WAIT | + MLX5_OPC_MOD_WAIT_TIME << 24, olx); + mlx5_tx_wseg_init(txq, loc, wqe, ts, olx); + } else { + /* Legacy cross-channel operation should be used. */ + int32_t wci; + + wci = mlx5_txpp_convert_tx_ts(sh, ts); + if (unlikely(wci < 0)) + return MLX5_TXCMP_CODE_SINGLE; + /* Build the WAIT WQE with specified completion. */ + mlx5_tx_cseg_init(txq, loc, wqe, + 1 + sizeof(struct mlx5_wqe_qseg) / + MLX5_WSEG_SIZE, + MLX5_OPCODE_WAIT | + MLX5_OPC_MOD_WAIT_CQ_PI << 24, olx); + mlx5_tx_qseg_init(txq, loc, wqe, wci, olx); + } ++txq->wqe_ci; --loc->wqe_free; return MLX5_TXCMP_CODE_MULTI; diff --git a/drivers/net/mlx5/mlx5_txq.c b/drivers/net/mlx5/mlx5_txq.c index 3585546628..90b71e380f 100644 --- a/drivers/net/mlx5/mlx5_txq.c +++ b/drivers/net/mlx5/mlx5_txq.c @@ -1302,7 +1302,8 @@ mlx5_txq_dynf_timestamp_set(struct rte_eth_dev *dev) (RTE_MBUF_DYNFLAG_TX_TIMESTAMP_NAME, NULL); off = rte_mbuf_dynfield_lookup (RTE_MBUF_DYNFIELD_TIMESTAMP_NAME, NULL); - if (nbit >= 0 && off >= 0 && sh->txpp.refcnt) + if (nbit >= 0 && off >= 0 && + (sh->txpp.refcnt || priv->config.hca_attr.wait_on_time)) mask = 1ULL << nbit; for (i = 0; i != priv->txqs_n; ++i) { data = (*priv->txqs)[i]; @@ -1312,6 +1313,8 @@ mlx5_txq_dynf_timestamp_set(struct rte_eth_dev *dev) data->ts_mask = mask; data->ts_offset = off; data->rt_timestamp = priv->config.rt_timestamp; - data->rt_timemask = ts_mask; + data->rt_timemask = (data->offloads & + RTE_ETH_TX_OFFLOAD_SEND_ON_TIMESTAMP) ? + ts_mask : 0; } } From patchwork Mon Feb 14 08:56:55 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Slava Ovsiienko X-Patchwork-Id: 107417 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 6EA11A00C4; Mon, 14 Feb 2022 09:57:46 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 0DA4A410F6; Mon, 14 Feb 2022 09:57:35 +0100 (CET) Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2063.outbound.protection.outlook.com [40.107.236.63]) by mails.dpdk.org (Postfix) with ESMTP id 9AA3B4114E for ; Mon, 14 Feb 2022 09:57:33 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CzUF6HVOuFkQq06M3mUD6FlzLMTDsSZGxvoHuMHhyQjdfVzz2H2N0USgLvJCZdRbYL7AhaqWrOzIYBYpsp38F5PARDinCmwap4d46fXz4/2muKbcp0I18HSwqYdf53JI5OWOL0ny7J6jepANDtXuygYpuKrPWrZ1dKIsNqhcBlaAr+ARo30sgzqlEoDPRoKxJgANMWam9Vu1kDrLoKXXneBPfnQxHjGMCtjk4j+AjSzaoUiflxn2LF2/XNkvsKAlt++rJLz/YeCbOWRHQwcMsXZXjle7FPj8Q9FTfPoTwoD5hWstmu4IsVf/Hxo4R4eYEeqgte0POWEChCEFQH5ckA== 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=8u/+v1aVPxi7H/J9MPCm/zj83+hKWfac9SZT82torLg=; b=eupmTyG/eMqgTy6C2xYJ0CfOhQ7jxVXrcKXGyNm6f2v9f5QQspm6Ngty0OysM1hZfIBV20iMSgBAnc0sP97hLyypxUxIrxHhDb0VgRbxspg7LurPDLNE/OQsIPSbnNDr+8myDYpwbcbxyty4OnkfcXrfw5Ez2zBIEDf6ix9S3bUoNKmQqMZw08a3G7ulLWSmLnVQvuDEujVvx5kUNCVYPPhoGpxHx+6OBzML3a2W5GXd52FpLlDfqP4pUYWWh7tKzhYdDq2gdnnqwdOE+O3ycDvgk6g/34lzvl1HUxx2hbZxEfG4K6f8w6TYAsPni61fqdgmZmpCtKIMzgbFZ8lvhg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 12.22.5.235) smtp.rcpttodomain=dpdk.org 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=8u/+v1aVPxi7H/J9MPCm/zj83+hKWfac9SZT82torLg=; b=X/rhmk8gOvtET6ADJm/j0yEq3RHfYhKIDJfqrd7+WcFXYvj9t6itnwCDymaVhk+XR+unlsaWKxPpXVCiczRtyq+MeIp8QGOm5gSSDAvU52CHgZdLs4iPNo8TMiHiG8R0LXu1WGV9vqVFQCVgf163C8KuwHqF4gBcbBSVpGf3wS746fHVcZ8EGAM1HsoP71GZZFYIV23nB9i32Xct8yhlXdECXSlCtEqfKe85ufTcGScDFvYAezuaKANhbzPFG+HFRELA2PnUwORvORIEpK9Z/3pYWtxxyAJhGm3yqxKdk9w27ZAkbaOoa27d0c54XdETJC4k+tWo/lLI2wSKUlu6DA== Received: from BN9P220CA0022.NAMP220.PROD.OUTLOOK.COM (2603:10b6:408:13e::27) by MWHPR12MB1246.namprd12.prod.outlook.com (2603:10b6:300:f::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4975.11; Mon, 14 Feb 2022 08:57:32 +0000 Received: from BN8NAM11FT053.eop-nam11.prod.protection.outlook.com (2603:10b6:408:13e:cafe::20) by BN9P220CA0022.outlook.office365.com (2603:10b6:408:13e::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4975.11 via Frontend Transport; Mon, 14 Feb 2022 08:57:31 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 12.22.5.235) 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.235 as permitted sender) receiver=protection.outlook.com; client-ip=12.22.5.235; helo=mail.nvidia.com; Received: from mail.nvidia.com (12.22.5.235) by BN8NAM11FT053.mail.protection.outlook.com (10.13.177.209) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.4975.11 via Frontend Transport; Mon, 14 Feb 2022 08:57:29 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by DRHQMAIL107.nvidia.com (10.27.9.16) with Microsoft SMTP Server (TLS) id 15.0.1497.18; Mon, 14 Feb 2022 08:57:27 +0000 Received: from nvidia.com (10.126.231.35) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.9; Mon, 14 Feb 2022 00:57:25 -0800 From: Viacheslav Ovsiienko To: CC: , Subject: [PATCH 4/4] doc: update send scheduling mlx5 feature description Date: Mon, 14 Feb 2022 10:56:55 +0200 Message-ID: <20220214085655.22648-5-viacheslavo@nvidia.com> X-Mailer: git-send-email 2.18.1 In-Reply-To: <20220214085655.22648-1-viacheslavo@nvidia.com> References: <20220214085655.22648-1-viacheslavo@nvidia.com> MIME-Version: 1.0 X-Originating-IP: [10.126.231.35] X-ClientProxiedBy: rnnvmail203.nvidia.com (10.129.68.9) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 8f14416b-494c-4f2d-ccfe-08d9ef9808bc X-MS-TrafficTypeDiagnostic: MWHPR12MB1246:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:6790; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: DstRcmS7eEv1tO840hXiOqrar7tLa0kNZGpMx22Q8g1ExXoNapqbDiseOnHkkUcfAeeP+JgWadLLcc9gn6YDfOOLcQMPHkV+n6QLpCUWEuAu1qCuqz5irBDovWgrcOfeFFLrGncXwdY8XTBVTzT1hEaT9NjFzfLYB5ynk813Lm1yf/40rEp5aWFXWrkesjQj9USltKQ2Nuw9setRHmttHN/mPF88CCPqZXLAW8O1j+suxcoQxWH6lsAM4o2X+Nf9p42IJsF4hFptrisvYeHEpK+QfWPdlG2DLBl7G2++Rph4UqoG8jiReqFHehyNI+gegmeHvRK5rlwCvTgpNabZknZG8Li+XF5ueacMlpXXO0LNOg9VDMn+395Gg+U/V+HH5bR6Tnq12JUFH/Q4osyaj/lhsyj2uxp7LiKhlUJfBeiDbeRIKtdqEQdWe3z6pSVoN9X+8T5vDTo1OsrRfhEk6I3uKTTlJG2aN5Q6taATAD49pgJlLhTzt1BKY2OPLdYDwqrX5R0G7jPkhZSYqW+9aRytgWSkQM5mxqekDbah6sPxVy4jyi0IRXNgGGz3GHdb6kl5+vEgK6QwdGgVkm75BdnGKs7VD8DmNOxGrnal97H3c1jgwuwjx8qX3+tQATQ6c8h5uPsxQIIzXdfHvoIpwptP2GcCjylhi5DhKZeVxrIl9oKGv2QjzPLdKltdbYhCBY4P5zb/9AwJtF5nn06r6A== X-Forefront-Antispam-Report: CIP:12.22.5.235; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:mail.nvidia.com; PTR:InfoNoRecords; CAT:NONE; SFS:(13230001)(4636009)(46966006)(36840700001)(40470700004)(55016003)(15650500001)(5660300002)(356005)(47076005)(107886003)(36860700001)(8676002)(81166007)(54906003)(6916009)(316002)(83380400001)(2906002)(82310400004)(36756003)(8936002)(508600001)(7696005)(70586007)(86362001)(40460700003)(336012)(426003)(26005)(16526019)(1076003)(186003)(6666004)(6286002)(2616005)(4326008)(70206006)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Feb 2022 08:57:29.8576 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 8f14416b-494c-4f2d-ccfe-08d9ef9808bc 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.235]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT053.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR12MB1246 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 Updated: - send scheduling feature description for mlx5 - release notes Signed-off-by: Viacheslav Ovsiienko --- doc/guides/nics/mlx5.rst | 5 +++++ doc/guides/rel_notes/release_22_03.rst | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/doc/guides/nics/mlx5.rst b/doc/guides/nics/mlx5.rst index c3cc0c0f41..6494f4ae39 100644 --- a/doc/guides/nics/mlx5.rst +++ b/doc/guides/nics/mlx5.rst @@ -934,6 +934,11 @@ Driver options By default (if the ``tx_pp`` is not specified) send scheduling on timestamps feature is disabled. + Starting since ConnectX-7 the capability to schedule traffic directly + on timestamp specified in descriptor is provided, no extra objects are + needed anymore and scheduling capability is advertised and handled + regardless tx_pp parameter presence. + - ``tx_skew`` parameter [int] The parameter adjusts the send packet scheduling on timestamps and represents diff --git a/doc/guides/rel_notes/release_22_03.rst b/doc/guides/rel_notes/release_22_03.rst index ff3095d742..268f2827e2 100644 --- a/doc/guides/rel_notes/release_22_03.rst +++ b/doc/guides/rel_notes/release_22_03.rst @@ -109,6 +109,12 @@ New Features * Added rte_flow support for matching GENEVE packets. * Added rte_flow support for matching eCPRI packets. +* **Updated Mellanox mlx5 driver.** + + Updated the Mellanox mlx5 driver with new features and improvements, including: + + * Support ConnectX-7 capability to schedule traffic sending on timestamp + * **Updated Wangxun ngbe driver.** * Added support for devices of custom PHY interfaces.