From patchwork Mon Jul 5 15:57:51 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bing Zhao X-Patchwork-Id: 95313 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 C3E40A0A0F; Mon, 5 Jul 2021 17:58:28 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id F1F04411EA; Mon, 5 Jul 2021 17:58:25 +0200 (CEST) Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2052.outbound.protection.outlook.com [40.107.220.52]) by mails.dpdk.org (Postfix) with ESMTP id 8BB47411E3 for ; Mon, 5 Jul 2021 17:58:24 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=D/1dqk4hyaDLyDwyr6DwUTKlgLzIcpWDMWUHSceRZe8UApx1jJAv2kzTbVYyZygC3rJ3Jlbp3U8N7FYQ9+HC3Zj9uDl8MfWd5o1EdlyhJa23HusNGK+NQynF1J8tAxj/ou40sk2SLd3ceuWJeqZe4UKkP+/aCqRHa+DpNM5IgiV3eI80NFL+RIZMA8vpPMIyR9rMx6qdAD4tRNItPwLpjUWI8SoK8XaG3q2YTRDDgYDyB6Je8VRbJoRa0RaIydSW8NBJD5RMYeHtF0Ifffetyx4w6m0RuQaGLo+PLmqlZj0UdeDIceXe3M/eiiGhAaw3mi37S66CkiXlDXghUoMaAQ== 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-SenderADCheck; bh=X99pLgNI0UU34gCkOxvrqvdmrffdg5ODBLg8qKfhma4=; b=gN/1GgdYaXrq64uvE32/Vj/UtouRtiN1wnSCU72iTJujg697V38/AHq4hTJ/Ht3f1HgJbdvd4qVYbN3j3ROd0O+joMgknZaP2MCJ2kAnRtI7dZ+1S3QWSj4VQkf1ugie1Q5bkmOo0sN1HCJqq+XuZ9sFsfA++XbJ+HFQjjqWNkinVciMS9faWwlFQSqOBaNbjAIu2YuKDcSMaMYvcIABBCRVxe58sMObjRHdZjVeZWx33QkCGXLiZR+iYM1N9SJ5zxhesa8FmD4R1hqXnL7ACEWxjbZIyHKTAo8+BL8kJfqbZEtDuGzqVUk9xfiw821+kQPiReQzQUgrkPaBzIzf+A== 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=none sp=none 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=X99pLgNI0UU34gCkOxvrqvdmrffdg5ODBLg8qKfhma4=; b=mIuE/PGga1wRcITv19rW5gSW7rpUwZIEZ05VDnYl1dQn3wQiu0sn1NcfWousdF+gT11f8Lp+GYL0Ie+DSsRWaBG7BLOMwfg7bNT04nkORsc3HOFNyQ5Lb93g3FlswZ2vViyZ270smpiHiMJ46eliZMb8cZPGtz7PDCMaEqky3jonyMtlDoQW7jYuqGiEqmK+CkJpfC0w4qtwmpDpJzwShOALk5Wfez8jGIzPB58VmYJaW8ln+LlG9GLFkPzB3Sy2+ufnYkhuQQMAUgzC0GNXrJPj1f04pGL0sB41rb5bOBnGFzrZWBSSNNACS+6UzHhoTtlyjjQ3YZ9rbeHMkT7KQA== Received: from DM6PR03CA0049.namprd03.prod.outlook.com (2603:10b6:5:100::26) by CY4PR1201MB0213.namprd12.prod.outlook.com (2603:10b6:910:21::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4287.33; Mon, 5 Jul 2021 15:58:23 +0000 Received: from DM6NAM11FT059.eop-nam11.prod.protection.outlook.com (2603:10b6:5:100:cafe::3d) by DM6PR03CA0049.outlook.office365.com (2603:10b6:5:100::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4287.21 via Frontend Transport; Mon, 5 Jul 2021 15:58:23 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.112.34) smtp.mailfrom=nvidia.com; dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; 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 DM6NAM11FT059.mail.protection.outlook.com (10.13.172.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.4287.22 via Frontend Transport; Mon, 5 Jul 2021 15:58:22 +0000 Received: from nvidia.com (172.20.187.6) by HQMAIL107.nvidia.com (172.20.187.13) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Mon, 5 Jul 2021 15:58:20 +0000 From: Bing Zhao To: , CC: , , Date: Mon, 5 Jul 2021 18:57:51 +0300 Message-ID: <20210705155756.21443-2-bingz@nvidia.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20210705155756.21443-1-bingz@nvidia.com> References: <20210705155756.21443-1-bingz@nvidia.com> MIME-Version: 1.0 X-Originating-IP: [172.20.187.6] X-ClientProxiedBy: HQMAIL107.nvidia.com (172.20.187.13) To HQMAIL107.nvidia.com (172.20.187.13) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 7de8562b-6fe8-4b34-31c5-08d93fcdb767 X-MS-TrafficTypeDiagnostic: CY4PR1201MB0213: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1013; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: smwCbr45uZoQ9ApOPs7nfaaxILqiAzZ7dxW4RrsOv8qR/yYcez4mkMWwMzNokc6UtuB9t5pKiEwV3ooRrq+5HMCcWHUF4ReD83iBb/hj3E1n2bK+npjAcIBoTLek662hlGpHA92nf40AElnVtyzzKb6jRw01J+yIc+ZvoU74wG8zC0r8H6F7VtwUKLX7inqoVlxhvvHAZkMjivqBkLxgr3x/ga0nR5Nb2gBH+7BYWQnKJll/0M/k7BnY4RHV0vcRC72VHtXbp5NcPOeicc4GmqFM6rbzZL+P+8KpLO2bfrXFLamW61F1foC8Buz0rNoieXedk+2ylelg/Z7hZKcLIQj1EiWx+I+ZTZb4r+RjOBUWH25cH2wRDyEMu3luxaBzXsS25EKvzRxu0F9V24uHabnx0muT1VrjoVL/9Pf8QiwbhcQRXbHAcjPKpts3Kd2G6wjzbYOzLoSTRv6398ydsxGVZRhrkSiyE2QnILPKcWDgR/CrciWTKtZrBt9U2dK45qQV+48vBYtx2DgV5Vg+75WmNsHbujhAqoLWaD0rThsOFM9yJXQP333gsuorf2TmjGldtq2X2DFNL7fd0/zZaRWYIzMqIbx/AlbkV+878kU6P4J3rPUmXN6x3I+JEJDiDr06WIChCj33DpRD8RiPVYFRS20C3dT9RnSYFuRrmSAd/oHRhfHQmtW870tJ1IfK4rcGX+lHLRu5WBtaXJ4Zhw== 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)(376002)(39860400002)(346002)(136003)(396003)(46966006)(36840700001)(83380400001)(336012)(4326008)(26005)(186003)(1076003)(36860700001)(6666004)(5660300002)(54906003)(8936002)(107886003)(110136005)(6636002)(82310400003)(2906002)(8676002)(36756003)(7696005)(426003)(316002)(86362001)(7636003)(16526019)(2616005)(6286002)(356005)(478600001)(70586007)(36906005)(82740400003)(55016002)(70206006)(47076005); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jul 2021 15:58:22.6465 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7de8562b-6fe8-4b34-31c5-08d93fcdb767 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: DM6NAM11FT059.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR1201MB0213 Subject: [dpdk-dev] [PATCH 1/6] net/mlx5: add yellow color default policy 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 Sender: "dev" To support the yellow color for the default meter policy, the default policy action for yellow should be created together with the green policy. The default policy action for yellow action is the same as that for green. In the same table, the same matcher will be reused for yellow and the destination group will be the same. Signed-off-by: Bing Zhao --- drivers/net/mlx5/mlx5_flow_dv.c | 88 +++++++++++++++++++++------------ 1 file changed, 57 insertions(+), 31 deletions(-) diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c index a04a3c2bb8..c6a06d9def 100644 --- a/drivers/net/mlx5/mlx5_flow_dv.c +++ b/drivers/net/mlx5/mlx5_flow_dv.c @@ -15365,19 +15365,18 @@ __flow_dv_create_policy_flow(struct rte_eth_dev *dev, if (!is_default_policy && (priv->representor || priv->master)) { if (flow_dv_translate_item_port_id(dev, matcher.buf, value.buf, NULL, attr)) { - DRV_LOG(ERR, - "Failed to create meter policy flow with port."); + DRV_LOG(ERR, "Failed to create meter policy%d flow's" + " value with port.", color); return -1; } } flow_dv_match_meta_reg(matcher.buf, value.buf, - (enum modify_reg)color_reg_c_idx, - rte_col_2_mlx5_col(color), - UINT32_MAX); - ret = mlx5_flow_os_create_flow(matcher_object, - (void *)&value, actions_n, actions, rule); + (enum modify_reg)color_reg_c_idx, + rte_col_2_mlx5_col(color), UINT32_MAX); + ret = mlx5_flow_os_create_flow(matcher_object, (void *)&value, + actions_n, actions, rule); if (ret) { - DRV_LOG(ERR, "Failed to create meter policy flow."); + DRV_LOG(ERR, "Failed to create meter policy%d flow.", color); return -1; } return 0; @@ -15416,8 +15415,8 @@ __flow_dv_create_policy_matcher(struct rte_eth_dev *dev, if (!is_default_policy && (priv->representor || priv->master)) { if (flow_dv_translate_item_port_id(dev, matcher.mask.buf, value.buf, NULL, attr)) { - DRV_LOG(ERR, - "Failed to register meter drop matcher with port."); + DRV_LOG(ERR, "Failed to register meter policy%d matcher" + " with port.", priority); return -1; } } @@ -15425,9 +15424,11 @@ __flow_dv_create_policy_matcher(struct rte_eth_dev *dev, if (priority < RTE_COLOR_RED) flow_dv_match_meta_reg(matcher.mask.buf, value.buf, (enum modify_reg)color_reg_c_idx, 0, color_mask); - matcher.priority = priority; + /* Adjust the priority */ + matcher.priority = (priority == RTE_COLOR_YELLOW) ? + RTE_COLOR_GREEN : priority; matcher.crc = rte_raw_cksum((const void *)matcher.mask.buf, - matcher.mask.size); + matcher.mask.size); entry = mlx5_cache_register(&tbl_data->matchers, &ctx); if (!entry) { DRV_LOG(ERR, "Failed to register meter drop matcher."); @@ -15490,15 +15491,18 @@ __flow_dv_create_domain_policy_rules(struct rte_eth_dev *dev, /* Prepare matchers. */ color_reg_c_idx = ret; for (i = 0; i < RTE_COLORS; i++) { - if (i == RTE_COLOR_YELLOW || !acts[i].actions_n) + if (!acts[i].actions_n) continue; attr.priority = i; if (!sub_policy->color_matcher[i]) { /* Create matchers for Color. */ if (__flow_dv_create_policy_matcher(dev, color_reg_c_idx, i, sub_policy, - &attr, is_default_policy, &flow_err)) + &attr, is_default_policy, &flow_err)) { + DRV_LOG(ERR, + "Failed to create color%u matcher.", i); return -1; + } } /* Create flow, matching color. */ if (acts[i].actions_n) @@ -15509,8 +15513,11 @@ __flow_dv_create_domain_policy_rules(struct rte_eth_dev *dev, acts[i].dv_actions, is_default_policy, &sub_policy->color_rule[i], - &attr)) + &attr)) { + DRV_LOG(ERR, + "Failed to create color%u rule.", i); return -1; + } } return 0; } @@ -15665,8 +15672,7 @@ __flow_dv_create_domain_def_policy(struct rte_eth_dev *dev, uint32_t domain) sizeof(struct mlx5_flow_meter_def_policy), RTE_CACHE_LINE_SIZE, SOCKET_ID_ANY); if (!def_policy) { - DRV_LOG(ERR, "Failed to alloc " - "default policy table."); + DRV_LOG(ERR, "Failed to alloc default policy table."); goto def_policy_error; } mtrmng->def_policy[domain] = def_policy; @@ -15682,26 +15688,46 @@ __flow_dv_create_domain_def_policy(struct rte_eth_dev *dev, uint32_t domain) } def_policy->sub_policy.jump_tbl[RTE_COLOR_GREEN] = jump_tbl; tbl_data = container_of(jump_tbl, - struct mlx5_flow_tbl_data_entry, tbl); + struct mlx5_flow_tbl_data_entry, tbl); def_policy->dr_jump_action[RTE_COLOR_GREEN] = tbl_data->jump.action; - acts[RTE_COLOR_GREEN].dv_actions[0] = - tbl_data->jump.action; + acts[RTE_COLOR_GREEN].dv_actions[0] = tbl_data->jump.action; acts[RTE_COLOR_GREEN].actions_n = 1; + /* + * YELLOW has the same default policy as GREEN does. + * G & Y share the same table and action. + */ + jump_tbl = flow_dv_tbl_resource_get(dev, + MLX5_FLOW_TABLE_LEVEL_METER, + egress, transfer, false, NULL, 0, + 0, MLX5_MTR_TABLE_ID_SUFFIX, &error); + if (!jump_tbl) { + DRV_LOG(ERR, + "Failed to get meter suffix table."); + goto def_policy_error; + } + def_policy->sub_policy.jump_tbl[RTE_COLOR_YELLOW] = jump_tbl; + tbl_data = container_of(jump_tbl, + struct mlx5_flow_tbl_data_entry, tbl); + def_policy->dr_jump_action[RTE_COLOR_YELLOW] = + tbl_data->jump.action; + acts[RTE_COLOR_YELLOW].dv_actions[0] = tbl_data->jump.action; + acts[RTE_COLOR_YELLOW].actions_n = 1; /* Create jump action to the drop table. */ if (!mtrmng->drop_tbl[domain]) { mtrmng->drop_tbl[domain] = flow_dv_tbl_resource_get (dev, MLX5_FLOW_TABLE_LEVEL_METER, - egress, transfer, false, NULL, 0, - 0, MLX5_MTR_TABLE_ID_DROP, &error); + egress, transfer, false, NULL, 0, + 0, MLX5_MTR_TABLE_ID_DROP, &error); if (!mtrmng->drop_tbl[domain]) { - DRV_LOG(ERR, "Failed to create " - "meter drop table for default policy."); + DRV_LOG(ERR, "Failed to create meter " + "drop table for default policy."); goto def_policy_error; } } + /* all RED: unique Drop table for jump action. */ tbl_data = container_of(mtrmng->drop_tbl[domain], - struct mlx5_flow_tbl_data_entry, tbl); + struct mlx5_flow_tbl_data_entry, tbl); def_policy->dr_jump_action[RTE_COLOR_RED] = tbl_data->jump.action; acts[RTE_COLOR_RED].dv_actions[0] = tbl_data->jump.action; @@ -15711,15 +15737,14 @@ __flow_dv_create_domain_def_policy(struct rte_eth_dev *dev, uint32_t domain) &def_policy->sub_policy, egress, transfer, true, acts); if (ret) { - DRV_LOG(ERR, "Failed to create " - "default policy rules."); - goto def_policy_error; + DRV_LOG(ERR, "Failed to create default policy rules."); + goto def_policy_error; } } return 0; def_policy_error: __flow_dv_destroy_domain_def_policy(dev, - (enum mlx5_meter_domain)domain); + (enum mlx5_meter_domain)domain); return -1; } @@ -15742,8 +15767,9 @@ flow_dv_create_def_policy(struct rte_eth_dev *dev) if (!priv->config.dv_esw_en && i == MLX5_MTR_DOMAIN_TRANSFER) continue; if (__flow_dv_create_domain_def_policy(dev, i)) { - DRV_LOG(ERR, - "Failed to create default policy"); + DRV_LOG(ERR, "Failed to create default policy"); + /* Rollback the created default policies for others. */ + flow_dv_destroy_def_policy(dev); return -1; } } From patchwork Mon Jul 5 15:57:52 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bing Zhao X-Patchwork-Id: 95314 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 5AF93A0C3F; Mon, 5 Jul 2021 17:58:35 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 4D478411F5; Mon, 5 Jul 2021 17:58:28 +0200 (CEST) Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2074.outbound.protection.outlook.com [40.107.223.74]) by mails.dpdk.org (Postfix) with ESMTP id 5270D411EF for ; Mon, 5 Jul 2021 17:58:26 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TQtrGBDnI8CNb+ofSUUTWrSf8cZOcav1OEY0DyFD5/Kj1gbf1hYgd8kBLZnGhaY/HpuVyix/H+hh359OragSSNGqPhLTzUqgpvuKuuFcIME0gxeJalQXhIYIAfaLgS/so/ogCMVM0GZrq3Pgl1k3mjmPDUCEO+aBr+zqEI+oPpxiMf/zVLtIt6gX/hKbizUrfhgAN8dFNj9aGtxJ6G0h0lZLh82iMxFIHxJvAkCTaUoFBNz8zZ9ROCIuQl1p+ijyJhyF41T0WAy5NkqxJHOpATtnqjpvFijdhSgLyj1BcxLn8VXr2RDoyvSh+iFqej+lopkItUFPBptVeRtYjDsHhw== 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-SenderADCheck; bh=bIbiHVYOyZn7rinh/WRMvIvgJE+ODkGq/7V51h4uC4Y=; b=CabGtd6nGEG0zlgRosJQz+qbI2nuDVjGcaJ9FHAUUvub/eIzO1rPg0jo9xcVrlAffvh3Gk79ywJeGa90jcW3PDf2MTG9r8AdBy9saIcYDrTYB8dZ+vkaeeFJWNJ+mLSCtL5zpY6Jx3TCpex8oOcYLE0tGiImIAUt8lMsvMBQSd4wglbxk4yJxpjKqLOtTxBtYwkg/bck/JA0Bfn8+hPLgvcJPiYbmAjRVEfqfBR0J0hTV4s5Qm3gFkYT0zBB2MbLxVsKgCMW03g2C6hgLiuy/50dKCI2G2vCAXH7oaVURGq5ymzODJGtJK2d2MF7Hb6VcmCbPlcpYnDNZRrpdc3BOQ== 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=none sp=none 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=bIbiHVYOyZn7rinh/WRMvIvgJE+ODkGq/7V51h4uC4Y=; b=ca6sSjGWRBZwjvEwlVZ2Vdz+Vano9DO4/mcBuce48UJ3ruz7IQcs4PdGZbVX8Ti5V4ByoyUE2P9JpFiLxg3jtZNT0b0WqyfQ7m/3A1Krn4UDdmYAMFi8ylrJTeZrQRvDVH6oQHI64u5qF+SvWJikM1hMVmZdmOQ+LiDcKCuVxpulNggIq+6J5e8GWlJ30yaztDgz5/G0mKciml5hbPO2frtuvMrHCe2DSWj9/62Dwe8Y1y0hFzOI9042OGII5e74T5JCjDVHDwk6uLg/9flAYr2yuKzOOCmXJbyuLzDLJbrksxoiRWlzdTIo6E2lAXTUlcg1DDdVRTV2JxxSyA0iIQ== Received: from DM3PR08CA0001.namprd08.prod.outlook.com (2603:10b6:0:52::11) by DM4PR12MB5263.namprd12.prod.outlook.com (2603:10b6:5:39b::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4287.22; Mon, 5 Jul 2021 15:58:24 +0000 Received: from DM6NAM11FT055.eop-nam11.prod.protection.outlook.com (2603:10b6:0:52:cafe::5e) by DM3PR08CA0001.outlook.office365.com (2603:10b6:0:52::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4287.22 via Frontend Transport; Mon, 5 Jul 2021 15:58:24 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.112.34) smtp.mailfrom=nvidia.com; dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; 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 DM6NAM11FT055.mail.protection.outlook.com (10.13.173.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.4287.22 via Frontend Transport; Mon, 5 Jul 2021 15:58:24 +0000 Received: from nvidia.com (172.20.187.6) by HQMAIL107.nvidia.com (172.20.187.13) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Mon, 5 Jul 2021 15:58:22 +0000 From: Bing Zhao To: , CC: , , Date: Mon, 5 Jul 2021 18:57:52 +0300 Message-ID: <20210705155756.21443-3-bingz@nvidia.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20210705155756.21443-1-bingz@nvidia.com> References: <20210705155756.21443-1-bingz@nvidia.com> MIME-Version: 1.0 X-Originating-IP: [172.20.187.6] X-ClientProxiedBy: HQMAIL107.nvidia.com (172.20.187.13) To HQMAIL107.nvidia.com (172.20.187.13) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: bb69edbe-f5cd-484f-c801-08d93fcdb87a X-MS-TrafficTypeDiagnostic: DM4PR12MB5263: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:6108; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: zTeJxdXTq9e+zbfvsdyH8fhLkt+B6fOG/66vyoKu+8T20FI8IsEOKIpRtSBgxgVEibP9TIkbx1Z61x5/KYYTIhnsC9oun2ps1iMITqVUlkWoGuVI9s/re9OG+c6x2YQDzVneAw75ayU6kkSDNiih6JrPylgsocyLBY3Lwjbq20y6fhHgnOZSevVe95WoqJqZg7gerfOJEVz+mYxD1FuRBljm4h1wZOINmBuCNc5HEX1FNzxnseef6/zHVJ9uN3lywSj73fcwKtSWiH8DooCkr7XzWUYPAQ01+9RZpa2BTinlf6DAf3Sg+0As+aKAA4+tfkF4iwwEVuioR6Z3aCwKXPdI57cyJGo9sG1+TrlGz3AuvD3VuQ1a84wQhlbRp1tGEYjbO28CMIAQTpT3qXNU+pHLuVa1fuO/fGKZxTXpQAZ4TtrESMThM1OfHHuDcAWUd5oQmVgfjqDbiIkDE7WGQotSg5Sc27M9orHnJ6aVGMkn1h5b2JmXWXg55z93EF+4J9zMRFIn1SC0iUtDFnI/wsJ9YC2rpd/yjou6cMkhV4IPxqq4Wlu3vC4Lw+BoHSpkoIKMjN0eOziC+Kio/hikqqziv8D0rBZTmsND8+kjRWiliTxg9OTFcbfTfUKgeQw1EPBCb9AQQbx0qKo95NIKnNxUiQyl+kFcmS0kd524LNc3qG92LrzjBF0N71T5rpjP718DYgalxXLLub+/yICpzg== 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)(39860400002)(346002)(396003)(136003)(376002)(46966006)(36840700001)(478600001)(6286002)(2616005)(110136005)(1076003)(7696005)(16526019)(47076005)(336012)(6636002)(8676002)(36860700001)(82310400003)(186003)(107886003)(30864003)(54906003)(86362001)(36756003)(426003)(26005)(8936002)(4326008)(83380400001)(5660300002)(7636003)(356005)(82740400003)(36906005)(70586007)(55016002)(316002)(2906002)(70206006)(6666004); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jul 2021 15:58:24.3986 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: bb69edbe-f5cd-484f-c801-08d93fcdb87a 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: DM6NAM11FT055.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB5263 Subject: [dpdk-dev] [PATCH 2/6] net/mlx5: support yellow in meter policy validation 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 Sender: "dev" In the previous implementation, the policy for yellow color was not supported. The action validation for yellow was skipped. Since the yellow color policy needs to be supported, the validation should also be done for yellow color. In the meanwhile, due to the fact that color policies of one meter should be used for the same flow(s), the domains supported of both colors shall be the same. If both of the colors have RSS as the fate actions, except the queues, all other parameters of RSS should be the same. Signed-off-by: Bing Zhao --- drivers/net/mlx5/mlx5.h | 4 +- drivers/net/mlx5/mlx5_flow.c | 4 +- drivers/net/mlx5/mlx5_flow_dv.c | 151 +++++++++++++++++------------ drivers/net/mlx5/mlx5_flow_meter.c | 3 +- 4 files changed, 97 insertions(+), 65 deletions(-) diff --git a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h index 1b2dc8f815..1d2e003900 100644 --- a/drivers/net/mlx5/mlx5.h +++ b/drivers/net/mlx5/mlx5.h @@ -608,8 +608,8 @@ struct mlx5_dev_shared_port { /*ASO flow meter structures*/ /* Modify this value if enum rte_mtr_color changes. */ #define RTE_MTR_DROPPED RTE_COLORS -/* Yellow is not supported. */ -#define MLX5_MTR_RTE_COLORS (RTE_COLOR_GREEN + 1) +/* Yellow is now supported. */ +#define MLX5_MTR_RTE_COLORS (RTE_COLOR_YELLOW + 1) /* table_id 22 bits in mlx5_flow_tbl_key so limit policy number. */ #define MLX5_MAX_SUB_POLICY_TBL_NUM 0x3FFFFF #define MLX5_INVALID_POLICY_ID UINT32_MAX diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c index 3b7c94d92f..61c72da2aa 100644 --- a/drivers/net/mlx5/mlx5_flow.c +++ b/drivers/net/mlx5/mlx5_flow.c @@ -7093,8 +7093,8 @@ mlx5_flow_validate_mtr_acts(struct rte_eth_dev *dev, const struct mlx5_flow_driver_ops *fops; fops = flow_get_drv_ops(MLX5_FLOW_TYPE_DV); - return fops->validate_mtr_acts(dev, actions, attr, - is_rss, domain_bitmap, is_def_policy, error); + return fops->validate_mtr_acts(dev, actions, attr, is_rss, + domain_bitmap, is_def_policy, error); } /** diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c index c6a06d9def..f53cf65e87 100644 --- a/drivers/net/mlx5/mlx5_flow_dv.c +++ b/drivers/net/mlx5/mlx5_flow_dv.c @@ -16430,6 +16430,19 @@ flow_dv_action_validate(struct rte_eth_dev *dev, } } +static inline int +flow_dv_mtr_policy_rss_compare(const struct rte_flow_action_rss *r1, + const struct rte_flow_action_rss *r2) +{ + if (!r1 || !r2) + return 0; + if (r1->func != r2->func || r1->level != r2->level || + r1->types != r2->types || r1->key_len != r2->key_len || + memcmp(r1->key, r2->key, r1->key_len)) + return 1; + return 0; +} + /** * Validate meter policy actions. * Dispatcher for action type specific validation. @@ -16459,42 +16472,46 @@ flow_dv_validate_mtr_policy_acts(struct rte_eth_dev *dev, struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_dev_config *dev_conf = &priv->config; const struct rte_flow_action *act; - uint64_t action_flags = 0; + uint64_t action_flags[RTE_COLORS] = {0}; int actions_n; int i, ret; struct rte_flow_error flow_err; uint8_t domain_color[RTE_COLORS] = {0}; uint8_t def_domain = MLX5_MTR_ALL_DOMAIN_BIT; + bool def_green = false; + bool def_yellow = false; + const struct rte_flow_action_rss *rss_color[RTE_COLORS] = {NULL}; if (!priv->config.dv_esw_en) def_domain &= ~MLX5_MTR_DOMAIN_TRANSFER_BIT; *domain_bitmap = def_domain; - if (actions[RTE_COLOR_YELLOW] && - actions[RTE_COLOR_YELLOW]->type != RTE_FLOW_ACTION_TYPE_END) - return -rte_mtr_error_set(error, ENOTSUP, - RTE_MTR_ERROR_TYPE_METER_POLICY, - NULL, - "Yellow color does not support any action."); - if (actions[RTE_COLOR_YELLOW] && - actions[RTE_COLOR_YELLOW]->type != RTE_FLOW_ACTION_TYPE_DROP) + if (actions[RTE_COLOR_RED] && + actions[RTE_COLOR_RED]->type != RTE_FLOW_ACTION_TYPE_DROP) return -rte_mtr_error_set(error, ENOTSUP, RTE_MTR_ERROR_TYPE_METER_POLICY, NULL, "Red color only supports drop action."); /* * Check default policy actions: - * Green/Yellow: no action, Red: drop action + * Green / Yellow: no action, Red: drop action + * Either G or Y will trigger default policy actions to be created. */ - if ((!actions[RTE_COLOR_GREEN] || - actions[RTE_COLOR_GREEN]->type == RTE_FLOW_ACTION_TYPE_END)) { + if (!actions[RTE_COLOR_GREEN] || + actions[RTE_COLOR_GREEN]->type == RTE_FLOW_ACTION_TYPE_END) + def_green = true; + if (!actions[RTE_COLOR_YELLOW] || + actions[RTE_COLOR_YELLOW]->type == RTE_FLOW_ACTION_TYPE_END) + def_yellow = true; + if (def_green && def_yellow) { *is_def_policy = true; return 0; } - flow_err.message = NULL; + /* Set to empty string in case of NULL pointer access by user. */ + flow_err.message = ""; for (i = 0; i < RTE_COLORS; i++) { act = actions[i]; - for (action_flags = 0, actions_n = 0; - act && act->type != RTE_FLOW_ACTION_TYPE_END; - act++) { + for (action_flags[i] = 0, actions_n = 0; + act && act->type != RTE_FLOW_ACTION_TYPE_END; + act++) { if (actions_n == MLX5_DV_MAX_NUMBER_OF_ACTIONS) return -rte_mtr_error_set(error, ENOTSUP, RTE_MTR_ERROR_TYPE_METER_POLICY, @@ -16508,7 +16525,7 @@ flow_dv_validate_mtr_policy_acts(struct rte_eth_dev *dev, NULL, "PORT action validate check" " fail for ESW disable"); ret = flow_dv_validate_action_port_id(dev, - action_flags, + action_flags[i], act, attr, &flow_err); if (ret) return -rte_mtr_error_set(error, @@ -16518,11 +16535,11 @@ flow_dv_validate_mtr_policy_acts(struct rte_eth_dev *dev, flow_err.message : "PORT action validate check fail"); ++actions_n; - action_flags |= MLX5_FLOW_ACTION_PORT_ID; + action_flags[i] |= MLX5_FLOW_ACTION_PORT_ID; break; case RTE_FLOW_ACTION_TYPE_MARK: ret = flow_dv_validate_action_mark(dev, act, - action_flags, + action_flags[i], attr, &flow_err); if (ret < 0) return -rte_mtr_error_set(error, @@ -16539,12 +16556,12 @@ flow_dv_validate_mtr_policy_acts(struct rte_eth_dev *dev, NULL, "Extend MARK action is " "not supported. Please try use " "default policy for meter."); - action_flags |= MLX5_FLOW_ACTION_MARK; + action_flags[i] |= MLX5_FLOW_ACTION_MARK; ++actions_n; break; case RTE_FLOW_ACTION_TYPE_SET_TAG: ret = flow_dv_validate_action_set_tag(dev, - act, action_flags, + act, action_flags[i], attr, &flow_err); if (ret) return -rte_mtr_error_set(error, @@ -16557,15 +16574,14 @@ flow_dv_validate_mtr_policy_acts(struct rte_eth_dev *dev, * Count all modify-header actions * as one action. */ - if (!(action_flags & - MLX5_FLOW_MODIFY_HDR_ACTIONS)) + if (!(action_flags[i] & + MLX5_FLOW_MODIFY_HDR_ACTIONS)) ++actions_n; - action_flags |= MLX5_FLOW_ACTION_SET_TAG; + action_flags[i] |= MLX5_FLOW_ACTION_SET_TAG; break; case RTE_FLOW_ACTION_TYPE_DROP: ret = mlx5_flow_validate_action_drop - (action_flags, - attr, &flow_err); + (action_flags[i], attr, &flow_err); if (ret < 0) return -rte_mtr_error_set(error, ENOTSUP, @@ -16573,7 +16589,7 @@ flow_dv_validate_mtr_policy_acts(struct rte_eth_dev *dev, NULL, flow_err.message ? flow_err.message : "Drop action validate check fail"); - action_flags |= MLX5_FLOW_ACTION_DROP; + action_flags[i] |= MLX5_FLOW_ACTION_DROP; ++actions_n; break; case RTE_FLOW_ACTION_TYPE_QUEUE: @@ -16582,9 +16598,9 @@ flow_dv_validate_mtr_policy_acts(struct rte_eth_dev *dev, * metadata feature is engaged. */ if (dev_conf->dv_flow_en && - (dev_conf->dv_xmeta_en != - MLX5_XMETA_MODE_LEGACY) && - mlx5_flow_ext_mreg_supported(dev)) + (dev_conf->dv_xmeta_en != + MLX5_XMETA_MODE_LEGACY) && + mlx5_flow_ext_mreg_supported(dev)) return -rte_mtr_error_set(error, ENOTSUP, RTE_MTR_ERROR_TYPE_METER_POLICY, @@ -16592,7 +16608,7 @@ flow_dv_validate_mtr_policy_acts(struct rte_eth_dev *dev, "is not supported. Please try use " "default policy for meter."); ret = mlx5_flow_validate_action_queue(act, - action_flags, dev, + action_flags[i], dev, attr, &flow_err); if (ret < 0) return -rte_mtr_error_set(error, @@ -16601,14 +16617,14 @@ flow_dv_validate_mtr_policy_acts(struct rte_eth_dev *dev, NULL, flow_err.message ? flow_err.message : "Queue action validate check fail"); - action_flags |= MLX5_FLOW_ACTION_QUEUE; + action_flags[i] |= MLX5_FLOW_ACTION_QUEUE; ++actions_n; break; case RTE_FLOW_ACTION_TYPE_RSS: if (dev_conf->dv_flow_en && - (dev_conf->dv_xmeta_en != - MLX5_XMETA_MODE_LEGACY) && - mlx5_flow_ext_mreg_supported(dev)) + (dev_conf->dv_xmeta_en != + MLX5_XMETA_MODE_LEGACY) && + mlx5_flow_ext_mreg_supported(dev)) return -rte_mtr_error_set(error, ENOTSUP, RTE_MTR_ERROR_TYPE_METER_POLICY, @@ -16624,13 +16640,14 @@ flow_dv_validate_mtr_policy_acts(struct rte_eth_dev *dev, NULL, flow_err.message ? flow_err.message : "RSS action validate check fail"); - action_flags |= MLX5_FLOW_ACTION_RSS; + action_flags[i] |= MLX5_FLOW_ACTION_RSS; ++actions_n; - *is_rss = true; + /* Either G or Y will set the RSS. */ + rss_color[i] = act->conf; break; case RTE_FLOW_ACTION_TYPE_JUMP: ret = flow_dv_validate_action_jump(dev, - NULL, act, action_flags, + NULL, act, action_flags[i], attr, true, &flow_err); if (ret) return -rte_mtr_error_set(error, @@ -16640,7 +16657,7 @@ flow_dv_validate_mtr_policy_acts(struct rte_eth_dev *dev, flow_err.message : "Jump action validate check fail"); ++actions_n; - action_flags |= MLX5_FLOW_ACTION_JUMP; + action_flags[i] |= MLX5_FLOW_ACTION_JUMP; break; default: return -rte_mtr_error_set(error, ENOTSUP, @@ -16649,17 +16666,14 @@ flow_dv_validate_mtr_policy_acts(struct rte_eth_dev *dev, "Doesn't support optional action"); } } - /* Yellow is not supported, just skip. */ - if (i == RTE_COLOR_YELLOW) - continue; - if (action_flags & MLX5_FLOW_ACTION_PORT_ID) + if (action_flags[i] & MLX5_FLOW_ACTION_PORT_ID) domain_color[i] = MLX5_MTR_DOMAIN_TRANSFER_BIT; - else if ((action_flags & - (MLX5_FLOW_ACTION_RSS | MLX5_FLOW_ACTION_QUEUE)) || - (action_flags & MLX5_FLOW_ACTION_MARK)) + else if ((action_flags[i] & + (MLX5_FLOW_ACTION_RSS | MLX5_FLOW_ACTION_QUEUE)) || + (action_flags[i] & MLX5_FLOW_ACTION_MARK)) /* * Only support MLX5_XMETA_MODE_LEGACY - * so MARK action only in ingress domain. + * so MARK action is only in ingress domain. */ domain_color[i] = MLX5_MTR_DOMAIN_INGRESS_BIT; else @@ -16669,8 +16683,8 @@ flow_dv_validate_mtr_policy_acts(struct rte_eth_dev *dev, * with other actions. Drop action is mutually-exclusive * with any other action, except for Count action. */ - if ((action_flags & MLX5_FLOW_ACTION_DROP) && - (action_flags & ~MLX5_FLOW_ACTION_DROP)) { + if ((action_flags[i] & MLX5_FLOW_ACTION_DROP) && + (action_flags[i] & ~MLX5_FLOW_ACTION_DROP)) { return -rte_mtr_error_set(error, ENOTSUP, RTE_MTR_ERROR_TYPE_METER_POLICY, NULL, "Drop action is mutually-exclusive " @@ -16679,30 +16693,29 @@ flow_dv_validate_mtr_policy_acts(struct rte_eth_dev *dev, /* Eswitch has few restrictions on using items and actions */ if (domain_color[i] & MLX5_MTR_DOMAIN_TRANSFER_BIT) { if (!mlx5_flow_ext_mreg_supported(dev) && - action_flags & MLX5_FLOW_ACTION_MARK) + action_flags[i] & MLX5_FLOW_ACTION_MARK) return -rte_mtr_error_set(error, ENOTSUP, RTE_MTR_ERROR_TYPE_METER_POLICY, NULL, "unsupported action MARK"); - if (action_flags & MLX5_FLOW_ACTION_QUEUE) + if (action_flags[i] & MLX5_FLOW_ACTION_QUEUE) return -rte_mtr_error_set(error, ENOTSUP, RTE_MTR_ERROR_TYPE_METER_POLICY, NULL, "unsupported action QUEUE"); - if (action_flags & MLX5_FLOW_ACTION_RSS) + if (action_flags[i] & MLX5_FLOW_ACTION_RSS) return -rte_mtr_error_set(error, ENOTSUP, RTE_MTR_ERROR_TYPE_METER_POLICY, NULL, "unsupported action RSS"); - if (!(action_flags & MLX5_FLOW_FATE_ESWITCH_ACTIONS)) + if (!(action_flags[i] & MLX5_FLOW_FATE_ESWITCH_ACTIONS)) return -rte_mtr_error_set(error, ENOTSUP, RTE_MTR_ERROR_TYPE_METER_POLICY, NULL, "no fate action is found"); } else { - if (!(action_flags & MLX5_FLOW_FATE_ACTIONS) && - (domain_color[i] & - MLX5_MTR_DOMAIN_INGRESS_BIT)) { + if (!(action_flags[i] & MLX5_FLOW_FATE_ACTIONS) && + (domain_color[i] & MLX5_MTR_DOMAIN_INGRESS_BIT)) { if ((domain_color[i] & - MLX5_MTR_DOMAIN_EGRESS_BIT)) + MLX5_MTR_DOMAIN_EGRESS_BIT)) domain_color[i] = - MLX5_MTR_DOMAIN_EGRESS_BIT; + MLX5_MTR_DOMAIN_EGRESS_BIT; else return -rte_mtr_error_set(error, ENOTSUP, @@ -16710,9 +16723,27 @@ flow_dv_validate_mtr_policy_acts(struct rte_eth_dev *dev, NULL, "no fate action is found"); } } - if (domain_color[i] != def_domain) - *domain_bitmap = domain_color[i]; } + /* If both colors have RSS, the attributes should be the same. */ + if (flow_dv_mtr_policy_rss_compare(rss_color[RTE_COLOR_GREEN], + rss_color[RTE_COLOR_YELLOW])) + return -rte_mtr_error_set(error, EINVAL, + RTE_MTR_ERROR_TYPE_METER_POLICY, + NULL, "policy RSS attr conflict"); + if (rss_color[RTE_COLOR_GREEN] || rss_color[RTE_COLOR_YELLOW]) + *is_rss = true; + /* "domain_color[C]" is non-zero for each color, default is ALL. */ + if (!def_green && !def_yellow && + domain_color[RTE_COLOR_GREEN] != domain_color[RTE_COLOR_YELLOW]) + return -rte_mtr_error_set(error, EINVAL, + RTE_MTR_ERROR_TYPE_METER_POLICY, + NULL, "policy domains conflict"); + /* + * At least one color policy is listed in the actions, the domains + * to be supported should be the intersection. + */ + *domain_bitmap = domain_color[RTE_COLOR_GREEN] & + domain_color[RTE_COLOR_YELLOW]; return 0; } diff --git a/drivers/net/mlx5/mlx5_flow_meter.c b/drivers/net/mlx5/mlx5_flow_meter.c index d7ce5cd2f6..d313786eb3 100644 --- a/drivers/net/mlx5/mlx5_flow_meter.c +++ b/drivers/net/mlx5/mlx5_flow_meter.c @@ -660,7 +660,8 @@ mlx5_flow_meter_policy_add(struct rte_eth_dev *dev, RTE_MTR_ERROR_TYPE_METER_POLICY_ID, NULL, "policy ID exists. "); ret = mlx5_flow_validate_mtr_acts(dev, policy->actions, &attr, - &is_rss, &domain_bitmap, &is_def_policy, error); + &is_rss, &domain_bitmap, + &is_def_policy, error); if (ret) return ret; if (!domain_bitmap) From patchwork Mon Jul 5 15:57:53 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bing Zhao X-Patchwork-Id: 95316 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 6A2B5A0A0F; Mon, 5 Jul 2021 17:58:50 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 337314120E; Mon, 5 Jul 2021 17:58:31 +0200 (CEST) Received: from NAM02-BN1-obe.outbound.protection.outlook.com (mail-bn1nam07on2083.outbound.protection.outlook.com [40.107.212.83]) by mails.dpdk.org (Postfix) with ESMTP id 854C541201 for ; Mon, 5 Jul 2021 17:58:29 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Vx01N0IxUiefiDEU/Pm8FKkGJfj5SxfthBpV7mmvCYTvvQGxlnHWuaYVPB1RJNiFfsPjYxMtujlHMXCOILwPP1SH25GsZQijif6FUsTQq6uXxfRV0JngmClbAv4o3+28r74D1PVsZ73dfJV4EdDIu9hlWZ9QIGqPlg5rtM+dULIcNayOtwnMRBXjgtoxlEHmEV7tdLL7LBRoVRLEpDoPkFR4hjFPwMEP7Lb5WhVscHCNB68Bmt8kExOp8bqR8aNOJOqsY/vEGWfvj8AyJ8NsLwCj0AjXb2PgyaXoIcmNICXMckcBhaZOnQLCGUJuyA1gTdoyJktfPW25zlMBLoVubQ== 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-SenderADCheck; bh=LnBdt7/x2hmz2Rkr7MOV4QM9Y7SRRkFXZ3aEsk6QY4w=; b=lw7lRvwDpuRqNPKIarQ2OqgYp065isMbp8JzG2qgIEunCk8gYTffZaF8hC48sn0y09N+eF1AyhG2LlHBrMiw3263kmUj2UCGV5TYoKHZdBl9WIhoQ9LK6qRzTA0slWWMF9Gti+PUjYYGwJS1BkknfNqWhmGyqgfTars+w8b4ihoXbHgbMWn1FfvlwTaMY/9k/YQtJAO+dfCzaK1gUf7DtsZ3vlHuJ6YUnCAaU2wfQgaqUrukuRuz6nArCjvx/nS+eUcJYbiIo/TpPbvo86m/1ADfM0KU7+7buGuX/Su437OQJn1w4GXw8pzzbsmZhAbZqsSeykdSVuc3vL0BebgbAw== 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=none sp=none 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=LnBdt7/x2hmz2Rkr7MOV4QM9Y7SRRkFXZ3aEsk6QY4w=; b=YFy88fgXkwxUihvzAAKxnA2YVOJKXHguQQ19beIy72vkf5MQ856QjGlJcva/oRiIYvm2Tb+AK+nSgqisPDbVDpqH6wZ7q854kblYxT4GeUHKped8a3PHw2a8bDWq1i78hgrDwdp4WGCquXweqkIJs3iM+o6liHrLrABjJwRJCF+Y1sxzr1sihHvsslu4tLS4QtkRuBFI8Y9yeEIv17zLbJPIbYE+DEbAOb74W3yIdaoLwHaeFBY5p5+z04QRDvI4nYkdJt2t1AwDxtU/nAFjzbQc2kEtrsgp+pGrdmHMldhNAsPa1Kt1Tb69TRnRFii9PreZSXgZFyoJjf06NPq1lw== Received: from DM5PR13CA0072.namprd13.prod.outlook.com (2603:10b6:3:117::34) by MW2PR12MB2555.namprd12.prod.outlook.com (2603:10b6:907:b::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4264.23; Mon, 5 Jul 2021 15:58:26 +0000 Received: from DM6NAM11FT035.eop-nam11.prod.protection.outlook.com (2603:10b6:3:117:cafe::6a) by DM5PR13CA0072.outlook.office365.com (2603:10b6:3:117::34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4308.7 via Frontend Transport; Mon, 5 Jul 2021 15:58:26 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.112.34) smtp.mailfrom=nvidia.com; dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; 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 DM6NAM11FT035.mail.protection.outlook.com (10.13.172.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.4287.22 via Frontend Transport; Mon, 5 Jul 2021 15:58:26 +0000 Received: from nvidia.com (172.20.187.6) by HQMAIL107.nvidia.com (172.20.187.13) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Mon, 5 Jul 2021 15:58:24 +0000 From: Bing Zhao To: , CC: , , Date: Mon, 5 Jul 2021 18:57:53 +0300 Message-ID: <20210705155756.21443-4-bingz@nvidia.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20210705155756.21443-1-bingz@nvidia.com> References: <20210705155756.21443-1-bingz@nvidia.com> MIME-Version: 1.0 X-Originating-IP: [172.20.187.6] X-ClientProxiedBy: HQMAIL107.nvidia.com (172.20.187.13) To HQMAIL107.nvidia.com (172.20.187.13) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f9cce250-b27e-46cc-be18-08d93fcdb988 X-MS-TrafficTypeDiagnostic: MW2PR12MB2555: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:446; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: V5B5gN0wLBjH5OA0erUV5dMKGsMDjwgznf/6RSxGDImO2jvqWDqNXEMJTmzkr3SfVjlA8sQljkmQO0aIMl24rLF514GebW76fjYqcx1ngg9GtBA2CmIumE77UeIIZ5VjaRYxrM7Cf949PKGJf0Zx+nuIN+MXeL9YyH0kiadWsEWVQpJ1BMa6+hjMGXI4MeaajFGxijMGb2et+hjYwQidHfJZjDHuIB1nT4qVe/ZfG6T14aSUqh7XLdw9I9tjEofrTGmMr1zmOFe8WZaJue1NT7IfnDNAzSj1VQ1cHFoEwVhsuSYDOftZldg5+u3piCrruyUqbrA/zEP0qhKyhhGeLJCAYjZAJrLHKnp5bSb8Ggpfm6X0aMYjXDFoldU8IrsZ83rNWpMZPGm01wuxC5ayCyoEYjuQIsKClx3iiLFTssJDb8Tv7s9bDXIUJtQC/Vd4m4KPGl2amwSQlaUoEjm1BEU5+mEQEaY3rNMb99qNKMrGsoloRFk5nGTcM3tzemvWgcoEAUVvV0Ddzup9V12vkjVaXOv7TInMBzvqUGzkp9bJnnDuzXXoESEC5u7tO1ZqIyzFFY0gHw2ZXIUG1em74l4Ic8/KDgbuIKTKGdkSVLQMisOryJONQiAkzlquzY7jylNHtJTZYc+bW+vfvmsiykrcD0BHRrQ4i2pO5x0OGXo13bi/sFiUMzx08FZGGbDeko1TVKWhiOfUhpQTW0oY2Q== 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)(136003)(346002)(376002)(39860400002)(396003)(36840700001)(46966006)(55016002)(7696005)(2616005)(426003)(4326008)(86362001)(54906003)(36906005)(6666004)(110136005)(186003)(356005)(26005)(16526019)(82310400003)(83380400001)(36860700001)(36756003)(8676002)(6636002)(5660300002)(336012)(2906002)(70586007)(70206006)(1076003)(47076005)(107886003)(478600001)(316002)(8936002)(6286002)(82740400003)(7636003); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jul 2021 15:58:26.2118 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f9cce250-b27e-46cc-be18-08d93fcdb988 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: DM6NAM11FT035.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW2PR12MB2555 Subject: [dpdk-dev] [PATCH 3/6] net/mlx5: enable meter bucket overflow for yellow color 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 Sender: "dev" To support the meter policy for yellow action, the prerequisite is that the hardware needs to support the EBS and then the yellow color of packets can be marked for the further steering. In the current implementation EBS and overflow were ignored when creating a meter profile. With this commit, if EBS is set by the application, the generation of yellow color will be enabled in the hardware for flow rules steering of packets. Signed-off-by: Bing Zhao --- drivers/net/mlx5/mlx5_flow_aso.c | 3 +++ drivers/net/mlx5/mlx5_flow_meter.c | 10 +++++----- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/drivers/net/mlx5/mlx5_flow_aso.c b/drivers/net/mlx5/mlx5_flow_aso.c index 64631ffc29..a8cb590b57 100644 --- a/drivers/net/mlx5/mlx5_flow_aso.c +++ b/drivers/net/mlx5/mlx5_flow_aso.c @@ -747,6 +747,9 @@ mlx5_aso_mtr_sq_enqueue_single(struct mlx5_aso_sq *sq, wqe->aso_dseg.mtrs[dseg_idx].v_bo_sc_bbog_mm = RTE_BE32((1 << ASO_DSEG_VALID_OFFSET) | (MLX5_FLOW_COLOR_GREEN << ASO_DSEG_SC_OFFSET)); + if (fm->profile->srtcm_prm.ebs_eir) + wqe->aso_dseg.mtrs[dseg_idx].v_bo_sc_bbog_mm |= + RTE_BE32(1 << ASO_DSEG_BO_OFFSET); sq->head++; sq->pi += 2;/* Each WQE contains 2 WQEBB's. */ rte_io_wmb(); diff --git a/drivers/net/mlx5/mlx5_flow_meter.c b/drivers/net/mlx5/mlx5_flow_meter.c index d313786eb3..68351db1ce 100644 --- a/drivers/net/mlx5/mlx5_flow_meter.c +++ b/drivers/net/mlx5/mlx5_flow_meter.c @@ -312,9 +312,9 @@ mlx5_flow_meter_param_fill(struct mlx5_flow_meter_profile *fmp, cbs_man = man; cbs_exp = exp; srtcm->cbs_cir = rte_cpu_to_be_32(cbs_exp << ASO_DSEG_CBS_EXP_OFFSET | - cbs_man << ASO_DSEG_CBS_MAN_OFFSET | - cir_exp << ASO_DSEG_CIR_EXP_OFFSET | - cir_man); + cbs_man << ASO_DSEG_CBS_MAN_OFFSET | + cir_exp << ASO_DSEG_CIR_EXP_OFFSET | + cir_man); mlx5_flow_meter_xbs_man_exp_calc(ebs, &man, &exp); /* Check if ebs mantissa is too large. */ if (exp > ASO_DSEG_EXP_MASK) @@ -325,7 +325,7 @@ mlx5_flow_meter_param_fill(struct mlx5_flow_meter_profile *fmp, ebs_man = man; ebs_exp = exp; srtcm->ebs_eir = rte_cpu_to_be_32(ebs_exp << ASO_DSEG_EBS_EXP_OFFSET | - ebs_man << ASO_DSEG_EBS_MAN_OFFSET); + ebs_man << ASO_DSEG_EBS_MAN_OFFSET); return 0; } @@ -414,7 +414,7 @@ mlx5_flow_meter_profile_add(struct rte_eth_dev *dev, return ret; /* Meter profile memory allocation. */ fmp = mlx5_malloc(MLX5_MEM_ZERO, sizeof(struct mlx5_flow_meter_profile), - RTE_CACHE_LINE_SIZE, SOCKET_ID_ANY); + RTE_CACHE_LINE_SIZE, SOCKET_ID_ANY); if (fmp == NULL) return -rte_mtr_error_set(error, ENOMEM, RTE_MTR_ERROR_TYPE_UNSPECIFIED, From patchwork Mon Jul 5 15:57:54 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bing Zhao X-Patchwork-Id: 95315 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 3CA21A0A0F; Mon, 5 Jul 2021 17:58:44 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id F0AD541207; Mon, 5 Jul 2021 17:58:29 +0200 (CEST) Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2050.outbound.protection.outlook.com [40.107.236.50]) by mails.dpdk.org (Postfix) with ESMTP id 29013411FC for ; Mon, 5 Jul 2021 17:58:29 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=T0PALxF4DSdjwHyZ22B0Ic4rUIZCvv1nbwXZGyZcu8pm+YOKffElAzzs3LhHeo+fVdhLZKTyFY3mVgWbvQcasyaA3mCk2VeedzWCUHZkoC7G8aZLexGf1An/C7HlfnJJnExfIZ+k8YwivnDjY2hkNh2zvSRU6623941T1BurUg/fRtF1W+hO9P5Ct43Ur55y1e3DK4jLlqqTr7ZNGSxgRtLxEbWfV/PiwZWy1jGKNnSlNcFjyDYjFYb0NS16EUyRgEwqG3+NKzF3omLG3Vz6glQse279922XT5kjwPxZy5h+dQGRnLTtMFRyDHOc9HORlkf/xqjzeNfHJJubMFR1JQ== 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-SenderADCheck; bh=MS+FkUsgIf/3Vo37mXZnGehWgpCx7ldwaqQ+kBzetgw=; b=ZsxdRuX6IFpH6GsaggRfRlTqp8ZHQ4QB+O7KQZ8tKr5SFh8p9mTefhrWsAczMZjzerGfRqyM30NNL/0aIP0fEAkScFGlQkF/QHn3SXNtJojuSkcHsw3+xLZpjAiaiJvrL/ZePbTW1hZb4uOspk1v36cBrMjSxdPYZ6dG4Q5TE1EXrQ3XyCzE4ZeC+Sq7jECDMACTayQsnjjZDj0D+3HddFV6/635qHTPm97NFMC6F0zupl+dTjLTj9IX+QzTZfJZn1BGrDH0m3xxaJwlhI7ZMjp0YjndDRk+1MGajloYX2XYV5iCo6nSe0rq31dnVgzFb4aJY0rVmH7RwQa2iIBqZg== 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=none sp=none 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=MS+FkUsgIf/3Vo37mXZnGehWgpCx7ldwaqQ+kBzetgw=; b=tRwi25vZlyi8ZLH7Ihcnk+VwIQr3MY1oFXgZh8ZkURU3g5I5Qh9SOuBTCZJKNltPdD34vf6hAoiwehbEBuhO60npp4Clw08eLiAjYQXemZpprcL4Qevo3S/VGKJjHd0Lktt1Ha90XRi5ekCwfGVYvQoQdo637PIAMZ/+ZfrYlmjOrEboZx3pgJFJ2eTc+cb8lSd7RE7fg1o4ywKYYF3suh+kexTPHmbJdNhU4UapfuRQYZYgfNHfRbKeYoIw0f2H1/cXNFsk+TvrVkL3PzKKeKTRQkYNNhFt0pYM5Ibl3sVAPco4ovP4Jgj/W3KxWpOIBx0x+As2ooJN9uwRjsGjoA== Received: from DM5PR13CA0051.namprd13.prod.outlook.com (2603:10b6:3:117::13) by BN6PR12MB1443.namprd12.prod.outlook.com (2603:10b6:405:e::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4287.22; Mon, 5 Jul 2021 15:58:27 +0000 Received: from DM6NAM11FT035.eop-nam11.prod.protection.outlook.com (2603:10b6:3:117:cafe::e2) by DM5PR13CA0051.outlook.office365.com (2603:10b6:3:117::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4308.8 via Frontend Transport; Mon, 5 Jul 2021 15:58:27 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.112.34) smtp.mailfrom=nvidia.com; dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; 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 DM6NAM11FT035.mail.protection.outlook.com (10.13.172.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.4287.22 via Frontend Transport; Mon, 5 Jul 2021 15:58:27 +0000 Received: from nvidia.com (172.20.187.6) by HQMAIL107.nvidia.com (172.20.187.13) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Mon, 5 Jul 2021 15:58:25 +0000 From: Bing Zhao To: , CC: , , Date: Mon, 5 Jul 2021 18:57:54 +0300 Message-ID: <20210705155756.21443-5-bingz@nvidia.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20210705155756.21443-1-bingz@nvidia.com> References: <20210705155756.21443-1-bingz@nvidia.com> MIME-Version: 1.0 X-Originating-IP: [172.20.187.6] X-ClientProxiedBy: HQMAIL107.nvidia.com (172.20.187.13) To HQMAIL107.nvidia.com (172.20.187.13) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ae8fd7ff-df11-4570-894e-08d93fcdba4e X-MS-TrafficTypeDiagnostic: BN6PR12MB1443: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7691; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: xDs9JA3Nk52u/IbL7fg9SKh6G3lXgYmgjV/nhJD+TXWACFMpATEeWeOcTu+OPzeiSves41W5vlynZ/Y8qo0MvqKnkoBwAgdL1dbv2gLddaJ8+iDTN4mh3f5uGJAknYIxSXZcBRgSmCSWXjmcUQ84/qlLUs8LbH68TLW+tu5/uHMUc9yC1bpUUunfxjhMqQ56ej5WaUisUCDNmMXLOc7O1Z3EEIKQAlUjc8fOzYgFWOXOngmS7ZqmFUjb0vRiyr+ylgb/YS8o3qU/wyN00g3rOeiKe+TClZ+d2IeupY6GrOpoZbVDKNo8FjKW743TJ7cTdIiiG4fMPtnwg6ntc+EJ6VY5Oo+47vdrVsb1bNK0Vv6FEx9eVFmO4NUvmFLppH5RRXMUJ0BZ4Md5prFZSR6Xu9xVzJQyxIWNGDVfnYUf4boVULjrVbOhIVgu83Pa4i4C4eFtJNN5w80SGxSl9w7On///hVj4M3zQEBIZp6LMfAA/35pXD8SzJlhic2k6iesUpCAo+sClZluNR+6p+sL1UYmpOcBY+EnmzKl7LnG35Ze8QbueDfc02aXnY6HvhBF2YvPO+AC9qoPEM4izESQbh0jXr3hMaV2uvZJyKTCR1t5wQ0sRCcz6SUEDV8EzwCyEwGuVcI3742rkTcSgPF3i0HonCgn6niyG22zSsngpnhZjfwPIFmT3mKmNSCgMTxwpCl2mHeU7nBhnsOaT18NlGg== 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)(346002)(396003)(39860400002)(136003)(376002)(36840700001)(46966006)(16526019)(86362001)(186003)(36860700001)(54906003)(5660300002)(107886003)(83380400001)(478600001)(70586007)(6286002)(110136005)(7696005)(70206006)(82310400003)(26005)(6636002)(6666004)(316002)(4326008)(8676002)(2906002)(36756003)(2616005)(47076005)(336012)(426003)(55016002)(82740400003)(8936002)(356005)(36906005)(7636003)(1076003); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jul 2021 15:58:27.5131 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ae8fd7ff-df11-4570-894e-08d93fcdba4e 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: DM6NAM11FT035.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR12MB1443 Subject: [dpdk-dev] [PATCH 4/6] net/mlx5: added support for yellow policy rules 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 Sender: "dev" When creating a meter policy, both / either of the action rules for green and yellow colors may be provided. After validation, usually the actions are created before the meter is using by a flow rule. If there is action specified for the yellow color, the action rules should be created together with green color in the same time. The action of green / yellow color can be empty, then the default behavior is the jump action of the rule, just the same as that of the default policy. If the fate action of either one color is queue / RSS, all the actions rules will be created on the flow splitting stage instead of the policy adding stage. Signed-off-by: Bing Zhao --- drivers/net/mlx5/mlx5_flow_dv.c | 43 +++++++++++++++++++----------- drivers/net/mlx5/mlx5_flow_meter.c | 43 ++++++++++++++++++------------ 2 files changed, 53 insertions(+), 33 deletions(-) diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c index f53cf65e87..c606fa9471 100644 --- a/drivers/net/mlx5/mlx5_flow_dv.c +++ b/drivers/net/mlx5/mlx5_flow_dv.c @@ -14702,22 +14702,34 @@ __flow_dv_create_domain_policy_acts(struct rte_eth_dev *dev, sizeof(struct mlx5_modification_cmd) * (MLX5_MAX_MODIFY_NUM + 1)]; } mhdr_dummy; + struct mlx5_flow_mtr_mng *mtrmng = priv->sh->mtrmng; egress = (domain == MLX5_MTR_DOMAIN_EGRESS) ? 1 : 0; transfer = (domain == MLX5_MTR_DOMAIN_TRANSFER) ? 1 : 0; memset(&dh, 0, sizeof(struct mlx5_flow_handle)); memset(&dev_flow, 0, sizeof(struct mlx5_flow)); memset(&port_id_action, 0, - sizeof(struct mlx5_flow_dv_port_id_action_resource)); + sizeof(struct mlx5_flow_dv_port_id_action_resource)); dev_flow.handle = &dh; dev_flow.dv.port_id_action = &port_id_action; dev_flow.external = true; for (i = 0; i < RTE_COLORS; i++) { if (i < MLX5_MTR_RTE_COLORS) act_cnt = &mtr_policy->act_cnt[i]; - for (act = actions[i]; - act && act->type != RTE_FLOW_ACTION_TYPE_END; - act++) { + act = actions[i]; + /* No policy action, use default. */ + if (!act || act->type == RTE_FLOW_ACTION_TYPE_END) { + if (!mtrmng->def_policy[domain]) + return -rte_mtr_error_set(error, + ENOTSUP, + RTE_MTR_ERROR_TYPE_METER_POLICY, + NULL, + "Default policy not created."); + act_cnt->dr_jump_action[domain] = + mtrmng->def_policy[domain]->dr_jump_action[i]; + continue; + } + for (; act->type != RTE_FLOW_ACTION_TYPE_END; act++) { switch (act->type) { case RTE_FLOW_ACTION_TYPE_MARK: { @@ -14933,6 +14945,7 @@ __flow_dv_create_domain_policy_acts(struct rte_eth_dev *dev, action_flags |= MLX5_FLOW_ACTION_PORT_ID; break; } + /* G & Y can use the same table by default. */ case RTE_FLOW_ACTION_TYPE_JUMP: { uint32_t jump_group = 0; @@ -14947,7 +14960,7 @@ __flow_dv_create_domain_policy_acts(struct rte_eth_dev *dev, (1 << MLX5_SCALE_FLOW_GROUP_BIT), }; struct mlx5_flow_meter_sub_policy *sub_policy = - mtr_policy->sub_policys[domain][0]; + mtr_policy->sub_policys[domain][0]; if (i >= MLX5_MTR_RTE_COLORS) return -rte_mtr_error_set(error, @@ -15036,6 +15049,7 @@ flow_dv_create_mtr_policy_acts(struct rte_eth_dev *dev, ret = __flow_dv_create_domain_policy_acts(dev, mtr_policy, actions, (enum mlx5_meter_domain)i, error); + /* Rollback is done in mlx5 layer. */ if (ret) return ret; } @@ -15538,12 +15552,10 @@ __flow_dv_create_policy_acts_rules(struct rte_eth_dev *dev, for (i = 0; i < RTE_COLORS; i++) { acts[i].actions_n = 0; - if (i == RTE_COLOR_YELLOW) - continue; if (i == RTE_COLOR_RED) { /* Only support drop on red. */ acts[i].dv_actions[0] = - mtr_policy->dr_drop_action[domain]; + mtr_policy->dr_drop_action[domain]; acts[i].actions_n = 1; continue; } @@ -15555,13 +15567,12 @@ __flow_dv_create_policy_acts_rules(struct rte_eth_dev *dev, "mark action for policy."); return -1; } - acts[i].dv_actions[acts[i].actions_n] = - tag->action; + acts[i].dv_actions[acts[i].actions_n] = tag->action; acts[i].actions_n++; } if (mtr_policy->act_cnt[i].modify_hdr) { acts[i].dv_actions[acts[i].actions_n] = - mtr_policy->act_cnt[i].modify_hdr->action; + mtr_policy->act_cnt[i].modify_hdr->action; acts[i].actions_n++; } if (mtr_policy->act_cnt[i].fate_action) { @@ -15576,7 +15587,7 @@ __flow_dv_create_policy_acts_rules(struct rte_eth_dev *dev, return -1; } acts[i].dv_actions[acts[i].actions_n] = - port_action->action; + port_action->action; acts[i].actions_n++; break; case MLX5_FLOW_FATE_DROP: @@ -15588,15 +15599,15 @@ __flow_dv_create_policy_acts_rules(struct rte_eth_dev *dev, case MLX5_FLOW_FATE_SHARED_RSS: case MLX5_FLOW_FATE_QUEUE: hrxq = mlx5_ipool_get - (priv->sh->ipool[MLX5_IPOOL_HRXQ], - sub_policy->rix_hrxq[i]); + (priv->sh->ipool[MLX5_IPOOL_HRXQ], + sub_policy->rix_hrxq[i]); if (!hrxq) { DRV_LOG(ERR, "Failed to find " "queue action for policy."); return -1; } acts[i].dv_actions[acts[i].actions_n] = - hrxq->action; + hrxq->action; acts[i].actions_n++; break; default: @@ -15610,7 +15621,7 @@ __flow_dv_create_policy_acts_rules(struct rte_eth_dev *dev, if (__flow_dv_create_domain_policy_rules(dev, sub_policy, egress, transfer, false, acts)) { DRV_LOG(ERR, - "Failed to create policy rules per domain."); + "Failed to create policy rules per domain."); return -1; } return 0; diff --git a/drivers/net/mlx5/mlx5_flow_meter.c b/drivers/net/mlx5/mlx5_flow_meter.c index 68351db1ce..025b469a1d 100644 --- a/drivers/net/mlx5/mlx5_flow_meter.c +++ b/drivers/net/mlx5/mlx5_flow_meter.c @@ -644,21 +644,20 @@ mlx5_flow_meter_policy_add(struct rte_eth_dev *dev, if (!priv->mtr_en) return -rte_mtr_error_set(error, ENOTSUP, RTE_MTR_ERROR_TYPE_METER_POLICY, - NULL, "meter policy unsupported."); + NULL, "meter policy unsupported. "); if (policy_id == MLX5_INVALID_POLICY_ID) return -rte_mtr_error_set(error, ENOTSUP, - RTE_MTR_ERROR_TYPE_METER_POLICY_ID, NULL, - "policy ID is invalid. "); + RTE_MTR_ERROR_TYPE_METER_POLICY_ID, + NULL, "policy ID is invalid. "); if (policy_id == priv->sh->mtrmng->def_policy_id) return -rte_mtr_error_set(error, EEXIST, - RTE_MTR_ERROR_TYPE_METER_POLICY_ID, NULL, - "policy ID exists. "); - mtr_policy = mlx5_flow_meter_policy_find(dev, policy_id, - &policy_idx); + RTE_MTR_ERROR_TYPE_METER_POLICY_ID, + NULL, "default policy ID exists. "); + mtr_policy = mlx5_flow_meter_policy_find(dev, policy_id, &policy_idx); if (mtr_policy) return -rte_mtr_error_set(error, EEXIST, - RTE_MTR_ERROR_TYPE_METER_POLICY_ID, NULL, - "policy ID exists. "); + RTE_MTR_ERROR_TYPE_METER_POLICY_ID, + NULL, "policy ID exists. "); ret = mlx5_flow_validate_mtr_acts(dev, policy->actions, &attr, &is_rss, &domain_bitmap, &is_def_policy, error); @@ -666,8 +665,8 @@ mlx5_flow_meter_policy_add(struct rte_eth_dev *dev, return ret; if (!domain_bitmap) return -rte_mtr_error_set(error, ENOTSUP, - RTE_MTR_ERROR_TYPE_METER_POLICY, - NULL, "fail to find policy domain."); + RTE_MTR_ERROR_TYPE_METER_POLICY, + NULL, "fail to find policy domain."); if (is_def_policy) { if (priv->sh->mtrmng->def_policy_id != MLX5_INVALID_POLICY_ID) return -rte_mtr_error_set(error, EEXIST, @@ -689,16 +688,22 @@ mlx5_flow_meter_policy_add(struct rte_eth_dev *dev, for (i = 0; i < MLX5_MTR_DOMAIN_MAX; i++) { if (!(domain_bitmap & (1 << i))) continue; + /* + * If RSS is found, it means that only the ingress domain can + * be supported. It is invalid to support RSS for one color + * and egress / transfer domain actions for another. Drop and + * jump action should have no impact. + */ if (is_rss) { policy_size += - sizeof(struct mlx5_flow_meter_sub_policy *) * - MLX5_MTR_RSS_MAX_SUB_POLICY; + sizeof(struct mlx5_flow_meter_sub_policy *) * + MLX5_MTR_RSS_MAX_SUB_POLICY; break; } policy_size += sizeof(struct mlx5_flow_meter_sub_policy *); } mtr_policy = mlx5_malloc(MLX5_MEM_ZERO, policy_size, - RTE_CACHE_LINE_SIZE, SOCKET_ID_ANY); + RTE_CACHE_LINE_SIZE, SOCKET_ID_ANY); if (!mtr_policy) return -rte_mtr_error_set(error, ENOMEM, RTE_MTR_ERROR_TYPE_METER_POLICY, NULL, @@ -715,7 +720,7 @@ mlx5_flow_meter_policy_add(struct rte_eth_dev *dev, mtr_policy->transfer = 1; sub_policy = mlx5_ipool_zmalloc (priv->sh->ipool[MLX5_IPOOL_MTR_POLICY], - &sub_policy_idx); + &sub_policy_idx); if (!sub_policy) goto policy_add_err; if (sub_policy_idx > MLX5_MAX_SUB_POLICY_TBL_NUM) @@ -727,7 +732,7 @@ mlx5_flow_meter_policy_add(struct rte_eth_dev *dev, sub_policy->main_policy_id = 1; } mtr_policy->sub_policys[i] = - (struct mlx5_flow_meter_sub_policy **) + (struct mlx5_flow_meter_sub_policy **) ((uint8_t *)mtr_policy + policy_size); mtr_policy->sub_policys[i][0] = sub_policy; sub_policy_num = (mtr_policy->sub_policy_num >> @@ -743,13 +748,17 @@ mlx5_flow_meter_policy_add(struct rte_eth_dev *dev, mtr_policy->is_rss = 1; break; } - policy_size += sizeof(struct mlx5_flow_meter_sub_policy *); + policy_size += sizeof(struct mlx5_flow_meter_sub_policy *); } rte_spinlock_init(&mtr_policy->sl); ret = mlx5_flow_create_mtr_acts(dev, mtr_policy, policy->actions, error); if (ret) goto policy_add_err; + /* + * If either Green or Yellow has queue / RSS action, all the policy + * rules will be created later in the flow splitting stage. + */ if (!is_rss && !mtr_policy->is_queue) { /* Create policy rules in HW. */ ret = mlx5_flow_create_policy_rules(dev, mtr_policy); From patchwork Mon Jul 5 15:57:55 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bing Zhao X-Patchwork-Id: 95317 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 85697A0A0F; Mon, 5 Jul 2021 17:58:56 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 925D941211; Mon, 5 Jul 2021 17:58:33 +0200 (CEST) Received: from NAM04-MW2-obe.outbound.protection.outlook.com (mail-mw2nam08on2071.outbound.protection.outlook.com [40.107.101.71]) by mails.dpdk.org (Postfix) with ESMTP id 936994068C for ; Mon, 5 Jul 2021 17:58:31 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VMVYCCFklZjFJn9wqxARIRwAsOF1fqIoh4ntNorhGb35y7Y3lgNEh9mwjnRDUgobq9ebK5RcJeApJBEccEW9OEi3KULENeDxFtzlOaxIxKgTZQ6/+GTmfOmoud4ARoPemTRwTzVXSUoQu/yW1Fjk6IezBWK6C+hQVcwKhFteSvH4OIrNHmBoD5I2Lk4BI4VvleIf4UbBWNw4vGed28vrMWBbajNwozeL/oiJGUZ7g0GoVm5ESDsvuQawswC7PR65R8DRq8GoX7SXjTWuZGaMx/rxO/z5keI1WVI7y1vtwoly46g+Ks+u5XflX3zLKXA8jgomargw3b/4bmw2BaYzqg== 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-SenderADCheck; bh=YHgk9nqreeLDFlDBRiH1b/30Nh7N9lSkJCOZxRdI/fY=; b=caan3ORwSMLHLG15kAB4NfjHkl9lQTGwwnKCzCT/yFqGNXXa/F0GGyLkeWLBc9Ac7WkYH7H12tdxqatDwDp6NqaIQxSQrQOFfTQ0DHFsKIUXhL+c+DuCxZYFBUKcBS88Lf25R3eBMdpkp5adV/TQ9MI8r5/BREGlBxxQEt1R6jM3TEN9Z5Z8r74OaJz2ICnH4Sd0e7/u2Z35fGygEsZ5PqwkhjKwsrmxDHepZecvPVIU7yjLakK0SLe75Wl6fyPQKu+y8R8BoBI5/67PV22NjnGxZKy64VosUluA9jUJL5JDLzUbWMRRyJW0oaswKtNR0b3dk4u4bUOgL+HeEjLp9w== 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=none sp=none 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=YHgk9nqreeLDFlDBRiH1b/30Nh7N9lSkJCOZxRdI/fY=; b=IwaVP8AIwdco6HNEa88OfPsogTSDuE4zATfsBfUqn2BVR7auiaE7oi1+K/676ZkxQZo5zQ3Jz4PxcsrtJ+w2AJGc6ydsrw2TigLhavU5jp1XUpKBJxHAlI61tyDS9jOMl8BnEPUYrSRZHuDy+JijbtKF6mydSFgrK5toMEX+hTLLp3AMoVO6cIsANIAKhuVVTSvOfvndig3LpXEiRc3edNv8dykPFeFUk5qx83VI1zh71sdF+A8rlTDnWtj+MZPqjRMPHq09QanhsmLl5N3ARoXKItskJswOmCrAdYp9slxItGX6f48k/e0r/A8B2nVz7lSCTlaO270uKm+eTNCxig== Received: from DM5PR15CA0027.namprd15.prod.outlook.com (2603:10b6:4:4b::13) by DM6PR12MB3353.namprd12.prod.outlook.com (2603:10b6:5:3d::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4287.31; Mon, 5 Jul 2021 15:58:29 +0000 Received: from DM6NAM11FT004.eop-nam11.prod.protection.outlook.com (2603:10b6:4:4b:cafe::61) by DM5PR15CA0027.outlook.office365.com (2603:10b6:4:4b::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4287.22 via Frontend Transport; Mon, 5 Jul 2021 15:58:29 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.112.34) smtp.mailfrom=nvidia.com; dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; 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 DM6NAM11FT004.mail.protection.outlook.com (10.13.172.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.4287.22 via Frontend Transport; Mon, 5 Jul 2021 15:58:29 +0000 Received: from nvidia.com (172.20.187.6) by HQMAIL107.nvidia.com (172.20.187.13) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Mon, 5 Jul 2021 15:58:27 +0000 From: Bing Zhao To: , CC: , , Date: Mon, 5 Jul 2021 18:57:55 +0300 Message-ID: <20210705155756.21443-6-bingz@nvidia.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20210705155756.21443-1-bingz@nvidia.com> References: <20210705155756.21443-1-bingz@nvidia.com> MIME-Version: 1.0 X-Originating-IP: [172.20.187.6] X-ClientProxiedBy: HQMAIL107.nvidia.com (172.20.187.13) To HQMAIL107.nvidia.com (172.20.187.13) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 0f6c2bb3-d37f-4f5a-f9b9-08d93fcdbb7e X-MS-TrafficTypeDiagnostic: DM6PR12MB3353: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:4303; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: AAwvftQheZNfmpR9tEsfQaXVAQs2Ue3m/Wc4O/51YIe9Ijl/hb3F8dlIv2TMUnXIAwGbFeqsYUK2zuX/11q9a1q6W/0XlSe9eDvKxjzjmYftpRwvvQ8dqYJtnyAP+AQEaTW/N+Pe4jZZ7539tdpGTAiE1KpzThbehVf58TRzu/F4IMk2Zv3bnTuVAG6VCovCmGBezk76o5ntvs9ANi2smtQIt7lq1QQarQuUODZKIVqomI71WpxzHlGIM0n5ubbF/OM1+BDDtXH1uJ2+cHCHGGfGn/SuAHIgnaP248JkpxtetfSzrx71KZZO00P2oNwOuQrDAnzAcZiT2lbxHPWRZ9vfkqA/Gez52zrM/gc34qcT6GBV2ilMguz+oMDzOYHqdSi/UtfQD5bLUpsJmRfle6mrelBZM/GqCtM24gqwgNtVmjD9jymdxhnJGno0CZJXcTxEMb0d0Zw8f04tKC1FzJpl1GQkHgDK2VYY04mS8QgQjbWN4U4UPMNme4t8W8XhGsoU4sM00TDclbQQxLux8a4Ad67aoF0OfxjqJIniiXgKqc4c1+yhRe1qhgUJ4j3B3fwKpzlzUeBa+cLw4IxFEHbSVLt3hrvoYWIaGGeTEMMJM+bfukAKmmC9/oiLUst092SSOI5OCDkjBkKys4p21BnjC9WS3b4af6W24TXl0Ux+kPaDH4sfw44iyHngptFZcGDerc41ZPyrqGAgPyWq5g== 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)(376002)(396003)(346002)(39860400002)(136003)(46966006)(36840700001)(82740400003)(16526019)(8936002)(36756003)(186003)(107886003)(6286002)(6636002)(7696005)(478600001)(2616005)(6666004)(426003)(8676002)(36860700001)(5660300002)(336012)(26005)(70206006)(70586007)(83380400001)(1076003)(2906002)(54906003)(4326008)(36906005)(86362001)(55016002)(316002)(47076005)(7636003)(110136005)(356005)(82310400003); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jul 2021 15:58:29.5112 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0f6c2bb3-d37f-4f5a-f9b9-08d93fcdbb7e 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: DM6NAM11FT004.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB3353 Subject: [dpdk-dev] [PATCH 5/6] net/mlx5: split policies handling of colors 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 Sender: "dev" If the fate action is either RSS or Queue of a meter policy, the action will only be created in the flow splitting stage. With queue as the fate action, only one sub-policy is needed. And RSS will have more than one sub-policies if there is an expansion. Since the RSS parameters are the same for both green and yellow colors except the queues, the expansion result will be unique. Even if only one color has the RSS action, the checking and possible expansion will be done then. For each sub-policy, the action rules need to be created separately on its own policy table. Signed-off-by: Bing Zhao --- drivers/net/mlx5/mlx5_flow.c | 37 +++++++++++--------- drivers/net/mlx5/mlx5_flow_dv.c | 61 +++++++++++++++++---------------- 2 files changed, 51 insertions(+), 47 deletions(-) diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c index 61c72da2aa..89056ec45e 100644 --- a/drivers/net/mlx5/mlx5_flow.c +++ b/drivers/net/mlx5/mlx5_flow.c @@ -4604,7 +4604,7 @@ get_meter_sub_policy(struct rte_eth_dev *dev, uint32_t i; MLX5_ASSERT(wks); - /** + /* * This is a tmp dev_flow, * no need to register any matcher for it in translate. */ @@ -4612,18 +4612,19 @@ get_meter_sub_policy(struct rte_eth_dev *dev, for (i = 0; i < MLX5_MTR_RTE_COLORS; i++) { struct mlx5_flow dev_flow = {0}; struct mlx5_flow_handle dev_handle = { {0} }; + uint8_t fate = policy->act_cnt[i].fate_action; - if (policy->is_rss) { + if (fate == MLX5_FLOW_FATE_SHARED_RSS) { const void *rss_act = policy->act_cnt[i].rss->conf; struct rte_flow_action rss_actions[2] = { [0] = { .type = RTE_FLOW_ACTION_TYPE_RSS, - .conf = rss_act + .conf = rss_act, }, [1] = { .type = RTE_FLOW_ACTION_TYPE_END, - .conf = NULL + .conf = NULL, } }; @@ -4650,7 +4651,8 @@ get_meter_sub_policy(struct rte_eth_dev *dev, rss_desc_v[i].tunnel = !!(dev_flow.handle->layers & MLX5_FLOW_LAYER_TUNNEL); - } else { + rss_desc[i] = &rss_desc_v[i]; + } else if (fate == MLX5_FLOW_FATE_QUEUE) { /* This is queue action. */ rss_desc_v[i] = wks->rss_desc; rss_desc_v[i].key_len = 0; @@ -4658,24 +4660,24 @@ get_meter_sub_policy(struct rte_eth_dev *dev, rss_desc_v[i].queue = &policy->act_cnt[i].queue; rss_desc_v[i].queue_num = 1; + rss_desc[i] = &rss_desc_v[i]; + } else { + rss_desc[i] = NULL; } - rss_desc[i] = &rss_desc_v[i]; } sub_policy = flow_drv_meter_sub_policy_rss_prepare(dev, flow, policy, rss_desc); } else { enum mlx5_meter_domain mtr_domain = attr->transfer ? MLX5_MTR_DOMAIN_TRANSFER : - attr->egress ? MLX5_MTR_DOMAIN_EGRESS : - MLX5_MTR_DOMAIN_INGRESS; + (attr->egress ? MLX5_MTR_DOMAIN_EGRESS : + MLX5_MTR_DOMAIN_INGRESS); sub_policy = policy->sub_policys[mtr_domain][0]; } - if (!sub_policy) { + if (!sub_policy) rte_flow_error_set(error, EINVAL, - RTE_FLOW_ERROR_TYPE_UNSPECIFIED, NULL, - "Failed to get meter sub-policy."); - goto exit; - } + RTE_FLOW_ERROR_TYPE_UNSPECIFIED, NULL, + "Failed to get meter sub-policy."); exit: return sub_policy; } @@ -4810,6 +4812,7 @@ flow_meter_split_prep(struct rte_eth_dev *dev, struct mlx5_flow_meter_sub_policy *sub_policy; struct mlx5_flow_tbl_data_entry *tbl_data; + /* Either G or Y can still use default policy. */ if (!fm->def_policy) { sub_policy = get_meter_sub_policy(dev, flow, fm->policy_id, attr, @@ -4819,8 +4822,8 @@ flow_meter_split_prep(struct rte_eth_dev *dev, } else { enum mlx5_meter_domain mtr_domain = attr->transfer ? MLX5_MTR_DOMAIN_TRANSFER : - attr->egress ? MLX5_MTR_DOMAIN_EGRESS : - MLX5_MTR_DOMAIN_INGRESS; + (attr->egress ? MLX5_MTR_DOMAIN_EGRESS : + MLX5_MTR_DOMAIN_INGRESS); sub_policy = &priv->sh->mtrmng->def_policy[mtr_domain]->sub_policy; @@ -4836,8 +4839,8 @@ flow_meter_split_prep(struct rte_eth_dev *dev, actions_pre++; if (!tag_action) return rte_flow_error_set(error, ENOMEM, - RTE_FLOW_ERROR_TYPE_UNSPECIFIED, NULL, - "No tag action space."); + RTE_FLOW_ERROR_TYPE_UNSPECIFIED, + NULL, "No tag action space."); if (!mtr_flow_id) { tag_action->type = RTE_FLOW_ACTION_TYPE_VOID; goto exit; diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c index c606fa9471..0f62537938 100644 --- a/drivers/net/mlx5/mlx5_flow_dv.c +++ b/drivers/net/mlx5/mlx5_flow_dv.c @@ -14550,7 +14550,7 @@ __flow_dv_destroy_sub_policy_rules(struct rte_eth_dev *dev, } if (sub_policy->color_matcher[i]) { tbl = container_of(sub_policy->color_matcher[i]->tbl, - typeof(*tbl), tbl); + typeof(*tbl), tbl); mlx5_cache_unregister(&tbl->matchers, &sub_policy->color_matcher[i]->entry); sub_policy->color_matcher[i] = NULL; @@ -14563,13 +14563,13 @@ __flow_dv_destroy_sub_policy_rules(struct rte_eth_dev *dev, } if (sub_policy->jump_tbl[i]) { flow_dv_tbl_resource_release(MLX5_SH(dev), - sub_policy->jump_tbl[i]); + sub_policy->jump_tbl[i]); sub_policy->jump_tbl[i] = NULL; } } if (sub_policy->tbl_rsc) { flow_dv_tbl_resource_release(MLX5_SH(dev), - sub_policy->tbl_rsc); + sub_policy->tbl_rsc); sub_policy->tbl_rsc = NULL; } } @@ -14586,7 +14586,7 @@ __flow_dv_destroy_sub_policy_rules(struct rte_eth_dev *dev, */ static void flow_dv_destroy_policy_rules(struct rte_eth_dev *dev, - struct mlx5_flow_meter_policy *mtr_policy) + struct mlx5_flow_meter_policy *mtr_policy) { uint32_t i, j; struct mlx5_flow_meter_sub_policy *sub_policy; @@ -14599,8 +14599,8 @@ flow_dv_destroy_policy_rules(struct rte_eth_dev *dev, for (j = 0; j < sub_policy_num; j++) { sub_policy = mtr_policy->sub_policys[i][j]; if (sub_policy) - __flow_dv_destroy_sub_policy_rules - (dev, sub_policy); + __flow_dv_destroy_sub_policy_rules(dev, + sub_policy); } } } @@ -15550,6 +15550,7 @@ __flow_dv_create_policy_acts_rules(struct rte_eth_dev *dev, uint8_t egress, transfer; int i; + /* If RSS or Queue, no previous actions / rules is created. */ for (i = 0; i < RTE_COLORS; i++) { acts[i].actions_n = 0; if (i == RTE_COLOR_RED) { @@ -15994,36 +15995,35 @@ flow_dv_meter_sub_policy_rss_prepare(struct rte_eth_dev *dev, sub_policy_num = (mtr_policy->sub_policy_num >> (MLX5_MTR_SUB_POLICY_NUM_SHIFT * domain)) & MLX5_MTR_SUB_POLICY_NUM_MASK; - for (i = 0; i < sub_policy_num; - i++) { - for (j = 0; j < MLX5_MTR_RTE_COLORS; j++) { - if (rss_desc[j] && - hrxq_idx[j] != - mtr_policy->sub_policys[domain][i]->rix_hrxq[j]) + for (j = 0; j < sub_policy_num; j++) { + for (i = 0; i < MLX5_MTR_RTE_COLORS; i++) { + if (rss_desc[i] && + hrxq_idx[i] != + mtr_policy->sub_policys[domain][j]->rix_hrxq[i]) break; } - if (j >= MLX5_MTR_RTE_COLORS) { + if (i >= MLX5_MTR_RTE_COLORS) { /* * Found the sub policy table with - * the same queue per color + * the same queue per color. */ rte_spinlock_unlock(&mtr_policy->sl); - for (j = 0; j < MLX5_MTR_RTE_COLORS; j++) - mlx5_hrxq_release(dev, hrxq_idx[j]); - return mtr_policy->sub_policys[domain][i]; + for (i = 0; i < MLX5_MTR_RTE_COLORS; i++) + mlx5_hrxq_release(dev, hrxq_idx[i]); + return mtr_policy->sub_policys[domain][j]; } } /* Create sub policy. */ if (!mtr_policy->sub_policys[domain][0]->rix_hrxq[0]) { - /* Reuse the first dummy sub_policy*/ + /* Reuse the first dummy sub_policy. */ sub_policy = mtr_policy->sub_policys[domain][0]; sub_policy_idx = sub_policy->idx; } else { sub_policy = mlx5_ipool_zmalloc (priv->sh->ipool[MLX5_IPOOL_MTR_POLICY], - &sub_policy_idx); + &sub_policy_idx); if (!sub_policy || - sub_policy_idx > MLX5_MAX_SUB_POLICY_TBL_NUM) { + sub_policy_idx > MLX5_MAX_SUB_POLICY_TBL_NUM) { for (i = 0; i < MLX5_MTR_RTE_COLORS; i++) mlx5_hrxq_release(dev, hrxq_idx[i]); goto rss_sub_policy_error; @@ -16040,9 +16040,9 @@ flow_dv_meter_sub_policy_rss_prepare(struct rte_eth_dev *dev, * RSS action to Queue action. */ hrxq = mlx5_ipool_get(priv->sh->ipool[MLX5_IPOOL_HRXQ], - hrxq_idx[i]); + hrxq_idx[i]); if (!hrxq) { - DRV_LOG(ERR, "Failed to create policy hrxq"); + DRV_LOG(ERR, "Failed to get policy hrxq."); goto rss_sub_policy_error; } act_cnt = &mtr_policy->act_cnt[i]; @@ -16056,19 +16056,21 @@ flow_dv_meter_sub_policy_rss_prepare(struct rte_eth_dev *dev, } } if (__flow_dv_create_policy_acts_rules(dev, mtr_policy, - sub_policy, domain)) { + sub_policy, domain)) { DRV_LOG(ERR, "Failed to create policy " - "rules per domain."); + "rules for ingress domain."); goto rss_sub_policy_error; } if (sub_policy != mtr_policy->sub_policys[domain][0]) { i = (mtr_policy->sub_policy_num >> (MLX5_MTR_SUB_POLICY_NUM_SHIFT * domain)) & MLX5_MTR_SUB_POLICY_NUM_MASK; + if (i >= MLX5_MTR_RSS_MAX_SUB_POLICY) { + DRV_LOG(ERR, "No free sub-policy slot."); + goto rss_sub_policy_error; + } mtr_policy->sub_policys[domain][i] = sub_policy; i++; - if (i > MLX5_MTR_RSS_MAX_SUB_POLICY) - goto rss_sub_policy_error; mtr_policy->sub_policy_num &= ~(MLX5_MTR_SUB_POLICY_NUM_MASK << (MLX5_MTR_SUB_POLICY_NUM_SHIFT * domain)); mtr_policy->sub_policy_num |= @@ -16085,8 +16087,7 @@ flow_dv_meter_sub_policy_rss_prepare(struct rte_eth_dev *dev, (MLX5_MTR_SUB_POLICY_NUM_SHIFT * domain)) & MLX5_MTR_SUB_POLICY_NUM_MASK; mtr_policy->sub_policys[domain][i] = NULL; - mlx5_ipool_free - (priv->sh->ipool[MLX5_IPOOL_MTR_POLICY], + mlx5_ipool_free(priv->sh->ipool[MLX5_IPOOL_MTR_POLICY], sub_policy->idx); } } @@ -16108,7 +16109,7 @@ flow_dv_meter_sub_policy_rss_prepare(struct rte_eth_dev *dev, */ static void flow_dv_destroy_sub_policy_with_rxq(struct rte_eth_dev *dev, - struct mlx5_flow_meter_policy *mtr_policy) + struct mlx5_flow_meter_policy *mtr_policy) { struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_flow_meter_sub_policy *sub_policy = NULL; @@ -16154,7 +16155,7 @@ flow_dv_destroy_sub_policy_with_rxq(struct rte_eth_dev *dev, case MLX5_FLOW_FATE_QUEUE: sub_policy = mtr_policy->sub_policys[domain][0]; __flow_dv_destroy_sub_policy_rules(dev, - sub_policy); + sub_policy); break; default: /*Other actions without queue and do nothing*/ From patchwork Mon Jul 5 15:57:56 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bing Zhao X-Patchwork-Id: 95318 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 86C19A0A0F; Mon, 5 Jul 2021 17:59:04 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 5983C4121F; Mon, 5 Jul 2021 17:58:35 +0200 (CEST) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2058.outbound.protection.outlook.com [40.107.244.58]) by mails.dpdk.org (Postfix) with ESMTP id 414604068C for ; Mon, 5 Jul 2021 17:58:33 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nz6bpmuw8bYuxu4RpupKDTvH7Q7zD4nWKEpp6wa9tIncJZjyxcDvmQCynj53odP+NXWDWWFLxc5Ot1hR+iQQwEbxCmslpnq6WzGEJCc3PdS9NqmAzu5n5hAfMDYkIvN4KXawiSW1Ykm8U8vZeEsnf01GNiYGbn82k9RPgTGI3mO7ttLrDLwLfhkjUsXxmvLvwihX8otXXygmQEw56J3Ws+QxsPgRzx1+TpwUKK8SLr4Q08FT4Tb6Q6ite3vtvwM2Gb/WUlZ6fmrLxkfhbr67nxoGk+BM2WZQE6hO5/XUiml4OoFJfLSm651MuXrOxD2IBm053SlvWjAagRs7A87Xpw== 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-SenderADCheck; bh=/U+lvpe8dswm15XX3qFT4yG+sB9ZhLJLRqhQJbTSlHQ=; b=GiHQxjB1BezkRQo5xVj4Ypp5bVMVAuHsd9RYNqdb/RV86Ut1tIw39Q3QgGVQHXIH9h05bhTnAW8SR8AqdCDbFMjpQKKACmdtikbc1oyqjQYGoI57iL2QaPdcKsVP7V6SylmGwM81W1+CCDsvjqqaknqxrQM9KrpBPWR0NP4B1Xgo6hLedJkhPWlMGNZ6vZM6PF+bHQH7B3aS3XU3BC5onDGhwuifMzI4zyQjvbjkebpFANl/yp0pukxhZ9q8RAz/3NRDKYfHwR2NmbwDiTgdhVO0GDAUYBU1AhHEZw1HzgdxZ1iuIu5una3VXf9QtyS1AsGL3MPoWdBK8/j6IBHqCg== 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=none sp=none 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=/U+lvpe8dswm15XX3qFT4yG+sB9ZhLJLRqhQJbTSlHQ=; b=OGO5PdFOtMBuYkFgxS+8hNmOND6psfaxOFy+3H1xnyvQ7rxFvGSKCE4IUy3NpA7UIanmbCPjI7C8sSJBB2WoUqAPn2eiKA2/MvDnockvk3oiZbOekk9Jjm1H6D2jFxrSvF0YLtch4ifp54S8K+6rfUOthAUT9RjI1ELIEpjb4D/jX/UJY2TYx3EkY4AgfaidXs0cNNt7nKRhNiBxG7KyT7a1OZ/2nW9Cob0d9hI0sUXfC9kTyHoZgVlAOVhZBav1TNqN1HT7QLF8/LFtbtgMbISKtTKkErL0uP67IPfWUBnpzYAgK2hm7yIKQTLsT2KKkclRiIyWUgvwvMua3lnaFQ== Received: from DS7PR03CA0088.namprd03.prod.outlook.com (2603:10b6:5:3bb::33) by DM6PR12MB3756.namprd12.prod.outlook.com (2603:10b6:5:1c3::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4287.23; Mon, 5 Jul 2021 15:58:31 +0000 Received: from DM6NAM11FT011.eop-nam11.prod.protection.outlook.com (2603:10b6:5:3bb:cafe::9e) by DS7PR03CA0088.outlook.office365.com (2603:10b6:5:3bb::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4287.22 via Frontend Transport; Mon, 5 Jul 2021 15:58:31 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.112.34) smtp.mailfrom=nvidia.com; dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; 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 DM6NAM11FT011.mail.protection.outlook.com (10.13.172.108) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.4287.22 via Frontend Transport; Mon, 5 Jul 2021 15:58:31 +0000 Received: from nvidia.com (172.20.187.6) by HQMAIL107.nvidia.com (172.20.187.13) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Mon, 5 Jul 2021 15:58:29 +0000 From: Bing Zhao To: , CC: , , Date: Mon, 5 Jul 2021 18:57:56 +0300 Message-ID: <20210705155756.21443-7-bingz@nvidia.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20210705155756.21443-1-bingz@nvidia.com> References: <20210705155756.21443-1-bingz@nvidia.com> MIME-Version: 1.0 X-Originating-IP: [172.20.187.6] X-ClientProxiedBy: HQMAIL107.nvidia.com (172.20.187.13) To HQMAIL107.nvidia.com (172.20.187.13) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 2a1fb6e5-fe2f-4394-006b-08d93fcdbc87 X-MS-TrafficTypeDiagnostic: DM6PR12MB3756: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:5797; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: D8JOwJG/xda92lP91eqXxMEZx5+aHhLHznMcDxNnHPFfKsqnUyz6wIIePMXWGiNhhP3FPBqYROa8vWWo7pR8rlbj52K9XSGTTSHpgRgY3Sa5saMrPDZdvKLhn6mouUPFt9JTx7eFGdBeY+dHVayMNb8cMW0q6y770KB7LRdgN2HbmR4azO+UZXhn36YFZJxGKUWER3CPvVZZ8vHZin3a+JTuoe8uTTADPTqT7TSdls4hp5I/XwT/NUJc9eNO5aOcYTQIdaL70XKUBLpqTFDHnA71W/VYsha16iWvg8A2+amDcZEThqdQrBHTO4jAnBvtaJMXFfm7+zWNGtX2bN6UiluWBrvkKrV2EJGYc2pw3BFNtsSwta+prL9OT7fCPzpbyoDboolXIfP72hl5p2h/9L5JN2EM4bAoW7YUdvxiu6ivVk83OwRt6BqCx0/PW9sch9cynhLn+1I1mWtjLWVAD/cV9ikq/1UHOQHL7MPR86a52G48+OfrqFqkdLexexjuIjtc53iQpq5QYtvatZvTU5hz47i63BVmPzheL6673ULZnBLioXK3ooivoFaI9MjR/zA6g3wk3sX+o9LwbjGpaigBgvgg7QQCIwvPc4dw6c6rYGTNpLxWPpFIJ7Vr2Aj9eDHZilqUUrGUJNcqEnamXn8BREzQaj9P1AIUDSGj9JMfu5mxNunwgtTe1LoZeSbDUPxuI/eGMjc3LvinCGr7Bg== 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)(39860400002)(346002)(396003)(376002)(136003)(36840700001)(46966006)(55016002)(54906003)(110136005)(5660300002)(36906005)(6636002)(86362001)(15650500001)(8936002)(426003)(107886003)(4744005)(7636003)(2616005)(356005)(83380400001)(4326008)(26005)(8676002)(336012)(316002)(7696005)(478600001)(82740400003)(70206006)(70586007)(47076005)(6666004)(6286002)(1076003)(2906002)(16526019)(82310400003)(36756003)(186003)(36860700001); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jul 2021 15:58:31.2316 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2a1fb6e5-fe2f-4394-006b-08d93fcdbc87 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: DM6NAM11FT011.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB3756 Subject: [dpdk-dev] [PATCH 6/6] doc: update mlx5 metering policy part 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 Sender: "dev" Added support for yellow color. Signed-off-by: Bing Zhao --- doc/guides/rel_notes/release_21_08.rst | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/guides/rel_notes/release_21_08.rst b/doc/guides/rel_notes/release_21_08.rst index a6ecfdf3ce..93566a8500 100644 --- a/doc/guides/rel_notes/release_21_08.rst +++ b/doc/guides/rel_notes/release_21_08.rst @@ -55,6 +55,11 @@ New Features Also, make sure to start the actual text at the margin. ======================================================= +* **Updated Mellanox mlx5 driver.** + + Updated the Mellanox mlx5 driver with new features and improvements, including: + + * Added support for metering policy actions of yellow color. Removed Items -------------