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 207A9A0548; Wed, 1 Jun 2022 10:59:17 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 133DD410EA; Wed, 1 Jun 2022 10:59:17 +0200 (CEST) Received: from NAM02-BN1-obe.outbound.protection.outlook.com (mail-bn1nam07on2083.outbound.protection.outlook.com [40.107.212.83]) by mails.dpdk.org (Postfix) with ESMTP id AB82340689 for ; Wed, 1 Jun 2022 10:59:15 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DW938ylKBBrtBBnci5+LuPG9TzQFGpp/auHbMpBa0qno76L85+0vSPBaGOBFIuFcj0q7XAx9logL9MTZj+qIrAVzpWzD5oE+UMT8Oqh81GPLhUoqGO1rKYtENb5SbGReQW0ZpZO7RksQuFuCNNJj4H37HQMT3vHSZRksnZJZT3GbJujRQJhyBj/fEczQJQ4cFnVwdRORUUjjPVWd1nX6XdTPxx2ppQC0OLOEoHAFa491QjYTidva3BN9Am9OKlZeJHYuXdcnrgA4eIhuB6E2ZJQfwNxZOBY51SrFSDIUy7WUGTqdQKvigPLNbOphQvGhqbgmO4j7ivzf3KqbchcMtw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Ag8F6499BmQjglIwPMskIQtTiUoUV5IHzosJg78uhEA=; b=X9y8yXMkRlV8S72iqbnQD0DjaXRJx88CHoSD3YjuLooCV1RrKvxz5uGlRV06abbfPl2LZyjPMEhrK2FdV/xPaX6g2hGEGaRoxQ0v/KaqiUfJ8Gid7JymIexjxB6YLjgBRCFhOGL7h/loOLoan1hqxAZTWIeY6fKddpTlS3cTkDCBJiaLUc3QQk9zuqGD8KreIm6kbt7qlIfJNDpnIGTSJR9h2WBs9pwwCKs8OLsqEd324uh0hKngQ4xvuL17kdEaMQayk64qGv+G/R1gBM0g5MzflGvKSfhvzuAHHNSn4l+dCTSJ0XhPPSGMNf3MPLQMJnuYOgL1BUCnBuTQXbNhMA== 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=Ag8F6499BmQjglIwPMskIQtTiUoUV5IHzosJg78uhEA=; b=pYzvTC8CieCkL6v6BOMonM8a8N1xcmxTeZDlNuM5TNxbrvR5xewIzHd7rxk22wADH9Md3PWZBlWVL/7W0pYxS1uoo8ZMFyzVm93YmgqvuCVaMdzNEBQZswl3iBBUtuO8ex9xlHFVIaVTPbBci0ifcpS+un7k1xlaPI8mla86Ws3sThPDuSOM2EOb/AX+rVLjm7k+YpviXPXbqPnsxCd2Yvepq28HPr6YW+7g25ylvlOasA4LagDDZjU/IRKZsfolUpYCaz4c5O6gf+968cS5SrBOWzfUIQ/48zsqJsDOvh/OuSTcCbLxe8hfKOqnz1BkgTxAiDKFZT3xCjA0iyl42g== Received: from MW2PR12MB4666.namprd12.prod.outlook.com (2603:10b6:302:13::22) by BL1PR12MB5377.namprd12.prod.outlook.com (2603:10b6:208:31f::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5314.12; Wed, 1 Jun 2022 08:59:14 +0000 Received: from MW2PR12MB4666.namprd12.prod.outlook.com ([fe80::edeb:4144:1ee4:83a1]) by MW2PR12MB4666.namprd12.prod.outlook.com ([fe80::edeb:4144:1ee4:83a1%6]) with mapi id 15.20.5293.019; Wed, 1 Jun 2022 08:59:14 +0000 From: Ori Kam To: Alexander Kozyrev , "dev@dpdk.org" CC: "cristian.dumitrescu@intel.com" , "jerinjacobk@gmail.com" , "NBU-Contact-Thomas Monjalon (EXTERNAL)" , "ivan.malov@oktetlabs.ru" , "andrew.rybchenko@oktetlabs.ru" , "ferruh.yigit@xilinx.com" , "mohammad.abdul.awal@intel.com" , "qi.z.zhang@intel.com" , "jerinj@marvell.com" , "ajit.khaparde@broadcom.com" , "bruce.richardson@intel.com" Subject: RE: [PATCH v3 5/7] app/testpmd: add meter color flow matching item Thread-Topic: [PATCH v3 5/7] app/testpmd: add meter color flow matching item Thread-Index: AQHYdWnwlI02xMAqJEmaVxypdYes5q06QMpw Date: Wed, 1 Jun 2022 08:59:13 +0000 Message-ID: References: <20220522105102.1692526-1-akozyrev@nvidia.com> <20220601034408.2579943-1-akozyrev@nvidia.com> <20220601034408.2579943-6-akozyrev@nvidia.com> In-Reply-To: <20220601034408.2579943-6-akozyrev@nvidia.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 69ee887f-6ccb-45db-e66a-08da43ad004e x-ms-traffictypediagnostic: BL1PR12MB5377:EE_ x-ld-processed: 43083d15-7273-40c1-b7db-39efd9ccc17a,ExtAddr x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: e9eGgtYqJ2um9NmNwCuve1s65duq534cYAJmv8L7CDP9iksJTN76WNJqEnS3FHtyIGXrClz0h8c/5lA4iCRE0rjKPE/IQbevCRHZAAfOoROFVBHAbanAy3wSXMhES/yvYNAEn2gpIkOR6LEUWS9MiAGhyK6ouzkvAHzsOP7UFDeatSBFY61j0hLi0C2MolYYv+AunBsakVwmFBQ5UOfk5U1V6FJEJWDHkY/zyUlGtcBwGTmi0X/s0Ou9WZ2vdY6LVyFz9/CHKdp5G/MztUJ0b1EWH5v5CGpA3hUFZsi4mBOgs4JVwlx1iM+NnC7AdUJJmU/eu5tQ+HvIQaXGNqFSXvTLGPisMFP5shcwrwgBLPyyNYfuvsIcP38d+sCKVb5LqmiWV1rBXDaY3exXS/68D74N654Q3Khj0SxaQrMOd/GlrksTXyMyIchQpiRlB24WHIaGpMarmkdbOb8wAHkMRhR9WubQ4WQNVG/GXGZUb8vra2rRI9hz6Fi/IVhoIgvieigejiV3vUQwXyke8sHyeZoCpVOUrBXL73sx+Pd+3X9Vng660HAQCy58XjBpQBKwYW9sSUtyHDY75XN6KfS3n42POhuujD33c2f11Fr34ispFPyquyH94446QaSM//meLbhggkhkU5xvQxzVrQsM+3nUXVO5CDjnYfrHR8tahhl/iR9d4EW210IdsufGgsBcnqY0281bJGgiWOO9rK74xQ== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MW2PR12MB4666.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(4636009)(366004)(186003)(26005)(9686003)(53546011)(7696005)(8936002)(52536014)(6506007)(66476007)(66556008)(38070700005)(110136005)(316002)(122000001)(76116006)(4326008)(64756008)(66946007)(66446008)(8676002)(71200400001)(5660300002)(508600001)(38100700002)(7416002)(2906002)(33656002)(54906003)(86362001)(55016003)(83380400001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?xnxaTDgKkfThwbbIfWOF4cDYJml27oMySrKVNEnVYQ7Z2HR1Wl4bW7e46gYn?= =?us-ascii?Q?NXken+hvcTVwZ9WlrS5KekUw2dUCA7e63guf6rqWccR8gbhMaTzh6IHMliYY?= =?us-ascii?Q?8glsCWseEZe7iUVH9MfD9VFxL6WXuhCkzBgVmNY+lq9YZ5YWUGis9xiG60pY?= =?us-ascii?Q?ThvV58LNiXCx8JWCq7nvKYeDin1MxrfhSpvz286G8xMJ3I97OK3jW0Ya1FUF?= =?us-ascii?Q?iQByS8L3ztiCD7DYbT/5calOzn4vU/JDpbc6FH6ncr0//5DEOrjjz2JNgsMB?= =?us-ascii?Q?vZlClZfu21tRjzO2BOi85LHcFXqDSvr2swk4t/Y6jdZPEQou29WiTxz99FR3?= =?us-ascii?Q?ZFcHe1ePvMl4fgQkI8WSbfJeYh7OJRpn4qWvRS/Z5sewF561ROBsMVgFxWd+?= =?us-ascii?Q?DffBxt80UYMrgtZ21yGNCv/WOMpbHJjGickEOziNChdxT8wuVEvasVtfsJE7?= =?us-ascii?Q?KnUjr9DwgmoDbouODOCYTS3AHOun/u8zPawe7Ee8Q1rq9+9ohqr0ICtwIZNH?= =?us-ascii?Q?TILYbaCorRyVTrG8Os9DWKMl9poUidXgnb4AaL6xAvJX8YsUPDFf49OVr6KA?= =?us-ascii?Q?SlQXhe9NW/VJGCC0k42M376ZigKAmEPEPmYEXgc6Ew7B6d0f9nYQjo4wp8p8?= =?us-ascii?Q?qF0UH5PwrYH2jh7c3trx75SCTKt9X/s1dSgtFV1+OT6ftiwpuAscNp+KSKFT?= =?us-ascii?Q?m8r+U12r0PEqO4CADRAngKwqJj3dcVRc/u/LYZdvcTU1of2Zwwy9lIeTt9l0?= =?us-ascii?Q?MS/vHrShhmmV7aBo6ziWUROkZemUuFEX+9VamFNo492zt5ULn7vZXc27vgiQ?= =?us-ascii?Q?16nid4eg4yk7vb2HcevMEpMSyWaFvf29syAFjn61ZJEeN/pITrTdwKPFHano?= =?us-ascii?Q?ZHwIIZsi3EyijT9WC8MLvAVagoZNT0ggjG1LOkGK8bkQDito/0K7s7vbx+c2?= =?us-ascii?Q?F3RKhNGxI3sy+41Di3iHWtvuxx+QBTYOtgcS1KYtPXFTGgIJBRFkhXldi2Bl?= =?us-ascii?Q?Yl5i85xz9YQTJTr2VPhZ7keqU3xRvFyEIg+LRRASYAZOZ9r9NTQQwhIoRDCq?= =?us-ascii?Q?mLzXWEBWtMEGxEkHhc0GpThoRuL2J5d/SqftKqrKFVNDKVW9oKNf9vhFVQOS?= =?us-ascii?Q?0GBPl162lBEmIU7Mzd7uWuk2+CKtt/9CAtzCb5z/Nz5HEDX3JX/UP+ONQpMY?= =?us-ascii?Q?0qpmPstpZBCzthzc65vWuwhYCtPQ48ABHMYin6ktNAtULKPLnusBYmAZsr5f?= =?us-ascii?Q?hh5cb8wEINCWTl6Uu5mDXVgdyejcrevhsgPhMuZjhVOWfDdsibxoTv5g63WM?= =?us-ascii?Q?G+O6tNci10AmKnWunq2pE8frVBBfkk5w/tvjPDJlr8PM7jKMabrXvEfo9UFh?= =?us-ascii?Q?S6z/HO7FCyoneQztHQAlZoeQ4oUkXFBQGcIayXyYSZcWhJPzcEwwzLX6VsLA?= =?us-ascii?Q?hEDKNxkKbmxP6f8+gyOgiwcfjtbqAc7HTtWNubcoEBySp/4FYpTr3VMn91T6?= =?us-ascii?Q?Hl6FZCZzxsPweu3r3AaaYXacNAOyUE2CLNg6F/fOtEE8jCb3FXDrI8MjvOhe?= =?us-ascii?Q?8wOPRRHIp/Re4GO2HFBPDOJPAefUHYiyftcLFCLhIWrcIk26pALeA6UpWh3Q?= =?us-ascii?Q?X4DXKa5vvEaKUHMfWo3bdESUOjXZ9robReodoCaCxMUnUHo3LCtAl+t+ihsu?= =?us-ascii?Q?N21HHBEdVkYLqvMS7XKVqmlyQDe21KfCsSbwQLo34od6l8G8gVMlU8G28MGp?= =?us-ascii?Q?MqgFi82eSQ=3D=3D?= Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MW2PR12MB4666.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 69ee887f-6ccb-45db-e66a-08da43ad004e X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Jun 2022 08:59:13.9764 (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: hy6V5SNS7tr/l6Sp2RWDEjJJR3nz8LTYbupqwpPN4QNHfcCMDJrGUKP7yKcWgpZzMNOqvneJ9j8cta/RC0b8cw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL1PR12MB5377 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 Hi Alexander, > -----Original Message----- > From: Alexander Kozyrev > Sent: Wednesday, June 1, 2022 6:44 AM > Subject: [PATCH v3 5/7] app/testpmd: add meter color flow matching item >=20 > Add testpmd command line to match on a meter color: > flow create 0 ingress group 0 pattern meter color is green / end >=20 > Signed-off-by: Alexander Kozyrev > --- > app/test-pmd/cmdline_flow.c | 83 +++++++++++++++++++++ > doc/guides/testpmd_app_ug/testpmd_funcs.rst | 4 + > 2 files changed, 87 insertions(+) >=20 > diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c > index e3269e278d..c66da76f25 100644 > --- a/app/test-pmd/cmdline_flow.c > +++ b/app/test-pmd/cmdline_flow.c > @@ -458,6 +458,9 @@ enum index { > ITEM_PPP_ADDR, > ITEM_PPP_CTRL, > ITEM_PPP_PROTO_ID, > + ITEM_METER, > + ITEM_METER_COLOR, > + ITEM_METER_COLOR_NAME, >=20 > /* Validate/create actions. */ > ACTIONS, > @@ -798,6 +801,10 @@ static const char *const modify_field_ids[] =3D { > "tag", "mark", "meta", "pointer", "value", NULL > }; >=20 > +static const char *const meter_colors[] =3D { > + "green", "yellow", "red", "all", NULL > +}; > + > /** Maximum number of subsequent tokens and arguments on the stack. */ > #define CTX_STACK_SIZE 16 >=20 > @@ -1331,6 +1338,7 @@ static const enum index next_item[] =3D { > ITEM_FLEX, > ITEM_L2TPV2, > ITEM_PPP, > + ITEM_METER, > END_SET, > ZERO, > }; > @@ -1803,6 +1811,12 @@ static const enum index item_ppp[] =3D { > ZERO, > }; >=20 > +static const enum index item_meter[] =3D { > + ITEM_METER_COLOR, > + ITEM_NEXT, > + ZERO, > +}; > + > static const enum index next_action[] =3D { > ACTION_END, > ACTION_VOID, > @@ -2371,6 +2385,9 @@ static int parse_ia_id2ptr(struct context *ctx, con= st struct token *token, > static int parse_mp(struct context *, const struct token *, > const char *, unsigned int, > void *, unsigned int); > +static int parse_meter_color(struct context *ctx, const struct token *to= ken, > + const char *str, unsigned int len, void *buf, > + unsigned int size); > static int comp_none(struct context *, const struct token *, > unsigned int, char *, unsigned int); > static int comp_boolean(struct context *, const struct token *, > @@ -2401,6 +2418,8 @@ static int comp_table_id(struct context *, const st= ruct token *, > unsigned int, char *, unsigned int); > static int comp_queue_id(struct context *, const struct token *, > unsigned int, char *, unsigned int); > +static int comp_meter_color(struct context *, const struct token *, > + unsigned int, char *, unsigned int); >=20 > /** Token definitions. */ > static const struct token token_list[] =3D { > @@ -5063,6 +5082,29 @@ static const struct token token_list[] =3D { > .args =3D ARGS(ARGS_ENTRY(struct rte_flow_item_ppp, > hdr.proto_id)), > }, > + [ITEM_METER] =3D { > + .name =3D "meter", > + .help =3D "match meter color", > + .priv =3D PRIV_ITEM(METER_COLOR, > + sizeof(struct rte_flow_item_meter_color)), > + .next =3D NEXT(item_meter), > + .call =3D parse_vc, > + }, > + [ITEM_METER_COLOR] =3D { > + .name =3D "color", > + .help =3D "meter color", > + .next =3D NEXT(item_meter, > + NEXT_ENTRY(ITEM_METER_COLOR_NAME), > + item_param), > + .args =3D ARGS(ARGS_ENTRY(struct rte_flow_item_meter_color, > + color)), > + }, > + [ITEM_METER_COLOR_NAME] =3D { > + .name =3D "color_name", > + .help =3D "meter color name", > + .call =3D parse_meter_color, > + .comp =3D comp_meter_color, > + }, > /* Validate/create actions. */ > [ACTIONS] =3D { > .name =3D "actions", > @@ -9866,6 +9908,30 @@ parse_flex_handle(struct context *ctx, const struc= t token *token, > return ret; > } >=20 > +/** Parse Meter color name */ > +static int > +parse_meter_color(struct context *ctx, const struct token *token, > + const char *str, unsigned int len, void *buf, > + unsigned int size) > +{ > + struct rte_flow_item_meter_color *meter_color; > + unsigned int i; > + > + (void)token; > + (void)buf; > + (void)size; > + for (i =3D 0; meter_colors[i]; ++i) > + if (!strcmp_partial(meter_colors[i], str, len)) > + break; > + if (!meter_colors[i]) > + return -1; > + if (!ctx->object) > + return len; > + meter_color =3D ctx->object; > + meter_color->color =3D (enum rte_color)i; > + return len; > +} > + > /** No completion. */ > static int > comp_none(struct context *ctx, const struct token *token, > @@ -10157,6 +10223,20 @@ comp_queue_id(struct context *ctx, const struct = token *token, > return i; > } >=20 > +/** Complete available Meter colors. */ > +static int > +comp_meter_color(struct context *ctx, const struct token *token, > + unsigned int ent, char *buf, unsigned int size) > +{ > + RTE_SET_USED(ctx); > + RTE_SET_USED(token); > + if (!buf) > + return RTE_DIM(meter_colors); > + if (ent < RTE_DIM(meter_colors) - 1) > + return strlcpy(buf, meter_colors[ent], size); > + return -1; > +} > + > /** Internal context. */ > static struct context cmd_flow_context; >=20 > @@ -10772,6 +10852,9 @@ flow_item_default_mask(const struct rte_flow_item= *item) > case RTE_FLOW_ITEM_TYPE_PPP: > mask =3D &rte_flow_item_ppp_mask; > break; > + case RTE_FLOW_ITEM_TYPE_METER_COLOR: > + mask =3D &rte_flow_item_meter_color_mask; > + break; > default: > break; > } > diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst > b/doc/guides/testpmd_app_ug/testpmd_funcs.rst > index 1083c6d538..5e2f5ffb40 100644 > --- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst > +++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst > @@ -4164,6 +4164,10 @@ This section lists supported pattern items and the= ir attributes, if any. > - ``ctrl {unsigned}``: PPP control. > - ``proto_id {unsigned}``: PPP protocol identifier. >=20 > +- ``meter``: match Meter color. > + > + - ``color {value}``: Meter color value(green/yellow/red). > + > Actions list > ^^^^^^^^^^^^ >=20 > -- > 2.18.2 Acked-by: Ori Kam Best, Ori