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 09411A0C41; Wed, 17 Nov 2021 10:51:30 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 9FA3340687; Wed, 17 Nov 2021 10:51:30 +0100 (CET) Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2057.outbound.protection.outlook.com [40.107.223.57]) by mails.dpdk.org (Postfix) with ESMTP id 5F47440040; Wed, 17 Nov 2021 10:51:28 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lLShceOjGO2G2TQiQufMevpdwWkWucLJv8TjmzAcLmTTBal0Qs2WsbJC1KOSZkt4OLYyImy/3libTHVp0CMj7lbCxIL3aSwMmMABu79FrzNWxKHEfHz0+b3QYknf26RA0XKAIRohVptFRzcNEJUaq3OBkO8nB/rofcbyeLI1qWczhk85BoQ4/7KhQArtfL5/YhZgDBjFW5TWrNpl7X4iyj13X2wcRva9+6JBd8a++Fy+b0zEi6JxoAyzux1kXnn1YTzSpkaa3HZ79CTVHHuPiZBhmSKXBOPJtNW+X9gPzqh5HBb7rBrsXaWmiPFLilylfyxh+DxfrkbvxVVxm62o8Q== 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=JcVIfUMY0wsSw0eXMSCFC9DsEiUgNs/PDFqVsrW0kfo=; b=Blm2u0k4IU+l9B5/zbeXYcmGa5cyijQZJZCE1Mg6x9Y8xDO3cJ1Hm3rzi921sp+FNuSdw2lDz5MHrkn6EQDb516Iswq1ecpiG3LPzXYWFjqzDg07m4SJeob9nCtsUQRjy/u4HEoJKSmHvsIabcEB/8NI/+vWMGril22zeO4fQ6AWNo29bFtCrsD027Th32W3PCjCkduJatXNra3hvAGx5BybKe0oY9vuun7+Wm7e1CPesEg8OJsyJ/UVFUTBx6VMehcvTK7/o30vn/LG1Lz0OL/mqYuW7sIlvX9C/+TLi4dW70DmYzf+GMugQbbsEQx0geDEa5DgVSbD2OlPF9wEAw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.112.34) smtp.rcpttodomain=dpdk.org smtp.mailfrom=nvidia.com; dmarc=pass (p=quarantine sp=quarantine 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=JcVIfUMY0wsSw0eXMSCFC9DsEiUgNs/PDFqVsrW0kfo=; b=kqP84QOelAZaJItUN0Z9raB3vvrQEZB6/x7UZtGqQDxSDaD2hQE3veDP2RhO4LfCmN3zDHMH5vp4ZK5OYPjyyo0YKl2I7pPq/nOioCl+606yC82l/G9K6IZ082R6oSVWtoeFtwso7uLH2MzjFEXvonQwCidLrp3QLP6t6WzkMtIN4h3UfDRtTn/3q7Hexs/6nJjk1f0hbP1d3to5RXQ8/tAVJgb0Lv5fsKd7pdQJh4F0MarEQpGYNPCQIUyDwVJoLObWy+f6geFx1rmSZyy3c+qYUadM3QaoQnNXC+Wo6R9nIi1WHToIMwNqAyb/rhOzHjM/XZkUzYJeQdkmfiueuA== Received: from BN6PR12CA0047.namprd12.prod.outlook.com (2603:10b6:405:70::33) by DM6PR12MB3929.namprd12.prod.outlook.com (2603:10b6:5:148::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4690.25; Wed, 17 Nov 2021 09:51:27 +0000 Received: from BN8NAM11FT015.eop-nam11.prod.protection.outlook.com (2603:10b6:405:70:cafe::2a) by BN6PR12CA0047.outlook.office365.com (2603:10b6:405:70::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4690.27 via Frontend Transport; Wed, 17 Nov 2021 09:51:26 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.112.34) 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 216.228.112.34 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.112.34; helo=mail.nvidia.com; Received: from mail.nvidia.com (216.228.112.34) by BN8NAM11FT015.mail.protection.outlook.com (10.13.176.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.4690.15 via Frontend Transport; Wed, 17 Nov 2021 09:51:23 +0000 Received: from nvidia.com (172.20.187.5) by HQMAIL107.nvidia.com (172.20.187.13) with Microsoft SMTP Server (TLS) id 15.0.1497.18; Wed, 17 Nov 2021 09:51:20 +0000 From: Dariusz Sosnowski To: Matan Azrad , Viacheslav Ovsiienko CC: , Subject: [PATCH] net/mlx5: fix partial inline of fine grain packets Date: Wed, 17 Nov 2021 11:50:50 +0200 Message-ID: <20211117095050.74177-1-dsosnowski@nvidia.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Originating-IP: [172.20.187.5] X-ClientProxiedBy: HQMAIL105.nvidia.com (172.20.187.12) To HQMAIL107.nvidia.com (172.20.187.13) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 0ec7a1e8-283f-40b2-40cf-08d9a9afd122 X-MS-TrafficTypeDiagnostic: DM6PR12MB3929: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:8273; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: hwd2xB/o7yYOlDFi6ZG2g/IeWKjDR9RMUjj1ofZzWm7Jf8t67LG3rxmZiVVxyI4wXiwrQOLNhuxyvn7t8TxF796SLf4J5278e9FNykXXsB2dUSOpFpeSdrabYR+FMFFOpehkuzWEgJSSriPjMqQcrTMIIdq0PwNrdCJlOJD1mX4SjS0gvtWSDdcDhh+5dhT55CWIhews6Ce1Tpcig7Kg8ZAiq1gLfmGHiMM917BPKkNZOJS3nJfzga0zBtmp9ZPUP2o0hG7KOpR0zrt9+QpogoqCng3NvU68GI71Uqiy2J2LoyOaN+BCRZJaektgIt7s8agGijUVSZA1qoRyg2jiC9yNDEM5+M4HATzUdQZfDtkUskAZJ5wVNcHgSf2TLX7aR6aKVR0y7C0vJcF45ehwUOL+sp02kZ99w7w23LuPHxeAHQCm5C0P7o0KKbCaBwN2r0Vt+SvB6dMgCiwsxPv+/DSW2jD0ELZkNxlCRWX7ttJ9kMJOl73aHyyGPidz2kKeg7d1RxRYkWRVJLGEitBxiXZJOGiLZqvDLy8Aknadd3KUPqgSdCBkPksqOK+hhfV8dM/Hkx3SEBq2fhEnNoMGEwFWXIxnNyYoqGx28hLUyrgARKOmy8fzKZoY54ec23k/qoNVx4agltTcIoO09aav7T4Q0UR1c7FBLBfjXA7KDIzIaJQl0KAAILMwcoFFl0XQh4Psy6G8HpEQvlQ+Qm3xLg== X-Forefront-Antispam-Report: CIP:216.228.112.34; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:schybrid03.nvidia.com; CAT:NONE; SFS:(4636009)(46966006)(36840700001)(55016002)(316002)(2906002)(16526019)(186003)(1076003)(26005)(2616005)(6286002)(110136005)(70586007)(83380400001)(426003)(70206006)(36860700001)(7696005)(508600001)(86362001)(6666004)(4326008)(54906003)(450100002)(47076005)(6636002)(8676002)(356005)(82310400003)(7636003)(336012)(5660300002)(8936002)(36756003); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Nov 2021 09:51:23.7822 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0ec7a1e8-283f-40b2-40cf-08d9a9afd122 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.112.34]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT015.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB3929 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 Assuming a user tried to send multi-segment packets, with RTE_PMD_MLX5_FINE_GRANULARITY_INLINE flag set, using a device with minimum inlining requirements (such as ConnectX-4 Lx or when user specified them explicitly), sending such packets caused segfault. Segfault was caused by failed invariants in mlx5_tx_packet_multi_inline function. This patch introduces a logic for multi-segment packets, with RTE_PMD_MLX5_FINE_GRANULARITY_INLINE flag set, to omit mbuf scanning for filling inline buffer and inline only minimal amount of data required. Fixes: ec837ad0fc7c ("net/mlx5: fix multi-segment inline for the first segments") Cc: viacheslavo@nvidia.com Cc: stable@dpdk.org Signed-off-by: Dariusz Sosnowski Acked-by: Viacheslav Ovsiienko --- drivers/net/mlx5/mlx5_tx.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/net/mlx5/mlx5_tx.h b/drivers/net/mlx5/mlx5_tx.h index ad13b5e608..bc629983fa 100644 --- a/drivers/net/mlx5/mlx5_tx.h +++ b/drivers/net/mlx5/mlx5_tx.h @@ -1933,7 +1933,7 @@ mlx5_tx_packet_multi_inline(struct mlx5_txq_data *__rte_restrict txq, MLX5_ASSERT(txq->inlen_mode >= MLX5_ESEG_MIN_INLINE_SIZE); MLX5_ASSERT(txq->inlen_mode <= txq->inlen_send); - inlen = txq->inlen_mode; + inlen = RTE_MIN(txq->inlen_mode, inlen); } else if (vlan && !txq->vlan_en) { /* * VLAN insertion is requested and hardware does not @@ -1946,6 +1946,8 @@ mlx5_tx_packet_multi_inline(struct mlx5_txq_data *__rte_restrict txq, } else { goto do_first; } + if (mbuf->ol_flags & RTE_MBUF_F_TX_DYNF_NOINLINE) + goto do_build; /* * Now we know the minimal amount of data is requested * to inline. Check whether we should inline the buffers @@ -1978,6 +1980,8 @@ mlx5_tx_packet_multi_inline(struct mlx5_txq_data *__rte_restrict txq, mbuf = NEXT(mbuf); /* There should be not end of packet. */ MLX5_ASSERT(mbuf); + if (mbuf->ol_flags & RTE_MBUF_F_TX_DYNF_NOINLINE) + break; nxlen = inlen + rte_pktmbuf_data_len(mbuf); } while (unlikely(nxlen < txq->inlen_send)); } @@ -2005,6 +2009,7 @@ mlx5_tx_packet_multi_inline(struct mlx5_txq_data *__rte_restrict txq, * Estimate the number of Data Segments conservatively, * supposing no any mbufs is being freed during inlining. */ +do_build: MLX5_ASSERT(inlen <= txq->inlen_send); ds = NB_SEGS(loc->mbuf) + 2 + (inlen - MLX5_ESEG_MIN_INLINE_SIZE + -- 2.25.1