From patchwork Sun Aug 30 11:15:32 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wisam Jaddo X-Patchwork-Id: 76151 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id B80C6A04AB; Sun, 30 Aug 2020 13:16:57 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 0A33A1C07D; Sun, 30 Aug 2020 13:16:26 +0200 (CEST) Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-eopbgr50064.outbound.protection.outlook.com [40.107.5.64]) by dpdk.org (Postfix) with ESMTP id ADBF91DBD for ; Sun, 30 Aug 2020 13:16:23 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VSDLXlTF9W9hoX1BjetM51uBNiROqeYJU+xqxFnSzkOzuvNaJ0khVdxSoQ0oJaC4L9EuuTuPpq1A1Sm5jA4/tXDjR8AYj/B3idLY7/GrtyraDfG1++IWOUQCbIquwAHLil+IjwyV/MJft2L3GvhPaxa8tzPO8bU9iqmOaAV0SxarUMt71CevuQ5eEwxBsfVdA6kn3R0TvDefi7Tmr22XLF7mKXlj+/RCy9PyoAbjr3cOlRMd1XOrbwuzTfGJGIV7sj+PSeuuueS386S5DS6GExDIuGHtvxCPNN8Un4/NZLQpjVYlC5/PKFiNOCPgUE9t9cM5LNLWR2JMMFwm8hxKkQ== 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=X6xJRqiHeMWabt5AehsD3v62IHdv3k/Zgra2VgJRj3E=; b=Xi4O8CAt7UjXL0858RYGAPX0GlNssotngtAlD87bKpwQQkz5XxN0FaIdD3DymO1k4SgSzxpIHzLPdsHGmO/GkKdwLPKYkVlpJePmSsutetGQRIGIOj/DYv82RhuRQ0hrIsgx+r7CAix3SNbQQPhEXPLNxBiv+6zIgLMFOpoTotkhUtNI3MpNgKn8RXf3cdnBhkUw7J45TN1IXiaAATz8A/0WBuBY1tazjtPb83u+SKBpxJ5oQ1kmCtQeDbAFhrcdc5S2jyEaXC+iEm6mLgbpAzKq1utnIifvADCgownXIqRvDQMHR266hICmQH0EtF3FTrVv5EzWMshsro+B3pQHQQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=X6xJRqiHeMWabt5AehsD3v62IHdv3k/Zgra2VgJRj3E=; b=k0CNy6yardHc1dep63J4/7ulxdj/MPOXUjE7UnBp8UzV53J/zdLa0hQ6v8U5ISC0B9FyvIkbDq1FJ8JgdG+0PIgg9dTXy2ZiGofh6gFT2hJ6q6LIqItjfjnqJ/cfzC0J2ZDU9SxCKSOJjL+zRon/wH/VFTcMip/OlFYjzsrtyz4= Authentication-Results: dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=none action=none header.from=mellanox.com; Received: from AM0PR05MB6610.eurprd05.prod.outlook.com (2603:10a6:208:12f::18) by AM0PR0502MB3762.eurprd05.prod.outlook.com (2603:10a6:208:1b::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3326.21; Sun, 30 Aug 2020 11:16:22 +0000 Received: from AM0PR05MB6610.eurprd05.prod.outlook.com ([fe80::4c8a:9848:2e2a:3598]) by AM0PR05MB6610.eurprd05.prod.outlook.com ([fe80::4c8a:9848:2e2a:3598%6]) with mapi id 15.20.3326.025; Sun, 30 Aug 2020 11:16:22 +0000 From: Wisam Jaddo To: dev@dpdk.org, thomas@monjalon.net, asafp@mellanox.com, akozyrev@nvidia.com, akozyrev@mellanox.com, arybchenko@solarflare.com, jackmin@mellanox.com Cc: wisamm@mellanox.com Date: Sun, 30 Aug 2020 11:15:32 +0000 Message-Id: <20200830111544.4190-2-wisamm@mellanox.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200830111544.4190-1-wisamm@mellanox.com> References: <20200830111544.4190-1-wisamm@mellanox.com> X-ClientProxiedBy: AM4PR05CA0008.eurprd05.prod.outlook.com (2603:10a6:205::21) To AM0PR05MB6610.eurprd05.prod.outlook.com (2603:10a6:208:12f::18) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from mellanox.com (37.142.13.130) by AM4PR05CA0008.eurprd05.prod.outlook.com (2603:10a6:205::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3326.19 via Frontend Transport; Sun, 30 Aug 2020 11:16:21 +0000 X-Mailer: git-send-email 2.17.1 X-Originating-IP: [37.142.13.130] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 7939c026-bc69-421b-0458-08d84cd62048 X-MS-TrafficTypeDiagnostic: AM0PR0502MB3762: X-LD-Processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtFwd,ExtAddr X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:296; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: rKYPAsDZprTIcSISpfNMrr5an7XTlxSN66vMvtWCaWrspAGOOhHF+6BzoC4SCFVke4Dn0KEZQdjo4oJ6ceWh0uSQSWlC8J+6JAfnmlL73B87OmFPo+63O0kLVGeKLOC1ErHu7MEVsrGoCYzCuGMaNeESC93d6kwDpu1rExQgxvEDl7MpbtkUek64Mzcz/07XRYUuuAFe2wqbtJVYeY9SLVeK525hGX2GdBTd0kGICYw7jrECENLyO44tSO8RadsogCmPM8CHQXgnvN1BFymN9/y8xrXIr8r03uhxOVxev7h4hi7x7ONd+jFrMIrsy8Us X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0PR05MB6610.eurprd05.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(396003)(136003)(39860400002)(376002)(346002)(478600001)(107886003)(316002)(5660300002)(8886007)(2906002)(6636002)(4326008)(86362001)(36756003)(6666004)(1076003)(55016002)(8936002)(26005)(2616005)(7696005)(66946007)(66556008)(52116002)(83380400001)(16526019)(8676002)(186003)(956004)(66476007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: DHE3vBna/RdVW5fkmvXLaYi4tOgs2sLFRNHAHDAB3a163BGEh5jL6ggWEmVXMS3MJw+L5K/O02+vkZ0Bxm4w4kqUYXPJWdq0ZHcHM5e3qIrJApL1pKu/VHiqTq4tRh1bQ5YNKx4UVH7/zd+Q0QPdXXuyNbhk7LWgOI/L1mCCI+HwkjXX7QqcRSgJ/Uu5vSSSJStDTBD8wxq6VU+MY+n4eBeMQkp+1QFK6Os4gEONqDsISCmbI9Zh9HLHdGptPVYfSR5lVookWR5olQcfqMckjcE6tFGHeiqw2mx6MtqSEM5PPBqzI9C17at6IHXE7lEVlPNZxtoK32u00IiF8y89i/p6xCcJTDlmuy8H3LhwBpLA749QDo/vBtbGc8E6ZEil4ykP748+uo/K+lWWtWKOTIsXAzklSo/cfPxwzBLHYdzAXdnE6wfvp0GkaR9ufwSN6XI1BSrELRQMwK9l0jl/IfYzGeMZhQDcDXUZXqziNC/t3ExEbqosQrm5xDOJa9VGM7CFPKPl2gWuKDAXi+1mGQa0eUIkLUq6LzDJ6eRqjv3ehMQAm/9h5Am0Sz6vj+0BtQq3yTQDDxJ9KqIG87FYNgI6ocWwcsiA7gpuB9YVWhmIaoFhoZQOpiJC6Y0f3bXk3Oh85gpxGqbMBGCbf4O4wQ== X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7939c026-bc69-421b-0458-08d84cd62048 X-MS-Exchange-CrossTenant-AuthSource: AM0PR05MB6610.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Aug 2020 11:16:22.3686 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: lX7qVgr8aOdnPwii90d/8w5lh979HiSW89ygtWDOpmBWTRbOsqaZfWCtwW/giUKOswT/ve+4UaBVtJ4xGrQrGQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR0502MB3762 Subject: [dpdk-dev] [PATCH 01/13] app/flow-perf: fix actions mask macro usage X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 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" Actions have it's own macro which is FLOW_ACTION_MASK Fixes: bf3688f1e816 ("app/flow-perf: add insertion rate calculation") Cc: wisamm@mellanox.com Signed-off-by: Wisam Jaddo Acked-by: Alexander Kozyrev --- app/test-flow-perf/actions_gen.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/app/test-flow-perf/actions_gen.c b/app/test-flow-perf/actions_gen.c index 864d0c9786..cb9316f1df 100644 --- a/app/test-flow-perf/actions_gen.c +++ b/app/test-flow-perf/actions_gen.c @@ -219,39 +219,39 @@ fill_actions(struct rte_flow_action *actions, uint64_t flow_actions, ); } flows_actions[] = { { - .mask = FLOW_ITEM_MASK(RTE_FLOW_ACTION_TYPE_MARK), + .mask = FLOW_ACTION_MASK(RTE_FLOW_ACTION_TYPE_MARK), .funct = add_mark, }, { - .mask = FLOW_ITEM_MASK(RTE_FLOW_ACTION_TYPE_COUNT), + .mask = FLOW_ACTION_MASK(RTE_FLOW_ACTION_TYPE_COUNT), .funct = add_count, }, { - .mask = FLOW_ITEM_MASK(RTE_FLOW_ACTION_TYPE_SET_META), + .mask = FLOW_ACTION_MASK(RTE_FLOW_ACTION_TYPE_SET_META), .funct = add_set_meta, }, { - .mask = FLOW_ITEM_MASK(RTE_FLOW_ACTION_TYPE_SET_TAG), + .mask = FLOW_ACTION_MASK(RTE_FLOW_ACTION_TYPE_SET_TAG), .funct = add_set_tag, }, { - .mask = FLOW_ITEM_MASK(RTE_FLOW_ACTION_TYPE_QUEUE), + .mask = FLOW_ACTION_MASK(RTE_FLOW_ACTION_TYPE_QUEUE), .funct = add_queue, }, { - .mask = FLOW_ITEM_MASK(RTE_FLOW_ACTION_TYPE_RSS), + .mask = FLOW_ACTION_MASK(RTE_FLOW_ACTION_TYPE_RSS), .funct = add_rss, }, { - .mask = FLOW_ITEM_MASK(RTE_FLOW_ACTION_TYPE_JUMP), + .mask = FLOW_ACTION_MASK(RTE_FLOW_ACTION_TYPE_JUMP), .funct = add_jump, }, { - .mask = FLOW_ITEM_MASK(RTE_FLOW_ACTION_TYPE_PORT_ID), + .mask = FLOW_ACTION_MASK(RTE_FLOW_ACTION_TYPE_PORT_ID), .funct = add_port_id }, { - .mask = FLOW_ITEM_MASK(RTE_FLOW_ACTION_TYPE_DROP), + .mask = FLOW_ACTION_MASK(RTE_FLOW_ACTION_TYPE_DROP), .funct = add_drop, }, { From patchwork Sun Aug 30 11:15:33 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wisam Jaddo X-Patchwork-Id: 76152 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 959D7A04AB; Sun, 30 Aug 2020 13:18:00 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 604331C0B0; Sun, 30 Aug 2020 13:16:27 +0200 (CEST) Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-eopbgr00046.outbound.protection.outlook.com [40.107.0.46]) by dpdk.org (Postfix) with ESMTP id DB1BB1C05C for ; Sun, 30 Aug 2020 13:16:24 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ho8xSSJf/HybYObcuGb/l6z90rff4/3dFEIfoxs0qrhUBiMln2oOn7zDUsBrNe+B3g5u7aStvN01U7381H/jHbUbA73158piG6UM6KwHgEV6koChMRtdmP+oXUFIBYYLwM7W1xnH2cgLPwDuiWuS8v9dYQ9LzJG7nviNzNWgPGAx1/HxHUDpCMZkucvSLpuERwps2CqcDMMnZqc4dG0wcwJr8fbwkQMNSH+8HNJ1jdFOsx73fbHPcdfnmrTQkaO7rTU95rFhP4+27HSHKxKHUB0aaTso3nSJHJ7aPlticv9VuQc+C337ZiUv6kSkC6v2U3m/TFQnG6yIXWEG/gxqAA== 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=3X5HhH99RbDSXuEk9zQfFqoDrPKeW/qha244QBvd/8w=; b=Qhz1jDw1khA8sW4I4mNEMc6hgaldUs+ZpNjML6k7NSTCPNCf5KIZR+s723WDkUHux8jkOUdmbeheDmWAwnYd9mckCwHD9ddL4t2ZheFhG4PD3i2d3QsqMdbvPInISn4HtBO0I+qCwcIwg6noi6Z2+E1Fn1J0C9murNTj30cslr15saP2GOi23sZnwrLR2qO2kYqdmJgSjtNUqKt3YMusJtFMSX5qeXRU6BCNSy4Jir4I9g8ET/sbXZVvGSR4Hp04a3Uzrhp8feXtCj9TL4sQV7EmvB7Z7GdHnQ447fFDcxR6OQ9jKvqsQu/SfYV7kTPjfKKwd98f5cnoXYTBbf9bwg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=3X5HhH99RbDSXuEk9zQfFqoDrPKeW/qha244QBvd/8w=; b=GwQxYzhAjBDjKXjL49Sfkl7aT7QUY7T0dkkiPEQEDSYyxazpUyUHc+Rwc2c55zkBUI2LsJuEW7IjhUW8mnyOzH61rLnJxtubQNCgvLh+W5wrpJR6I/fpisK57Tj9+CERKdJ0ZsXJSeSAppyeAvjJ2XhPoClQXnstynveyuunT/w= Authentication-Results: dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=none action=none header.from=mellanox.com; Received: from AM0PR05MB6610.eurprd05.prod.outlook.com (2603:10a6:208:12f::18) by AM0PR0502MB3762.eurprd05.prod.outlook.com (2603:10a6:208:1b::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3326.21; Sun, 30 Aug 2020 11:16:23 +0000 Received: from AM0PR05MB6610.eurprd05.prod.outlook.com ([fe80::4c8a:9848:2e2a:3598]) by AM0PR05MB6610.eurprd05.prod.outlook.com ([fe80::4c8a:9848:2e2a:3598%6]) with mapi id 15.20.3326.025; Sun, 30 Aug 2020 11:16:23 +0000 From: Wisam Jaddo To: dev@dpdk.org, thomas@monjalon.net, asafp@mellanox.com, akozyrev@nvidia.com, akozyrev@mellanox.com, arybchenko@solarflare.com, jackmin@mellanox.com Cc: wisamm@mellanox.com Date: Sun, 30 Aug 2020 11:15:33 +0000 Message-Id: <20200830111544.4190-3-wisamm@mellanox.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200830111544.4190-1-wisamm@mellanox.com> References: <20200830111544.4190-1-wisamm@mellanox.com> X-ClientProxiedBy: AM4PR05CA0008.eurprd05.prod.outlook.com (2603:10a6:205::21) To AM0PR05MB6610.eurprd05.prod.outlook.com (2603:10a6:208:12f::18) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from mellanox.com (37.142.13.130) by AM4PR05CA0008.eurprd05.prod.outlook.com (2603:10a6:205::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3326.19 via Frontend Transport; Sun, 30 Aug 2020 11:16:22 +0000 X-Mailer: git-send-email 2.17.1 X-Originating-IP: [37.142.13.130] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 8646d0a9-f780-4822-8a9d-08d84cd62100 X-MS-TrafficTypeDiagnostic: AM0PR0502MB3762: X-LD-Processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtFwd,ExtAddr X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:8273; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: DR6CmqILc/KagC4/tOQA9f8739P5T8Fyl+1xPrgdBMTllnL0jUs5vpWBJSCzdi0WbCqEy5eZjZAJs0Hz2zhxtrDGkq2yntUVqOfuL/NFs9Rs6oEqg8f2P1w0SnFdjicLofDCM1jwa6Z0ZoQ1q48U5sstxX9BfFYq/EbcvDZdK8Fb6lQcOzcNAPNspSKgZPmguidEl8sUsvTg2SaByMlAU0dAjGSJ7RyQzK5H5Sg+7Nkx7dk/jh7u/u0Y/VkjDVXB34k3mW5nIfnDrPt855wMAJ36gpOVUxZOrDj7zYMTmL3OHKLxiYpYXvV5fJAIzWNm2Oa8neGu37uC+03+cHRrMA== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0PR05MB6610.eurprd05.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(396003)(136003)(39860400002)(376002)(346002)(478600001)(107886003)(316002)(5660300002)(8886007)(2906002)(6636002)(4326008)(86362001)(36756003)(6666004)(1076003)(55016002)(8936002)(26005)(2616005)(7696005)(66946007)(66556008)(52116002)(83380400001)(16526019)(8676002)(186003)(956004)(66476007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: VD/Jken09zSG//627PgnNVu58U5FhlLq/g9XF97cTOPbU8q0Hvh/q3b93kD6PSR7Jyj+efQCTTd1ewxSo9F6JzJQMxM4cV5svwDVjs3ENT7VEThflEJtI6mLPc6QEx5zVafPGAo8BWqsPs6f4G29VtXtxtCXvU6/zSug5XWnT1G1Afd7LSn+SkY+Uc52pugdWQTuUu6tpFzar9Fc03eTsyzZRO1ilgfbzQsXXEsfskB0JxrKYHkDZZiSfHhQq2l2SSjjILTebgea7nTy2rOAtILJa2SHW4tr2dSBFq1npNce0GPF+itVpNbTiFldFPg7gpngIKkoQFElJ5KptNcwpSxkWqxMpoFRUqs/It2KwWcCRZ4zdXKafq9wHW0fZB5W4XD9kd6FhbCOti/matP57ppzF8Xa0R1zov1o43Z+dgbAlxlw53gfayzBDt8zHOkDJIkhbKZ+SmWrxpRP8U5CCUnwHjq8HdKurp2Lc0YUi/byUpulAKNIPJYZGHfWdm84BTDWyn3bJp9o2ij3z5P/Sgo1IIzyoatpSD04xK/MC6/MyNWvY++XhIU1WJHSH+hBZzbz8q2Myci6EMwRAhy7MCtCvuRq8sXd15VZFHodWlCnAe9c6We9MOa77FfnIgAf3/bc1iAURXfILrWC+tRVGg== X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8646d0a9-f780-4822-8a9d-08d84cd62100 X-MS-Exchange-CrossTenant-AuthSource: AM0PR05MB6610.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Aug 2020 11:16:23.5719 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: ePKVYtHhEy+aI2tUUNCxb8Nvgp9aPJX5PCwlPWekrGP4CaeqrGCM7rCcktq1NevvsSBWj5MWPTAgPGokz2gCLw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR0502MB3762 Subject: [dpdk-dev] [PATCH 02/13] doc/flow-perf: fix app sections X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 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" Currently all the sections are considered as main title under DPDK Tools User Guides. This fix will collect all flow perf sections under one title which is Flow Performance Tool Fixes: 3344cf2e3001 ("app/flow-perf: add flow performance skeleton") Cc: wisamm@mellanox.com Signed-off-by: Wisam Jaddo Acked-by: Alexander Kozyrev --- doc/guides/tools/flow-perf.rst | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/guides/tools/flow-perf.rst b/doc/guides/tools/flow-perf.rst index cdedaf9a97..ca551aee6e 100644 --- a/doc/guides/tools/flow-perf.rst +++ b/doc/guides/tools/flow-perf.rst @@ -18,7 +18,7 @@ give different flow each time, and all other items will have open masks. Known Limitations -================= +----------------- The current version has limitations which can be removed in future: @@ -33,7 +33,7 @@ The app supports single and multi core performance measurements. Compiling the Application -========================= +------------------------- The ``test-flow-perf`` application is compiled as part of the main compilation of the DPDK libraries and tools. @@ -42,10 +42,10 @@ Refer to the DPDK Getting Started Guides for details. Running the Application -======================= +----------------------- EAL Command-line Options ------------------------- +~~~~~~~~~~~~~~~~~~~~~~~~ Please refer to :doc:`EAL parameters (Linux) <../linux_gsg/linux_eal_parameters>` or :doc:`EAL parameters (FreeBSD) <../freebsd_gsg/freebsd_eal_parameters>` for @@ -53,7 +53,7 @@ a list of available EAL command-line options. Flow Performance Options ------------------------- +~~~~~~~~~~~~~~~~~~~~~~~~ The following are the command-line options for the flow performance application. They must be separated from the EAL options, shown in the previous section, From patchwork Sun Aug 30 11:15:34 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wisam Jaddo X-Patchwork-Id: 76153 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 30E8BA04AB; Sun, 30 Aug 2020 13:19:03 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id C74231C0B6; Sun, 30 Aug 2020 13:16:28 +0200 (CEST) Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-eopbgr00052.outbound.protection.outlook.com [40.107.0.52]) by dpdk.org (Postfix) with ESMTP id 8E1311C0AD for ; Sun, 30 Aug 2020 13:16:26 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=a6/LitInftCZPpvQ70AMHCu818tqv4Tz43w86qtJ5Nl36whsC4rp05Le63BkX0dzKGfdNTGPZO+eVbwu5KokKl5pkL6kjnIC8fzjSg9T8oXtIwGSe5JZkJr6ktM8MrmDqKmC5p7yF8wFgTUQKxZq6BUQFoC2MH3MTqFPzHXzsTYsSXSy97I60faqxd2n0Ka0Wa4ccWEtG9KFsE2dXGGIReAoNiU28RI1h4PsPcn4WHkJKDq8M3PBGOCcojYLOvGKbWsfty/DFcUz938T8Dc3K7ku822drarZyQD0h5ooBcOXq2qmFq8UNRUD5jZ0pFDmBuDoFVn/k2Ji/n8AAXaOSA== 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=5DtqIX8ywqdiB9eSVLrFi1FyZkoErflAXwcdutTKrB8=; b=EkhGPOXo1wmnvPFM6wo970nkN7LsGSfGhJkbC+2PBi3W9X4vTiGyZiFtnUb+SimaAGlezG9oiG9L1vXdKMwImOInQlHzI2Ca6AJnrLBLDwPyCsVX5ZvMg0cjM9BpDp9s2JJh1hbcZzbSXcnOAcXpsJ6XWJyx1UKUl1oKeLlDMf77phSM4IrUPsTSsdheyXT4kxzE9BwXWYTHIxfzqJZ0gPytmi7IzmH0uQgGrRME7QEg2L2wUVym5Yg9FjEjrOPJUwXfNoh+mHPHnitWeSiLVy5m0hNywwlbpdiF9tuiN1lEc8rgfls4xXOxe/fEe5pRGl/ZJED7Edhwwm+wmstOUw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=5DtqIX8ywqdiB9eSVLrFi1FyZkoErflAXwcdutTKrB8=; b=C+DKef43hubQhey0tHDLe+Xo/kw5Xv2Dsz/j1ExJuLmWcf5wfBZ55kIjCdpbzVBDgyT5ZCBxulwRQRuKKaZ3tMBOaHS/lFxfpolENaYz/1eP5smhVTTwXs177Z7KHwe2acTlxlOG4Bqcjbn2pAeupgrNVWIPgMJ+vAIAZG0dZd8= Authentication-Results: dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=none action=none header.from=mellanox.com; Received: from AM0PR05MB6610.eurprd05.prod.outlook.com (2603:10a6:208:12f::18) by AM0PR0502MB3762.eurprd05.prod.outlook.com (2603:10a6:208:1b::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3326.21; Sun, 30 Aug 2020 11:16:25 +0000 Received: from AM0PR05MB6610.eurprd05.prod.outlook.com ([fe80::4c8a:9848:2e2a:3598]) by AM0PR05MB6610.eurprd05.prod.outlook.com ([fe80::4c8a:9848:2e2a:3598%6]) with mapi id 15.20.3326.025; Sun, 30 Aug 2020 11:16:24 +0000 From: Wisam Jaddo To: dev@dpdk.org, thomas@monjalon.net, asafp@mellanox.com, akozyrev@nvidia.com, akozyrev@mellanox.com, arybchenko@solarflare.com, jackmin@mellanox.com Date: Sun, 30 Aug 2020 11:15:34 +0000 Message-Id: <20200830111544.4190-4-wisamm@mellanox.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200830111544.4190-1-wisamm@mellanox.com> References: <20200830111544.4190-1-wisamm@mellanox.com> X-ClientProxiedBy: AM4PR05CA0008.eurprd05.prod.outlook.com (2603:10a6:205::21) To AM0PR05MB6610.eurprd05.prod.outlook.com (2603:10a6:208:12f::18) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from mellanox.com (37.142.13.130) by AM4PR05CA0008.eurprd05.prod.outlook.com (2603:10a6:205::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3326.19 via Frontend Transport; Sun, 30 Aug 2020 11:16:23 +0000 X-Mailer: git-send-email 2.17.1 X-Originating-IP: [37.142.13.130] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: b6d660ca-7e85-4627-f237-08d84cd621bd X-MS-TrafficTypeDiagnostic: AM0PR0502MB3762: X-LD-Processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtFwd,ExtAddr X-MS-Exchange-Transport-Forked: True 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: KGdz5eQW/A2c3CMNaA0VYO5vSQ5ZghoaYQ+eZa8IoUfz7qDAv2gLMh6DBPeEAjLBmIqrl1XV5IlLyKsInTsOyKPz9QbQNM5dL6HKy/t9m+gRPrA0KWi0ck7lR1bacs2mEqFKR+Muu4aNx/bX0e4JtXltkWzgak6ap7UnHLNIg8SG2P7UgTMRJDcEfdYtOxSBdtUL8RNKkOHTySu8hTYXNFoSjh/5u8lfjJl9K1PKioFgIy3iAi1SSEoRNaf04ToYn8KSTkFsOxvjbTriVhZbO4SyIMyEOYZ7pL1heNwxORXOHTZpoCKYH8q91X7C3yBK X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0PR05MB6610.eurprd05.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(396003)(136003)(39860400002)(376002)(346002)(478600001)(316002)(5660300002)(8886007)(30864003)(2906002)(6636002)(86362001)(36756003)(6666004)(1076003)(55016002)(8936002)(26005)(2616005)(7696005)(66946007)(66556008)(52116002)(83380400001)(16526019)(8676002)(186003)(956004)(66476007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: ZmzI59WyJPaZ3n0HO5/P/hh56B4dvah7le8nXEnbyNH8/n8yZ8S8ksE63cO6zZwU2Mb6Cwv5I7uJyzAPPXABFJETyppT5Nt4j5kDu8jf4ZS23i4mPJMzYW0/UVPNWPzJXDE0m3KRZZsn2sOfvf1iL5qRyXyGfsHwz1V61RjiTepaUQJQsitC/j6K1azPzDkE/ycQz0UZmOa17FB3Yrlud2Bwp7TDfHSvUFjgT6WyhIwQ4TD/t7yOBlz5I1AXVAeehsjd7CrAg5pJwWtWhgGCwy+QFMeXEW3z/2j6Zw0NUgt90ox+p8hfEGKFKQUIPHdXDjLtzmgAECWpY6w17PRfl3u1a+Ym0v+PzkpYtVqzuCjhpPmmtJCGHMOQ8pMPU6BW8RUrZsWJ9T/klZYqglFJGKgY5KGw1NAKGpWivv9Gou970wfIUKiQb0OoVHNZfQ7OpXrAc5Z+7MI4tLhKZdilOlBX9CxooG4rMk37pGuyH6uD3auO2af5S81fZfyV8FrQWQ0Ck+nF1ciVKs7a7ms6GNZ3gHtoZcExOuhEEO65S97DJXoE3pwP4r8AkTa3xBeaaObLxOgs3g4UnrBak0VULyea+CwKyk0k0FmiBiRcym19JaWoDun2JeTL3sOvLc8Wo9loQjdODK4wyUz1uZcx2A== X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: b6d660ca-7e85-4627-f237-08d84cd621bd X-MS-Exchange-CrossTenant-AuthSource: AM0PR05MB6610.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Aug 2020 11:16:24.8492 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: mAbGKG2ydzaVGaEukvYCOpXZqyJYJaFgJ6HAoWqifG2hByB0C8GdRHk2bOLPI6CU3eJMwg5n/FYvzGJ8r5ydvQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR0502MB3762 Subject: [dpdk-dev] [PATCH 03/13] app/flow-perf: start supporting user order X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 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" The old design was using the bit mask to identify items, action and attributes. So it was all based on the order of the code itself, to place the order of the actions, items & attributes inside the flows. Such design will lead into many failures when some PMD support order different than other PMD, in the end the rules will fail to create. Also sometimes the user needs to have one action before other actions and vice versa, so using new design of arrays that take user order into consideration make more sense. After this patch, we start supporting inner items and more than one instance of same action. Signed-off-by: Wisam Jaddo Acked-by: Alexander Kozyrev --- app/test-flow-perf/actions_gen.c | 26 +++--- app/test-flow-perf/actions_gen.h | 2 +- app/test-flow-perf/config.h | 1 + app/test-flow-perf/flow_gen.c | 25 +++--- app/test-flow-perf/flow_gen.h | 6 +- app/test-flow-perf/items_gen.c | 26 +++--- app/test-flow-perf/items_gen.h | 2 +- app/test-flow-perf/main.c | 106 ++++++++++++++++--------- doc/guides/rel_notes/release_20_08.rst | 8 ++ doc/guides/tools/flow-perf.rst | 12 ++- 10 files changed, 135 insertions(+), 79 deletions(-) diff --git a/app/test-flow-perf/actions_gen.c b/app/test-flow-perf/actions_gen.c index cb9316f1df..d115cdd723 100644 --- a/app/test-flow-perf/actions_gen.c +++ b/app/test-flow-perf/actions_gen.c @@ -182,14 +182,14 @@ add_count(struct rte_flow_action *actions, } void -fill_actions(struct rte_flow_action *actions, uint64_t flow_actions, +fill_actions(struct rte_flow_action *actions, uint64_t *flow_actions, uint32_t counter, uint16_t next_table, uint16_t hairpinq) { struct additional_para additional_para_data; uint8_t actions_counter = 0; uint16_t hairpin_queues[hairpinq]; uint16_t queues[RXQ_NUM]; - uint16_t i; + uint16_t i, j; for (i = 0; i < RXQ_NUM; i++) queues[i] = i; @@ -217,7 +217,7 @@ fill_actions(struct rte_flow_action *actions, uint64_t flow_actions, uint8_t actions_counter, struct additional_para para ); - } flows_actions[] = { + } actions_list[] = { { .mask = FLOW_ACTION_MASK(RTE_FLOW_ACTION_TYPE_MARK), .funct = add_mark, @@ -264,13 +264,19 @@ fill_actions(struct rte_flow_action *actions, uint64_t flow_actions, }, }; - for (i = 0; i < RTE_DIM(flows_actions); i++) { - if ((flow_actions & flows_actions[i].mask) == 0) - continue; - flows_actions[i].funct( - actions, actions_counter++, - additional_para_data - ); + for (j = 0; j < MAX_ACTIONS_NUM; j++) { + if (flow_actions[j] == 0) + break; + for (i = 0; i < RTE_DIM(actions_list); i++) { + if ((flow_actions[j] & + actions_list[i].mask) == 0) + continue; + actions_list[i].funct( + actions, actions_counter++, + additional_para_data + ); + break; + } } actions[actions_counter].type = RTE_FLOW_ACTION_TYPE_END; } diff --git a/app/test-flow-perf/actions_gen.h b/app/test-flow-perf/actions_gen.h index 0defa7c97c..d6918a53a6 100644 --- a/app/test-flow-perf/actions_gen.h +++ b/app/test-flow-perf/actions_gen.h @@ -12,7 +12,7 @@ #include "config.h" -void fill_actions(struct rte_flow_action *actions, uint64_t actions_selector, +void fill_actions(struct rte_flow_action *actions, uint64_t *flow_actions, uint32_t counter, uint16_t next_table, uint16_t hairpinq); #endif /* FLOW_PERF_ACTION_GEN */ diff --git a/app/test-flow-perf/config.h b/app/test-flow-perf/config.h index e47d788572..439f3264b4 100644 --- a/app/test-flow-perf/config.h +++ b/app/test-flow-perf/config.h @@ -29,3 +29,4 @@ /* Flow items/acctions max size */ #define MAX_ITEMS_NUM 32 #define MAX_ACTIONS_NUM 32 +#define MAX_ATTRS_NUM 16 diff --git a/app/test-flow-perf/flow_gen.c b/app/test-flow-perf/flow_gen.c index e87276bd14..b2c828c7df 100644 --- a/app/test-flow-perf/flow_gen.c +++ b/app/test-flow-perf/flow_gen.c @@ -18,23 +18,28 @@ static void fill_attributes(struct rte_flow_attr *attr, - uint64_t flow_attrs, uint16_t group) + uint64_t *flow_attrs, uint16_t group) { - if (flow_attrs & INGRESS) - attr->ingress = 1; - if (flow_attrs & EGRESS) - attr->egress = 1; - if (flow_attrs & TRANSFER) - attr->transfer = 1; + uint8_t i; + for (i = 0; i < MAX_ATTRS_NUM; i++) { + if (flow_attrs[i] == 0) + break; + if (flow_attrs[i] & INGRESS) + attr->ingress = 1; + else if (flow_attrs[i] & EGRESS) + attr->egress = 1; + else if (flow_attrs[i] & TRANSFER) + attr->transfer = 1; + } attr->group = group; } struct rte_flow * generate_flow(uint16_t port_id, uint16_t group, - uint64_t flow_attrs, - uint64_t flow_items, - uint64_t flow_actions, + uint64_t *flow_attrs, + uint64_t *flow_items, + uint64_t *flow_actions, uint16_t next_table, uint32_t outer_ip_src, uint16_t hairpinq, diff --git a/app/test-flow-perf/flow_gen.h b/app/test-flow-perf/flow_gen.h index 848331e229..53469c659f 100644 --- a/app/test-flow-perf/flow_gen.h +++ b/app/test-flow-perf/flow_gen.h @@ -26,9 +26,9 @@ struct rte_flow * generate_flow(uint16_t port_id, uint16_t group, - uint64_t flow_attrs, - uint64_t flow_items, - uint64_t flow_actions, + uint64_t *flow_attrs, + uint64_t *flow_items, + uint64_t *flow_actions, uint16_t next_table, uint32_t outer_ip_src, uint16_t hairpinq, diff --git a/app/test-flow-perf/items_gen.c b/app/test-flow-perf/items_gen.c index 6a8915100c..cc031f24a5 100644 --- a/app/test-flow-perf/items_gen.c +++ b/app/test-flow-perf/items_gen.c @@ -312,10 +312,10 @@ add_meta_tag(struct rte_flow_item *items, void fill_items(struct rte_flow_item *items, - uint64_t flow_items, uint32_t outer_ip_src) + uint64_t *flow_items, uint32_t outer_ip_src) { uint8_t items_counter = 0; - uint8_t i; + uint8_t i, j; struct additional_para additional_para_data = { .src_ip = outer_ip_src, }; @@ -328,7 +328,7 @@ fill_items(struct rte_flow_item *items, uint8_t items_counter, struct additional_para para ); - } flows_items[] = { + } items_list[] = { { .mask = RTE_FLOW_ITEM_TYPE_META, .funct = add_meta_data, @@ -384,13 +384,19 @@ fill_items(struct rte_flow_item *items, }; - for (i = 0; i < RTE_DIM(flows_items); i++) { - if ((flow_items & FLOW_ITEM_MASK(flows_items[i].mask)) == 0) - continue; - flows_items[i].funct( - items, items_counter++, - additional_para_data - ); + for (j = 0; j < MAX_ITEMS_NUM; j++) { + if (flow_items[j] == 0) + break; + for (i = 0; i < RTE_DIM(items_list); i++) { + if ((flow_items[j] & + FLOW_ITEM_MASK(items_list[i].mask)) == 0) + continue; + items_list[i].funct( + items, items_counter++, + additional_para_data + ); + break; + } } items[items_counter].type = RTE_FLOW_ITEM_TYPE_END; diff --git a/app/test-flow-perf/items_gen.h b/app/test-flow-perf/items_gen.h index 9509d0f11c..d68958e4d3 100644 --- a/app/test-flow-perf/items_gen.h +++ b/app/test-flow-perf/items_gen.h @@ -12,7 +12,7 @@ #include "config.h" -void fill_items(struct rte_flow_item *items, uint64_t flow_items, +void fill_items(struct rte_flow_item *items, uint64_t *flow_items, uint32_t outer_ip_src); #endif /* FLOW_PERF_ITEMS_GEN */ diff --git a/app/test-flow-perf/main.c b/app/test-flow-perf/main.c index 3589b316f9..0ff8080aa0 100644 --- a/app/test-flow-perf/main.c +++ b/app/test-flow-perf/main.c @@ -45,9 +45,10 @@ struct rte_flow *flow; static uint8_t flow_group; -static uint64_t flow_items; -static uint64_t flow_actions; -static uint64_t flow_attrs; +static uint64_t flow_items[MAX_ITEMS_NUM]; +static uint64_t flow_actions[MAX_ACTIONS_NUM]; +static uint64_t flow_attrs[MAX_ATTRS_NUM]; +static uint8_t items_idx, actions_idx, attrs_idx; static volatile bool force_quit; static bool dump_iterations; @@ -150,132 +151,159 @@ args_parse(int argc, char **argv) static const struct option_dict { const char *str; const uint64_t mask; - uint64_t *bitmap; + uint64_t *map; + uint8_t *map_idx; + } flow_options[] = { { .str = "ether", .mask = FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_ETH), - .bitmap = &flow_items + .map = &flow_items[0], + .map_idx = &items_idx }, { .str = "ipv4", .mask = FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_IPV4), - .bitmap = &flow_items + .map = &flow_items[0], + .map_idx = &items_idx }, { .str = "ipv6", .mask = FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_IPV6), - .bitmap = &flow_items + .map = &flow_items[0], + .map_idx = &items_idx }, { .str = "vlan", .mask = FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_VLAN), - .bitmap = &flow_items + .map = &flow_items[0], + .map_idx = &items_idx }, { .str = "tcp", .mask = FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_TCP), - .bitmap = &flow_items + .map = &flow_items[0], + .map_idx = &items_idx }, { .str = "udp", .mask = FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_UDP), - .bitmap = &flow_items + .map = &flow_items[0], + .map_idx = &items_idx }, { .str = "vxlan", .mask = FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_VXLAN), - .bitmap = &flow_items + .map = &flow_items[0], + .map_idx = &items_idx }, { .str = "vxlan-gpe", .mask = FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_VXLAN_GPE), - .bitmap = &flow_items + .map = &flow_items[0], + .map_idx = &items_idx }, { .str = "gre", .mask = FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_GRE), - .bitmap = &flow_items + .map = &flow_items[0], + .map_idx = &items_idx }, { .str = "geneve", .mask = FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_GENEVE), - .bitmap = &flow_items + .map = &flow_items[0], + .map_idx = &items_idx }, { .str = "gtp", .mask = FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_GTP), - .bitmap = &flow_items + .map = &flow_items[0], + .map_idx = &items_idx }, { .str = "meta", .mask = FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_META), - .bitmap = &flow_items + .map = &flow_items[0], + .map_idx = &items_idx }, { .str = "tag", .mask = FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_TAG), - .bitmap = &flow_items + .map = &flow_items[0], + .map_idx = &items_idx }, { .str = "ingress", .mask = INGRESS, - .bitmap = &flow_attrs + .map = &flow_attrs[0], + .map_idx = &attrs_idx }, { .str = "egress", .mask = EGRESS, - .bitmap = &flow_attrs + .map = &flow_attrs[0], + .map_idx = &attrs_idx }, { .str = "transfer", .mask = TRANSFER, - .bitmap = &flow_attrs + .map = &flow_attrs[0], + .map_idx = &attrs_idx }, { .str = "port-id", .mask = FLOW_ACTION_MASK(RTE_FLOW_ACTION_TYPE_PORT_ID), - .bitmap = &flow_actions + .map = &flow_actions[0], + .map_idx = &actions_idx }, { .str = "rss", .mask = FLOW_ACTION_MASK(RTE_FLOW_ACTION_TYPE_RSS), - .bitmap = &flow_actions + .map = &flow_actions[0], + .map_idx = &actions_idx }, { .str = "queue", .mask = FLOW_ACTION_MASK(RTE_FLOW_ACTION_TYPE_QUEUE), - .bitmap = &flow_actions + .map = &flow_actions[0], + .map_idx = &actions_idx }, { .str = "jump", .mask = FLOW_ACTION_MASK(RTE_FLOW_ACTION_TYPE_JUMP), - .bitmap = &flow_actions + .map = &flow_actions[0], + .map_idx = &actions_idx }, { .str = "mark", .mask = FLOW_ACTION_MASK(RTE_FLOW_ACTION_TYPE_MARK), - .bitmap = &flow_actions + .map = &flow_actions[0], + .map_idx = &actions_idx }, { .str = "count", .mask = FLOW_ACTION_MASK(RTE_FLOW_ACTION_TYPE_COUNT), - .bitmap = &flow_actions + .map = &flow_actions[0], + .map_idx = &actions_idx }, { .str = "set-meta", .mask = FLOW_ACTION_MASK(RTE_FLOW_ACTION_TYPE_SET_META), - .bitmap = &flow_actions + .map = &flow_actions[0], + .map_idx = &actions_idx }, { .str = "set-tag", .mask = FLOW_ACTION_MASK(RTE_FLOW_ACTION_TYPE_SET_TAG), - .bitmap = &flow_actions + .map = &flow_actions[0], + .map_idx = &actions_idx }, { .str = "drop", .mask = FLOW_ACTION_MASK(RTE_FLOW_ACTION_TYPE_DROP), - .bitmap = &flow_actions + .map = &flow_actions[0], + .map_idx = &actions_idx } }; @@ -320,9 +348,6 @@ args_parse(int argc, char **argv) { "hairpin-rss", 1, 0, 0 }, }; - flow_items = 0; - flow_actions = 0; - flow_attrs = 0; hairpin_queues_num = 0; argvopt = argv; @@ -349,7 +374,8 @@ args_parse(int argc, char **argv) for (i = 0; i < RTE_DIM(flow_options); i++) if (strcmp(lgopts[opt_idx].name, flow_options[i].str) == 0) { - *flow_options[i].bitmap |= + flow_options[i].map[ + (*flow_options[i].map_idx)++] = flow_options[i].mask; printf("%s / ", flow_options[i].str); } @@ -363,7 +389,8 @@ args_parse(int argc, char **argv) rte_exit(EXIT_SUCCESS, "Hairpin queues should be > 0\n"); - flow_actions |= HAIRPIN_RSS_ACTION; + flow_actions[actions_idx++] = + HAIRPIN_RSS_ACTION; printf("hairpin-rss / "); } if (strcmp(lgopts[opt_idx].name, @@ -375,7 +402,8 @@ args_parse(int argc, char **argv) rte_exit(EXIT_SUCCESS, "Hairpin queues should be > 0\n"); - flow_actions |= HAIRPIN_QUEUE_ACTION; + flow_actions[actions_idx++] = + HAIRPIN_QUEUE_ACTION; printf("hairpin-queue / "); } @@ -558,6 +586,11 @@ flows_handler(void) int port_id; int iter_id; uint32_t flow_index; + uint64_t global_items[MAX_ITEMS_NUM] = { 0 }; + uint64_t global_actions[MAX_ACTIONS_NUM] = { 0 }; + + global_items[0] = FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_ETH); + global_actions[0] = FLOW_ITEM_MASK(RTE_FLOW_ACTION_TYPE_JUMP); nr_ports = rte_eth_dev_count_avail(); @@ -587,8 +620,7 @@ flows_handler(void) * */ flow = generate_flow(port_id, 0, flow_attrs, - FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_ETH), - FLOW_ITEM_MASK(RTE_FLOW_ACTION_TYPE_JUMP), + global_items, global_actions, flow_group, 0, 0, &error); if (flow == NULL) { diff --git a/doc/guides/rel_notes/release_20_08.rst b/doc/guides/rel_notes/release_20_08.rst index a19ec6db2b..d3ba4cd1d0 100644 --- a/doc/guides/rel_notes/release_20_08.rst +++ b/doc/guides/rel_notes/release_20_08.rst @@ -272,6 +272,14 @@ New Features of ingress packets to specific NIC queues. See the :doc:`../sample_app_ug/ipsec_secgw` for more details. +* **Add more support for flow-perf application.** + + * Start supporting user order instead of bit mask: + Now the user can create any structure of rte_flow + using flow performance application with any order, + moreover the app also now starts to support inner + items matching as well. + Removed Items ------------- diff --git a/doc/guides/tools/flow-perf.rst b/doc/guides/tools/flow-perf.rst index ca551aee6e..6941155fee 100644 --- a/doc/guides/tools/flow-perf.rst +++ b/doc/guides/tools/flow-perf.rst @@ -16,20 +16,18 @@ After that the application will start producing rules with same pattern but increasing the outer IP source address by 1 each time, thus it will give different flow each time, and all other items will have open masks. +The application also provide the ability to measure rte flow deletion rate, +in addition to memory consumption before and after the flows creation. + +The app supports single and multi core performance measurements. + Known Limitations ----------------- The current version has limitations which can be removed in future: -* Support outer items up to tunnel layer only. * Single core insertion only. -* Only one instance of same action can be added in one rule. - -The application also provide the ability to measure rte flow deletion rate, -in addition to memory consumption before and after the flows creation. - -The app supports single and multi core performance measurements. Compiling the Application From patchwork Sun Aug 30 11:15:35 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wisam Jaddo X-Patchwork-Id: 76154 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 642E6A04AB; Sun, 30 Aug 2020 13:20:09 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 5F4F21C0C4; Sun, 30 Aug 2020 13:16:31 +0200 (CEST) Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-eopbgr00078.outbound.protection.outlook.com [40.107.0.78]) by dpdk.org (Postfix) with ESMTP id 9E3DE1C0B3 for ; Sun, 30 Aug 2020 13:16:27 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Y9gyG4nIFvD13GlfFoZ4O2pdRCPxjBdAK3P3qhCKFj4+ia8tPLKcfa7qz8RcQo2AuCAy7qK8X2tB0Op/8RRulrRZ/6uAK5D4coPic9bWShrowII0D5UQEi/GKwR7Zat+q1LL8ytnJs88biMupbiGLl89SB0y3GjBsxmyxFdgIQ5Hh4Zq9dozPlPfbmOMvlwccyaKQpvRg4Uz9KnUzb/+Pr1IdLiY6yJ9XP8vYhbdnxGOfiJv6mFA3gTjOSv4Uv5V6QImWzE5Jl4tl/ZUOGfWKutdf7gIiB5HeHfvYk+TD41VBJgkjSgdDj85RoUfzZaHKpVMTVLnt65AOSx6cbc1Uw== 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=W2PKFjq9wr9Mu1HzPpQiBnZ3HwI3i+7i3Io8I6uO6n0=; b=LMzfFib9WYfz6LIphgMsl1F7MMJemN/Uevzb2lAXw5RJi6Aac6k9iKZzpJlwU+PkEIp0HmP798Q1uh9cFQEs3yZ17NcxvUcLRfOOmAaoq9xexLa4DeQY6VV1ui28zmRxr7knkb8zw9G7uqcrB7Vc50WoejoygnKVqS3pCzIULt3vMQZ2SbY83ZXE/qLQpP3MTznWe8oMVV3nG6vHAwDTXYJ4hzBM3M2Euqg9fAUcO+vmnTvG7Ra0ALLDtTH19IM4Ja/7ILQTr6WdEJnQGVT95/sHfnhacO1YQO3S6Dz9gpiIAYCgpKXj97aeDo3y0ppWjOtmye9iZOdWqadg2KoPcw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=W2PKFjq9wr9Mu1HzPpQiBnZ3HwI3i+7i3Io8I6uO6n0=; b=i5Wgp5hLTnm6iw5SFAgFeIKDQTllL27gZk7O9SU+VdkbhCbeZedx0mAlmvG+Qbr/QvvCPIeYZ4KANPUwUi7Am64gUb2D7QPvgQ13J2YIMGK9X4BUesJnXpJ3bQSR2MhM9YddZ39dsrlS0gM9vUbFQRKWuV9/lkmN7NZzoJdNusE= Authentication-Results: dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=none action=none header.from=mellanox.com; Received: from AM0PR05MB6610.eurprd05.prod.outlook.com (2603:10a6:208:12f::18) by AM0PR0502MB3762.eurprd05.prod.outlook.com (2603:10a6:208:1b::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3326.21; Sun, 30 Aug 2020 11:16:26 +0000 Received: from AM0PR05MB6610.eurprd05.prod.outlook.com ([fe80::4c8a:9848:2e2a:3598]) by AM0PR05MB6610.eurprd05.prod.outlook.com ([fe80::4c8a:9848:2e2a:3598%6]) with mapi id 15.20.3326.025; Sun, 30 Aug 2020 11:16:26 +0000 From: Wisam Jaddo To: dev@dpdk.org, thomas@monjalon.net, asafp@mellanox.com, akozyrev@nvidia.com, akozyrev@mellanox.com, arybchenko@solarflare.com, jackmin@mellanox.com Date: Sun, 30 Aug 2020 11:15:35 +0000 Message-Id: <20200830111544.4190-5-wisamm@mellanox.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200830111544.4190-1-wisamm@mellanox.com> References: <20200830111544.4190-1-wisamm@mellanox.com> X-ClientProxiedBy: AM4PR05CA0008.eurprd05.prod.outlook.com (2603:10a6:205::21) To AM0PR05MB6610.eurprd05.prod.outlook.com (2603:10a6:208:12f::18) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from mellanox.com (37.142.13.130) by AM4PR05CA0008.eurprd05.prod.outlook.com (2603:10a6:205::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3326.19 via Frontend Transport; Sun, 30 Aug 2020 11:16:25 +0000 X-Mailer: git-send-email 2.17.1 X-Originating-IP: [37.142.13.130] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 6aac7d01-1c43-4593-9735-08d84cd62271 X-MS-TrafficTypeDiagnostic: AM0PR0502MB3762: X-LD-Processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtFwd,ExtAddr X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:6430; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 4XzYdu5WoIVeut5gb1ZkvNAbJEQpTfhYQImXAshCiBzLxMvYwG89NRpM3v8VyVtGpHE3nXDxQCR0GBJ3oUcKcRiXkSTr11q1wLbOquh7etOFDFgodz1AOfIOhLqgcJZUvPvaLuJRHPxF2qISC+C7nkhpdh/sHWGl3GrTfyuNlVDZvAQhsKtrL9lYul/v+mXPZfzYxd302AXp8X4QmPmZwnT5mE+eS0MmjepakvtibPcKQeNH5Sur0y5XjH38DHpTCloysngn1Kss2WdPuFqaAgTmXOXKgGGeumvQCJJM/aLLx2m9E++jJcUF8IPyhnlG X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0PR05MB6610.eurprd05.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(396003)(136003)(39860400002)(376002)(346002)(478600001)(316002)(5660300002)(8886007)(30864003)(2906002)(6636002)(86362001)(36756003)(6666004)(1076003)(55016002)(8936002)(26005)(2616005)(7696005)(66946007)(66556008)(52116002)(83380400001)(16526019)(8676002)(186003)(956004)(66476007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: utQ78gGiLB0KyS4Af7jZ5/oP34pKam3CTJCn7V1ldElqMYztRrhRx8iomMvCQ7b6D25kOeBs7efLbuGnGbWu8xYlcsGoK8uxuAd0kKJsfkTZzR14TMtEI/zYeDOUyqjf9R2s6q98x/DMGUzl6dv9uRH4HwVCv7DOaDY+uZ1L1ms3btFteHtjXCEkH/dvPf14VlyPWTuxxViQf7bcFtMlhCsDYH2JsFis1YOPXJ8FX0YfIjUFKFVvcrpc0K9tSCYgJZmGv5MidCLZYZn+XNsuLLRmFddTl3t7Vn+IobPO5qwaMM2/sYjQ0zsSWwAHC7COG2mYeH/OyHGOAxCnXkEgyLZIbCYEdXx0mga++IznWmdxiIayn/+xH4nJUKYNyDlmYYsRkkYGvMhGcZw+mMBz3DphRFI/5xgQm0ertuRSRLeFo4K4VhIJov60Gkmsr4L1Vl5uX1NLcYqin+TzphrHr/zoyvScZfaAs/HM4Po02NBQPiD/OSyMfqca/gWwJ+PszRoeLbC1bkOSLjhjj7bMxhZa+lGmQv8rTmZmqbo1pkHW9/Hbct4L7LR09GDQBrzdLMVcet8Cwnzyi8pIlRgVtGml5TjZBIYD+UuntU2VAqKeDgZNhxyJ/zN71bWxuoZ9kHUqGYaVXT/dHKr4jNQoCg== X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6aac7d01-1c43-4593-9735-08d84cd62271 X-MS-Exchange-CrossTenant-AuthSource: AM0PR05MB6610.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Aug 2020 11:16:25.9915 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: eI8Il2houJLjV12BvS+4BGI24p+00wRIAyfijtZgB/oq8VmHDaQZmpEas34vnE65pOM33o6XB9hZGk4WcOwmYA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR0502MB3762 Subject: [dpdk-dev] [PATCH 04/13] app/flow-perf: add header modify actions support X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 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" Introduce headers modify actions in the app. All header modify actions will add different value for each flow, to make sure each flow will create and use it's own actions. Signed-off-by: Wisam Jaddo Acked-by: Alexander Kozyrev --- app/test-flow-perf/actions_gen.c | 344 +++++++++++++++++++++++++ app/test-flow-perf/main.c | 180 ++++++++++++- doc/guides/rel_notes/release_20_08.rst | 2 + doc/guides/tools/flow-perf.rst | 59 +++++ 4 files changed, 583 insertions(+), 2 deletions(-) diff --git a/app/test-flow-perf/actions_gen.c b/app/test-flow-perf/actions_gen.c index d115cdd723..7e0637595a 100644 --- a/app/test-flow-perf/actions_gen.c +++ b/app/test-flow-perf/actions_gen.c @@ -21,6 +21,7 @@ struct additional_para { uint16_t next_table; uint16_t *queues; uint16_t queues_number; + uint32_t counter; }; /* Storage for struct rte_flow_action_rss including external data. */ @@ -181,6 +182,252 @@ add_count(struct rte_flow_action *actions, actions[actions_counter].conf = &count_action; } +static void +add_set_src_mac(struct rte_flow_action *actions, + uint8_t actions_counter, + __rte_unused struct additional_para para) +{ + static struct rte_flow_action_set_mac set_mac; + uint32_t mac = para.counter; + uint16_t i; + + /* Mac address to be set is random each time */ + for (i = 0; i < RTE_ETHER_ADDR_LEN; i++) { + set_mac.mac_addr[i] = mac & 0xff; + mac = mac >> 8; + } + + actions[actions_counter].type = RTE_FLOW_ACTION_TYPE_SET_MAC_SRC; + actions[actions_counter].conf = &set_mac; +} + +static void +add_set_dst_mac(struct rte_flow_action *actions, + uint8_t actions_counter, + __rte_unused struct additional_para para) +{ + static struct rte_flow_action_set_mac set_mac; + uint32_t mac = para.counter; + uint16_t i; + + /* Mac address to be set is random each time */ + for (i = 0; i < RTE_ETHER_ADDR_LEN; i++) { + set_mac.mac_addr[i] = mac & 0xff; + mac = mac >> 8; + } + + actions[actions_counter].type = RTE_FLOW_ACTION_TYPE_SET_MAC_DST; + actions[actions_counter].conf = &set_mac; +} + +static void +add_set_src_ipv4(struct rte_flow_action *actions, + uint8_t actions_counter, + __rte_unused struct additional_para para) +{ + static struct rte_flow_action_set_ipv4 set_ipv4; + + /* IPv4 value to be set is random each time */ + set_ipv4.ipv4_addr = RTE_BE32(para.counter + 1); + + actions[actions_counter].type = RTE_FLOW_ACTION_TYPE_SET_IPV4_SRC; + actions[actions_counter].conf = &set_ipv4; +} + +static void +add_set_dst_ipv4(struct rte_flow_action *actions, + uint8_t actions_counter, + __rte_unused struct additional_para para) +{ + static struct rte_flow_action_set_ipv4 set_ipv4; + + /* IPv4 value to be set is random each time */ + set_ipv4.ipv4_addr = RTE_BE32(para.counter + 1); + + actions[actions_counter].type = RTE_FLOW_ACTION_TYPE_SET_IPV4_DST; + actions[actions_counter].conf = &set_ipv4; +} + +static void +add_set_src_ipv6(struct rte_flow_action *actions, + uint8_t actions_counter, + __rte_unused struct additional_para para) +{ + static struct rte_flow_action_set_ipv6 set_ipv6; + uint32_t ipv6 = para.counter; + uint8_t i; + + /* IPv6 value to set is random each time */ + for (i = 0; i < 16; i++) { + set_ipv6.ipv6_addr[i] = ipv6 & 0xff; + ipv6 = ipv6 >> 8; + } + + actions[actions_counter].type = RTE_FLOW_ACTION_TYPE_SET_IPV6_SRC; + actions[actions_counter].conf = &set_ipv6; +} + +static void +add_set_dst_ipv6(struct rte_flow_action *actions, + uint8_t actions_counter, + __rte_unused struct additional_para para) +{ + static struct rte_flow_action_set_ipv6 set_ipv6; + uint32_t ipv6 = para.counter; + uint8_t i; + + /* IPv6 value to set is random each time */ + for (i = 0; i < 16; i++) { + set_ipv6.ipv6_addr[i] = ipv6 & 0xff; + ipv6 = ipv6 >> 8; + } + + actions[actions_counter].type = RTE_FLOW_ACTION_TYPE_SET_IPV6_DST; + actions[actions_counter].conf = &set_ipv6; +} + +static void +add_set_src_tp(struct rte_flow_action *actions, + uint8_t actions_counter, + __rte_unused struct additional_para para) +{ + static struct rte_flow_action_set_tp set_tp; + uint32_t tp = para.counter; + + /* TP src port is random each time */ + if (tp > 0xffff) + tp = tp >> 16; + + set_tp.port = RTE_BE16(tp & 0xffff); + + actions[actions_counter].type = RTE_FLOW_ACTION_TYPE_SET_TP_SRC; + actions[actions_counter].conf = &set_tp; +} + +static void +add_set_dst_tp(struct rte_flow_action *actions, + uint8_t actions_counter, + __rte_unused struct additional_para para) +{ + static struct rte_flow_action_set_tp set_tp; + uint32_t tp = para.counter; + + /* TP src port is random each time */ + if (tp > 0xffff) + tp = tp >> 16; + + set_tp.port = RTE_BE16(tp & 0xffff); + + actions[actions_counter].type = RTE_FLOW_ACTION_TYPE_SET_TP_DST; + actions[actions_counter].conf = &set_tp; +} + +static void +add_inc_tcp_ack(struct rte_flow_action *actions, + uint8_t actions_counter, + __rte_unused struct additional_para para) +{ + static rte_be32_t value = RTE_BE32(1); + + actions[actions_counter].type = RTE_FLOW_ACTION_TYPE_INC_TCP_ACK; + actions[actions_counter].conf = &value; +} + +static void +add_dec_tcp_ack(struct rte_flow_action *actions, + uint8_t actions_counter, + __rte_unused struct additional_para para) +{ + static rte_be32_t value = RTE_BE32(1); + + actions[actions_counter].type = RTE_FLOW_ACTION_TYPE_DEC_TCP_ACK; + actions[actions_counter].conf = &value; +} + +static void +add_inc_tcp_seq(struct rte_flow_action *actions, + uint8_t actions_counter, + __rte_unused struct additional_para para) +{ + static rte_be32_t value = RTE_BE32(1); + + actions[actions_counter].type = RTE_FLOW_ACTION_TYPE_INC_TCP_SEQ; + actions[actions_counter].conf = &value; +} + +static void +add_dec_tcp_seq(struct rte_flow_action *actions, + uint8_t actions_counter, + __rte_unused struct additional_para para) +{ + static rte_be32_t value = RTE_BE32(1); + + actions[actions_counter].type = RTE_FLOW_ACTION_TYPE_DEC_TCP_SEQ; + actions[actions_counter].conf = &value; +} + +static void +add_set_ttl(struct rte_flow_action *actions, + uint8_t actions_counter, + __rte_unused struct additional_para para) +{ + static struct rte_flow_action_set_ttl set_ttl; + uint32_t ttl_value = para.counter; + + /* Set ttl to random value each time */ + while (ttl_value > 0xff) + ttl_value = ttl_value >> 8; + + set_ttl.ttl_value = ttl_value; + + actions[actions_counter].type = RTE_FLOW_ACTION_TYPE_SET_TTL; + actions[actions_counter].conf = &set_ttl; +} + +static void +add_dec_ttl(struct rte_flow_action *actions, + uint8_t actions_counter, + __rte_unused struct additional_para para) +{ + actions[actions_counter].type = RTE_FLOW_ACTION_TYPE_DEC_TTL; +} + +static void +add_set_ipv4_dscp(struct rte_flow_action *actions, + uint8_t actions_counter, + __rte_unused struct additional_para para) +{ + static struct rte_flow_action_set_dscp set_dscp; + uint32_t dscp_value = para.counter; + + /* Set dscp to random value each time */ + while (dscp_value > 0xff) + dscp_value = dscp_value >> 8; + + set_dscp.dscp = dscp_value; + + actions[actions_counter].type = RTE_FLOW_ACTION_TYPE_SET_IPV4_DSCP; + actions[actions_counter].conf = &set_dscp; +} + +static void +add_set_ipv6_dscp(struct rte_flow_action *actions, + uint8_t actions_counter, + __rte_unused struct additional_para para) +{ + static struct rte_flow_action_set_dscp set_dscp; + uint32_t dscp_value = para.counter; + + /* Set dscp to random value each time */ + while (dscp_value > 0xff) + dscp_value = dscp_value >> 8; + + set_dscp.dscp = dscp_value; + + actions[actions_counter].type = RTE_FLOW_ACTION_TYPE_SET_IPV6_DSCP; + actions[actions_counter].conf = &set_dscp; +} + void fill_actions(struct rte_flow_action *actions, uint64_t *flow_actions, uint32_t counter, uint16_t next_table, uint16_t hairpinq) @@ -202,6 +449,7 @@ fill_actions(struct rte_flow_action *actions, uint64_t *flow_actions, .next_table = next_table, .queues = queues, .queues_number = RXQ_NUM, + .counter = counter, }; if (hairpinq != 0) { @@ -234,6 +482,102 @@ fill_actions(struct rte_flow_action *actions, uint64_t *flow_actions, .mask = FLOW_ACTION_MASK(RTE_FLOW_ACTION_TYPE_SET_TAG), .funct = add_set_tag, }, + { + .mask = FLOW_ACTION_MASK( + RTE_FLOW_ACTION_TYPE_SET_MAC_SRC + ), + .funct = add_set_src_mac, + }, + { + .mask = FLOW_ACTION_MASK( + RTE_FLOW_ACTION_TYPE_SET_MAC_DST + ), + .funct = add_set_dst_mac, + }, + { + .mask = FLOW_ACTION_MASK( + RTE_FLOW_ACTION_TYPE_SET_IPV4_SRC + ), + .funct = add_set_src_ipv4, + }, + { + .mask = FLOW_ACTION_MASK( + RTE_FLOW_ACTION_TYPE_SET_IPV4_DST + ), + .funct = add_set_dst_ipv4, + }, + { + .mask = FLOW_ACTION_MASK( + RTE_FLOW_ACTION_TYPE_SET_IPV6_SRC + ), + .funct = add_set_src_ipv6, + }, + { + .mask = FLOW_ACTION_MASK( + RTE_FLOW_ACTION_TYPE_SET_IPV6_DST + ), + .funct = add_set_dst_ipv6, + }, + { + .mask = FLOW_ACTION_MASK( + RTE_FLOW_ACTION_TYPE_SET_TP_SRC + ), + .funct = add_set_src_tp, + }, + { + .mask = FLOW_ACTION_MASK( + RTE_FLOW_ACTION_TYPE_SET_TP_DST + ), + .funct = add_set_dst_tp, + }, + { + .mask = FLOW_ACTION_MASK( + RTE_FLOW_ACTION_TYPE_INC_TCP_ACK + ), + .funct = add_inc_tcp_ack, + }, + { + .mask = FLOW_ACTION_MASK( + RTE_FLOW_ACTION_TYPE_DEC_TCP_ACK + ), + .funct = add_dec_tcp_ack, + }, + { + .mask = FLOW_ACTION_MASK( + RTE_FLOW_ACTION_TYPE_INC_TCP_SEQ + ), + .funct = add_inc_tcp_seq, + }, + { + .mask = FLOW_ACTION_MASK( + RTE_FLOW_ACTION_TYPE_DEC_TCP_SEQ + ), + .funct = add_dec_tcp_seq, + }, + { + .mask = FLOW_ACTION_MASK( + RTE_FLOW_ACTION_TYPE_SET_TTL + ), + .funct = add_set_ttl, + }, + { + .mask = FLOW_ACTION_MASK( + RTE_FLOW_ACTION_TYPE_DEC_TTL + ), + .funct = add_dec_ttl, + }, + { + .mask = FLOW_ACTION_MASK( + RTE_FLOW_ACTION_TYPE_SET_IPV4_DSCP + ), + .funct = add_set_ipv4_dscp, + }, + { + .mask = FLOW_ACTION_MASK( + RTE_FLOW_ACTION_TYPE_SET_IPV6_DSCP + ), + .funct = add_set_ipv6_dscp, + }, { .mask = FLOW_ACTION_MASK(RTE_FLOW_ACTION_TYPE_QUEUE), .funct = add_queue, diff --git a/app/test-flow-perf/main.c b/app/test-flow-perf/main.c index 0ff8080aa0..1f693d4ed1 100644 --- a/app/test-flow-perf/main.c +++ b/app/test-flow-perf/main.c @@ -138,6 +138,38 @@ usage(char *progname) printf(" --drop: add drop action in flow actions\n"); printf(" --hairpin-queue=N: add hairpin-queue action in flow actions\n"); printf(" --hairpin-rss=N: add hairpin-rss action in flow actions\n"); + printf(" --set-src-mac: add set src mac action to flow actions\n" + "Src mac to be set is random each flow\n"); + printf(" --set-dst-mac: add set dst mac action to flow actions\n" + "Dst mac to be set is random each flow\n"); + printf(" --set-src-ipv4: add set src ipv4 action to flow actions\n" + "Src ipv4 to be set is random each flow\n"); + printf(" --set-dst-ipv4 add set dst ipv4 action to flow actions\n" + "Dst ipv4 to be set is random each flow\n"); + printf(" --set-src-ipv6: add set src ipv6 action to flow actions\n" + "Src ipv6 to be set is random each flow\n"); + printf(" --set-dst-ipv6: add set dst ipv6 action to flow actions\n" + "Dst ipv6 to be set is random each flow\n"); + printf(" --set-src-tp: add set src tp action to flow actions\n" + "Src tp to be set is random each flow\n"); + printf(" --set-dst-tp: add set dst tp action to flow actions\n" + "Dst tp to be set is random each flow\n"); + printf(" --inc-tcp-ack: add inc tcp ack action to flow actions\n" + "tcp ack will be increments by 1\n"); + printf(" --dec-tcp-ack: add dec tcp ack action to flow actions\n" + "tcp ack will be decrements by 1\n"); + printf(" --inc-tcp-seq: add inc tcp seq action to flow actions\n" + "tcp seq will be increments by 1\n"); + printf(" --dec-tcp-seq: add dec tcp seq action to flow actions\n" + "tcp seq will be decrements by 1\n"); + printf(" --set-ttl: add set ttl action to flow actions\n" + "L3 ttl to be set is random each flow\n"); + printf(" --dec-ttl: add dec ttl action to flow actions\n" + "L3 ttl will be decrements by 1\n"); + printf(" --set-ipv4-dscp: add set ipv4 dscp action to flow actions\n" + "ipv4 dscp value to be set is random each flow\n"); + printf(" --set-ipv6-dscp: add set ipv6 dscp action to flow actions\n" + "ipv6 dscp value to be set is random each flow\n"); } static void @@ -304,7 +336,135 @@ args_parse(int argc, char **argv) .mask = FLOW_ACTION_MASK(RTE_FLOW_ACTION_TYPE_DROP), .map = &flow_actions[0], .map_idx = &actions_idx - } + }, + { + .str = "set-src-mac", + .mask = FLOW_ACTION_MASK( + RTE_FLOW_ACTION_TYPE_SET_MAC_SRC + ), + .map = &flow_actions[0], + .map_idx = &actions_idx + }, + { + .str = "set-dst-mac", + .mask = FLOW_ACTION_MASK( + RTE_FLOW_ACTION_TYPE_SET_MAC_DST + ), + .map = &flow_actions[0], + .map_idx = &actions_idx + }, + { + .str = "set-src-ipv4", + .mask = FLOW_ACTION_MASK( + RTE_FLOW_ACTION_TYPE_SET_IPV4_SRC + ), + .map = &flow_actions[0], + .map_idx = &actions_idx + }, + { + .str = "set-dst-ipv4", + .mask = FLOW_ACTION_MASK( + RTE_FLOW_ACTION_TYPE_SET_IPV4_DST + ), + .map = &flow_actions[0], + .map_idx = &actions_idx + }, + { + .str = "set-src-ipv6", + .mask = FLOW_ACTION_MASK( + RTE_FLOW_ACTION_TYPE_SET_IPV6_SRC + ), + .map = &flow_actions[0], + .map_idx = &actions_idx + }, + { + .str = "set-dst-ipv6", + .mask = FLOW_ACTION_MASK( + RTE_FLOW_ACTION_TYPE_SET_IPV6_DST + ), + .map = &flow_actions[0], + .map_idx = &actions_idx + }, + { + .str = "set-src-tp", + .mask = FLOW_ACTION_MASK( + RTE_FLOW_ACTION_TYPE_SET_TP_SRC + ), + .map = &flow_actions[0], + .map_idx = &actions_idx + }, + { + .str = "set-dst-tp", + .mask = FLOW_ACTION_MASK( + RTE_FLOW_ACTION_TYPE_SET_TP_DST + ), + .map = &flow_actions[0], + .map_idx = &actions_idx + }, + { + .str = "inc-tcp-ack", + .mask = FLOW_ACTION_MASK( + RTE_FLOW_ACTION_TYPE_INC_TCP_ACK + ), + .map = &flow_actions[0], + .map_idx = &actions_idx + }, + { + .str = "dec-tcp-ack", + .mask = FLOW_ACTION_MASK( + RTE_FLOW_ACTION_TYPE_DEC_TCP_ACK + ), + .map = &flow_actions[0], + .map_idx = &actions_idx + }, + { + .str = "inc-tcp-seq", + .mask = FLOW_ACTION_MASK( + RTE_FLOW_ACTION_TYPE_INC_TCP_SEQ + ), + .map = &flow_actions[0], + .map_idx = &actions_idx + }, + { + .str = "dec-tcp-seq", + .mask = FLOW_ACTION_MASK( + RTE_FLOW_ACTION_TYPE_DEC_TCP_SEQ + ), + .map = &flow_actions[0], + .map_idx = &actions_idx + }, + { + .str = "set-ttl", + .mask = FLOW_ACTION_MASK( + RTE_FLOW_ACTION_TYPE_SET_TTL + ), + .map = &flow_actions[0], + .map_idx = &actions_idx + }, + { + .str = "dec-ttl", + .mask = FLOW_ACTION_MASK( + RTE_FLOW_ACTION_TYPE_DEC_TTL + ), + .map = &flow_actions[0], + .map_idx = &actions_idx + }, + { + .str = "set-ipv4-dscp", + .mask = FLOW_ACTION_MASK( + RTE_FLOW_ACTION_TYPE_SET_IPV4_DSCP + ), + .map = &flow_actions[0], + .map_idx = &actions_idx + }, + { + .str = "set-ipv6-dscp", + .mask = FLOW_ACTION_MASK( + RTE_FLOW_ACTION_TYPE_SET_IPV6_DSCP + ), + .map = &flow_actions[0], + .map_idx = &actions_idx + }, }; static const struct option lgopts[] = { @@ -346,6 +506,22 @@ args_parse(int argc, char **argv) { "drop", 0, 0, 0 }, { "hairpin-queue", 1, 0, 0 }, { "hairpin-rss", 1, 0, 0 }, + { "set-src-mac", 0, 0, 0 }, + { "set-dst-mac", 0, 0, 0 }, + { "set-src-ipv4", 0, 0, 0 }, + { "set-dst-ipv4", 0, 0, 0 }, + { "set-src-ipv6", 0, 0, 0 }, + { "set-dst-ipv6", 0, 0, 0 }, + { "set-src-tp", 0, 0, 0 }, + { "set-dst-tp", 0, 0, 0 }, + { "inc-tcp-ack", 0, 0, 0 }, + { "dec-tcp-ack", 0, 0, 0 }, + { "inc-tcp-seq", 0, 0, 0 }, + { "dec-tcp-seq", 0, 0, 0 }, + { "set-ttl", 0, 0, 0 }, + { "dec-ttl", 0, 0, 0 }, + { "set-ipv4-dscp", 0, 0, 0 }, + { "set-ipv6-dscp", 0, 0, 0 }, }; hairpin_queues_num = 0; @@ -368,7 +544,7 @@ args_parse(int argc, char **argv) else rte_exit(EXIT_SUCCESS, "flow group should be >= 0\n"); - printf("group %d ", flow_group); + printf("group %d / ", flow_group); } for (i = 0; i < RTE_DIM(flow_options); i++) diff --git a/doc/guides/rel_notes/release_20_08.rst b/doc/guides/rel_notes/release_20_08.rst index d3ba4cd1d0..7c9d508a07 100644 --- a/doc/guides/rel_notes/release_20_08.rst +++ b/doc/guides/rel_notes/release_20_08.rst @@ -280,6 +280,8 @@ New Features moreover the app also now starts to support inner items matching as well. + * Start supporting header modify actions. + Removed Items ------------- diff --git a/doc/guides/tools/flow-perf.rst b/doc/guides/tools/flow-perf.rst index 6941155fee..e225550e40 100644 --- a/doc/guides/tools/flow-perf.rst +++ b/doc/guides/tools/flow-perf.rst @@ -244,3 +244,62 @@ Actions: Add hairpin RSS action to all flows actions. The queues in RSS action will be all hairpin queues configured in the app. + +* ``--set-src-mac`` + Add set source mac action to all flows actions. + The mac to be set is random each flow. + +* ``--set-dst-mac`` + Add set destination mac action to all flows actions. + The mac to be set is random each flow. + +* ``-set-src-ipv4`` + Add set source ipv4 action to all flows actions. + The ipv4 header to be set is random each flow. + +* ``--set-dst-ipv4`` + Add set destination ipv4 action to all flows actions. + The ipv4 header to be set is random each flow. + +* ``--set-src-ipv6`` + Add set source ipv6 action to all flows actions. + The ipv6 header to be set is random each flow. + +* ``--set-dst-ipv6`` + Add set destination ipv6 action to all flows actions. + The ipv6 header to be set is random each flow. + +* ``--set-src-tp`` + Add set source tp action to all flows actions. + The tp sport header to be set is random each flow. + +* ``--set-dst-tp`` + Add set destination tp action to all flows actions. + The tp dport header to be set is random each flow. + +* ``--inc-tcp-ack`` + Add increment TCP acknowledgment by one to all flows actions. + +* ``--dec-tcp-ack`` + Add decrement TCP acknowledgment by one to all flows actions. + +* ``--inc-tcp-seq`` + Add increment TCP sequence by one to all flows actions. + +* ``--dec-tcp-seq`` + Add decrement TCP sequence by one to all flows actions. + +* ``--set-ttl`` + Add set IP ttl action to all flows actions. + The ttl value to be set is random each flow. + +* ``--dec-ttl`` + Add decrement IP ttl by one to all flows actions. + +* ``--set-ipv4-dscp`` + Add set IPv4 dscp action to all flows actions. + The dscp value to be is random each flow. + +* ``--set-ipv6-dscp`` + Add set IPv6 dscp action to all flows actions. + The dscp value to be is random each flow. From patchwork Sun Aug 30 11:15:36 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wisam Jaddo X-Patchwork-Id: 76155 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 956ADA04AB; Sun, 30 Aug 2020 13:20:43 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id A04191C0CD; Sun, 30 Aug 2020 13:16:32 +0200 (CEST) Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-eopbgr00075.outbound.protection.outlook.com [40.107.0.75]) by dpdk.org (Postfix) with ESMTP id 27E291C0B3 for ; Sun, 30 Aug 2020 13:16:28 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cICPl26hLhmt1X2xd94li93UpfXOZRL6CNqOSP8QkYL+k8FDXzzkJfX7qVWp8Ip7XxbZGtFh9Oo1la4n7xzygOnuAVvbOdfs5q+O36jCNf2oIkQF2t3qjsu4g7uL2/6Wao6sdbQavyEdByCrSyO0Rg0L6DabUm5XdCw88U6caYhFilHXfRZ8/jxqG0X2QZFztYcmkcKiW4X7SbmE+3Iigy8eiSDLgj/0Jgx1LThYIl9IG4NVJDTJHcFxvVtdfdMrDl37B14yYBrD4pSI8LBiPJ7hXqxfLvR+Saff14fyqYqdm7hIDp3CBQTWnHk6s3cdU2Ty/Sjd+QjCuMsWaDrM5w== 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=yNWPSh6zN8dH9Uqc5XMhLuiPgBkNNk3pZkF8p2EBYbw=; b=afaAoM7+0nE2dJ7zslqpwTHxBZW0Y9dMsorb6iXT4gQA2+zDnIqbJMTicdPwvVBwONiQD0SOM/nzz1RAj4kJxd6SDSyjM8xKeYfFFB+qv36oaMm+H2l/IAvAQftXc8SH9EZGG9htaAD52R1DD0R2yc42irmyJo/AFCiiCgLoS8mePqvzBa2pH64WBspFnuWh9nfMSpcF5qlxwsvJ6h9b+vzqFx/eAwu8h/wHg9OHxyxnfe11VvR4nEBBFG0dTyADTykT2plFzgtOnBwLIpZO/6/JX5XSy/9rvfXhL+dwgpn1vz1Nd90UaKH518YK2l8dMbxlSXxMhojoqyX4NSnoIA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=yNWPSh6zN8dH9Uqc5XMhLuiPgBkNNk3pZkF8p2EBYbw=; b=qUt2gLL65dwIvWeC9edJRXhhmPlzPzQ5LP/PPaiymHSJgUimsgAcBdO/ymNRsStOGn9GiR1AbFU5qCVaPrDV6npljIeNXNjv+RH2geTY8oBDHAZ48KhVj9QTDgAwjxDpt70WKeNxjRrtwnf71bCtiH2zdB8xP621IAXVjvI4aGY= Authentication-Results: dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=none action=none header.from=mellanox.com; Received: from AM0PR05MB6610.eurprd05.prod.outlook.com (2603:10a6:208:12f::18) by AM0PR0502MB3762.eurprd05.prod.outlook.com (2603:10a6:208:1b::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3326.21; Sun, 30 Aug 2020 11:16:27 +0000 Received: from AM0PR05MB6610.eurprd05.prod.outlook.com ([fe80::4c8a:9848:2e2a:3598]) by AM0PR05MB6610.eurprd05.prod.outlook.com ([fe80::4c8a:9848:2e2a:3598%6]) with mapi id 15.20.3326.025; Sun, 30 Aug 2020 11:16:27 +0000 From: Wisam Jaddo To: dev@dpdk.org, thomas@monjalon.net, asafp@mellanox.com, akozyrev@nvidia.com, akozyrev@mellanox.com, arybchenko@solarflare.com, jackmin@mellanox.com Date: Sun, 30 Aug 2020 11:15:36 +0000 Message-Id: <20200830111544.4190-6-wisamm@mellanox.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200830111544.4190-1-wisamm@mellanox.com> References: <20200830111544.4190-1-wisamm@mellanox.com> X-ClientProxiedBy: AM4PR05CA0008.eurprd05.prod.outlook.com (2603:10a6:205::21) To AM0PR05MB6610.eurprd05.prod.outlook.com (2603:10a6:208:12f::18) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from mellanox.com (37.142.13.130) by AM4PR05CA0008.eurprd05.prod.outlook.com (2603:10a6:205::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3326.19 via Frontend Transport; Sun, 30 Aug 2020 11:16:26 +0000 X-Mailer: git-send-email 2.17.1 X-Originating-IP: [37.142.13.130] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: febc4efe-3947-4c7c-b201-08d84cd6231c X-MS-TrafficTypeDiagnostic: AM0PR0502MB3762: X-LD-Processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtFwd,ExtAddr X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:813; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 0p+wQQ/Es5eYAEQMlZrxXBdqGcIhn6T85hn0/vVAEq8e7GzLZ89sZeyXb2qxA5StYpjcjdgY8px/RFT+NKELm7uCCb/gRrxg/XbaY1Z8/JbSN+8Dc+nekMDvu8NXpRZfCm45huuDVyVRRoZhYcUBzCyQ1p8Ufgp9YAvbvw0hTIG1UZKjUGN0GJL787IoT/O2Y+QQ7gHAexR7xQj+9QVwCxmLBjXPbJ2u3Tb4PHn2lgCjN5hQieYOdE5K07AoFsZuf9/27yQ3CaHpC4hNCmPojKHNl7rwTJ5dYYcmlF2aHhFKAoC2v2fV49HJg2GIHnId X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0PR05MB6610.eurprd05.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(396003)(136003)(39860400002)(376002)(346002)(478600001)(316002)(5660300002)(8886007)(2906002)(6636002)(86362001)(36756003)(6666004)(1076003)(55016002)(8936002)(26005)(2616005)(7696005)(66946007)(66556008)(52116002)(16526019)(8676002)(186003)(956004)(66476007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: 1TgFWK6HjtCo+edIP9DEPAvnizMpgc1iWnU7yc7IE29/AWcZFg4Qkf5MjaaHu3EBU6ElCUhrLjSXCldAHQ7fwA5a8tvuRFGL8j/ImQA0TkuABBA7Dqz/65T6dN7+HgjKthF0pox/rpQoprjk6cRqU1il7r5zu2kP+tNUadp46J/SqzztJrKnhnzBN/xHzop0ZR8Ox+150QxstlXMX2j+IU5EPNyteHu+nrbH1CITXpwp8HtdEx4/AAKfWxYOHFlEfdyf642vA4lYayQKYQPhpoFja6Cw9ciRIKfL+tK6qstrUImPo9FFPDMViYcv29p6efWxYiCM+JJTQ3F+kRSS5vojnAwjdYFCk5fyeCsrou4rfgUVqtkQApIH7YJ6lOmbzydB0jIypFPBz6bpreN1I00w8tt6cN0ivM51YwsJX1hFpVavOmUwzsX+KaxrayKUoMq0PROElYCjnodqGxLnF/pEnHj1LXcd+3FdmCOOAxBGddIVYZhbm22CggZro8phMMGS4YrfCOFDwmzPsZt5pHLo/TDrTxGxiUFvctcOVvXYFFOu9K+EVYx0aubobJCoKKwWbGD9JZqieAZ7cO1cyI8jS0ec3g8mNh85xLOYTD/rBXDZQwPN0QKL7OPnZqmYQXNwxKsQOWRPf6l1JLkhpQ== X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: febc4efe-3947-4c7c-b201-08d84cd6231c X-MS-Exchange-CrossTenant-AuthSource: AM0PR05MB6610.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Aug 2020 11:16:27.1039 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: R0FmaBj0jGhpMdw1YvULtaJZV8YptdvpNevyAaX5HzHxuPGeq/zSurA4P9xIQC/mFJ4y5tDEIqC7HW224RNRCA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR0502MB3762 Subject: [dpdk-dev] [PATCH 05/13] app/flow-perf: add flag action support X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 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" Introudce flag action support to flow perf application. Signed-off-by: Wisam Jaddo Acked-by: Alexander Kozyrev --- app/test-flow-perf/actions_gen.c | 14 ++++++++++++++ app/test-flow-perf/main.c | 10 ++++++++++ doc/guides/rel_notes/release_20_08.rst | 1 + doc/guides/tools/flow-perf.rst | 3 +++ 4 files changed, 28 insertions(+) diff --git a/app/test-flow-perf/actions_gen.c b/app/test-flow-perf/actions_gen.c index 7e0637595a..9fe11abc94 100644 --- a/app/test-flow-perf/actions_gen.c +++ b/app/test-flow-perf/actions_gen.c @@ -428,6 +428,14 @@ add_set_ipv6_dscp(struct rte_flow_action *actions, actions[actions_counter].conf = &set_dscp; } +static void +add_flag(struct rte_flow_action *actions, + uint8_t actions_counter, + __rte_unused struct additional_para para) +{ + actions[actions_counter].type = RTE_FLOW_ACTION_TYPE_FLAG; +} + void fill_actions(struct rte_flow_action *actions, uint64_t *flow_actions, uint32_t counter, uint16_t next_table, uint16_t hairpinq) @@ -482,6 +490,12 @@ fill_actions(struct rte_flow_action *actions, uint64_t *flow_actions, .mask = FLOW_ACTION_MASK(RTE_FLOW_ACTION_TYPE_SET_TAG), .funct = add_set_tag, }, + { + .mask = FLOW_ACTION_MASK( + RTE_FLOW_ACTION_TYPE_FLAG + ), + .funct = add_flag, + }, { .mask = FLOW_ACTION_MASK( RTE_FLOW_ACTION_TYPE_SET_MAC_SRC diff --git a/app/test-flow-perf/main.c b/app/test-flow-perf/main.c index 1f693d4ed1..ae0d1a3be5 100644 --- a/app/test-flow-perf/main.c +++ b/app/test-flow-perf/main.c @@ -170,6 +170,7 @@ usage(char *progname) "ipv4 dscp value to be set is random each flow\n"); printf(" --set-ipv6-dscp: add set ipv6 dscp action to flow actions\n" "ipv6 dscp value to be set is random each flow\n"); + printf(" --flag: add flag action to flow actions\n"); } static void @@ -465,6 +466,14 @@ args_parse(int argc, char **argv) .map = &flow_actions[0], .map_idx = &actions_idx }, + { + .str = "flag", + .mask = FLOW_ACTION_MASK( + RTE_FLOW_ACTION_TYPE_FLAG + ), + .map = &flow_actions[0], + .map_idx = &actions_idx + }, }; static const struct option lgopts[] = { @@ -522,6 +531,7 @@ args_parse(int argc, char **argv) { "dec-ttl", 0, 0, 0 }, { "set-ipv4-dscp", 0, 0, 0 }, { "set-ipv6-dscp", 0, 0, 0 }, + { "flag", 0, 0, 0 }, }; hairpin_queues_num = 0; diff --git a/doc/guides/rel_notes/release_20_08.rst b/doc/guides/rel_notes/release_20_08.rst index 7c9d508a07..eed3900a8c 100644 --- a/doc/guides/rel_notes/release_20_08.rst +++ b/doc/guides/rel_notes/release_20_08.rst @@ -281,6 +281,7 @@ New Features items matching as well. * Start supporting header modify actions. + * Start supporting flag action. Removed Items diff --git a/doc/guides/tools/flow-perf.rst b/doc/guides/tools/flow-perf.rst index e225550e40..69cdd1b222 100644 --- a/doc/guides/tools/flow-perf.rst +++ b/doc/guides/tools/flow-perf.rst @@ -303,3 +303,6 @@ Actions: * ``--set-ipv6-dscp`` Add set IPv6 dscp action to all flows actions. The dscp value to be is random each flow. + +* ``--flag`` + Add flag action to all flows actions. From patchwork Sun Aug 30 11:15:37 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wisam Jaddo X-Patchwork-Id: 76156 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id B3670A04AB; Sun, 30 Aug 2020 13:21:09 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id EB6861C0D2; Sun, 30 Aug 2020 13:16:33 +0200 (CEST) Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-eopbgr00041.outbound.protection.outlook.com [40.107.0.41]) by dpdk.org (Postfix) with ESMTP id 788B11C0BC for ; Sun, 30 Aug 2020 13:16:29 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=H9Q14eTjZl321YAHou5zW7JbQr3gzfWZFM2dIK/6lCR/YI6BcEY2/9eB9IeCskwIQPsAbYT5kKrqPJe9lrr6+HqbOMoE5YQhyKjQDtVO72cWHeBtyEGrjMOHSJkkX2Ir1hbnZnMPz8SK/JHWwsEkJNBrrXQyLgrIPMjjW5HhE9zMSFzPqZmxNYtvKD8V1P3+ee0i0zVemn9F/kgKrzHyPImSC2N3PxRjz3gF9s7u8g9CPMRitHVJ14960vsyf7oSrV3NQFkAJbhyvPx4JnU9Sab8bbclBXUAxntiugX8fnGiJS/crFMiDpO4aMgk0Gn7g774JZU2QHpRX9rDG2fRew== 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=RC22mkX0dn4vr5hto5VQHflb95cJLHLvNOIoFB1FUUE=; b=kqDn5z85YT9WfJRHfsyHsZuehWrbKxcG/jXDwp9GrtYDIhxh4JMKO2bCsyE06eeGkJoiirV91k2TRxSY4dXH4epxJkLZfR/TViHWSlYqGvYXb/2nWXqGSCt3+4do8rVwQQfsp1iXRFUFwIAb/8i2IDZhdGOvWNt4BrdSkdBS5vLGZty93CNq9dWCeUe6UBcw8pm6zjIRmXmhOuT6YXB1f/yTEj9AHOgKvhc/AGBKpUOhy45iD3BYFyDBMSNsQHyGQZFdFaa6hUhckGV2kNrdn2IqanX3iuMR7f9J7yFcnPcd4Kk6eCoXMDpBAkmD/JmQjJ7ZIsgXgKQ1TV6e68RDsQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=RC22mkX0dn4vr5hto5VQHflb95cJLHLvNOIoFB1FUUE=; b=U8vA6pMwVE2hnh5Iw/nKMr0QovEDk2Olp6MQzgCGZA9mIOaqmHiitwQTvg8HhUzYARuhx3k84QC1R0N75UpCz/MU6PKCMxZLjz0SPCMlSzz8MSbCQpkTLgupzTark3yq+37flHk7wYb45OeOiIdHUXSq1D7IJ48UETOja22z7+Q= Authentication-Results: dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=none action=none header.from=mellanox.com; Received: from AM0PR05MB6610.eurprd05.prod.outlook.com (2603:10a6:208:12f::18) by AM0PR0502MB3762.eurprd05.prod.outlook.com (2603:10a6:208:1b::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3326.21; Sun, 30 Aug 2020 11:16:28 +0000 Received: from AM0PR05MB6610.eurprd05.prod.outlook.com ([fe80::4c8a:9848:2e2a:3598]) by AM0PR05MB6610.eurprd05.prod.outlook.com ([fe80::4c8a:9848:2e2a:3598%6]) with mapi id 15.20.3326.025; Sun, 30 Aug 2020 11:16:28 +0000 From: Wisam Jaddo To: dev@dpdk.org, thomas@monjalon.net, asafp@mellanox.com, akozyrev@nvidia.com, akozyrev@mellanox.com, arybchenko@solarflare.com, jackmin@mellanox.com Cc: wisamm@mellanox.com Date: Sun, 30 Aug 2020 11:15:37 +0000 Message-Id: <20200830111544.4190-7-wisamm@mellanox.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200830111544.4190-1-wisamm@mellanox.com> References: <20200830111544.4190-1-wisamm@mellanox.com> X-ClientProxiedBy: AM4PR05CA0008.eurprd05.prod.outlook.com (2603:10a6:205::21) To AM0PR05MB6610.eurprd05.prod.outlook.com (2603:10a6:208:12f::18) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from mellanox.com (37.142.13.130) by AM4PR05CA0008.eurprd05.prod.outlook.com (2603:10a6:205::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3326.19 via Frontend Transport; Sun, 30 Aug 2020 11:16:27 +0000 X-Mailer: git-send-email 2.17.1 X-Originating-IP: [37.142.13.130] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 6a75f377-04a2-4be2-4994-08d84cd623d6 X-MS-TrafficTypeDiagnostic: AM0PR0502MB3762: X-LD-Processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtFwd,ExtAddr X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:2043; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 2mwE7G8RSC0Nhr0ZwmZ5G8BGOZF8osXWxy2gW5gBKuauuF/ejBQi4Qs5cLhqOBocBchrTRGWOQM6mBow4mzj+k9v0c5JoZqRjy9XrapQx08SmTLvgNpO23+ONpjMnyk08K5R7uS/yr96aeoTCgyjqxeVZnH8LHMr3YmvgV6aAZVgyl7Gb5GP8bxY4u7bkBh63XO0uGnhoqiRQwTW7Mg/55RJFMir+NwmkKpHByJJKaRPrB5HrWaxWdUiXoBBy63LVhOFigBTvfDCqpUPy2LkU2z8aV5sH2qXq0JqXC7HesLE/Oe6e/n119+fqYQh8tqyIvRexb8GRk1Jw1Lg3TAEGA== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0PR05MB6610.eurprd05.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(396003)(136003)(39860400002)(376002)(346002)(478600001)(107886003)(316002)(5660300002)(8886007)(2906002)(6636002)(4326008)(86362001)(36756003)(6666004)(1076003)(55016002)(8936002)(26005)(2616005)(7696005)(66946007)(66556008)(52116002)(83380400001)(16526019)(8676002)(186003)(956004)(66476007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: biK4iQ1gvlNLUnoiAOfDH8kXiqVvpGPiFjHOZqbKaqr7a8SkhEuqnOVZmHtk/1J+D/jHkABphrs7jZCQLh5RWrSRTtQ9DMyWC8MhW0kFBGz6DHImsN3gw+jrbmT15VhsCxKl/UNQiTlsiMVv+6Y9C8/K7I9PDKP/B6yZXPpiv62eD9nXMnRIEd8krOZue6xNQtCY2XTkP/I6vU5cad1qp8donBPts7RlIGBAQGm42q1zhd3J/B+n0zpO7fWfdNMRWJRDsiA4LEVKi/RtYfjpKkiQAPI4cRrbwA5Ab8eiTZKAVtWPWPiRW8FlReBwykaCnAOf52dbtF2B4qsEl+IkZ38GgNcYPVsgkiDipitcg0StUcbq2eI3QutjAQiJUMEnR5bYj8O5aijLvmjn9WX84VLFQ477UL8bwINqwjUP/wbiY/c4G961E83ev68Mz/dk+fR3CgcBT3hnnXT67+EpXMVDUHmgKaSgheyVRb4TSxx4QVGa97diS6DyW4wRQWDe9qJFE0yubVeJ7jecnsPrd4Zb8Xvnvra2Eza0fBdyMAPZMk43fWOhsycNzL8rsucyFNGRdgObBriyMVyVw/uiCsM69j9ZNLrtR8H5mjUzFOebpCQ8/ip/sW8Zzg5QxeOXLZ3RSMzVW7YIcyAnFdGLKw== X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6a75f377-04a2-4be2-4994-08d84cd623d6 X-MS-Exchange-CrossTenant-AuthSource: AM0PR05MB6610.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Aug 2020 11:16:28.3112 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: bnk/9FOACssmXR5ZmSnSoJdZkLQgz3QgXJzkpFKbfyWXcYWYNTPKalstX/ILu5BLArQTfSGGHuCtjPsaXcKbIw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR0502MB3762 Subject: [dpdk-dev] [PATCH 06/13] app/flow-perf: fix memory leak from RSS action X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 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" Currently, each call for add_rss_action will allocate extra memory for rss_data, which will reflect bad results on memory consumption for all flows, and will leads into memory leak. In this fix, it will check if it's allocated before reallocating it. Fixes: bf3688f1e816 ("app/flow-perf: add insertion rate calculation") Cc: wisamm@mellanox.com Signed-off-by: Wisam Jaddo Acked-by: Alexander Kozyrev --- app/test-flow-perf/actions_gen.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/test-flow-perf/actions_gen.c b/app/test-flow-perf/actions_gen.c index 9fe11abc94..99e47bf786 100644 --- a/app/test-flow-perf/actions_gen.c +++ b/app/test-flow-perf/actions_gen.c @@ -86,8 +86,9 @@ add_rss(struct rte_flow_action *actions, uint16_t queue; - rss_data = rte_malloc("rss_data", - sizeof(struct action_rss_data), 0); + if (rss_data == NULL) + rss_data = rte_malloc("rss_data", + sizeof(struct action_rss_data), 0); if (rss_data == NULL) rte_exit(EXIT_FAILURE, "No Memory available!"); From patchwork Sun Aug 30 11:15:38 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wisam Jaddo X-Patchwork-Id: 76157 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 590BFA04AB; Sun, 30 Aug 2020 13:21:33 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 3EDC51C0DB; Sun, 30 Aug 2020 13:16:35 +0200 (CEST) Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-eopbgr00041.outbound.protection.outlook.com [40.107.0.41]) by dpdk.org (Postfix) with ESMTP id A204E1C0C3 for ; Sun, 30 Aug 2020 13:16:30 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CLFFxVIfemSPIG7s4jPgQgbP+vR2+DySORTq5R6kSa3MJdmQ3a+DSfmfbzfc0ORwFgieL1s5+W7g6xxml4IHMjqZKE0DoNlKqrqbL0KqR/kiaTM/kaegu5hnmXXZ4S4EPNCCmxxXVHNwsqtHcGJ1IRu2uYH4REW9Z4/1hmEEz+SzZurp3fN5iy3ZhlBErKMTL/Zkp52DNQ+X6+9PeDgpE20woMJbY0XtOGo+wtP0J9Ht26IOgruVLveX/FajSYTTC828pHxQ26kikhYXj/G+tY5qwiTvovbrqAFZQKCz0iC31DBm/bBk3FD1fZ/l+O8BtBUYaX4CSGsCff4sPl3w3g== 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=6YF1O/vo64bUNxC1M43ESjx7E2Aw51/jJEkpEjDT8qw=; b=GkWpkzwJvLMC0wBpl4lydGNMY9ANsnfDUR4mG6ZhvQtNkqYLfjhPyRoOqpY+26td86wSAOmx6U1SxpyzAaaeqpcGaJkhsGxRljd6cb8BvAJ8scdXYOuklw04EouS2t1mHSWEWeMb74CYvGpO2Jw3WhCNr3hdVhVPF2KHXjsuHw5B5LhTcsxXa2gjmncq2GFWNa+XTXyUZeuLtMNUANzxeIINPWPeWH6TSCG9YkKEyCtJjGFXc5c1FWbfglmmcjOBrIOeqXfCfor3ZqTgM5BBlrTb8uRTp9ucp0Ol6b4bx2BIbQhBboyf/gRo+z+gN29/NNcjfEx0ipe/9M0ccra5/A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6YF1O/vo64bUNxC1M43ESjx7E2Aw51/jJEkpEjDT8qw=; b=Ru6zyIr1CGARRH+9TZlY9ACjKq1O1gHmg2FguuMAocIFd/ZBRxFxLWn03FqemOiQGDfQYkP9hKYiWbyQgurGOzIV6Y2oS8xEp8FXoHRVtlEDjOOVsqbG3qsO+j+K2ytTEHIzotwh41Pc1OXVJj90KPOagV0wSTDVmlbUPV9LMf0= Authentication-Results: dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=none action=none header.from=mellanox.com; Received: from AM0PR05MB6610.eurprd05.prod.outlook.com (2603:10a6:208:12f::18) by AM0PR0502MB3762.eurprd05.prod.outlook.com (2603:10a6:208:1b::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3326.21; Sun, 30 Aug 2020 11:16:29 +0000 Received: from AM0PR05MB6610.eurprd05.prod.outlook.com ([fe80::4c8a:9848:2e2a:3598]) by AM0PR05MB6610.eurprd05.prod.outlook.com ([fe80::4c8a:9848:2e2a:3598%6]) with mapi id 15.20.3326.025; Sun, 30 Aug 2020 11:16:29 +0000 From: Wisam Jaddo To: dev@dpdk.org, thomas@monjalon.net, asafp@mellanox.com, akozyrev@nvidia.com, akozyrev@mellanox.com, arybchenko@solarflare.com, jackmin@mellanox.com Date: Sun, 30 Aug 2020 11:15:38 +0000 Message-Id: <20200830111544.4190-8-wisamm@mellanox.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200830111544.4190-1-wisamm@mellanox.com> References: <20200830111544.4190-1-wisamm@mellanox.com> X-ClientProxiedBy: AM4PR05CA0008.eurprd05.prod.outlook.com (2603:10a6:205::21) To AM0PR05MB6610.eurprd05.prod.outlook.com (2603:10a6:208:12f::18) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from mellanox.com (37.142.13.130) by AM4PR05CA0008.eurprd05.prod.outlook.com (2603:10a6:205::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3326.19 via Frontend Transport; Sun, 30 Aug 2020 11:16:28 +0000 X-Mailer: git-send-email 2.17.1 X-Originating-IP: [37.142.13.130] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 1864ea6f-a9c3-4aaa-464c-08d84cd6247d X-MS-TrafficTypeDiagnostic: AM0PR0502MB3762: X-LD-Processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtFwd,ExtAddr X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:305; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: MUjLANQRaLx8Iq7ezqQLNnrJ4Cnoax+3zGYwnI9sBi3FtkbbRY6Veaj25QRMjyzzm65TarCR4zLaeBu5RBtnq6YC9++Bq5C/67Rx5Nkf6mdMYczdNTSk+3VYZmjd1BYhAga9eGRFLaoumlaNhBb5P0kfL/a3lzeoNvDyxNRMaeoI9EsntDVuPnURBjgIwm/X1qgcSjLZ4wxZz3VKnO9SFecv02Mp6RaMcgwIQ31IobynIcLKyygRfnx8ZNWQQDYaDm00VEhHbh+rscqV3CtRS1++hPwwgdgA1df/HMbQHuNc0F3FjDPGc44dJfQ6uZMU X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0PR05MB6610.eurprd05.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(396003)(136003)(39860400002)(376002)(346002)(478600001)(316002)(5660300002)(8886007)(30864003)(2906002)(6636002)(86362001)(36756003)(6666004)(1076003)(55016002)(8936002)(26005)(2616005)(7696005)(66946007)(66556008)(52116002)(83380400001)(16526019)(8676002)(186003)(956004)(66476007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: SfZsJimoXlZ/qlRsL3pQUdOUl5AZ17EDwJjlwjvdvsFuXXS+z2/DrWuho1ssHH8+fafoyi16vdidthUiKpCazMjSGJ9mqwSo1KZetX29BC+4s3QxzB74wejsMwRztEh6Y3aGT5nNpqNLCmugjOZ3H7TZwQ792jT/FZjU61A7wC6Awe5iGgMX3ca5D2BQ7udd4/bd+88WYHFTayrxhmWoMxGYXs/DN9sUO1Okv8z1AD2h0iYIwYEC2vRc89n21ADqb5XH/fYJtqDmA8ONMbKjQjgVR2QDpEsQiSHwY2GhrCx3wRZbLc5HuIqNDjujkA/0xaEKK8qQAaBqG3Xy6NZ1AAH9Zoh//qdYn4T4e2p5J71fff75KjBJLLLMJ2TJPfE2ty4PdVkljosgKa8Bnw0qRz6wsIJmbcnRHy1TALkjnEXBNMgYWke+SbwqEdfVgL+U8SsmX3F04rSPPR9PaLhfNOBWcLj2SoA38vH+qugiPDWXubOQT6DQ1mpGtzTWHojEZnT5PNI7PaJp5EfEDCAIYb04akhb7R/3p1KfZdiGXwe4W/n3QpFRhuBftoVvNR6w8A2lWZzowNOYlvc1XKpbWIR9hx/YtO/qYZdIkQHbObb7H1QgTij38vnk/9JDY9W0J2x4XeMlk8gOZlBSDAq8ew== X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1864ea6f-a9c3-4aaa-464c-08d84cd6247d X-MS-Exchange-CrossTenant-AuthSource: AM0PR05MB6610.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Aug 2020 11:16:29.4395 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: h6x/3v/XM5yMUAYsowat3siDUhU7n9VRVUj4ijbPB1WDRB+WSd5+25DzFknoav84PsIsgnM/RV0WW8IaoFXayw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR0502MB3762 Subject: [dpdk-dev] [PATCH 07/13] app/flow-perf: add raw encap/decap actions support X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 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" Introduce raw-encap and raw-decap actions. The two actions are added in command line options, and for the data to encap or decap the user need to parse it within the command line. All values of raw-encap data is set to be fixed values. Usage example: --raw-encap=ether,ipv4,udp,vxlan Signed-off-by: Wisam Jaddo Acked-by: Alexander Kozyrev --- app/test-flow-perf/actions_gen.c | 330 ++++++++++++++++++++++++- app/test-flow-perf/actions_gen.h | 8 +- app/test-flow-perf/flow_gen.c | 5 +- app/test-flow-perf/flow_gen.h | 2 + app/test-flow-perf/main.c | 70 +++++- doc/guides/rel_notes/release_20_08.rst | 1 + doc/guides/tools/flow-perf.rst | 10 + 7 files changed, 421 insertions(+), 5 deletions(-) diff --git a/app/test-flow-perf/actions_gen.c b/app/test-flow-perf/actions_gen.c index 99e47bf786..3ae6059fb1 100644 --- a/app/test-flow-perf/actions_gen.c +++ b/app/test-flow-perf/actions_gen.c @@ -10,6 +10,8 @@ #include #include #include +#include +#include #include "actions_gen.h" #include "flow_gen.h" @@ -22,6 +24,23 @@ struct additional_para { uint16_t *queues; uint16_t queues_number; uint32_t counter; + uint64_t encap_data; + uint64_t decap_data; +}; + +/* Storage for struct rte_flow_action_raw_encap including external data. */ +struct action_raw_encap_data { + struct rte_flow_action_raw_encap conf; + uint8_t data[128]; + uint8_t preserve[128]; + uint16_t idx; +}; + +/* Storage for struct rte_flow_action_raw_decap including external data. */ +struct action_raw_decap_data { + struct rte_flow_action_raw_decap conf; + uint8_t data[128]; + uint16_t idx; }; /* Storage for struct rte_flow_action_rss including external data. */ @@ -437,9 +456,304 @@ add_flag(struct rte_flow_action *actions, actions[actions_counter].type = RTE_FLOW_ACTION_TYPE_FLAG; } +static void +add_ether_header(uint8_t **header, uint64_t data, + __rte_unused struct additional_para para) +{ + struct rte_flow_item_eth eth_item; + + if (!(data & FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_ETH))) + return; + + memset(ð_item, 0, sizeof(struct rte_flow_item_eth)); + if (data & FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_VLAN)) + eth_item.type = RTE_BE16(RTE_ETHER_TYPE_VLAN); + else if (data & FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_IPV4)) + eth_item.type = RTE_BE16(RTE_ETHER_TYPE_IPV4); + else if (data & FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_IPV6)) + eth_item.type = RTE_BE16(RTE_ETHER_TYPE_IPV6); + memcpy(*header, ð_item, sizeof(eth_item)); + *header += sizeof(eth_item); +} + +static void +add_vlan_header(uint8_t **header, uint64_t data, + __rte_unused struct additional_para para) +{ + struct rte_flow_item_vlan vlan_item; + uint16_t vlan_value; + + if (!(data & FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_VLAN))) + return; + + vlan_value = VLAN_VALUE; + + memset(&vlan_item, 0, sizeof(struct rte_flow_item_vlan)); + vlan_item.tci = RTE_BE16(vlan_value); + + if (data & FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_IPV4)) + vlan_item.inner_type = RTE_BE16(RTE_ETHER_TYPE_IPV4); + if (data & FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_IPV6)) + vlan_item.inner_type = RTE_BE16(RTE_ETHER_TYPE_IPV6); + memcpy(*header, &vlan_item, sizeof(vlan_item)); + *header += sizeof(vlan_item); +} + +static void +add_ipv4_header(uint8_t **header, uint64_t data, + struct additional_para para) +{ + struct rte_flow_item_ipv4 ipv4_item; + + if (!(data & FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_IPV4))) + return; + + memset(&ipv4_item, 0, sizeof(struct rte_flow_item_ipv4)); + ipv4_item.hdr.src_addr = RTE_IPV4(127, 0, 0, 1); + ipv4_item.hdr.dst_addr = RTE_BE32(para.counter); + ipv4_item.hdr.version_ihl = RTE_IPV4_VHL_DEF; + if (data & FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_UDP)) + ipv4_item.hdr.next_proto_id = RTE_IP_TYPE_UDP; + if (data & FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_GRE)) + ipv4_item.hdr.next_proto_id = RTE_IP_TYPE_GRE; + memcpy(*header, &ipv4_item, sizeof(ipv4_item)); + *header += sizeof(ipv4_item); +} + +static void +add_ipv6_header(uint8_t **header, uint64_t data, + __rte_unused struct additional_para para) +{ + struct rte_flow_item_ipv6 ipv6_item; + + if (!(data & FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_IPV6))) + return; + + memset(&ipv6_item, 0, sizeof(struct rte_flow_item_ipv6)); + if (data & FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_UDP)) + ipv6_item.hdr.proto = RTE_IP_TYPE_UDP; + if (data & FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_GRE)) + ipv6_item.hdr.proto = RTE_IP_TYPE_GRE; + memcpy(*header, &ipv6_item, sizeof(ipv6_item)); + *header += sizeof(ipv6_item); +} + +static void +add_udp_header(uint8_t **header, uint64_t data, + __rte_unused struct additional_para para) +{ + struct rte_flow_item_udp udp_item; + + if (!(data & FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_UDP))) + return; + + memset(&udp_item, 0, sizeof(struct rte_flow_item_udp)); + if (data & FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_VXLAN)) + udp_item.hdr.dst_port = RTE_BE16(RTE_VXLAN_DEFAULT_PORT); + if (data & FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_VXLAN_GPE)) + udp_item.hdr.dst_port = RTE_BE16(RTE_VXLAN_GPE_UDP_PORT); + if (data & FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_GENEVE)) + udp_item.hdr.dst_port = RTE_BE16(RTE_GENEVE_UDP_PORT); + if (data & FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_GTP)) + udp_item.hdr.dst_port = RTE_BE16(RTE_GTPU_UDP_PORT); + memcpy(*header, &udp_item, sizeof(udp_item)); + *header += sizeof(udp_item); +} + +static void +add_vxlan_header(uint8_t **header, uint64_t data, + struct additional_para para) +{ + struct rte_flow_item_vxlan vxlan_item; + uint32_t vni_value = para.counter; + uint8_t i; + + if (!(data & FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_VXLAN))) + return; + + memset(&vxlan_item, 0, sizeof(struct rte_flow_item_vxlan)); + + for (i = 0; i < 3; i++) + vxlan_item.vni[2 - i] = vni_value >> (i * 8); + vxlan_item.flags = 0x8; + + memcpy(*header, &vxlan_item, sizeof(vxlan_item)); + *header += sizeof(vxlan_item); +} + +static void +add_vxlan_gpe_header(uint8_t **header, uint64_t data, + struct additional_para para) +{ + struct rte_flow_item_vxlan_gpe vxlan_gpe_item; + uint32_t vni_value = para.counter; + uint8_t i; + + if (!(data & FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_VXLAN_GPE))) + return; + + memset(&vxlan_gpe_item, 0, sizeof(struct rte_flow_item_vxlan_gpe)); + + for (i = 0; i < 3; i++) + vxlan_gpe_item.vni[2 - i] = vni_value >> (i * 8); + vxlan_gpe_item.flags = 0x0c; + + memcpy(*header, &vxlan_gpe_item, sizeof(vxlan_gpe_item)); + *header += sizeof(vxlan_gpe_item); +} + +static void +add_gre_header(uint8_t **header, uint64_t data, + __rte_unused struct additional_para para) +{ + struct rte_flow_item_gre gre_item; + + if (!(data & FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_GRE))) + return; + + memset(&gre_item, 0, sizeof(struct rte_flow_item_gre)); + + gre_item.protocol = RTE_BE16(RTE_ETHER_TYPE_TEB); + + memcpy(*header, &gre_item, sizeof(gre_item)); + *header += sizeof(gre_item); +} + +static void +add_geneve_header(uint8_t **header, uint64_t data, + struct additional_para para) +{ + struct rte_flow_item_geneve geneve_item; + uint32_t vni_value = para.counter; + uint8_t i; + + if (!(data & FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_GENEVE))) + return; + + memset(&geneve_item, 0, sizeof(struct rte_flow_item_geneve)); + + for (i = 0; i < 3; i++) + geneve_item.vni[2 - i] = vni_value >> (i * 8); + + memcpy(*header, &geneve_item, sizeof(geneve_item)); + *header += sizeof(geneve_item); +} + +static void +add_gtp_header(uint8_t **header, uint64_t data, + struct additional_para para) +{ + struct rte_flow_item_gtp gtp_item; + + if (!(data & FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_GTP))) + return; + + memset(>p_item, 0, sizeof(struct rte_flow_item_gtp)); + + gtp_item.teid = RTE_BE32(para.counter); + gtp_item.msg_type = 255; + + memcpy(*header, >p_item, sizeof(gtp_item)); + *header += sizeof(gtp_item); +} + +static const struct encap_decap_headers { + void (*funct)( + uint8_t **header, + uint64_t data, + struct additional_para para + ); +} headers[] = { + {.funct = add_ether_header}, + {.funct = add_vlan_header}, + {.funct = add_ipv4_header}, + {.funct = add_ipv6_header}, + {.funct = add_udp_header}, + {.funct = add_vxlan_header}, + {.funct = add_vxlan_gpe_header}, + {.funct = add_gre_header}, + {.funct = add_geneve_header}, + {.funct = add_gtp_header}, +}; + +static void +add_raw_encap(struct rte_flow_action *actions, + uint8_t actions_counter, + struct additional_para para) +{ + static struct action_raw_encap_data *action_encap_data; + uint64_t encap_data = para.encap_data; + uint8_t *header; + uint8_t i; + + /* Avoid double allocation. */ + if (action_encap_data == NULL) + action_encap_data = rte_malloc("encap_data", + sizeof(struct action_raw_encap_data), 0); + + /* Check if allocation failed. */ + if (action_encap_data == NULL) + rte_exit(EXIT_FAILURE, "No Memory available!"); + + *action_encap_data = (struct action_raw_encap_data) { + .conf = (struct rte_flow_action_raw_encap) { + .data = action_encap_data->data, + }, + .data = {}, + }; + header = action_encap_data->data; + + for (i = 0; i < RTE_DIM(headers); i++) + headers[i].funct(&header, encap_data, para); + + action_encap_data->conf.size = header - + action_encap_data->data; + + actions[actions_counter].type = RTE_FLOW_ACTION_TYPE_RAW_ENCAP; + actions[actions_counter].conf = &action_encap_data->conf; +} + +static void +add_raw_decap(struct rte_flow_action *actions, + uint8_t actions_counter, + struct additional_para para) +{ + static struct action_raw_decap_data *action_decap_data; + uint64_t decap_data = para.decap_data; + uint8_t *header; + uint8_t i; + + /* Avoid double allocation. */ + if (action_decap_data == NULL) + action_decap_data = rte_malloc("decap_data", + sizeof(struct action_raw_decap_data), 0); + + /* Check if allocation failed. */ + if (action_decap_data == NULL) + rte_exit(EXIT_FAILURE, "No Memory available!"); + + *action_decap_data = (struct action_raw_decap_data) { + .conf = (struct rte_flow_action_raw_decap) { + .data = action_decap_data->data, + }, + .data = {}, + }; + header = action_decap_data->data; + + for (i = 0; i < RTE_DIM(headers); i++) + headers[i].funct(&header, decap_data, para); + + action_decap_data->conf.size = header - + action_decap_data->data; + + actions[actions_counter].type = RTE_FLOW_ACTION_TYPE_RAW_DECAP; + actions[actions_counter].conf = &action_decap_data->conf; +} + void fill_actions(struct rte_flow_action *actions, uint64_t *flow_actions, - uint32_t counter, uint16_t next_table, uint16_t hairpinq) + uint32_t counter, uint16_t next_table, uint16_t hairpinq, + uint64_t encap_data, uint64_t decap_data) { struct additional_para additional_para_data; uint8_t actions_counter = 0; @@ -459,6 +773,8 @@ fill_actions(struct rte_flow_action *actions, uint64_t *flow_actions, .queues = queues, .queues_number = RXQ_NUM, .counter = counter, + .encap_data = encap_data, + .decap_data = decap_data, }; if (hairpinq != 0) { @@ -621,6 +937,18 @@ fill_actions(struct rte_flow_action *actions, uint64_t *flow_actions, .mask = HAIRPIN_RSS_ACTION, .funct = add_rss, }, + { + .mask = FLOW_ACTION_MASK( + RTE_FLOW_ACTION_TYPE_RAW_ENCAP + ), + .funct = add_raw_encap, + }, + { + .mask = FLOW_ACTION_MASK( + RTE_FLOW_ACTION_TYPE_RAW_DECAP + ), + .funct = add_raw_decap, + }, }; for (j = 0; j < MAX_ACTIONS_NUM; j++) { diff --git a/app/test-flow-perf/actions_gen.h b/app/test-flow-perf/actions_gen.h index d6918a53a6..85e3176b09 100644 --- a/app/test-flow-perf/actions_gen.h +++ b/app/test-flow-perf/actions_gen.h @@ -12,7 +12,13 @@ #include "config.h" +#define RTE_IP_TYPE_UDP 17 +#define RTE_IP_TYPE_GRE 47 +#define RTE_VXLAN_GPE_UDP_PORT 250 +#define RTE_GENEVE_UDP_PORT 6081 + void fill_actions(struct rte_flow_action *actions, uint64_t *flow_actions, - uint32_t counter, uint16_t next_table, uint16_t hairpinq); + uint32_t counter, uint16_t next_table, uint16_t hairpinq, + uint64_t encap_data, uint64_t decap_data); #endif /* FLOW_PERF_ACTION_GEN */ diff --git a/app/test-flow-perf/flow_gen.c b/app/test-flow-perf/flow_gen.c index b2c828c7df..a979b3856d 100644 --- a/app/test-flow-perf/flow_gen.c +++ b/app/test-flow-perf/flow_gen.c @@ -43,6 +43,8 @@ generate_flow(uint16_t port_id, uint16_t next_table, uint32_t outer_ip_src, uint16_t hairpinq, + uint64_t encap_data, + uint64_t decap_data, struct rte_flow_error *error) { struct rte_flow_attr attr; @@ -57,7 +59,8 @@ generate_flow(uint16_t port_id, fill_attributes(&attr, flow_attrs, group); fill_actions(actions, flow_actions, - outer_ip_src, next_table, hairpinq); + outer_ip_src, next_table, hairpinq, + encap_data, decap_data); fill_items(items, flow_items, outer_ip_src); diff --git a/app/test-flow-perf/flow_gen.h b/app/test-flow-perf/flow_gen.h index 53469c659f..3d13737d65 100644 --- a/app/test-flow-perf/flow_gen.h +++ b/app/test-flow-perf/flow_gen.h @@ -32,6 +32,8 @@ generate_flow(uint16_t port_id, uint16_t next_table, uint32_t outer_ip_src, uint16_t hairpinq, + uint64_t encap_data, + uint64_t decap_data, struct rte_flow_error *error); #endif /* FLOW_PERF_FLOW_GEN */ diff --git a/app/test-flow-perf/main.c b/app/test-flow-perf/main.c index ae0d1a3be5..1b456e6922 100644 --- a/app/test-flow-perf/main.c +++ b/app/test-flow-perf/main.c @@ -45,6 +45,9 @@ struct rte_flow *flow; static uint8_t flow_group; +static uint64_t encap_data; +static uint64_t decap_data; + static uint64_t flow_items[MAX_ITEMS_NUM]; static uint64_t flow_actions[MAX_ACTIONS_NUM]; static uint64_t flow_attrs[MAX_ATTRS_NUM]; @@ -171,12 +174,19 @@ usage(char *progname) printf(" --set-ipv6-dscp: add set ipv6 dscp action to flow actions\n" "ipv6 dscp value to be set is random each flow\n"); printf(" --flag: add flag action to flow actions\n"); + printf(" --raw-encap=: add raw encap action to flow actions\n" + "Data is the data needed to be encaped\n" + "Example: raw-encap=ether,ipv4,udp,vxlan\n"); + printf(" --raw-decap=: add raw decap action to flow actions\n" + "Data is the data needed to be decaped\n" + "Example: raw-decap=ether,ipv4,udp,vxlan\n"); } static void args_parse(int argc, char **argv) { char **argvopt; + char *token; int n, opt; int opt_idx; size_t i; @@ -532,6 +542,8 @@ args_parse(int argc, char **argv) { "set-ipv4-dscp", 0, 0, 0 }, { "set-ipv6-dscp", 0, 0, 0 }, { "flag", 0, 0, 0 }, + { "raw-encap", 1, 0, 0 }, + { "raw-decap", 1, 0, 0 }, }; hairpin_queues_num = 0; @@ -593,6 +605,58 @@ args_parse(int argc, char **argv) printf("hairpin-queue / "); } + if (strcmp(lgopts[opt_idx].name, "raw-encap") == 0) { + printf("raw-encap "); + flow_actions[actions_idx++] = + FLOW_ITEM_MASK( + RTE_FLOW_ACTION_TYPE_RAW_ENCAP + ); + + token = strtok(optarg, ","); + while (token != NULL) { + for (i = 0; i < RTE_DIM(flow_options); i++) { + if (strcmp(flow_options[i].str, token) == 0) { + printf("%s,", token); + encap_data |= flow_options[i].mask; + break; + } + /* Reached last item with no match */ + if (i == (RTE_DIM(flow_options) - 1)) { + fprintf(stderr, "Invalid encap item: %s\n", token); + usage(argv[0]); + rte_exit(EXIT_SUCCESS, "Invalid encap item\n"); + } + } + token = strtok(NULL, ","); + } + printf(" / "); + } + if (strcmp(lgopts[opt_idx].name, "raw-decap") == 0) { + printf("raw-decap "); + flow_actions[actions_idx++] = + FLOW_ITEM_MASK( + RTE_FLOW_ACTION_TYPE_RAW_DECAP + ); + + token = strtok(optarg, ","); + while (token != NULL) { + for (i = 0; i < RTE_DIM(flow_options); i++) { + if (strcmp(flow_options[i].str, token) == 0) { + printf("%s,", token); + encap_data |= flow_options[i].mask; + break; + } + /* Reached last item with no match */ + if (i == (RTE_DIM(flow_options) - 1)) { + fprintf(stderr, "Invalid decap item: %s\n", token); + usage(argv[0]); + rte_exit(EXIT_SUCCESS, "Invalid decap item\n"); + } + } + token = strtok(NULL, ","); + } + printf(" / "); + } /* Control */ if (strcmp(lgopts[opt_idx].name, "flows-count") == 0) { @@ -807,7 +871,7 @@ flows_handler(void) */ flow = generate_flow(port_id, 0, flow_attrs, global_items, global_actions, - flow_group, 0, 0, &error); + flow_group, 0, 0, 0, 0, &error); if (flow == NULL) { print_flow_error(error); @@ -823,7 +887,9 @@ flows_handler(void) flow = generate_flow(port_id, flow_group, flow_attrs, flow_items, flow_actions, JUMP_ACTION_TABLE, i, - hairpin_queues_num, &error); + hairpin_queues_num, + encap_data, decap_data, + &error); if (force_quit) i = flows_count; diff --git a/doc/guides/rel_notes/release_20_08.rst b/doc/guides/rel_notes/release_20_08.rst index eed3900a8c..5a94eacded 100644 --- a/doc/guides/rel_notes/release_20_08.rst +++ b/doc/guides/rel_notes/release_20_08.rst @@ -282,6 +282,7 @@ New Features * Start supporting header modify actions. * Start supporting flag action. + * Start supporting raw-encap and raw-decap actions. Removed Items diff --git a/doc/guides/tools/flow-perf.rst b/doc/guides/tools/flow-perf.rst index 69cdd1b222..10c0c422e4 100644 --- a/doc/guides/tools/flow-perf.rst +++ b/doc/guides/tools/flow-perf.rst @@ -306,3 +306,13 @@ Actions: * ``--flag`` Add flag action to all flows actions. + +* ``--raw-encap=`` + Add raw encap action to all flows actions. + Data is the data needed to be encaped, with fixed values. + Example: raw-encap=ether,ipv4,udp,vxlan + +* ``--raw-decap=`` + Add raw decap action to all flows actions. + Data is the data needed to be decaped, with fixed values. + Example: raw-decap=ether,ipv4,gre From patchwork Sun Aug 30 11:15:39 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wisam Jaddo X-Patchwork-Id: 76158 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 5A9E9A04AB; Sun, 30 Aug 2020 13:22:13 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 5DA0D1C11F; Sun, 30 Aug 2020 13:16:37 +0200 (CEST) Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-eopbgr00049.outbound.protection.outlook.com [40.107.0.49]) by dpdk.org (Postfix) with ESMTP id A1AD51C0CE for ; Sun, 30 Aug 2020 13:16:31 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AURPFfIug0e5i2ZI62dMli2PGC09OYhptnHzUXoJSacLCz/s4sQgo3d9pVAba2Gr7op+QBN6caaYSNp+iOmHy+ZOvEkedI64hCBhXd/PGbCEpJmkNkEIPFSV7RvDfrLHQpMHcx17mAPwTAlbUs7RpAC/a0+amv11CD0UwlJ7TkeH4C0vwWe5S0S5fdgCwDthSmVTggH+x9XXN5O3q13veSVt0AMS8NlXKYAv+jX5ekzMWZCnv4WOizas5vqmdM+tS1iUtcSmmRo4zvxJg1MzF6U6RBYmPm333qmjx5R5r0ztYcePoVlSTC7RnNeVqgvXKYjRE9kF1GfE6Mfog9OXOg== 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=4ktMJd7QfpvclW7synUk707IRz6g0vSNM8Ik2q6IpOI=; b=Fw+G//S1ia9W0hOvh2Rzo7HIQCh/gqJi0pSY7AWBQHzc5wiSVK3kWcZemYvpMXe3Dyx95lblOF/FGk/TyyvcpWeA3FnfeB3qMS22YxlFT91dJYJAqu4qwZPzbWTkSlRjRexyRjJNEDjbj9DdCV01mV74dX8yXbCZMJ9CzEVwEWMsxtYKfPB3mPA/OV9+rVOY4TEfCeBJJqk/BNpN46Xb8L3LwyAyE19GxVh6UeHpDJApSu7baFGh2/mjp1AozYY+242eJ3qFKZughKJO+BHFP7a0VafuvXjhaH2SplllpPS6qp0wNxCt/ZxmG4QTjUtwfOcwy7MKBaT59SZeliWwTA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=4ktMJd7QfpvclW7synUk707IRz6g0vSNM8Ik2q6IpOI=; b=RuurfDoCp4E+HuSrYKpTLm3w4f+lMQcFkZ7LsUW5tZR+a3RTpSgfR0E//uBlCvu/AxjHj3ND6oxsutw/Q2scUjdk9IJm4ew63FqC/Oa1OGC67VOV6xUcwQTzKLNSQ3Ip6LXmzh4gY0gsB8mOAL+3JuvO3tu/pHA4Bz/XJGivfEU= Authentication-Results: dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=none action=none header.from=mellanox.com; Received: from AM0PR05MB6610.eurprd05.prod.outlook.com (2603:10a6:208:12f::18) by AM0PR0502MB3762.eurprd05.prod.outlook.com (2603:10a6:208:1b::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3326.21; Sun, 30 Aug 2020 11:16:30 +0000 Received: from AM0PR05MB6610.eurprd05.prod.outlook.com ([fe80::4c8a:9848:2e2a:3598]) by AM0PR05MB6610.eurprd05.prod.outlook.com ([fe80::4c8a:9848:2e2a:3598%6]) with mapi id 15.20.3326.025; Sun, 30 Aug 2020 11:16:30 +0000 From: Wisam Jaddo To: dev@dpdk.org, thomas@monjalon.net, asafp@mellanox.com, akozyrev@nvidia.com, akozyrev@mellanox.com, arybchenko@solarflare.com, jackmin@mellanox.com Date: Sun, 30 Aug 2020 11:15:39 +0000 Message-Id: <20200830111544.4190-9-wisamm@mellanox.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200830111544.4190-1-wisamm@mellanox.com> References: <20200830111544.4190-1-wisamm@mellanox.com> X-ClientProxiedBy: AM4PR05CA0008.eurprd05.prod.outlook.com (2603:10a6:205::21) To AM0PR05MB6610.eurprd05.prod.outlook.com (2603:10a6:208:12f::18) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from mellanox.com (37.142.13.130) by AM4PR05CA0008.eurprd05.prod.outlook.com (2603:10a6:205::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3326.19 via Frontend Transport; Sun, 30 Aug 2020 11:16:29 +0000 X-Mailer: git-send-email 2.17.1 X-Originating-IP: [37.142.13.130] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 54e83fe2-8c7b-4236-1fcc-08d84cd6252b X-MS-TrafficTypeDiagnostic: AM0PR0502MB3762: X-LD-Processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtFwd,ExtAddr X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:4941; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 4Fk+De6ITDO0OVrrQGXq0FE/8txGJ/gPIeoqJJfdBRqaGsbG364BMx0rZegvyfp3f2KnJLW2Y+Em7AH/lDzSddNpBdJ3ACFlCkd1qMtEOkq4RfLLoca12MMxBaIfMP28fNtAachTQYghhsp9uBKykHGOGW7h6XATqvqybY1OyszTPIFoAxuptcIAuXeWXkziP7XjmwXqxTFBdYewNYFJ4JhqpPENwY5HhXak8kFbF2cuq/5sRjpipl4zg5/6RdSlc36GHLw7Lrw0+DsJiIdnsbS3/AQgyslOeqiTqXTk5wGPGfZYRPVdFk8iEKteh26t X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0PR05MB6610.eurprd05.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(396003)(136003)(39860400002)(376002)(346002)(478600001)(316002)(5660300002)(8886007)(2906002)(6636002)(86362001)(36756003)(6666004)(1076003)(55016002)(8936002)(26005)(2616005)(7696005)(66946007)(66556008)(52116002)(16526019)(8676002)(186003)(956004)(66476007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: i55uL0nUvtIPYMjeSA9eaSlL2LzdtAFZWPWyr1lfp32xfJ/9JqX1Be/emCQCYcLj4PbjlShH31hc5u9bir5SsIl/RuLrPZh+pU7lw8ONixjB4WIdqGJiRLWmI9Q5NU5uOIGjV0LFolqTXOAO1O7DLq925BirO2oZlrYvGdhVC2ZN2rpCg8Jdh3kQAqlKWQPcSNEUEO39HjmuZliyS8/xTfpkFQKAdvXlzsOvbq7KLa1qt+hhwOn5ShfITh+aELR7hkjx7AjZL0QyblqV9En5K8N7vRTLDOELrcbq+yhsNsy8N8MXRVIGuewNBpmPnRVjDFuiOmc4FlvjsB6oCLvPNlbpI1R7blgQv+zLovGEQiTWJS80QdfS87/gGnrYuDnsiiEjDsfNl//nvGnSeUbPRSGkt42rACWFEUZKWdaGnaUunY87WSbHjaHRbxkJmY3dCZRjSaOkoxSLH7tRaDSal8jVu287KRRSO4EGDwZS7OIua5szl8D24VDuszQ7+TK7G5KhEKaN9lw9U2fyyrDV5BRF3Qs+OW1FyNPu4oODr4OjvKskXdZfb8QmtjDZltuLEiqIOYgLkzv/Xcs9TgAM3fwGitSaFMFTf0NXF4cSR5lLsATYdijv6MuHnSoadlgSZs9a4S2/VYxw9pIQEvjn4g== X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 54e83fe2-8c7b-4236-1fcc-08d84cd6252b X-MS-Exchange-CrossTenant-AuthSource: AM0PR05MB6610.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Aug 2020 11:16:30.5289 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: b5R34YIfiMHJMsaYQ6O+1p980lbF1ORBR8tsqS/rqmotmVd5sYL2JOy5PLOIAIAUvTxZeV5gtd7IQPXVVm4QHQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR0502MB3762 Subject: [dpdk-dev] [PATCH 08/13] app/flow-perf: add VXLAN encap/decap actions support X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 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" Introduce vxlan-encap and vxlan-decap actions. vxlan-encap have fixed pattern and values for encap data. Usage example: --vxlan-encap --vxlan-decap Signed-off-by: Wisam Jaddo Acked-by: Alexander Kozyrev --- app/test-flow-perf/actions_gen.c | 64 ++++++++++++++++++++++++++ app/test-flow-perf/main.c | 22 +++++++++ doc/guides/rel_notes/release_20_08.rst | 1 + doc/guides/tools/flow-perf.rst | 8 ++++ 4 files changed, 95 insertions(+) diff --git a/app/test-flow-perf/actions_gen.c b/app/test-flow-perf/actions_gen.c index 3ae6059fb1..10ddef4deb 100644 --- a/app/test-flow-perf/actions_gen.c +++ b/app/test-flow-perf/actions_gen.c @@ -17,6 +17,7 @@ #include "flow_gen.h" #include "config.h" + /* Storage for additional parameters for actions */ struct additional_para { uint16_t queue; @@ -750,6 +751,57 @@ add_raw_decap(struct rte_flow_action *actions, actions[actions_counter].conf = &action_decap_data->conf; } +static void +add_vxlan_encap(struct rte_flow_action *actions, + uint8_t actions_counter, + __rte_unused struct additional_para para) +{ + static struct rte_flow_action_vxlan_encap vxlan_encap; + static struct rte_flow_item items[5]; + static struct rte_flow_item_eth item_eth; + static struct rte_flow_item_ipv4 item_ipv4; + static struct rte_flow_item_udp item_udp; + static struct rte_flow_item_vxlan item_vxlan; + + items[0].spec = &item_eth; + items[0].mask = &item_eth; + items[0].type = RTE_FLOW_ITEM_TYPE_ETH; + + item_ipv4.hdr.src_addr = RTE_IPV4(127, 0, 0, 1); + item_ipv4.hdr.dst_addr = RTE_IPV4(255, 255, 255, 255); + item_ipv4.hdr.version_ihl = RTE_IPV4_VHL_DEF; + items[1].spec = &item_ipv4; + items[1].mask = &item_ipv4; + items[1].type = RTE_FLOW_ITEM_TYPE_IPV4; + + + item_udp.hdr.dst_port = RTE_BE16(RTE_VXLAN_DEFAULT_PORT); + items[2].spec = &item_udp; + items[2].mask = &item_udp; + items[2].type = RTE_FLOW_ITEM_TYPE_UDP; + + + item_vxlan.vni[2] = 1; + items[3].spec = &item_vxlan; + items[3].mask = &item_vxlan; + items[3].type = RTE_FLOW_ITEM_TYPE_VXLAN; + + items[4].type = RTE_FLOW_ITEM_TYPE_END; + + vxlan_encap.definition = items; + + actions[actions_counter].type = RTE_FLOW_ACTION_TYPE_VXLAN_ENCAP; + actions[actions_counter].conf = &vxlan_encap; +} + +static void +add_vxlan_decap(struct rte_flow_action *actions, + uint8_t actions_counter, + __rte_unused struct additional_para para) +{ + actions[actions_counter].type = RTE_FLOW_ACTION_TYPE_VXLAN_DECAP; +} + void fill_actions(struct rte_flow_action *actions, uint64_t *flow_actions, uint32_t counter, uint16_t next_table, uint16_t hairpinq, @@ -949,6 +1001,18 @@ fill_actions(struct rte_flow_action *actions, uint64_t *flow_actions, ), .funct = add_raw_decap, }, + { + .mask = FLOW_ACTION_MASK( + RTE_FLOW_ACTION_TYPE_VXLAN_ENCAP + ), + .funct = add_vxlan_encap, + }, + { + .mask = FLOW_ACTION_MASK( + RTE_FLOW_ACTION_TYPE_VXLAN_DECAP + ), + .funct = add_vxlan_decap, + }, }; for (j = 0; j < MAX_ACTIONS_NUM; j++) { diff --git a/app/test-flow-perf/main.c b/app/test-flow-perf/main.c index 1b456e6922..0a030a462c 100644 --- a/app/test-flow-perf/main.c +++ b/app/test-flow-perf/main.c @@ -180,6 +180,10 @@ usage(char *progname) printf(" --raw-decap=: add raw decap action to flow actions\n" "Data is the data needed to be decaped\n" "Example: raw-decap=ether,ipv4,udp,vxlan\n"); + printf(" --vxlan-encap: add vxlan-encap action to flow actions\n" + "Encapped data is fixed with pattern: ether,ipv4,udp,vxlan\n" + "With fixed values\n"); + printf(" --vxlan-decap: add vxlan_decap action to flow actions\n"); } static void @@ -484,6 +488,22 @@ args_parse(int argc, char **argv) .map = &flow_actions[0], .map_idx = &actions_idx }, + { + .str = "vxlan-encap", + .mask = FLOW_ACTION_MASK( + RTE_FLOW_ACTION_TYPE_VXLAN_ENCAP + ), + .map = &flow_actions[0], + .map_idx = &actions_idx + }, + { + .str = "vxlan-decap", + .mask = FLOW_ACTION_MASK( + RTE_FLOW_ACTION_TYPE_VXLAN_DECAP + ), + .map = &flow_actions[0], + .map_idx = &actions_idx + }, }; static const struct option lgopts[] = { @@ -544,6 +564,8 @@ args_parse(int argc, char **argv) { "flag", 0, 0, 0 }, { "raw-encap", 1, 0, 0 }, { "raw-decap", 1, 0, 0 }, + { "vxlan-encap", 0, 0, 0 }, + { "vxlan-decap", 0, 0, 0 }, }; hairpin_queues_num = 0; diff --git a/doc/guides/rel_notes/release_20_08.rst b/doc/guides/rel_notes/release_20_08.rst index 5a94eacded..c0f7ab6293 100644 --- a/doc/guides/rel_notes/release_20_08.rst +++ b/doc/guides/rel_notes/release_20_08.rst @@ -283,6 +283,7 @@ New Features * Start supporting header modify actions. * Start supporting flag action. * Start supporting raw-encap and raw-decap actions. + * Start supporting vxlan-encap and vxlan-decap actions. Removed Items diff --git a/doc/guides/tools/flow-perf.rst b/doc/guides/tools/flow-perf.rst index 10c0c422e4..15b4273cc0 100644 --- a/doc/guides/tools/flow-perf.rst +++ b/doc/guides/tools/flow-perf.rst @@ -316,3 +316,11 @@ Actions: Add raw decap action to all flows actions. Data is the data needed to be decaped, with fixed values. Example: raw-decap=ether,ipv4,gre + +* ``--vxlan-encap`` + Add vxlan encap action to all flows actions. + Data to encap is fixed with pattern: ether,ipv4,udp,vxlan, + all encapped items have fixed values. + +* ``--vxlan-decap`` + Add vxlan decap action to all flows actions. From patchwork Sun Aug 30 11:15:40 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wisam Jaddo X-Patchwork-Id: 76159 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id C0131A04AB; Sun, 30 Aug 2020 13:22:29 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id A25D31C125; Sun, 30 Aug 2020 13:16:38 +0200 (CEST) Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-eopbgr00049.outbound.protection.outlook.com [40.107.0.49]) by dpdk.org (Postfix) with ESMTP id AFC1D1C0CF for ; Sun, 30 Aug 2020 13:16:32 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dDcK5p/9B6vGcisqfvZd8wZSZmZzqaIXNAOVyjGUQJB9y7A8hSbdiDM1OoOhDnQjnUju6UvTj4kpKKcAGErINjvZgbwmlvq22KYkjMpTm7fIJdA+eD5PxNUaTGSXBVocv/mP3hcr31oDbkHa0YM88r1R52MxPchf2JHzje0Jw7N7w+qpmX+lpcmkpm8X3D0M15+jR5A+5pp3SeGtMdYe1hC4TfxiUSYlvKu9ERMGXg3K1606LAbe4Ds9HbQCnItYvDt1GWNgsQkzFBus4eFwDw6KWa8VBYcQbcIeWlnALl85wX0dr4BeYWG4nn+Tn0Aw/4ucI/nC31cNl1jBig0jMA== 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=b+ACFna8biI8kOPcg4Kvlvn40DUZKaUwPWC/0mAA1qc=; b=OFe2xxFqS3M+QADa/8z1AmMZOku9ILfxn+LNcnL7qsHpOiBR9quiFVLrTgy3qszQTQOLeI9lfSubPV+aUHvGArXNRvuC+bOMpWnDcnSb2TJWMpO31a9XxY9/YpqLxo6oN6HM0klIKly8knHOjBaKAMDE0suF560SFWg0BXbu/yIoQXqgWC8o50kEdyEXbU7iGXcjn+fPXkH0LhhFFV1wH//oxiUSYaVa7auBBD4UoW3PHO6nMQftO+r2NzrxVisQOAbgGrTIDPTKZ55bdCFBrKBRqrSUWuGyJcs80ifsS7St8rZ5BZQt7LuH4Hmd+kum3NUdQeAvewvRNN7twuzJ1w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=b+ACFna8biI8kOPcg4Kvlvn40DUZKaUwPWC/0mAA1qc=; b=Z6INs14XZrxXZIA4/SFMAsOLcqyYnf3AZ4LUnGz+G3xZ3+JJjTe368tCbYkfYhgVwZ58flhq/GNTDBcMje3Qchb6l0FQ84yHUH6aximfdS3P7upjBFxCUkUOO0e1JNTf34ZjhChZqPrvxAJG2zTXQfV4dYm26TOL1Ec0RfiGHv8= Authentication-Results: dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=none action=none header.from=mellanox.com; Received: from AM0PR05MB6610.eurprd05.prod.outlook.com (2603:10a6:208:12f::18) by AM0PR0502MB3762.eurprd05.prod.outlook.com (2603:10a6:208:1b::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3326.21; Sun, 30 Aug 2020 11:16:31 +0000 Received: from AM0PR05MB6610.eurprd05.prod.outlook.com ([fe80::4c8a:9848:2e2a:3598]) by AM0PR05MB6610.eurprd05.prod.outlook.com ([fe80::4c8a:9848:2e2a:3598%6]) with mapi id 15.20.3326.025; Sun, 30 Aug 2020 11:16:31 +0000 From: Wisam Jaddo To: dev@dpdk.org, thomas@monjalon.net, asafp@mellanox.com, akozyrev@nvidia.com, akozyrev@mellanox.com, arybchenko@solarflare.com, jackmin@mellanox.com Cc: wisamm@mellanox.com Date: Sun, 30 Aug 2020 11:15:40 +0000 Message-Id: <20200830111544.4190-10-wisamm@mellanox.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200830111544.4190-1-wisamm@mellanox.com> References: <20200830111544.4190-1-wisamm@mellanox.com> X-ClientProxiedBy: AM4PR05CA0008.eurprd05.prod.outlook.com (2603:10a6:205::21) To AM0PR05MB6610.eurprd05.prod.outlook.com (2603:10a6:208:12f::18) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from mellanox.com (37.142.13.130) by AM4PR05CA0008.eurprd05.prod.outlook.com (2603:10a6:205::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3326.19 via Frontend Transport; Sun, 30 Aug 2020 11:16:30 +0000 X-Mailer: git-send-email 2.17.1 X-Originating-IP: [37.142.13.130] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 167758d1-452c-42aa-f4d2-08d84cd625da X-MS-TrafficTypeDiagnostic: AM0PR0502MB3762: X-LD-Processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtFwd,ExtAddr X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:345; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 6JiwNOEc0u4OL6JVR0MvUSrLt3B7tY2EBfMqckMUzyAmMEsDxwJXrR41WzomUG+s2yRly+gRt6SmezUxx9RIdCxs8ADXRkgItjogUyUFNLwJJU4OMtcbFTSKfnVGXgpqUqaOczsBH4XLiEfwKXRFlo/ulKNnjDJcKFG7E9KjFm56iOxZ8VIpL6/IhW4PdHoejAF6ZGfGVo3+t0bLtJXiOZoo8uF9QKYMDwmSatIT0G52g3KUNI1/p5agRucLgzVR8v0S22uXRSGQGhS5TdyarjxhPRK89GaBTqNBe0QbCw7aPtvtcY+cjoQH451gTaz06UqTpD5zMKLmJ6mg9R0G2w== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0PR05MB6610.eurprd05.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(396003)(136003)(39860400002)(376002)(346002)(478600001)(107886003)(316002)(5660300002)(4744005)(8886007)(2906002)(6636002)(4326008)(86362001)(36756003)(6666004)(1076003)(55016002)(8936002)(26005)(2616005)(7696005)(66946007)(66556008)(52116002)(83380400001)(16526019)(8676002)(186003)(956004)(66476007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: I+phqkJiqnlyT6IHv66gY/fxFyR2poCR4El6TlrYsUUGanVP7+xEPyKecrJAZbFtoJ6jR/9XkkFt52s4IWnfG70n+P8c4f1d9jAShofgoOSM+7GRMo7HAmXSgG5cIVzmTBDyTaoKsS6NtKbcEqhwZGTk/LupivNLLr6b5Fp3vk7AclCfRDuzTdLV9YdscnxnFQRrUmLLgOBzgPEj7PKUHvZ56jJJQiHBoRlNhmauX611eQioBWUOvzQr6Y26a/BAyT5hK7kx0SCUn60zapFW5zka8hSSDQASKXrKzly1tvBlr/O3K6ZDfq8xp8Lzd1G4EMZDk3pJbMvzPTVfrhA60c5Oe4VCE6wPeOULFGMVC3ud8yqJfQCkzvdLeUj0J73/9JtXn4sHMjKJZ40G5tFU7oVs8XCQlo6pfri6JybjDUTaatMIH5u7nsGUrZszTQkPnn3Ym0VirpX+NIkxBrLe8/i5ax283l9G8HNPxqVmbCyPHfbrhaLf0KVut/FeXpV1HvwinCKOPoR61BHg2UQ8aipqt0hMrFFraSqMZWSJeAzVy26yhgBTFi2l2qGvvqGkN6KPMgxaf9QsS13f3ompfUAn+i8WbdLcN+HjUnsPH5yREuLhuBgR9mGqTQhHrPKjOCaP4EIm75CncN68EVkpMQ== X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 167758d1-452c-42aa-f4d2-08d84cd625da X-MS-Exchange-CrossTenant-AuthSource: AM0PR05MB6610.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Aug 2020 11:16:31.6842 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: zAyFaZVJC1FLiIB1CDVIjRcfMTm8KAW294A+EeRmKAEV2ABKuFCCqC+fvmlZT/iZ8BmN2ZIm7PnNSL5jmXwB7A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR0502MB3762 Subject: [dpdk-dev] [PATCH 09/13] app/flow-perf: fix source ipv4 matching X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 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" All value must be converted into intended endianness. Fixes: bf3688f1e816 ("app/flow-perf: add insertion rate calculation") Cc: wisamm@mellanox.com Signed-off-by: Wisam Jaddo Acked-by: Alexander Kozyrev --- app/test-flow-perf/items_gen.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/test-flow-perf/items_gen.c b/app/test-flow-perf/items_gen.c index cc031f24a5..8277ac70da 100644 --- a/app/test-flow-perf/items_gen.c +++ b/app/test-flow-perf/items_gen.c @@ -64,7 +64,7 @@ add_ipv4(struct rte_flow_item *items, memset(&ipv4_spec, 0, sizeof(struct rte_flow_item_ipv4)); memset(&ipv4_mask, 0, sizeof(struct rte_flow_item_ipv4)); - ipv4_spec.hdr.src_addr = para.src_ip; + ipv4_spec.hdr.src_addr = RTE_BE32(para.src_ip); ipv4_mask.hdr.src_addr = RTE_BE32(0xffffffff); items[items_counter].type = RTE_FLOW_ITEM_TYPE_IPV4; From patchwork Sun Aug 30 11:15:41 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wisam Jaddo X-Patchwork-Id: 76160 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id C2E32A04AB; Sun, 30 Aug 2020 13:22:50 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id BF2991C12B; Sun, 30 Aug 2020 13:16:39 +0200 (CEST) Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-eopbgr00056.outbound.protection.outlook.com [40.107.0.56]) by dpdk.org (Postfix) with ESMTP id 617AA1C0D7 for ; Sun, 30 Aug 2020 13:16:34 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EGcnMJZtoDeQXk9YKHpBOke6myIeAZgsJti5Yyh4h/Z1OJICL0azfmrmFwMSHoLSiXpbXCCkPUkgEXnL/Grozp40wFnmYitFWYLCv6lnOpJoqsyLHV4ivWIwnGUHsKcXy2w/ouXTaespZg1zhzlgeomrfQxujzeZpGZis9lfkqB+HDbkKX2LaSJDl0ecKYXBsMUY8TX8XWZId3jAM9nWio1Ub4XpQeyYaOx1nD6Gl9yBWjmTYl6+bydh2NJJzxsn4xJ5yr5Pb8vtHxd3VQQBINiuFry2XF5lR1WhlenJiiAW5yh6NCxYDnjbtw06aYjL6kBJ0zNEFO40SxGLm4m+Vw== 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=q9lQYSCDPO14dxMtMCv3MA5ZfV6mjJnPekK/fm49wjE=; b=lwseIjXnZGrBbuYt3UqlYSxDlY+/bUATmV6yDeAovQsOsb2yQB75KDxUw2qvY9/6VQ078ForYP98Dk5XDsU/zawCsgboPwZTF3exHNaFFa77OWVtxt0JfVbceljseRJ6GZzdcZfh0neaXEQcjzQGp0yvrcUL1qjXAkrm93HvgvjtFvM5iBIRxQBwzLzEpaXkZc726DjL3acl8l+9rBRqIft14fAn3ZNnJo2VqEW6rLSrRjYYiM8EiRyC+WB03KcbzKSAzjey/eZVynDfx9LfnwoUWnGvsj3CtEuv0iAF3GvJuE5IkWK9pn4IAsWE5W3d98fud9+dbyv0TuiBrasMxQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=q9lQYSCDPO14dxMtMCv3MA5ZfV6mjJnPekK/fm49wjE=; b=gwsE0MHyWUacu1N1KQAggXJ3XoNn8BrWMuKOC6Jz33VfQe3dTAkU34wgnYsPMlFNS1IgYCiN4xdagueqZc/VUiOOJO28/+qiSZWGvtOcuBNXKz+e/rUSy+qlc62IXajk6qMIM5KJf6UqeZCcw3nkhOYP9Mqu5S5CCG2mb16G3bU= Authentication-Results: dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=none action=none header.from=mellanox.com; Received: from AM0PR05MB6610.eurprd05.prod.outlook.com (2603:10a6:208:12f::18) by AM0PR0502MB3762.eurprd05.prod.outlook.com (2603:10a6:208:1b::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3326.21; Sun, 30 Aug 2020 11:16:32 +0000 Received: from AM0PR05MB6610.eurprd05.prod.outlook.com ([fe80::4c8a:9848:2e2a:3598]) by AM0PR05MB6610.eurprd05.prod.outlook.com ([fe80::4c8a:9848:2e2a:3598%6]) with mapi id 15.20.3326.025; Sun, 30 Aug 2020 11:16:32 +0000 From: Wisam Jaddo To: dev@dpdk.org, thomas@monjalon.net, asafp@mellanox.com, akozyrev@nvidia.com, akozyrev@mellanox.com, arybchenko@solarflare.com, jackmin@mellanox.com Date: Sun, 30 Aug 2020 11:15:41 +0000 Message-Id: <20200830111544.4190-11-wisamm@mellanox.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200830111544.4190-1-wisamm@mellanox.com> References: <20200830111544.4190-1-wisamm@mellanox.com> X-ClientProxiedBy: AM4PR05CA0008.eurprd05.prod.outlook.com (2603:10a6:205::21) To AM0PR05MB6610.eurprd05.prod.outlook.com (2603:10a6:208:12f::18) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from mellanox.com (37.142.13.130) by AM4PR05CA0008.eurprd05.prod.outlook.com (2603:10a6:205::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3326.19 via Frontend Transport; Sun, 30 Aug 2020 11:16:31 +0000 X-Mailer: git-send-email 2.17.1 X-Originating-IP: [37.142.13.130] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 486bfc55-0919-48c3-2e4a-08d84cd62681 X-MS-TrafficTypeDiagnostic: AM0PR0502MB3762: X-LD-Processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtFwd,ExtAddr X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1751; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: sHuGHn0X9BUr5U9ghISGhtBlcZJOSixIE9UVlH+28FMPFDy8quxmaGuWlyoJAl3DXWmQPwSB1ZPgxL6lBQFmrP6GWoaJpUfTtIp2FITBD9khpUh6UsuFIT721+N4NecyhTMjyoYPeRWGlZE6/7HENzT6WL63O9m6t7FCjsF9SuxPtsMzRkk+ejYWwHQGr2P9AKmGMPKw6WAb5NVxiEGdLBDla2qY70BO3YbbtGn3UqYnZOzQUEtVpYGXmNN1GxUU34B5hnOhTC+iMTL34R32dRehm+C5BeFgeU/FzmBwmnS+JyPLf8h8lryIovHPRCb1 X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0PR05MB6610.eurprd05.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(396003)(136003)(39860400002)(376002)(346002)(478600001)(316002)(5660300002)(8886007)(2906002)(6636002)(86362001)(36756003)(6666004)(1076003)(55016002)(8936002)(26005)(2616005)(7696005)(66946007)(66556008)(52116002)(83380400001)(16526019)(8676002)(186003)(956004)(66476007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: JReIC4tCM1hj/HvA3nXiWd3UMb6Wx+l205szJVPBb0iBd3WHoFN/gEg5qjQvj9JBJ/YhQuPVH5DIqK83EEjos/HUoWAipoCWCboXe1yT9FxTtNhoVof4nXG0immlDGoifFS2/dtlNkFeHEXloCV6dIOgerFVOhnQXoasA2fNaXOj10CLGdsl4zF+uATW0VdTae2xaPsDeiSzOx1MTZqKq8ls0OMFfxFcg9bRPAbSAHpnCzcsOJz0P0MSWRaJz8hdM8xmtB6vEQvPE5GTSTE9R3RIIjvVVopkZezda+QOoOWSvs1/KJXXKdyKtgmqjD1C/jrPlGjddX0uWKAuUqgZQwJwg1oN8GB76zKmjG4bgph3/dot1irnHSRXfsHSGk929gzQaXscMT/QKOQOZba0wtfIWN+e2nJ/gLXUWS6jktyyCVSFxFqBSVZsahJV70rnas/dfn7YzTB1cJVVEOlqK0pp50VCvF/DvECXYWRT4oRF1fKTM/EkapbeHPa7ryj0GMKo6C629eQ3VGFjDwYJV/f2okFsCFfdIrYS8GOh8LQYZ51MNTSDFOHG0ljy99t7p7D2h3LZpZaIb+B7qtnNBxekwhiH32UOM0dmza2lM4VWnN1hmplZQgkK8iEmz7H5RIl/3+fSILjKLS7h7+kx0A== X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 486bfc55-0919-48c3-2e4a-08d84cd62681 X-MS-Exchange-CrossTenant-AuthSource: AM0PR05MB6610.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Aug 2020 11:16:32.7906 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: XI/WmS1o5Y7gY3/+2UDueOzTLYa3UhVA3GyynXA9rJyqkIKKNk6CtNISnjgABbsJCiwZ4v1JdBSBtlhDia2bLA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR0502MB3762 Subject: [dpdk-dev] [PATCH 10/13] app/flow-perf: add random mark id values X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 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" Instead of having single id value, use up to 256 values, thus we make sure that all flows will not use same mark action. Signed-off-by: Wisam Jaddo Acked-by: Alexander Kozyrev --- app/test-flow-perf/actions_gen.c | 6 ++++-- app/test-flow-perf/config.h | 1 - 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/app/test-flow-perf/actions_gen.c b/app/test-flow-perf/actions_gen.c index 10ddef4deb..278c0a3004 100644 --- a/app/test-flow-perf/actions_gen.c +++ b/app/test-flow-perf/actions_gen.c @@ -54,12 +54,14 @@ struct action_rss_data { static void add_mark(struct rte_flow_action *actions, uint8_t actions_counter, - __rte_unused struct additional_para para) + struct additional_para para) { static struct rte_flow_action_mark mark_action; + uint32_t counter = para.counter; do { - mark_action.id = MARK_ID; + /* Random values from 1 to 256 */ + mark_action.id = (counter % 255) + 1; } while (0); actions[actions_counter].type = RTE_FLOW_ACTION_TYPE_MARK; diff --git a/app/test-flow-perf/config.h b/app/test-flow-perf/config.h index 439f3264b4..ee1a4a3724 100644 --- a/app/test-flow-perf/config.h +++ b/app/test-flow-perf/config.h @@ -23,7 +23,6 @@ #define META_DATA 1 #define TAG_INDEX 0 #define PORT_ID_DST 1 -#define MARK_ID 1 #define TEID_VALUE 1 /* Flow items/acctions max size */ From patchwork Sun Aug 30 11:15:42 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wisam Jaddo X-Patchwork-Id: 76161 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 3F6AEA04AB; Sun, 30 Aug 2020 13:23:16 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id F121B1C133; Sun, 30 Aug 2020 13:16:40 +0200 (CEST) Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-eopbgr00068.outbound.protection.outlook.com [40.107.0.68]) by dpdk.org (Postfix) with ESMTP id 11FBB1C0D7 for ; Sun, 30 Aug 2020 13:16:35 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YMvx5cOxc9TvpB70b/bulL77cNlhn1QtDNnB39KimqRYtjKpEfG3aTrp6wDupRyXO6nWJ5JqrCn0aprPx4szu3bPlMGqKo1GBNoI4/Ea+QiRjqHGvEZaJghUkyP75ZVbf0/XE74zVG4gCb3+6ofVw35wKzOt3ncJJMB5OByY6FT8xFl2QEV0mg4LUHSUAW988TEgMKt9bKHsu7gEMkKogDGC7xk6WzCO1LF7/gAgO4tE/0sXwPYKgmMpEJFqkpuvl9eUDuO6FtzrOUI1axepOqQ80EkNrryZOiRBoaobuwAGtvdn+ITx+9+tkNU7fzWgOL1Gdh3Y0GCVWvEvuzkJmg== 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=9c8iYYG3num3/9IWoj/YIAVnCENKdkQwGt170CBNEjo=; b=VK8d82cjAvbaR6ipkUmi2SWgadUEgyqWHH5ZzxKgvkYZPtvAx52H/DPX/1J/rl7K5mmlv8JoctjrfjVR+ZgS7CVY3F7F/Uo0tgr+/lLHBkMwE5SyxQM0WIVwHRf7xzUWZSbqxuo5rBLhbBxpNteyv/s54h8UAV60uN5VGFXixM+4iIBVJBYSHwP/+TkAgwdCyR/AS5HdfA+cVU1bJWbsEC3Hv38EWuxVvOoC2pT1zkLYLqS1zsfg3385asUA2GP4SIDEjqG8qM7THNztqGOOlIS/37TDNhSrTlHsLv3E3nrFnwNfU0YnS8j8dketjUUosA2gnHKVoNoxVFgrPd0PIA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=9c8iYYG3num3/9IWoj/YIAVnCENKdkQwGt170CBNEjo=; b=cVjdokVmLGuQPnIjKi3wC2w0Z/d6LcJczSoeYLHzF0ouo7R/9UuiPQnDJJXi959a+Lmcj6dMW/CIJ9G6d+tfNjX/0gvfH3lxOvARxrYz787aQzVI+e+FiOcHBiKbhQX3PmIM681enbbHyVFgQVm3YHgIHm7ROcIxErUsJ/UeLhI= Authentication-Results: dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=none action=none header.from=mellanox.com; Received: from AM0PR05MB6610.eurprd05.prod.outlook.com (2603:10a6:208:12f::18) by AM0PR0502MB3762.eurprd05.prod.outlook.com (2603:10a6:208:1b::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3326.21; Sun, 30 Aug 2020 11:16:34 +0000 Received: from AM0PR05MB6610.eurprd05.prod.outlook.com ([fe80::4c8a:9848:2e2a:3598]) by AM0PR05MB6610.eurprd05.prod.outlook.com ([fe80::4c8a:9848:2e2a:3598%6]) with mapi id 15.20.3326.025; Sun, 30 Aug 2020 11:16:34 +0000 From: Wisam Jaddo To: dev@dpdk.org, thomas@monjalon.net, asafp@mellanox.com, akozyrev@nvidia.com, akozyrev@mellanox.com, arybchenko@solarflare.com, jackmin@mellanox.com Date: Sun, 30 Aug 2020 11:15:42 +0000 Message-Id: <20200830111544.4190-12-wisamm@mellanox.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200830111544.4190-1-wisamm@mellanox.com> References: <20200830111544.4190-1-wisamm@mellanox.com> X-ClientProxiedBy: AM4PR05CA0008.eurprd05.prod.outlook.com (2603:10a6:205::21) To AM0PR05MB6610.eurprd05.prod.outlook.com (2603:10a6:208:12f::18) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from mellanox.com (37.142.13.130) by AM4PR05CA0008.eurprd05.prod.outlook.com (2603:10a6:205::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3326.19 via Frontend Transport; Sun, 30 Aug 2020 11:16:32 +0000 X-Mailer: git-send-email 2.17.1 X-Originating-IP: [37.142.13.130] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 2151c8df-c857-4a7d-40c6-08d84cd62727 X-MS-TrafficTypeDiagnostic: AM0PR0502MB3762: X-LD-Processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtFwd,ExtAddr X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:2201; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: KJG7p3+EC436IUtXDJR+KkdY6t85MVknrMGsL3QRG9Nq40xJVzYrQ0Xsoec32drY8lu66YL9zUKjJBYIlIbNVgsQFmSvUAxm0PvSCTDJIRO/HDRe3F+ESpJ9ZZwQIq2n24fBtXxVPbs8kKy2E3S0F9dzk1Bsve6yQer2OWbp5gdv+fKCQF1jtXiqzRPWVtMPrAGBWprnYpLECof/CISresu/1nwhQtN1lcu3GSchNkvieAA9d5ZRvvubzE29OFZgoY0wJ7kb8gzV6Ka2UNyMklMm3ulevqRsBY/O2zggJw8zV5DyBsznJ+C9UY0v1s4y X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0PR05MB6610.eurprd05.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(396003)(136003)(39860400002)(376002)(346002)(478600001)(316002)(5660300002)(8886007)(2906002)(6636002)(86362001)(36756003)(6666004)(1076003)(55016002)(8936002)(26005)(2616005)(7696005)(66946007)(66556008)(52116002)(83380400001)(16526019)(8676002)(186003)(956004)(66476007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: MYOwj/x4ImBRnWItDEo+Ig4YJFl8GK3qAFqT8ilrezGn7uYHMUqdJF3PJkcGR0Ry3sOtPJytpF3fE0XTSQh4tOnAOntWN2aKJMbnvcZJPZjcbnadBJBh5ID6bEHopkJuEw4MSDHJxFBYUY4X93j6UNCyclxxaYkOiTeywjS/B+Y2GBg6oZfavKJvDZjhF9HjzK5/8ysa97QJaKoVSlI8RAC4zhwhKTsS+/dqxYKoJbW7ZLpFihUJxXphQonxS2/G7Z9IeEf0iM6lNcqHKeFtKiaAIZYervt/VtnewIk+nnubPm6Tnq54fidWyASAU1HfTDCORmqEEs3E7Mjqi/nlyVYmw+gnUpfkhmPA9y2j7D66sjYMrNW+31XJrVz40atBAjQdSDqBCeHyOfZCKA7dJoc/mKAYNMz5QMoq7dg1yg74+ZfLALuUl89uhP1khUZYb8FVBPbG01AkdoubrkcVevuGmzNzEopR/6Nk7p4s8deXqpdH4or9ItWlzGuVv6eTeIpTR6sjPBhURKONzdSFZVP/NbkA1gGh/3x0vuhCdYN4U4SG5hCPwb7OrTh0Vg6WNSPpnr3UlrxYpyvxMQ9KXMpAp6IC0IvPjmzvCbVEgqHV7/WoYfXkwjYkslqxrEdmwle2R1qC6Vl9zuCMAFqvMw== X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2151c8df-c857-4a7d-40c6-08d84cd62727 X-MS-Exchange-CrossTenant-AuthSource: AM0PR05MB6610.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Aug 2020 11:16:33.8720 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 3EeYKzXBwWK1AhncxyBAxgtYKYJ+gqSxUyGcSfajwq/MN6Kb/u7AeNfmz0av+fo5Fcgf9mlxRSmCllq2X+7yZg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR0502MB3762 Subject: [dpdk-dev] [PATCH 11/13] app/flow-perf: add set port mask to options X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 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" Sometimes you need to check flow performance for certain port and not all ports. Thus a portmask option is needed. Usage: --portmask=N Where N represent the hexadecimal bitmask of ports used. Signed-off-by: Wisam Jaddo Acked-by: Alexander Kozyrev --- app/test-flow-perf/main.c | 20 ++++++++++++++++++++ doc/guides/rel_notes/release_20_08.rst | 4 +++- doc/guides/tools/flow-perf.rst | 3 +++ 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/app/test-flow-perf/main.c b/app/test-flow-perf/main.c index 0a030a462c..18199c6e2e 100644 --- a/app/test-flow-perf/main.c +++ b/app/test-flow-perf/main.c @@ -53,6 +53,7 @@ static uint64_t flow_actions[MAX_ACTIONS_NUM]; static uint64_t flow_attrs[MAX_ATTRS_NUM]; static uint8_t items_idx, actions_idx, attrs_idx; +static uint64_t ports_mask; static volatile bool force_quit; static bool dump_iterations; static bool delete_flag; @@ -106,6 +107,7 @@ usage(char *progname) printf(" --dump-socket-mem: To dump all socket memory\n"); printf(" --enable-fwd: To enable packets forwarding" " after insertion\n"); + printf(" --portmask=N: hexadecimal bitmask of ports used\n"); printf("To set flow attributes:\n"); printf(" --ingress: set ingress attribute in flows\n"); @@ -189,8 +191,10 @@ usage(char *progname) static void args_parse(int argc, char **argv) { + uint64_t pm; char **argvopt; char *token; + char *end; int n, opt; int opt_idx; size_t i; @@ -514,6 +518,7 @@ args_parse(int argc, char **argv) { "deletion-rate", 0, 0, 0 }, { "dump-socket-mem", 0, 0, 0 }, { "enable-fwd", 0, 0, 0 }, + { "portmask", 1, 0, 0 }, /* Attributes */ { "ingress", 0, 0, 0 }, { "egress", 0, 0, 0 }, @@ -568,6 +573,9 @@ args_parse(int argc, char **argv) { "vxlan-decap", 0, 0, 0 }, }; + RTE_ETH_FOREACH_DEV(i) + ports_mask |= 1 << i; + hairpin_queues_num = 0; argvopt = argv; @@ -703,6 +711,15 @@ args_parse(int argc, char **argv) if (strcmp(lgopts[opt_idx].name, "enable-fwd") == 0) enable_fwd = true; + if (strcmp(lgopts[opt_idx].name, + "portmask") == 0) { + /* parse hexadecimal string */ + end = NULL; + pm = strtoull(optarg, &end, 16); + if ((optarg[0] == '\0') || (end == NULL) || (*end != '\0')) + rte_exit(EXIT_FAILURE, "Invalid fwd port mask\n"); + ports_mask = pm; + } break; default: fprintf(stderr, "Invalid option: %s\n", argv[optind]); @@ -880,6 +897,9 @@ flows_handler(void) rte_exit(EXIT_FAILURE, "No Memory available!"); for (port_id = 0; port_id < nr_ports; port_id++) { + /* If port outside portmask */ + if (!((ports_mask >> port_id) & 0x1)) + continue; cpu_time_used = 0; flow_index = 0; if (flow_group > 0) { diff --git a/doc/guides/rel_notes/release_20_08.rst b/doc/guides/rel_notes/release_20_08.rst index c0f7ab6293..b21f0bfb03 100644 --- a/doc/guides/rel_notes/release_20_08.rst +++ b/doc/guides/rel_notes/release_20_08.rst @@ -284,7 +284,9 @@ New Features * Start supporting flag action. * Start supporting raw-encap and raw-decap actions. * Start supporting vxlan-encap and vxlan-decap actions. - + * Add new option to set portmask for insertion/deletion: + ``--portmask=N`` Where N represent the hexadecimal + bitmask of ports used. Removed Items ------------- diff --git a/doc/guides/tools/flow-perf.rst b/doc/guides/tools/flow-perf.rst index 15b4273cc0..bbefc978c6 100644 --- a/doc/guides/tools/flow-perf.rst +++ b/doc/guides/tools/flow-perf.rst @@ -84,6 +84,9 @@ The command line options are: * ``--enable-fwd`` Enable packets forwarding after insertion/deletion operations. +* ``--portmask=N`` + hexadecimal bitmask of ports to be used. + Attributes: From patchwork Sun Aug 30 11:15:43 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wisam Jaddo X-Patchwork-Id: 76162 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 33A81A04AB; Sun, 30 Aug 2020 13:23:45 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 194C91C139; Sun, 30 Aug 2020 13:16:42 +0200 (CEST) Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-eopbgr00047.outbound.protection.outlook.com [40.107.0.47]) by dpdk.org (Postfix) with ESMTP id 06F001C10C for ; Sun, 30 Aug 2020 13:16:35 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=b3gNXzCXpt2BO0Y+5DfEqTUFLoPmLzqHcL427PH11HvzY5fuQreLbucXJzsNzBf7GrVIqVoReS8yt2sXNn3Eoozwfling2uTAX6Ieo+6bIcpIeWFu24dFe9uZWRruA+FP8e+xOPF6r6SkprcisU/m8y8HA+gPQv7Ftx/wqMR2UkLhHsQkMj+Wss4v6815jKiW8zWDWzoHNsm0JwxashYKXR2qu2Mf0x3fb7AEfrK26jJIbtsLi69X5KtkryJLcWVybw2vqsw636cWrh1QBRqCyAatnExw9ruCk/RHMrI53g2+1TZv/ozBuBz/N4ml7eRbVfRg6Jm8TtuRgdDUVQ+Rw== 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=86raxxI161eXQOspVivZQi9u89ADDf4VhPNkmqnd2+0=; b=ZbRDCYQ5fT6WSdS0xehIxFFpyDSKCl7As8qhwiYauIvlxkSN418TIxhp19xvCj6VExE/Niv0OYOMXEUe4cr+Zd2nAfG425OdzFwzloM/2anGv8RtWbqnBsa2VJXWet86hLzOjufvodVGmABfftojl1/8J8RHlRYfyUCa5J4ztHsPYOwoHcmj6qTuVPT3VX2RGASTOhtLmG9YFS9r/1efiMkWuWgITdS2P6/VPUzYQQaHBicIA5vMfQPuiDmqxph1ydMlvnaORiYz4AUz+adLPCeiD0UhPlu3Ag3KONZGdV0jYpaTBWZKFIK7UiLQqLmWJ9vI1oPAzrU0/9z5D6mxOA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=86raxxI161eXQOspVivZQi9u89ADDf4VhPNkmqnd2+0=; b=OGjU68v6a37ojG2q5dP5Wk6DmzYw/lOVOLP+GD87Xa2sleVVxmTTDE90AartifoCga4wYAY64jCA7ZP4EaO143/gAD1kdGqUppXf3y6wuJH4v1BY+eXZknkXcaO52fAciy5DvoPnkrMcIz9lIS5s/HZhQnDzv4L/wTX771Sn/Pw= Authentication-Results: dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=none action=none header.from=mellanox.com; Received: from AM0PR05MB6610.eurprd05.prod.outlook.com (2603:10a6:208:12f::18) by AM0PR0502MB3762.eurprd05.prod.outlook.com (2603:10a6:208:1b::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3326.21; Sun, 30 Aug 2020 11:16:35 +0000 Received: from AM0PR05MB6610.eurprd05.prod.outlook.com ([fe80::4c8a:9848:2e2a:3598]) by AM0PR05MB6610.eurprd05.prod.outlook.com ([fe80::4c8a:9848:2e2a:3598%6]) with mapi id 15.20.3326.025; Sun, 30 Aug 2020 11:16:35 +0000 From: Wisam Jaddo To: dev@dpdk.org, thomas@monjalon.net, asafp@mellanox.com, akozyrev@nvidia.com, akozyrev@mellanox.com, arybchenko@solarflare.com, jackmin@mellanox.com Date: Sun, 30 Aug 2020 11:15:43 +0000 Message-Id: <20200830111544.4190-13-wisamm@mellanox.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200830111544.4190-1-wisamm@mellanox.com> References: <20200830111544.4190-1-wisamm@mellanox.com> X-ClientProxiedBy: AM4PR05CA0008.eurprd05.prod.outlook.com (2603:10a6:205::21) To AM0PR05MB6610.eurprd05.prod.outlook.com (2603:10a6:208:12f::18) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from mellanox.com (37.142.13.130) by AM4PR05CA0008.eurprd05.prod.outlook.com (2603:10a6:205::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3326.19 via Frontend Transport; Sun, 30 Aug 2020 11:16:34 +0000 X-Mailer: git-send-email 2.17.1 X-Originating-IP: [37.142.13.130] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: d2fe7324-f033-43a9-2c38-08d84cd627cd X-MS-TrafficTypeDiagnostic: AM0PR0502MB3762: X-LD-Processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtFwd,ExtAddr X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:3631; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: inZJEl1+f6xm9gy2DiuBLR7bTC5W3S70xfHAtjRwtkxYiP7qa9VK5qd+vU8z5ljk1TsLiqgNuxqYBuMmhfR7Iz1At54sEemHupFZ4ncvM8hRrDnobbh9BaGKTwVjdWb0aMfJ/RQEKVa73kpA9aejBAXj8wZSjC5quqfrmiofKRXqTBNPtI5gyjrzKGkGpdx2FhG/Ai5341DEAWgI6lHiYWcOW3FcjWRU3dMzICfRC2/vjguzCiQPJtQRXBjs50RSsSCRrpYlJsxhbEZBB75sVMrSIMXKAIROkNBB++kX69Xbs3vAMUfQnER8FfEsNzujyGvl5YzaiU6v2uoUhuUUeA== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0PR05MB6610.eurprd05.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(396003)(136003)(39860400002)(376002)(346002)(478600001)(316002)(5660300002)(8886007)(2906002)(6636002)(86362001)(36756003)(6666004)(1076003)(55016002)(8936002)(26005)(2616005)(7696005)(66946007)(66556008)(52116002)(83380400001)(16526019)(8676002)(186003)(956004)(66476007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: yYGtBI94OmuW5o79U3wmhYIclCK+/k7H3/iXrKn7Z80IIBS1EVkYJT1/W8sCGovCglkVjnFYoJmJkyInrsKYkW8CRY+WLPUqVUbjj27cvxrphnbQvfs1QaoqP4ZuREY0dhDeek9rE4P6qUyAVJglIkm9xKLmAYqyFYauZEh46C8WEDdfGX7gZdayPEORLJ9ceP6c0BwJhQ52G7Fy522N2K5VuBkwNmKkXCusoSsf48JRLBaqVwR/BNsKP7MK1L/uhLaaEJ7K0TwBtuRWErVjmxviCCJ3tybEQ8wCwUWFtGJH7BfhDqb//TKKpLbnlZEWMfpHmQGOBMxhyRgXrxroyi/xAU3tIYhru8f0cfs64xTE79+5D5tJvCY4Hi/dA0z+g5gjECdmW9dbnufPs1K+5kCehu+PdIvdvtT6bOv1EcigtY2e4Rju4Yf7xVjQT625Ra4JVCpFh079diKGUGDSaklphxEsfSScnhZmA/9hUN1sKz897Fw86QEIiQvC8fUm7BvxGD5hdlTA07EKOda9a9YzLnILBBMRMZtifhQsGBfiedR0IxRlg2fFmNR224KZNeu5PGtgBbz6F51zZpB378vaVtYRi2qVH6PRwHRJuFd5CEfIJzYoMs3NXqUe0Ao41TFfZSgM9rUN/OB8KWai+Q== X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: d2fe7324-f033-43a9-2c38-08d84cd627cd X-MS-Exchange-CrossTenant-AuthSource: AM0PR05MB6610.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Aug 2020 11:16:34.9513 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: KXnkkDqUliBXHQ9cwSZnlmahGgMOe4EKlWOfFgphioxIDNQWmYoDgJllJgAcrbOp+dyG2aKWkXOo7LAxoF20jg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR0502MB3762 Subject: [dpdk-dev] [PATCH 12/13] app/flow-perf: add icmp matching support X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 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" Start support matching on icmpv4 and icmpv6. Usage: --icmpv4: add icmp item to match on. --icmpv6: add icmpv6 item to match on. Signed-off-by: Wisam Jaddo Acked-by: Alexander Kozyrev --- app/test-flow-perf/items_gen.c | 41 +++++++++++++++++++++++++- app/test-flow-perf/main.c | 16 ++++++++++ doc/guides/rel_notes/release_20_08.rst | 2 ++ doc/guides/tools/flow-perf.rst | 6 ++++ 4 files changed, 64 insertions(+), 1 deletion(-) diff --git a/app/test-flow-perf/items_gen.c b/app/test-flow-perf/items_gen.c index 8277ac70da..2b1ab41467 100644 --- a/app/test-flow-perf/items_gen.c +++ b/app/test-flow-perf/items_gen.c @@ -310,6 +310,38 @@ add_meta_tag(struct rte_flow_item *items, items[items_counter].mask = &tag_mask; } +static void +add_icmpv4(struct rte_flow_item *items, + uint8_t items_counter, + __rte_unused struct additional_para para) +{ + static struct rte_flow_item_icmp icmpv4_spec; + static struct rte_flow_item_icmp icmpv4_mask; + + memset(&icmpv4_spec, 0, sizeof(struct rte_flow_item_icmp)); + memset(&icmpv4_mask, 0, sizeof(struct rte_flow_item_icmp)); + + items[items_counter].type = RTE_FLOW_ITEM_TYPE_ICMP; + items[items_counter].spec = &icmpv4_spec; + items[items_counter].mask = &icmpv4_mask; +} + +static void +add_icmpv6(struct rte_flow_item *items, + uint8_t items_counter, + __rte_unused struct additional_para para) +{ + static struct rte_flow_item_icmp6 icmpv6_spec; + static struct rte_flow_item_icmp6 icmpv6_mask; + + memset(&icmpv6_spec, 0, sizeof(struct rte_flow_item_icmp6)); + memset(&icmpv6_mask, 0, sizeof(struct rte_flow_item_icmp6)); + + items[items_counter].type = RTE_FLOW_ITEM_TYPE_ICMP6; + items[items_counter].spec = &icmpv6_spec; + items[items_counter].mask = &icmpv6_mask; +} + void fill_items(struct rte_flow_item *items, uint64_t *flow_items, uint32_t outer_ip_src) @@ -381,7 +413,14 @@ fill_items(struct rte_flow_item *items, .mask = RTE_FLOW_ITEM_TYPE_GTP, .funct = add_gtp, }, - + { + .mask = RTE_FLOW_ITEM_TYPE_ICMP, + .funct = add_icmpv4, + }, + { + .mask = RTE_FLOW_ITEM_TYPE_ICMP6, + .funct = add_icmpv6, + }, }; for (j = 0; j < MAX_ITEMS_NUM; j++) { diff --git a/app/test-flow-perf/main.c b/app/test-flow-perf/main.c index 18199c6e2e..c420da6a57 100644 --- a/app/test-flow-perf/main.c +++ b/app/test-flow-perf/main.c @@ -130,6 +130,8 @@ usage(char *progname) printf(" --gtp: add gtp layer in flow items\n"); printf(" --meta: add meta layer in flow items\n"); printf(" --tag: add tag layer in flow items\n"); + printf(" --icmpv4: add icmpv4 layer in flow items\n"); + printf(" --icmpv6: add icmpv6 layer in flow items\n"); printf("To set flow actions:\n"); printf(" --port-id: add port-id action in flow actions\n"); @@ -284,6 +286,18 @@ args_parse(int argc, char **argv) .map = &flow_items[0], .map_idx = &items_idx }, + { + .str = "icmpv4", + .mask = FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_ICMP), + .map = &flow_items[0], + .map_idx = &items_idx + }, + { + .str = "icmpv6", + .mask = FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_ICMP6), + .map = &flow_items[0], + .map_idx = &items_idx + }, { .str = "ingress", .mask = INGRESS, @@ -538,6 +552,8 @@ args_parse(int argc, char **argv) { "gtp", 0, 0, 0 }, { "meta", 0, 0, 0 }, { "tag", 0, 0, 0 }, + { "icmpv4", 0, 0, 0 }, + { "icmpv6", 0, 0, 0 }, /* Actions */ { "port-id", 0, 0, 0 }, { "rss", 0, 0, 0 }, diff --git a/doc/guides/rel_notes/release_20_08.rst b/doc/guides/rel_notes/release_20_08.rst index b21f0bfb03..03eb4948e0 100644 --- a/doc/guides/rel_notes/release_20_08.rst +++ b/doc/guides/rel_notes/release_20_08.rst @@ -287,6 +287,8 @@ New Features * Add new option to set portmask for insertion/deletion: ``--portmask=N`` Where N represent the hexadecimal bitmask of ports used. + * Start supporting icmp and icmp6 matching items. + Removed Items ------------- diff --git a/doc/guides/tools/flow-perf.rst b/doc/guides/tools/flow-perf.rst index bbefc978c6..7e5dc0c54b 100644 --- a/doc/guides/tools/flow-perf.rst +++ b/doc/guides/tools/flow-perf.rst @@ -175,6 +175,12 @@ Items: under ``TAG_INDEX`` with full mask, default value = 0. Other fields are open mask. +* ``--icmpv4`` + Add icmpv4 item to all flows items, This item have open mask. + +* ``--icmpv6`` + Add icmpv6 item to all flows items, This item have open mask. + Actions: From patchwork Sun Aug 30 11:15:44 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wisam Jaddo X-Patchwork-Id: 76163 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 9F3B5A04AB; Sun, 30 Aug 2020 13:24:13 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id E85191C193; Sun, 30 Aug 2020 13:16:42 +0200 (CEST) Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-eopbgr50059.outbound.protection.outlook.com [40.107.5.59]) by dpdk.org (Postfix) with ESMTP id 785741C121 for ; Sun, 30 Aug 2020 13:16:37 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZWsHELaEbaQDnNGyzsImLZXwDAT1a+f+COFCxq1YNSVjEiP4zeF2lrcLtopa2uvjwzCBYLYY+UmlVZhmPvJtMcWXX9JttJJ+eyhz7ZCGlEc2p8xjDZua00Mv0ZkUI0cU5XKCo0njxWYQRxKxt1q+q5/5KUhgTYi93cM8Hw/Wxn4v9u7t9yd7FZu4GqtpH2jxKfN/99rxi+M2jh+k83Q20RajBefXcLjtOFxyhe+WusYYpzqdwiy9Co9uN9Dk0txc6SD1859rl9ECSOog+0EoIO2hvHODLV7G7JutGZAQsfXsA/MJMU1G0rY3PSxxoXham25DpYaCUXlCzRsLbxb1CA== 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=s4gzNTuYc/Bm3VpkfC3jNr4WTDw29tJBbMMxMxWoeBU=; b=aF9MyPwrdIqc1+Gbe4/zWMxiYiuQ7ftRtMBczCEcluZrYXWcRb5O1zyoodCPs7zf+ZATiZi329CnMPJWcdvaLMCe5nrewGt72qySRpkOAIapWL7ytRDFzstRAsDKErX5x9n51EZx9nMRaWYSDUz6id0lKzdSeHiY1oCeTnzmexgiDFgmNbnqRnpoZ/LAE2tBft4KWqQy8T/8Y3wR2Au6g6u36aIzNhcRkWWNLcb6xIqNkV4ENO0GWK4GJVA6zCzpaz+TGZrrxABTQrWBmHEjrd/jHMmBTO8HX71hruN2pyjayspxwqlAmNG+z1NGXLg3ZPf6qHIHy8zc+8x5+f9v1Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=s4gzNTuYc/Bm3VpkfC3jNr4WTDw29tJBbMMxMxWoeBU=; b=oxB5SPr9pV5Q/4Ok5T1sFGTSHjeGxd6oeRmuWBcbT17ufr2qchxGZ+1Tyzu+xUQFcPsUACdjMSwHkcbmt4A2JxTnnZ+L6JPk/AnrouW9IOZR1TXiptmfRxgfq8GYpUqc+btWNVwh+KW3cl4x4tW/Vi49w/4iWFiR9F48RdIEX6w= Authentication-Results: dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=none action=none header.from=mellanox.com; Received: from AM0PR05MB6610.eurprd05.prod.outlook.com (2603:10a6:208:12f::18) by AM0PR0502MB3762.eurprd05.prod.outlook.com (2603:10a6:208:1b::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3326.21; Sun, 30 Aug 2020 11:16:36 +0000 Received: from AM0PR05MB6610.eurprd05.prod.outlook.com ([fe80::4c8a:9848:2e2a:3598]) by AM0PR05MB6610.eurprd05.prod.outlook.com ([fe80::4c8a:9848:2e2a:3598%6]) with mapi id 15.20.3326.025; Sun, 30 Aug 2020 11:16:36 +0000 From: Wisam Jaddo To: dev@dpdk.org, thomas@monjalon.net, asafp@mellanox.com, akozyrev@nvidia.com, akozyrev@mellanox.com, arybchenko@solarflare.com, jackmin@mellanox.com Date: Sun, 30 Aug 2020 11:15:44 +0000 Message-Id: <20200830111544.4190-14-wisamm@mellanox.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200830111544.4190-1-wisamm@mellanox.com> References: <20200830111544.4190-1-wisamm@mellanox.com> X-ClientProxiedBy: AM4PR05CA0008.eurprd05.prod.outlook.com (2603:10a6:205::21) To AM0PR05MB6610.eurprd05.prod.outlook.com (2603:10a6:208:12f::18) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from mellanox.com (37.142.13.130) by AM4PR05CA0008.eurprd05.prod.outlook.com (2603:10a6:205::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3326.19 via Frontend Transport; Sun, 30 Aug 2020 11:16:35 +0000 X-Mailer: git-send-email 2.17.1 X-Originating-IP: [37.142.13.130] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: a0de68c4-8606-4eeb-7702-08d84cd62874 X-MS-TrafficTypeDiagnostic: AM0PR0502MB3762: X-LD-Processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtFwd,ExtAddr X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:5236; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: qgFMozcHhzTTJJT4dyu+rq+szb/zODeDQ7EOAqAewBLopFCzZ8ny97zDqoExzYdd3rJIEbw8Rck7rpruexMbH3HsbGCyY4Cqkw0f+qoLLX/tfORMVWvnEhYY44RYg2+2flMv1m4rMukkAWjz+GtXXRoGNqBkZcxVn//iq/hSbP5FlAxPAvegE2DJITQzr/jKviqBoFOpO+fp8uweoSZxEhlfZFFE7RjroxRQaOy6bOJrb8RbnyhU7SN/3fqjFho3trRg6RXvMYyj2fxWREF5eVJ9hDUR3Z7zaXgAWFCMcKZf/+m3fpj4SyzqVIzDkba8 X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0PR05MB6610.eurprd05.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(396003)(136003)(39860400002)(376002)(346002)(478600001)(316002)(5660300002)(8886007)(2906002)(6636002)(86362001)(36756003)(6666004)(1076003)(55016002)(8936002)(26005)(2616005)(7696005)(66946007)(66556008)(52116002)(83380400001)(16526019)(8676002)(186003)(956004)(66476007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: 2uQcW4Tr/RCHPIeyohb7GmIEPi0ZikstlMUVnLcJuESrldg6R+EUwub6EnMNVv3HvgEgSE6OMlajKuWbVaD4/z9EqxDPvxKpPn/hzITdQXm6XnckAPzw508XMutXtCDCf0NNrjtvW2hPle4VNtXQTAYygrVu/lcZFPUbIMKOZHw+L2ec9qhN0AaInTz4xK4uGh88FEwTeGhKKu7mR+1bJEPUyb0Vyuj+vVba3l7YEHKuoDLHAG9Cnr7DdrJfNkfBQr0lSc5bJTw2Q3uDQm0DgN9rZbbXJd51qhjtAhTWgm7SmuFU6Z7nPwwHce0a8fCjpz3QXcDzAbfm8pwbz3e5GUu3l+rKjqJN6f2DPJ1AaYmJos8A1FhuHt77Lt491c1sTEu52Ik7pe6dSAHDhP4vwGP1Ztg0wA7/B5teh7h3MgNi5I6wL7T1fajrP6Zwct3/67WX+3brWmcAw7qHHfU8SlI2fW3s1ubVCOUdEQGkRzBl2Al4vupUprdpo50HH+l4ljk/jtzJ5+v71I9uv7o7aJ1qWJ74efDKk/PCgWskeQ7CSuUE0QmqKJdlPYPdzmO5QUCBiWdexQgwNy4fnP0X04MqmUWp0AozVDpP7PcUT6FqWdyfIHgvHfMpqIOIyY6RhV5q3iM6aG1V+TD8DAyZNA== X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: a0de68c4-8606-4eeb-7702-08d84cd62874 X-MS-Exchange-CrossTenant-AuthSource: AM0PR05MB6610.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Aug 2020 11:16:36.0677 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Q8pZAMNTLI/FP7wbK8r+Xw6nrm8vT+8Sa4ZPDExmf34zWlFq3dMPtm+CSuSMGUATyPlay6w9Tc1qFH1/dM9vPA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR0502MB3762 Subject: [dpdk-dev] [PATCH 13/13] app/flow-perf: allow fixed values for actions X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 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" Sometime the user want to have fixed values of encap/decap or header modify for all flows. This will introduce the ability to choose from fixed or dynamic values by setting the flag in config.h To use different value for each flow: config.h: #define FIXED_VALUES 0 To use single value for all flows: config.h: #define FIXED_VALUES 1 Signed-off-by: Wisam Jaddo Acked-by: Alexander Kozyrev --- app/test-flow-perf/actions_gen.c | 131 +++++++++++++++++++++++++++---- app/test-flow-perf/config.h | 6 ++ 2 files changed, 120 insertions(+), 17 deletions(-) diff --git a/app/test-flow-perf/actions_gen.c b/app/test-flow-perf/actions_gen.c index 278c0a3004..e3a95d7ab2 100644 --- a/app/test-flow-perf/actions_gen.c +++ b/app/test-flow-perf/actions_gen.c @@ -214,6 +214,10 @@ add_set_src_mac(struct rte_flow_action *actions, uint32_t mac = para.counter; uint16_t i; + /* Fixed value */ + if (FIXED_VALUES) + mac = 1; + /* Mac address to be set is random each time */ for (i = 0; i < RTE_ETHER_ADDR_LEN; i++) { set_mac.mac_addr[i] = mac & 0xff; @@ -233,6 +237,10 @@ add_set_dst_mac(struct rte_flow_action *actions, uint32_t mac = para.counter; uint16_t i; + /* Fixed value */ + if (FIXED_VALUES) + mac = 1; + /* Mac address to be set is random each time */ for (i = 0; i < RTE_ETHER_ADDR_LEN; i++) { set_mac.mac_addr[i] = mac & 0xff; @@ -249,9 +257,14 @@ add_set_src_ipv4(struct rte_flow_action *actions, __rte_unused struct additional_para para) { static struct rte_flow_action_set_ipv4 set_ipv4; + uint32_t ip = para.counter; + + /* Fixed value */ + if (FIXED_VALUES) + ip = 1; /* IPv4 value to be set is random each time */ - set_ipv4.ipv4_addr = RTE_BE32(para.counter + 1); + set_ipv4.ipv4_addr = RTE_BE32(ip + 1); actions[actions_counter].type = RTE_FLOW_ACTION_TYPE_SET_IPV4_SRC; actions[actions_counter].conf = &set_ipv4; @@ -263,9 +276,14 @@ add_set_dst_ipv4(struct rte_flow_action *actions, __rte_unused struct additional_para para) { static struct rte_flow_action_set_ipv4 set_ipv4; + uint32_t ip = para.counter; + + /* Fixed value */ + if (FIXED_VALUES) + ip = 1; /* IPv4 value to be set is random each time */ - set_ipv4.ipv4_addr = RTE_BE32(para.counter + 1); + set_ipv4.ipv4_addr = RTE_BE32(ip + 1); actions[actions_counter].type = RTE_FLOW_ACTION_TYPE_SET_IPV4_DST; actions[actions_counter].conf = &set_ipv4; @@ -280,6 +298,10 @@ add_set_src_ipv6(struct rte_flow_action *actions, uint32_t ipv6 = para.counter; uint8_t i; + /* Fixed value */ + if (FIXED_VALUES) + ipv6 = 1; + /* IPv6 value to set is random each time */ for (i = 0; i < 16; i++) { set_ipv6.ipv6_addr[i] = ipv6 & 0xff; @@ -299,6 +321,10 @@ add_set_dst_ipv6(struct rte_flow_action *actions, uint32_t ipv6 = para.counter; uint8_t i; + /* Fixed value */ + if (FIXED_VALUES) + ipv6 = 1; + /* IPv6 value to set is random each time */ for (i = 0; i < 16; i++) { set_ipv6.ipv6_addr[i] = ipv6 & 0xff; @@ -317,9 +343,12 @@ add_set_src_tp(struct rte_flow_action *actions, static struct rte_flow_action_set_tp set_tp; uint32_t tp = para.counter; + /* Fixed value */ + if (FIXED_VALUES) + tp = 100; + /* TP src port is random each time */ - if (tp > 0xffff) - tp = tp >> 16; + tp = tp % 0xffff; set_tp.port = RTE_BE16(tp & 0xffff); @@ -335,6 +364,10 @@ add_set_dst_tp(struct rte_flow_action *actions, static struct rte_flow_action_set_tp set_tp; uint32_t tp = para.counter; + /* Fixed value */ + if (FIXED_VALUES) + tp = 100; + /* TP src port is random each time */ if (tp > 0xffff) tp = tp >> 16; @@ -350,7 +383,14 @@ add_inc_tcp_ack(struct rte_flow_action *actions, uint8_t actions_counter, __rte_unused struct additional_para para) { - static rte_be32_t value = RTE_BE32(1); + static rte_be32_t value; + uint32_t ack_value = para.counter; + + /* Fixed value */ + if (FIXED_VALUES) + ack_value = 1; + + value = RTE_BE32(ack_value); actions[actions_counter].type = RTE_FLOW_ACTION_TYPE_INC_TCP_ACK; actions[actions_counter].conf = &value; @@ -361,7 +401,14 @@ add_dec_tcp_ack(struct rte_flow_action *actions, uint8_t actions_counter, __rte_unused struct additional_para para) { - static rte_be32_t value = RTE_BE32(1); + static rte_be32_t value; + uint32_t ack_value = para.counter; + + /* Fixed value */ + if (FIXED_VALUES) + ack_value = 1; + + value = RTE_BE32(ack_value); actions[actions_counter].type = RTE_FLOW_ACTION_TYPE_DEC_TCP_ACK; actions[actions_counter].conf = &value; @@ -372,7 +419,14 @@ add_inc_tcp_seq(struct rte_flow_action *actions, uint8_t actions_counter, __rte_unused struct additional_para para) { - static rte_be32_t value = RTE_BE32(1); + static rte_be32_t value; + uint32_t seq_value = para.counter; + + /* Fixed value */ + if (FIXED_VALUES) + seq_value = 1; + + value = RTE_BE32(seq_value); actions[actions_counter].type = RTE_FLOW_ACTION_TYPE_INC_TCP_SEQ; actions[actions_counter].conf = &value; @@ -383,7 +437,14 @@ add_dec_tcp_seq(struct rte_flow_action *actions, uint8_t actions_counter, __rte_unused struct additional_para para) { - static rte_be32_t value = RTE_BE32(1); + static rte_be32_t value; + uint32_t seq_value = para.counter; + + /* Fixed value */ + if (FIXED_VALUES) + seq_value = 1; + + value = RTE_BE32(seq_value); actions[actions_counter].type = RTE_FLOW_ACTION_TYPE_DEC_TCP_SEQ; actions[actions_counter].conf = &value; @@ -397,9 +458,12 @@ add_set_ttl(struct rte_flow_action *actions, static struct rte_flow_action_set_ttl set_ttl; uint32_t ttl_value = para.counter; + /* Fixed value */ + if (FIXED_VALUES) + ttl_value = 1; + /* Set ttl to random value each time */ - while (ttl_value > 0xff) - ttl_value = ttl_value >> 8; + ttl_value = ttl_value % 0xff; set_ttl.ttl_value = ttl_value; @@ -423,9 +487,12 @@ add_set_ipv4_dscp(struct rte_flow_action *actions, static struct rte_flow_action_set_dscp set_dscp; uint32_t dscp_value = para.counter; + /* Fixed value */ + if (FIXED_VALUES) + dscp_value = 1; + /* Set dscp to random value each time */ - while (dscp_value > 0xff) - dscp_value = dscp_value >> 8; + dscp_value = dscp_value % 0xff; set_dscp.dscp = dscp_value; @@ -441,9 +508,12 @@ add_set_ipv6_dscp(struct rte_flow_action *actions, static struct rte_flow_action_set_dscp set_dscp; uint32_t dscp_value = para.counter; + /* Fixed value */ + if (FIXED_VALUES) + dscp_value = 1; + /* Set dscp to random value each time */ - while (dscp_value > 0xff) - dscp_value = dscp_value >> 8; + dscp_value = dscp_value % 0xff; set_dscp.dscp = dscp_value; @@ -507,13 +577,18 @@ add_ipv4_header(uint8_t **header, uint64_t data, struct additional_para para) { struct rte_flow_item_ipv4 ipv4_item; + uint32_t ip_dst = para.counter; if (!(data & FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_IPV4))) return; + /* Fixed value */ + if (FIXED_VALUES) + ip_dst = 1; + memset(&ipv4_item, 0, sizeof(struct rte_flow_item_ipv4)); ipv4_item.hdr.src_addr = RTE_IPV4(127, 0, 0, 1); - ipv4_item.hdr.dst_addr = RTE_BE32(para.counter); + ipv4_item.hdr.dst_addr = RTE_BE32(ip_dst); ipv4_item.hdr.version_ihl = RTE_IPV4_VHL_DEF; if (data & FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_UDP)) ipv4_item.hdr.next_proto_id = RTE_IP_TYPE_UDP; @@ -574,6 +649,10 @@ add_vxlan_header(uint8_t **header, uint64_t data, if (!(data & FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_VXLAN))) return; + /* Fixed value */ + if (FIXED_VALUES) + vni_value = 1; + memset(&vxlan_item, 0, sizeof(struct rte_flow_item_vxlan)); for (i = 0; i < 3; i++) @@ -595,6 +674,10 @@ add_vxlan_gpe_header(uint8_t **header, uint64_t data, if (!(data & FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_VXLAN_GPE))) return; + /* Fixed value */ + if (FIXED_VALUES) + vni_value = 1; + memset(&vxlan_gpe_item, 0, sizeof(struct rte_flow_item_vxlan_gpe)); for (i = 0; i < 3; i++) @@ -633,6 +716,10 @@ add_geneve_header(uint8_t **header, uint64_t data, if (!(data & FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_GENEVE))) return; + /* Fixed value */ + if (FIXED_VALUES) + vni_value = 1; + memset(&geneve_item, 0, sizeof(struct rte_flow_item_geneve)); for (i = 0; i < 3; i++) @@ -647,13 +734,18 @@ add_gtp_header(uint8_t **header, uint64_t data, struct additional_para para) { struct rte_flow_item_gtp gtp_item; + uint32_t teid_value = para.counter; if (!(data & FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_GTP))) return; + /* Fixed value */ + if (FIXED_VALUES) + teid_value = 1; + memset(>p_item, 0, sizeof(struct rte_flow_item_gtp)); - gtp_item.teid = RTE_BE32(para.counter); + gtp_item.teid = RTE_BE32(teid_value); gtp_item.msg_type = 255; memcpy(*header, >p_item, sizeof(gtp_item)); @@ -764,13 +856,18 @@ add_vxlan_encap(struct rte_flow_action *actions, static struct rte_flow_item_ipv4 item_ipv4; static struct rte_flow_item_udp item_udp; static struct rte_flow_item_vxlan item_vxlan; + uint32_t ip_dst = para.counter; + + /* Fixed value */ + if (FIXED_VALUES) + ip_dst = 1; items[0].spec = &item_eth; items[0].mask = &item_eth; items[0].type = RTE_FLOW_ITEM_TYPE_ETH; item_ipv4.hdr.src_addr = RTE_IPV4(127, 0, 0, 1); - item_ipv4.hdr.dst_addr = RTE_IPV4(255, 255, 255, 255); + item_ipv4.hdr.dst_addr = RTE_BE32(ip_dst); item_ipv4.hdr.version_ihl = RTE_IPV4_VHL_DEF; items[1].spec = &item_ipv4; items[1].mask = &item_ipv4; diff --git a/app/test-flow-perf/config.h b/app/test-flow-perf/config.h index ee1a4a3724..8f42bc589c 100644 --- a/app/test-flow-perf/config.h +++ b/app/test-flow-perf/config.h @@ -16,6 +16,12 @@ #define NR_RXD 256 #define NR_TXD 256 +/* This is used for encap/decap & header modify actions. + * When it's 1: it means all actions have fixed values. + * When it's 0: it means all actions will have different values. + */ +#define FIXED_VALUES 1 + /* Items/Actions parameters */ #define JUMP_ACTION_TABLE 2 #define VLAN_VALUE 1