From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id A5B55A0A0E; Mon, 10 May 2021 18:21:02 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 84C2340140; Mon, 10 May 2021 18:21:02 +0200 (CEST) Received: from NAM04-MW2-obe.outbound.protection.outlook.com (mail-mw2nam08on2065.outbound.protection.outlook.com [40.107.101.65]) by mails.dpdk.org (Postfix) with ESMTP id 97E584003E for ; Mon, 10 May 2021 18:21:01 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nLfLh0P67z+MWL9eRZN30MgOa69/XRBNhYwYiGKIC6kr/iuMuDmpQiWHtOFeYizUqaPp9xx/60Sp/ZY6zFw97+J0Hz2jkR+VhYs8sgH9F/Fuh0V+5S3sp0vHHiH9ETuHo1pH2DLE5qgZ5LwhEomQNP/lTU3ps1HwchGl8BTDPCz/GeL0PZjq3fwq5623BGs3BTBHUalRKw2R0H8UkyU1cOKOwcnNjMbVFRlyvV5yH8kA/hUkpXlt73DdZhC+w8azckcPZlOMeN6W/2I+tjZqybvbpf5mASvrPSgthM3poZoPMHQIj58i5e2Vyh+8BTI6SVyYeplIBzWubpQumxZ7FA== 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=8WMmEntyJKm4/tFuiAA39CZ8Fvr93YBOM57jSiZctRo=; b=aD1D3c1Vfb2TwxTubI4gOLlqFIk2w+QPf/PERNoc6yD03CmmdKRydKk1FNQwugEchWY+Gcv6oD1VJNVINOWVmRSJCSpI6V1C6DBow6zxXxTUWdMzuew0j9XJMzs13npPuTYcBIOL0b/WEymyUa+PMv6srhWpB165VowF4ahMX6BYbM+28hXE+UWAo9Sx3ug9DvUmiPlcHJ9/8oSlwhAK0tiRZVeeuQAP2CWGmShV3Favtxy7TUhg9jBuDOV/oAgB/IUXyfIFQQboyaZA9vyPv2ZmXPMM11R7eP6sJZwxDqjW9BXLB+dMluXVouFNtmheQA8zMuE54Msdfefarw5MXw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8WMmEntyJKm4/tFuiAA39CZ8Fvr93YBOM57jSiZctRo=; b=JsNsRfHE5Xe3aD2dX8kgu1DFuW96g+a2tiL8RoBhOfyOqAgDrJ0sgY3F4qjYF51N8eEj0OlGzmX7LNz94eZFjqJom5mh/G5zkTndH1sKrYtoP5HipZtNfPnci0FSI5ggJeD2UrLYKcze59cUyDnWWpQjSQ+kmgtGsGo7MpS1ev8OBWz/OucnfIK/dJ+DKsaHs1L+zKl/OABOm1W3URrk0RQPTmuHSlAEhaNtivWbnpcZ80zExSKjv4+57AYgePhjjIlbxSefShH64BQ/8eVtOOe+vl7REqLtOP7PAOUZmXq4HMlDyd6+NrVEsdRhdRZjgj0BI41tPWvUoUpcsC1P1g== Received: from DM4PR12MB5039.namprd12.prod.outlook.com (2603:10b6:5:38a::18) by DM4PR12MB5069.namprd12.prod.outlook.com (2603:10b6:5:388::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4108.25; Mon, 10 May 2021 16:21:00 +0000 Received: from DM4PR12MB5039.namprd12.prod.outlook.com ([fe80::8d9c:a567:9dae:b33e]) by DM4PR12MB5039.namprd12.prod.outlook.com ([fe80::8d9c:a567:9dae:b33e%2]) with mapi id 15.20.4108.031; Mon, 10 May 2021 16:21:00 +0000 From: Wisam Monther To: "Jiawei(Jonny) Wang" , Matan Azrad , Haifei Luo , NBU-Contact-Thomas Monjalon CC: "dev@dpdk.org" , Raslan Darawsheh Thread-Topic: [PATCH 1/3] app/flow-perf: support meter policy API Thread-Index: AQHXRbgJIO1zGA1sfEO+j3dLmkbkN6rc5RPM Date: Mon, 10 May 2021 16:21:00 +0000 Message-ID: References: <20210510161723.27432-1-jiaweiw@nvidia.com>, <20210510161723.27432-2-jiaweiw@nvidia.com> In-Reply-To: <20210510161723.27432-2-jiaweiw@nvidia.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: nvidia.com; dkim=none (message not signed) header.d=none;nvidia.com; dmarc=none action=none header.from=nvidia.com; x-originating-ip: [188.215.124.34] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 6c9df7df-470f-47d6-5a99-08d913cf9970 x-ms-traffictypediagnostic: DM4PR12MB5069: x-ld-processed: 43083d15-7273-40c1-b7db-39efd9ccc17a,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:58; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: ZPPqcBYRmKNSYl/n1KTBMR4yco+IjBGaWJD+ati3AD0oiLVyTtm6A8OEoPF6pOUHyaSrhdyTRnoFRSlZx2wumkbH0ImlhcM1qrcJ3cQ4+UBQcFMeNpKsgMCHYvpxZ1euHbOrfQdpGsBOCrv2NYoCeMJwgT9YAexdqIp76z7uII1+iePqwqxydj9ClxE+Yzzrxd6PE/3WSjYaKXsMrn8rNSyuP8ycDf5XvvGCdNPCV8EnnSOVPCW+fBocHllyRHsc2TyFqD2rBZVuC+Cvmjfhej9v6y4afFBbyocP2YOeKR/KJUne906SF+Q3WvZy4vSXPsxkxBkZmAUmq0eciU//DrTEgOlRmEJBybAQa1/wkrFV/V1jO7/RNyY4W1oUSt8iTBTDnSs3k+8BwWHaxcqxNjcerUF6iJ4K9CvRwV75FeprEmqkyrEh9Xo+K2Ve+hhtz7hQzs6LGBEyA7/2vxVNg7S+purTxDERIDo3sTjPFmcz+6N8vqepxOigUPlHtN77mBCaNASdEdCeu0N9MeZTH9aXu1cZZRxeT6qbv0xHSVOnLdiQPevsHCBsfcs6y62mv1uGGVFZL/7sg9+G1BfjvwrQsloa0mBMOJdp7jxoMq+HPm6HE8hpZ4t93qvVismFX6l3Lfq7b4Y73ZHE7gEHlcvqCr0u9+cWWjJgyExAOxhcGOG6k34m+dG3OTx6vaVE x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM4PR12MB5039.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(136003)(39860400002)(366004)(396003)(376002)(346002)(53546011)(6506007)(107886003)(86362001)(66556008)(38100700002)(66476007)(7696005)(166002)(316002)(4326008)(66946007)(91956017)(76116006)(122000001)(9686003)(55016002)(52536014)(45080400002)(5660300002)(66446008)(71200400001)(26005)(8676002)(8936002)(2906002)(54906003)(186003)(33656002)(83380400001)(64756008)(110136005)(478600001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: =?us-ascii?Q?OSZlAFMQ0zymknrmaRmCdmJ++aA8rlMH4QupJ5ccNaPDA69wHEqjUDg6Izad?= =?us-ascii?Q?Ut2kyLL3OsSN6EyPa3JOauXO3pAkfF1M2QmhhBGSl5jTcNy7ixZyIDtocHGS?= =?us-ascii?Q?xYHLNa86jJCfac1tzUVvrbhbIA7DV4Uv11WQpABtUFwkpv4agR4N4DFbjaFy?= =?us-ascii?Q?+PAxokwzASLGNz+EtojapKYsiviHtaNTMfi93YbMbbL0kJ74VuExfY7ef+I0?= =?us-ascii?Q?1INQ5HGKal4Dwki5pSnX2ThsSLBy/ah7lD5YlLgpJeUUeIttcjJoftfwS7GY?= =?us-ascii?Q?9VpSCj7D87L8QgOj8Nh2/wvBkt+RDq4VA4Fq6CWS+gFz2/j80hO1FG2Z4pfg?= =?us-ascii?Q?T3+TIEDFoqfrVuGJL3TuYPiDCwd78lHucVs6I+ryu+BT7QHQ3vkBpMltPsR8?= =?us-ascii?Q?pCt6+7C2105Sue3ocSufq0MyAtTUnjNnHFuaxwHcdMyPGPX58JFM3WzQbGMu?= =?us-ascii?Q?oPzprQJDqvU9fI521OVNcdAS2BUZy0zumj91kPtGBG4Lri4IsCXVqLWHo4JY?= =?us-ascii?Q?q2s3mBPnwMqVqmtaNc15STubtlOL9RTQWRFs54NYNzB3dBfEd8BDj6hWkK24?= =?us-ascii?Q?t9Va3cRb3gf1J0i5Nd2y9sg+QJCARsaLolH4+NKJ8X1jp0NT69R7uyylTLQ2?= =?us-ascii?Q?PHEUEF4YbhV8ZP8YS1+QYOjkpNN+eDWAMgslDFMYPdmdttw7sK9jpn8duS4m?= =?us-ascii?Q?B1DZLsW1owTN3iANDFTMt6YrUTUI1SsddnZ6qkGknUpfYSqxiTXG+Kj8R3fh?= =?us-ascii?Q?S57Jfp66Bzglna166cTzq4izeQFMUS+wgG4+7nzIgI8sNl4XujLifKWjoVa2?= =?us-ascii?Q?A+5ifCKbxIS0RRPO4V5SAORB6J/0WF/Z2T6vpLE1FuquVjWl3ix5YgX02kLH?= =?us-ascii?Q?eyhHQPMAksZYx0pGj+KDOsz8jdIdQyN6JOerRS3Ao06eT6FjvLMhUtkhGztr?= =?us-ascii?Q?cpQCPexbedS7KZn3Ykn5LRleDXsXBtiBK0NvPZvpX708131aZxhKMLn46+PC?= =?us-ascii?Q?606dAE1pnFHrm5mhZJGlFTqAfSAmk2d7s0SejI9dFF5AaYIQJgqEieH3654D?= =?us-ascii?Q?s2axURRLyQnr66OeHHA3inxidN+OJbZcZIEpzKyFc9hjrDx//UJ+3NK7sewh?= =?us-ascii?Q?J8SKb9F+tFq6ygi5ZJnZ7cZHAwf31h5mY0Us4SqXCoIGlR101lZva1phJO9u?= =?us-ascii?Q?zLhQq2jbrv5s9sj13Px6ute+3Z5MEZORDtTxnrFzol0Qv6FQPcY/Zcn7IrTf?= =?us-ascii?Q?Vw4XbM//lDYCnlHeJUN03izTISNzL3a/imvAArUukkTP6UoGTVq3omYWoYPs?= =?us-ascii?Q?Uhom5ucniJScI2RuIHYo6JGG5kA6j5iMlRPjW0tvL8i25g=3D=3D?= MIME-Version: 1.0 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM4PR12MB5039.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6c9df7df-470f-47d6-5a99-08d913cf9970 X-MS-Exchange-CrossTenant-originalarrivaltime: 10 May 2021 16:21:00.1722 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: nkkY0v3p/fzy2gUYUrAa+YoWKHt6rTvQox5PAbLdNh6Jmq9+3Sf12lAhkPu/p7to/s6lnLL/5sdfj4znqHHCAg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB5069 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [dpdk-dev] [PATCH 1/3] app/flow-perf: support meter policy API X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Hi guys, I have some issues w/ this patch, please exclude my ack for now. Can you please check my comments on the this previous patch in ML? BRs, Wisam Jaddo Get Outlook for iOS ________________________________ From: Jiawei(Jonny) Wang Sent: Monday, May 10, 2021 7:17:21 PM To: Matan Azrad ; Haifei Luo ; NBU-Co= ntact-Thomas Monjalon ; Wisam Monther Cc: dev@dpdk.org ; Raslan Darawsheh Subject: [PATCH 1/3] app/flow-perf: support meter policy API Add option "policy-mtr" to indicate if meter creation will include policy or not. Meter creation will keep same without it. With "policy-mtr", policy is introduced. API create_meter_policy is to create a policy. API create_meter_rule will use it to create meter. Signed-off-by: Haifei Luo Signed-off-by: Jiawei Wang Acked-by: Wisam Jaddo --- app/test-flow-perf/main.c | 87 ++++++++++++++++++++++++++++++++-- doc/guides/tools/flow-perf.rst | 3 ++ 2 files changed, 86 insertions(+), 4 deletions(-) diff --git a/app/test-flow-perf/main.c b/app/test-flow-perf/main.c index 9be8edc31d..7b8b6fb9c4 100644 --- a/app/test-flow-perf/main.c +++ b/app/test-flow-perf/main.c @@ -53,6 +53,7 @@ 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]; +static uint32_t g_policy_id[MAX_PORTS]; static uint8_t items_idx, actions_idx, attrs_idx; static uint64_t ports_mask; @@ -62,6 +63,7 @@ static bool delete_flag; static bool dump_socket_mem_flag; static bool enable_fwd; static bool unique_data; +static bool policy_mtr; static struct rte_mempool *mbuf_mp; static uint32_t nb_lcores; @@ -115,6 +117,13 @@ static struct multi_cores_pool mc_pool =3D { .cores_count =3D 1, }; +/* Storage for struct rte_flow_action_rss including external data. */ +struct action_rss_data { + struct rte_flow_action_rss conf; + uint8_t key[40]; + uint16_t queue[128]; +}; + static void usage(char *progname) { @@ -134,6 +143,7 @@ usage(char *progname) printf(" --portmask=3DN: hexadecimal bitmask of ports used\n"); printf(" --unique-data: flag to set using unique data for all" " actions that support data, such as header modify and enc= ap actions\n"); + printf(" --policy-mtr: To create meter with policy\n"); printf("To set flow attributes:\n"); printf(" --ingress: set ingress attribute in flows\n"); @@ -573,6 +583,7 @@ args_parse(int argc, char **argv) { "unique-data", 0, 0, 0 }, { "portmask", 1, 0, 0 }, { "cores", 1, 0, 0 }, + { "policy-mtr", 0, 0, 0 }, /* Attributes */ { "ingress", 0, 0, 0 }, { "egress", 0, 0, 0 }, @@ -802,6 +813,8 @@ args_parse(int argc, char **argv) RTE_MAX_LCORE); } } + if (strcmp(lgopts[opt_idx].name, "policy-mtr") =3D= =3D 0) + policy_mtr =3D true; break; default: usage(argv[0]); @@ -912,6 +925,58 @@ has_meter(void) return 0; } +static void +create_meter_policy(void) +{ + struct rte_mtr_error error; + uint32_t policy_id; + int ret, i, port_id; + struct rte_mtr_meter_policy_params policy; + struct action_rss_data rss_data; + struct rte_flow_action g_actions[2], r_actions[2]; + uint16_t nr_ports; + + memset(&rss_data, 0, sizeof(rss_data)); + memset(&policy, 0, sizeof(policy)); + rss_data.conf.func =3D RTE_ETH_HASH_FUNCTION_DEFAULT; + rss_data.conf.level =3D 0; + rss_data.conf.types =3D GET_RSS_HF(); + rss_data.conf.key_len =3D 0; + rss_data.conf.key =3D NULL; + rss_data.conf.queue_num =3D RXQ_NUM; + uint16_t q_data[RXQ_NUM]; + rss_data.conf.queue =3D q_data; + + for (i =3D 0; i < RXQ_NUM; i++) + q_data[i] =3D i; + for (i =3D 0; i < RXQ_NUM; i++) + rss_data.queue[i] =3D i; + + g_actions[0].type =3D RTE_FLOW_ACTION_TYPE_RSS; + g_actions[0].conf =3D &(rss_data.conf); + g_actions[1].type =3D RTE_FLOW_ACTION_TYPE_END; + g_actions[1].conf =3D NULL; + + r_actions[0].type =3D RTE_FLOW_ACTION_TYPE_DROP; + r_actions[0].conf =3D NULL; + r_actions[1].type =3D RTE_FLOW_ACTION_TYPE_END; + r_actions[1].conf =3D NULL; + + policy.actions[RTE_COLOR_GREEN] =3D &g_actions[0]; + policy.actions[RTE_COLOR_YELLOW] =3D NULL; + policy.actions[RTE_COLOR_RED] =3D &r_actions[0]; + + nr_ports =3D rte_eth_dev_count_avail(); + for (port_id =3D 0; port_id < nr_ports; port_id++) { + policy_id =3D port_id + 10; + ret =3D rte_mtr_meter_policy_add(port_id, policy_id, + &policy, &error); + if (ret) + printf("meter add failed port_id %d\n", port_id); + g_policy_id[port_id] =3D policy_id; + } +} + static void create_meter_rule(int port_id, uint32_t counter) { @@ -928,7 +993,14 @@ create_meter_rule(int port_id, uint32_t counter) /*create meter*/ params.meter_profile_id =3D default_prof_id; - ret =3D rte_mtr_create(port_id, counter, ¶ms, 1, &error); + + if (!policy_mtr) { + ret =3D rte_mtr_create(port_id, counter, ¶ms, 1, &error= ); + } else { + params.meter_policy_id =3D g_policy_id[port_id]; + ret =3D rte_mtr_create(port_id, counter, ¶ms, 0, &error= ); + } + if (ret !=3D 0) { printf("Port %u create meter idx(%d) error(%d) message: %s= \n", port_id, counter, error.type, @@ -942,11 +1014,16 @@ destroy_meter_rule(int port_id, uint32_t counter) { struct rte_mtr_error error; - if (rte_mtr_destroy(port_id, counter, &error)) { - printf("Port %u destroy meter(%d) error(%d) message: %s\n", + if (policy_mtr) { + if (rte_mtr_meter_policy_delete(port_id, counter+1, &error)= ) + printf("erro delete policy %d\n", counter+1); + } else { + if (rte_mtr_destroy(port_id, counter, &error)) { + printf("Port %u destroy meter(%d) error(%d) message= : %s\n", port_id, counter, error.type, error.message ? error.message : "(no stated reason= )"); - rte_exit(EXIT_FAILURE, "Error in deleting meter rule\n"); + rte_exit(EXIT_FAILURE, "Error in deleting meter rul= e"); + } } } @@ -1894,6 +1971,8 @@ main(int argc, char **argv) if (has_meter()) create_meter_profile(); + if (policy_mtr) + create_meter_policy(); rte_eal_mp_remote_launch(run_rte_flow_handler_cores, NULL, CALL_MA= IN); if (enable_fwd) { diff --git a/doc/guides/tools/flow-perf.rst b/doc/guides/tools/flow-perf.rs= t index 280bf7e0e0..4c6480d70a 100644 --- a/doc/guides/tools/flow-perf.rst +++ b/doc/guides/tools/flow-perf.rst @@ -354,3 +354,6 @@ Actions: * ``--meter`` Add meter action to all flows actions. Currently, 1 meter profile -> N meter rules -> N rte flows. + +* ``--policy-mtr`` + Add policy-mtr to create meter with policy. -- 2.18.1