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 324F745CE3 for ; Mon, 11 Nov 2024 07:40:53 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 275DF4067A; Mon, 11 Nov 2024 07:40:53 +0100 (CET) Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2060.outbound.protection.outlook.com [40.107.243.60]) by mails.dpdk.org (Postfix) with ESMTP id 8D7B540E15 for ; Mon, 11 Nov 2024 07:40:51 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=tJL5q9Ad7cu2DAJZcSeYtRUpeXeg23CrQCYbFME3a+OCcD3OfQIsbJpnrbI/x0jiner6zZS9B69iEm5U/cGLe6PV50n4BEMCJ95pHHiHva1rsDjXCQTEvx0ReTnlfe/4p60UCdWxUudFa7Q1FyZ1OHTd50apzk0wfLLxEcg7QkDhgZLlOGqP7ei9ky4843tvwzIK2Snef4kVFPFKbilJLsXVVOd2Js5VeA4UWwqtrci8X4MiUu1CPyZOTntVY5qFOgKl/dj+rKge/fOeWKUH48m0pjEdjvRzsaMU1MQ1pLcnl7QaBgYz8rev0VkaakNOV9pXDGprsesxdDuML31kuw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=O+FBKBnDSDtVKXRPPhXJXqmMa21oPsQEOsoAuC7Be9A=; b=SAyK9JxmQg8YV0C6vEjDni/upAgL2l7m1FV7jwOFxA75oTwTepKOzYsQGTSn4h2ZPzS9ILksLmzsreQsc5a7KKiPZXasHG7tUuSh9zKWqdF0UqxtXZB3Srb9mxjARnX6VFG07hVIW7Zng0yBbMVnK+bkp7RP3la4lMQv4fLwlaHzrdldvGTSFXJAYR2LClZ20TIACtKvvgI7Yi2hTyy76pirqcIOxKOioOuDAwTu+Fn5ymgjYenLZzKTQHLGUFdEcoPbqw75rZC/JXuPgsRf3scco/BPRnwULbJ0sOdSFJtlHZ505RQVGVDNrBFxEghUOZAZer9ULWgiDy6rE9/nZQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) 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 (0) 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=O+FBKBnDSDtVKXRPPhXJXqmMa21oPsQEOsoAuC7Be9A=; b=aubkKG1FwQ9RW1NOAJ15IdjBBtSo0OJCBH68W7kTY0Gq4uIQxRGo3TWMMVPdFoZHSAoZyk3OyKaTgJCjUtk+CRuK9+WFuFoItrTb5SKDsmLPeMD8uIFNqsEPaOPgu8J0KfUrcvY0Ozk0hqw/xElLOZKws/rT5vnvnkhSedDBawxhWIGtptLev4ckC8f9Q7fIMQJ34Z7TfPSI0VShD+rzAYFJR/3CnWfDK2EQ8XdZZYUrsUrZL3l8ZKWr7QrpazdeX5XVcBOMnZNZRake03z8L95fW3wkHTWWOvQ85UfSgP7dEKo1s5KQaqH4i9CelRv5pbnapAP2jF4bAv3NDTUVMA== Received: from SA0PR11CA0083.namprd11.prod.outlook.com (2603:10b6:806:d2::28) by BN5PR12MB9488.namprd12.prod.outlook.com (2603:10b6:408:2a9::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8137.26; Mon, 11 Nov 2024 06:40:48 +0000 Received: from SN1PEPF00026368.namprd02.prod.outlook.com (2603:10b6:806:d2:cafe::53) by SA0PR11CA0083.outlook.office365.com (2603:10b6:806:d2::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8137.28 via Frontend Transport; Mon, 11 Nov 2024 06:40:47 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) 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.117.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.161) by SN1PEPF00026368.mail.protection.outlook.com (10.167.241.133) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8158.14 via Frontend Transport; Mon, 11 Nov 2024 06:40:45 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Sun, 10 Nov 2024 22:40:31 -0800 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.1544.4; Sun, 10 Nov 2024 22:40:29 -0800 From: Xueming Li To: Viacheslav Ovsiienko CC: , Dariusz Sosnowski , "dpdk stable" Subject: patch 'net/mlx5: fix flex item header length field translation' has been queued to stable release 23.11.3 Date: Mon, 11 Nov 2024 14:28:38 +0800 Message-ID: <20241111062847.216344-113-xuemingl@nvidia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20241111062847.216344-1-xuemingl@nvidia.com> References: <20241111062847.216344-1-xuemingl@nvidia.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Originating-IP: [10.126.231.35] X-ClientProxiedBy: rnnvmail202.nvidia.com (10.129.68.7) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN1PEPF00026368:EE_|BN5PR12MB9488:EE_ X-MS-Office365-Filtering-Correlation-Id: 9b17b318-c662-411d-a2a4-08dd021bc5aa X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|36860700013|82310400026|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?R2ckEkDxlJWJccmv+5h8jGbV7bTRjVYleUVAmf/kKrJayv8qTxfwIPoeloRK?= =?us-ascii?Q?5aS1P7d4axgryVKuK/cX1JxePwEtBMDVpDxfjMGWWUkz4T7G/vTzwXbqH49P?= =?us-ascii?Q?RnNhJe0pD49OEMDD1yyuNXWZ8/liuxtSRgkWjdPscyN+OL4NjdiazTPde54X?= =?us-ascii?Q?urNl6XMVxXRXntrl4y1rAmPvqBXmGaWZI58eja+giJOm1wLLzjLRm/o6Xgdz?= =?us-ascii?Q?06Z3zaIbOjTVWbtIlYMPVd31lpWeXxYMtRgRYUknkmQxN9m/9wA0nlJNBqLj?= =?us-ascii?Q?9amFmk8VCucsav2+AYwGgKPGfMAQHzgKqcA2r04PKbo3wL58H+nu5WJa0iS1?= =?us-ascii?Q?+IWn9TRpG+Oad+V6K8Z3yU0jS5nDFTTZonT9y0r9OWiifmp0BNWs7kPjbQ2S?= =?us-ascii?Q?BW92+CTrb6x5MZ7VGa+IHC3x3kTDHnrcp7JNfGX/OY163v8K7yCNaLsx0YkM?= =?us-ascii?Q?Qb57xSgKf6r2A1AiiyQ5McGXNQ0LXp28pZW40sfsbQ0KLuZR005NhockYCnE?= =?us-ascii?Q?0BZGPIxcy3QQ0mJPEGL8FzNDkXTza+hmZgDXZesC7spN3wFg2jKkcJ7b/sNq?= =?us-ascii?Q?ygOXDQK+CrzStkj8USARCAL5MDhrFN5CI97frGX49cD4XJ5HiCrKMuCtOImw?= =?us-ascii?Q?yPjwWyV/wladeBoC2JXcxkwarlLHfFz32p5g7Ftq5bB0JGBghqZ3Lmn1IUkX?= =?us-ascii?Q?kpBuNqAFJ0qnCQAcAcc635cbNCAphHrUEJcslEolniVXfvc0/7i2cgXcBTpq?= =?us-ascii?Q?yHYcH1jgbQypHmCSxTaIKqRqh4rnAWNsTjl/DxkeebKRZTJGCu/PbtSRDCNu?= =?us-ascii?Q?PnP8eg0RPXZ+voiz3MUL0PdJIhHMhPpDeLNWQUL4mt9RY9LODH+gGfPL1B6R?= =?us-ascii?Q?aO660sr8+BipxOYV0zjUXpD6cgWwdSQ1PUJcdFTwR5d8sYifkhifoP1wQALd?= =?us-ascii?Q?pXhh7w/X0AbTyblO2qjhermgZyh/uR8pt6usI3L6+awGZXYVPyk5mr/ghOos?= =?us-ascii?Q?Wz5iUe5C6BbY4XIEevMi4zVDSa70iCoXvmaxqlKamOztwwNy5v1X/e26c3K8?= =?us-ascii?Q?neFljdAUFqRLA4ZpSAMyOV88Qc3pHew4t9Ej1gHrVmoWctXw87gGsrkJj/kl?= =?us-ascii?Q?F5dx3IPRrxgFPgPP99G1FjDeb8Agj3MONCE66vk4LOzaDeakZP08FmQFj54y?= =?us-ascii?Q?OUiOBeXj/K/jW9b+QhPQQpEVAktixUOcBAeGYcE9TE8ttXtyLOdDf9Ibwr4r?= =?us-ascii?Q?e2MscvQsjdwiPjg7Jo7KYZeX3edFQOzaht9VCZAjlaw5/bxqMJNNoAlJShrX?= =?us-ascii?Q?pjBrEWp327oear5+CTBC6/tv1UooIUxzUekKf8w3+fynJ46GQTZUMA65RkBT?= =?us-ascii?Q?6qeqiJe224JvokBhlxDuga3AO4819mXgv+Ayl90jLshgCZbH1A=3D=3D?= X-Forefront-Antispam-Report: CIP:216.228.117.161; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge2.nvidia.com; CAT:NONE; SFS:(13230040)(376014)(36860700013)(82310400026)(1800799024); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Nov 2024 06:40:45.8739 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9b17b318-c662-411d-a2a4-08dd021bc5aa X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.117.161]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: SN1PEPF00026368.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN5PR12MB9488 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Hi, FYI, your patch has been queued to stable release 23.11.3 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 11/30/24. So please shout if anyone has objections. Also note that after the patch there's a diff of the upstream commit vs the patch applied to the branch. This will indicate if there was any rebasing needed to apply to the stable branch. If there were code changes for rebasing (ie: not only metadata diffs), please double check that the rebase was correctly done. Queued patches are on a temporary branch at: https://git.dpdk.org/dpdk-stable/log/?h=23.11-staging This queued commit can be viewed at: https://git.dpdk.org/dpdk-stable/commit/?h=23.11-staging&id=ab563e0a3ea36bdd4139714eafd59129619d88d8 Thanks. Xueming Li --- >From ab563e0a3ea36bdd4139714eafd59129619d88d8 Mon Sep 17 00:00:00 2001 From: Viacheslav Ovsiienko Date: Wed, 18 Sep 2024 16:46:23 +0300 Subject: [PATCH] net/mlx5: fix flex item header length field translation Cc: Xueming Li [ upstream commit b04b06f4cb3f3bdd24228f3ca2ec5b3a7b64308d ] There are hardware imposed limitations on the header length field description for the mask and shift combinations in the FIELD_MODE_OFFSET mode. The patch updates: - parameter check for FIELD_MODE_OFFSET for the header length field - check whether length field crosses dword boundaries in header - correct mask extension to the hardware required width 6-bits - correct adjusting the mask left margin offset, preventing dword offset Fixes: b293e8e49d78 ("net/mlx5: translate flex item configuration") Signed-off-by: Viacheslav Ovsiienko Acked-by: Dariusz Sosnowski --- drivers/net/mlx5/mlx5_flow_flex.c | 120 ++++++++++++++++-------------- 1 file changed, 66 insertions(+), 54 deletions(-) diff --git a/drivers/net/mlx5/mlx5_flow_flex.c b/drivers/net/mlx5/mlx5_flow_flex.c index c5dd323fa2..58d8c61443 100644 --- a/drivers/net/mlx5/mlx5_flow_flex.c +++ b/drivers/net/mlx5/mlx5_flow_flex.c @@ -449,12 +449,14 @@ mlx5_flex_release_index(struct rte_eth_dev *dev, * * shift mask * ------- --------------- - * 0 b111100 0x3C - * 1 b111110 0x3E - * 2 b111111 0x3F - * 3 b011111 0x1F - * 4 b001111 0x0F - * 5 b000111 0x07 + * 0 b11111100 0x3C + * 1 b01111110 0x3E + * 2 b00111111 0x3F + * 3 b00011111 0x1F + * 4 b00001111 0x0F + * 5 b00000111 0x07 + * 6 b00000011 0x03 + * 7 b00000001 0x01 */ static uint8_t mlx5_flex_hdr_len_mask(uint8_t shift, @@ -464,8 +466,7 @@ mlx5_flex_hdr_len_mask(uint8_t shift, int diff = shift - MLX5_PARSE_GRAPH_NODE_HDR_LEN_SHIFT_DWORD; base_mask = mlx5_hca_parse_graph_node_base_hdr_len_mask(attr); - return diff == 0 ? base_mask : - diff < 0 ? (base_mask << -diff) & base_mask : base_mask >> diff; + return diff < 0 ? base_mask << -diff : base_mask >> diff; } static int @@ -476,7 +477,6 @@ mlx5_flex_translate_length(struct mlx5_hca_flex_attr *attr, { const struct rte_flow_item_flex_field *field = &conf->next_header; struct mlx5_devx_graph_node_attr *node = &devx->devx_conf; - uint32_t len_width, mask; if (field->field_base % CHAR_BIT) return rte_flow_error_set @@ -504,7 +504,14 @@ mlx5_flex_translate_length(struct mlx5_hca_flex_attr *attr, "negative header length field base (FIXED)"); node->header_length_mode = MLX5_GRAPH_NODE_LEN_FIXED; break; - case FIELD_MODE_OFFSET: + case FIELD_MODE_OFFSET: { + uint32_t msb, lsb; + int32_t shift = field->offset_shift; + uint32_t offset = field->offset_base; + uint32_t mask = field->offset_mask; + uint32_t wmax = attr->header_length_mask_width + + MLX5_PARSE_GRAPH_NODE_HDR_LEN_SHIFT_DWORD; + if (!(attr->header_length_mode & RTE_BIT32(MLX5_GRAPH_NODE_LEN_FIELD))) return rte_flow_error_set @@ -514,47 +521,73 @@ mlx5_flex_translate_length(struct mlx5_hca_flex_attr *attr, return rte_flow_error_set (error, EINVAL, RTE_FLOW_ERROR_TYPE_ITEM, NULL, "field size is a must for offset mode"); - if (field->field_size + field->offset_base < attr->header_length_mask_width) + if ((offset ^ (field->field_size + offset)) >> 5) return rte_flow_error_set (error, EINVAL, RTE_FLOW_ERROR_TYPE_ITEM, NULL, - "field size plus offset_base is too small"); - node->header_length_mode = MLX5_GRAPH_NODE_LEN_FIELD; - if (field->offset_mask == 0 || - !rte_is_power_of_2(field->offset_mask + 1)) + "field crosses the 32-bit word boundary"); + /* Hardware counts in dwords, all shifts done by offset within mask */ + if (shift < 0 || (uint32_t)shift >= wmax) + return rte_flow_error_set + (error, EINVAL, RTE_FLOW_ERROR_TYPE_ITEM, NULL, + "header length field shift exceeds limits (OFFSET)"); + if (!mask) + return rte_flow_error_set + (error, EINVAL, RTE_FLOW_ERROR_TYPE_ITEM, NULL, + "zero length field offset mask (OFFSET)"); + msb = rte_fls_u32(mask) - 1; + lsb = rte_bsf32(mask); + if (!rte_is_power_of_2((mask >> lsb) + 1)) return rte_flow_error_set (error, EINVAL, RTE_FLOW_ERROR_TYPE_ITEM, NULL, - "invalid length field offset mask (OFFSET)"); - len_width = rte_fls_u32(field->offset_mask); - if (len_width > attr->header_length_mask_width) + "length field offset mask not contiguous (OFFSET)"); + if (msb >= field->field_size) return rte_flow_error_set (error, EINVAL, RTE_FLOW_ERROR_TYPE_ITEM, NULL, - "length field offset mask too wide (OFFSET)"); - mask = mlx5_flex_hdr_len_mask(field->offset_shift, attr); - if (mask < field->offset_mask) + "length field offset mask exceeds field size (OFFSET)"); + if (msb >= wmax) return rte_flow_error_set (error, EINVAL, RTE_FLOW_ERROR_TYPE_ITEM, NULL, - "length field shift too big (OFFSET)"); - node->header_length_field_mask = RTE_MIN(mask, - field->offset_mask); + "length field offset mask exceeds supported width (OFFSET)"); + if (mask & ~mlx5_flex_hdr_len_mask(shift, attr)) + return rte_flow_error_set + (error, EINVAL, RTE_FLOW_ERROR_TYPE_ITEM, NULL, + "mask and shift combination not supported (OFFSET)"); + msb++; + offset += field->field_size - msb; + if (msb < attr->header_length_mask_width) { + if (attr->header_length_mask_width - msb > offset) + return rte_flow_error_set + (error, EINVAL, RTE_FLOW_ERROR_TYPE_ITEM, NULL, + "field size plus offset_base is too small"); + offset += msb; + /* + * Here we can move to preceding dword. Hardware does + * cyclic left shift so we should avoid this and stay + * at current dword offset. + */ + offset = (offset & ~0x1Fu) | + ((offset - attr->header_length_mask_width) & 0x1F); + } + node->header_length_mode = MLX5_GRAPH_NODE_LEN_FIELD; + node->header_length_field_mask = mask; + node->header_length_field_shift = shift; + node->header_length_field_offset = offset; break; + } case FIELD_MODE_BITMASK: if (!(attr->header_length_mode & RTE_BIT32(MLX5_GRAPH_NODE_LEN_BITMASK))) return rte_flow_error_set (error, EINVAL, RTE_FLOW_ERROR_TYPE_ITEM, NULL, "unsupported header length field mode (BITMASK)"); - if (attr->header_length_mask_width < field->field_size) + if (field->offset_shift > 15 || field->offset_shift < 0) return rte_flow_error_set (error, EINVAL, RTE_FLOW_ERROR_TYPE_ITEM, NULL, - "header length field width exceeds limit"); + "header length field shift exceeds limit (BITMASK)"); node->header_length_mode = MLX5_GRAPH_NODE_LEN_BITMASK; - mask = mlx5_flex_hdr_len_mask(field->offset_shift, attr); - if (mask < field->offset_mask) - return rte_flow_error_set - (error, EINVAL, RTE_FLOW_ERROR_TYPE_ITEM, NULL, - "length field shift too big (BITMASK)"); - node->header_length_field_mask = RTE_MIN(mask, - field->offset_mask); + node->header_length_field_mask = field->offset_mask; + node->header_length_field_shift = field->offset_shift; + node->header_length_field_offset = field->offset_base; break; default: return rte_flow_error_set @@ -567,27 +600,6 @@ mlx5_flex_translate_length(struct mlx5_hca_flex_attr *attr, (error, EINVAL, RTE_FLOW_ERROR_TYPE_ITEM, NULL, "header length field base exceeds limit"); node->header_length_base_value = field->field_base / CHAR_BIT; - if (field->field_mode == FIELD_MODE_OFFSET || - field->field_mode == FIELD_MODE_BITMASK) { - if (field->offset_shift > 15 || field->offset_shift < 0) - return rte_flow_error_set - (error, EINVAL, RTE_FLOW_ERROR_TYPE_ITEM, NULL, - "header length field shift exceeds limit"); - node->header_length_field_shift = field->offset_shift; - node->header_length_field_offset = field->offset_base; - } - if (field->field_mode == FIELD_MODE_OFFSET) { - if (field->field_size > attr->header_length_mask_width) { - node->header_length_field_offset += - field->field_size - attr->header_length_mask_width; - } else if (field->field_size < attr->header_length_mask_width) { - node->header_length_field_offset -= - attr->header_length_mask_width - field->field_size; - node->header_length_field_mask = - RTE_MIN(node->header_length_field_mask, - (1u << field->field_size) - 1); - } - } return 0; } -- 2.34.1 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2024-11-11 14:23:10.363397633 +0800 +++ 0112-net-mlx5-fix-flex-item-header-length-field-translati.patch 2024-11-11 14:23:05.352192835 +0800 @@ -1 +1 @@ -From b04b06f4cb3f3bdd24228f3ca2ec5b3a7b64308d Mon Sep 17 00:00:00 2001 +From ab563e0a3ea36bdd4139714eafd59129619d88d8 Mon Sep 17 00:00:00 2001 @@ -4,0 +5,3 @@ +Cc: Xueming Li + +[ upstream commit b04b06f4cb3f3bdd24228f3ca2ec5b3a7b64308d ] @@ -19 +21,0 @@ -Cc: stable@dpdk.org @@ -28 +30 @@ -index bf38643a23..afed16985a 100644 +index c5dd323fa2..58d8c61443 100644