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 11DF1A052A; Wed, 27 Jan 2021 15:58:39 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E445B140E37; Wed, 27 Jan 2021 15:58:38 +0100 (CET) Received: from hqnvemgate26.nvidia.com (hqnvemgate26.nvidia.com [216.228.121.65]) by mails.dpdk.org (Postfix) with ESMTP id CB62D140E35 for ; Wed, 27 Jan 2021 15:58:36 +0100 (CET) Received: from hqpgpgate102.nvidia.com (Not Verified[216.228.121.13]) by hqnvemgate26.nvidia.com (using TLS: TLSv1.2, DES-CBC3-SHA) id ; Wed, 27 Jan 2021 06:58:35 -0800 Received: from HQMAIL107.nvidia.com ([172.20.161.6]) by hqpgpgate102.nvidia.com (PGP Universal service); Wed, 27 Jan 2021 06:58:35 -0800 X-PGP-Universal: processed; by hqpgpgate102.nvidia.com on Wed, 27 Jan 2021 06:58:35 -0800 Received: from HKMAIL102.nvidia.com (10.18.16.11) by HQMAIL107.nvidia.com (172.20.187.13) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Wed, 27 Jan 2021 14:58:32 +0000 Received: from HKMAIL101.nvidia.com (10.18.16.10) by HKMAIL102.nvidia.com (10.18.16.11) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Wed, 27 Jan 2021 14:58:30 +0000 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.170) by HKMAIL101.nvidia.com (10.18.16.10) with Microsoft SMTP Server (TLS) id 15.0.1473.3 via Frontend Transport; Wed, 27 Jan 2021 14:58:30 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AOB+RUeU2cj44gtqCCjSm01momMQJDjHWoskCtwsDXHc7Vo9wg2wj2nu0X73Nq50GzpDJhkXpH/t1hUnlFIq07HRsMAF68apcu+hSzww4ulkmwimiXoVuXrt65qUJNwoYcn4huw8El/QpKReqr1hD48C0mieth8jN96f+sCM6NdQSrnkeSZBQ8dygqa1t1s7lwBdgtTzuxgYHh1U6AdOUp2g0nGKtEM9MhUZXBcUe21YcmFnAp9H4MQjO1h15FMTPUVAPJDyi6ZlmaIJNcg7vy+VzjWAIYnIR/y7J5+yb2UFq9sdAJnbAfU2G0y3bHBCIyTfBa8hPsKaHCKoaZuZ0w== 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=5w5GayNpNtheT+AWQMKnNUWH5CC/cwbbum/ZMNXj1SI=; b=Fo+hfzylWvx/SC3/seF5IWDg4KccrMZVGUWLRM1MRtH/xUN6a+4NSp1LuaL0NAJmG4kJ5V6bzbZIxz+9GH5GUuAIyCV1IKd1ZoDBd2HaeYy1h41GRDdUSyHbs3Ow1HK+jWeQCUHbkB6FnVqusW3fDT4fuTLTWGzxWRzasaThllxBgu5t6jyyZmA7E6K2mokBmSWk/04EN66nmRHs/dwmXfbQWG4HM648NxoJcU+mPO/Lt22sZ/z/SPufx99cE6WOQehQnHGBCzdLBiAo0PatpBbiZSqXEOc8hJAzS9h+Ev3AqQAlCzWzplSQSTPVvXgOG5rvm92ABV3zU5b2eVFJfQ== 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 Received: from BN7PR12MB2707.namprd12.prod.outlook.com (2603:10b6:408:2f::29) by BN8PR12MB3060.namprd12.prod.outlook.com (2603:10b6:408:4a::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3784.17; Wed, 27 Jan 2021 14:58:26 +0000 Received: from BN7PR12MB2707.namprd12.prod.outlook.com ([fe80::90fa:92a9:d189:53c]) by BN7PR12MB2707.namprd12.prod.outlook.com ([fe80::90fa:92a9:d189:53c%3]) with mapi id 15.20.3784.017; Wed, 27 Jan 2021 14:58:26 +0000 From: Alexander Kozyrev To: Slava Ovsiienko , "dev@dpdk.org" CC: Raslan Darawsheh , Matan Azrad , Ori Kam Thread-Topic: [PATCH] net/mlx5: support modify field rte flow action Thread-Index: AQHW9KC48CPStOM60Uqmi3NNYY+3QKo7jq3A Date: Wed, 27 Jan 2021 14:58:25 +0000 Message-ID: References: <20210127024852.819-1-akozyrev@nvidia.com> In-Reply-To: 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: [2607:fea8:e380:d8e0:4480:92d8:c6ee:62ed] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 66020da1-e281-4fd4-4fc6-08d8c2d40001 x-ms-traffictypediagnostic: BN8PR12MB3060: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8882; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: zRHJTzM62wMFCi2lIyhsRS4uykdbuCGibYv+IuMiYCo2eJRWQ88Aovokq1QDfYnA3UgxLhevKVxe6hF5tj8ZRx2QbpuBYvtTe+FlmnpXqxPqX7rQ+58YXhJrXsKMurjRiD9y6PtokCBep7TNUZaK5lN7IS9sOcxxZOY0/oKmS5F3nEEVCNhDxHkiTJGDaghWU44COHXWuo+DbiQVuvTg4FQOAYkOGS8gzzUq47mcjeX8+HegF4NdBUGSARVk3V4apIGplXXFdRtRR7Xi2Rqu4/ySBrP7rJnw+AHVR7wJA5ZFAgfgpUHKN/d1WG0P4NRy2Ph2vtc4x9a2A5CR2jfM6D4Mw7yEFeE9M0CD6DgGZRQe4TJpJpzjN8My4xJuVJwCNO+HeRKAMXr7BCCRQ/g5L/nJ0b+4mus5KEBHJ6Qzudgww9B9Zzua4kZJC8H/vv///Jin+B6+anxjMxqBjL9c3G3wZuKDK+KDkoobacobDaRgXUJCHjFXftrHWypqYzcbd+jygF8brH3EroT0LFj6Ug== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BN7PR12MB2707.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(396003)(366004)(376002)(346002)(136003)(39860400002)(55016002)(186003)(7696005)(8936002)(110136005)(107886003)(66446008)(33656002)(2906002)(316002)(76116006)(53546011)(6506007)(66556008)(66476007)(52536014)(83380400001)(8676002)(4326008)(86362001)(478600001)(9686003)(64756008)(5660300002)(71200400001)(66946007)(54906003); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: =?us-ascii?Q?hOmQV2D/E4ODhfLh9oVmb0PKeI2vyoFn+IF8PSNsI8CW3XiscY/qLtmgPAmk?= =?us-ascii?Q?fxF+eUMmbCPsS2fqJxivgvs69F4zaDJole7saq0tpcp+8OzQ1/euGMtsXGKn?= =?us-ascii?Q?CPRaw/VK63KnHgCZepBkLRRrAm8w4wbLwnneuiYTxMI3m3WPq8xJZIp8LYpe?= =?us-ascii?Q?84QkDJ1Wbzi233v7EJjED+bOMYadakeHjj0+bARf18tQVzZjkqdLLNL1Qpnp?= =?us-ascii?Q?CUZoo5JXnB+Odb/HpYqwSPn7KDh4fnjZfL5RRfXxXrB9EnB67Yoq8I9FfKDh?= =?us-ascii?Q?4qs0e6I8C84pIW6M3A2tS7QQzj7FECGtVU2WNwekrSA7ijD6PPpjoB9mkbeL?= =?us-ascii?Q?ER5ap1J8Y8aVV+CC5on89EqpdfTkhr6L/DXsOkxj3LPGii5TzTE6Hg/hbCHt?= =?us-ascii?Q?5dS8IsfF01dk/HG7ZY1nvfWugZ7pL6UZfpPb8bDKo05qnnMEQrqkYSlWjPMM?= =?us-ascii?Q?RuH79q3CLhdVb42B/hO4ufLmUfSOoSIq04hGUmM6vWnR4ePYx5QJ2z8GJR+R?= =?us-ascii?Q?u422mFjodSUCSgzDaeMGG5WvEM1IgOBBNJfggfsrN6ukce5z4oppcAE9Mygi?= =?us-ascii?Q?qD/KCLIsb37eX2Wx0yYWPJSUfATpk2m+vR6oOCD0oQdi/CNIQ5mYexZpMSuz?= =?us-ascii?Q?nPFP+9xex9eBBff/+gQ5RMrDRwP5qrMqqfqSXUvqyl6O4OqAfsFGzR2PF7wn?= =?us-ascii?Q?msahDzOSpJV07wVT3zdSnmW3C5tvce3nGF+m6pp5mmVWj8T8euf9jzCV8cfR?= =?us-ascii?Q?tbzqL+OGB/mj50L0EqvmKtdpCGzRx7JYBJfPOWYsbjgQcNWoujgvy9kyBP0y?= =?us-ascii?Q?Qnm1i6NQTqr0rudzU/U+4CKcygWH7hmZKC27UoyPF3uIZ84f5OKUWmWi/JFc?= =?us-ascii?Q?eugpsTub8b6xab7mDOUfZl19Hv/8aTr7UnY14VhzfHRgN4SaKRW3TytkxfQo?= =?us-ascii?Q?Wo/3zzCUwnRtglejPHPmcJxWd2Gk+e/i1Bvxz9TinH4crQYfSqnLe6boWyXe?= =?us-ascii?Q?0boUkZqkaJHbHkUfyRVkRBfXaf6tXssYZfPou6L43i77dXefyif9eYfPjIZY?= =?us-ascii?Q?cIOpuFfeyNOICUOgt/5uumhqhuN/2y6h/0adwtFu3O+4fGgF/O7Zk1US5j5V?= =?us-ascii?Q?h6hDextFI6E1?= Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BN7PR12MB2707.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 66020da1-e281-4fd4-4fc6-08d8c2d40001 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Jan 2021 14:58:25.8548 (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: wRvKlTldyQLPvbBBcLl3MncOnZa8frNt+hrrk7KC3DUhkf/DdcETQL1uJp6zMJFKSS16dbvZGXAtFWt/jeXuUA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN8PR12MB3060 X-OriginatorOrg: Nvidia.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nvidia.com; s=n1; t=1611759515; bh=5w5GayNpNtheT+AWQMKnNUWH5CC/cwbbum/ZMNXj1SI=; h=X-PGP-Universal:ARC-Seal:ARC-Message-Signature: ARC-Authentication-Results:From:To:CC:Subject:Thread-Topic: Thread-Index:Date:Message-ID:References:In-Reply-To: Accept-Language:Content-Language:X-MS-Has-Attach: X-MS-TNEF-Correlator:authentication-results:x-originating-ip: x-ms-publictraffictype:x-ms-office365-filtering-correlation-id: x-ms-traffictypediagnostic:x-ms-exchange-transport-forked: x-microsoft-antispam-prvs:x-ms-oob-tlc-oobclassifiers: x-ms-exchange-senderadcheck:x-microsoft-antispam: x-microsoft-antispam-message-info:x-forefront-antispam-report: x-ms-exchange-antispam-messagedata:Content-Type: Content-Transfer-Encoding:MIME-Version: X-MS-Exchange-CrossTenant-AuthAs: X-MS-Exchange-CrossTenant-AuthSource: X-MS-Exchange-CrossTenant-Network-Message-Id: X-MS-Exchange-CrossTenant-originalarrivaltime: X-MS-Exchange-CrossTenant-fromentityheader: X-MS-Exchange-CrossTenant-id:X-MS-Exchange-CrossTenant-mailboxtype: X-MS-Exchange-CrossTenant-userprincipalname: X-MS-Exchange-Transport-CrossTenantHeadersStamped:X-OriginatorOrg; b=qBeY+gEsnvV9sybsyhGqPN5Vwue8hFALlJBhCHmjsLOYmEkd26lCgW4eb0TU2IWcI 1G31enWKZ6vIwbSCeuHq4YwGliQJ5DsJqv0fHmYcB2FZox7gMWq5quUh+jn8tKtH22 buc0jp5YuGtnzpR3c1GRxQCugbBFiZ0dTkSX5tWRZxUaMmXFFSpy6jPL39z1dDC/3l 2cFo7Vr+tbB81zbo//5hnoD9MGTXL8wlBACC0sO9+YQDl0x5SowIhy9b1qDFjy99e6 0Tk84ACYc1uEo+h0QVDdbeIe9U+2BFCmas9wZ+uytdUZsSSl0g3R5XnQS1plQoG9Ah 0GOKTnnQCHQAw== Subject: Re: [dpdk-dev] [PATCH] net/mlx5: support modify field rte flow action 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" < From: Slava Ovsiienko on Wednesday, January 27, = 2021 6:37 > > Hi, Alexander >=20 > Please, see my minor comments below. >=20 > Besides this: > Acked-by: Viacheslav Ovsiienko >=20 > > -----Original Message----- > > From: Alexander Kozyrev > > Sent: Wednesday, January 27, 2021 4:49 > > To: dev@dpdk.org > > Cc: Raslan Darawsheh ; Slava Ovsiienko > > ; Matan Azrad ; Ori Kam > > > > Subject: [PATCH] net/mlx5: support modify field rte flow action > > > > Add support for new MODIFY_FIELD action to the Mellanox PMD. > > This is the generic API that allows to manipulate any packet header fie= ld by > > copying data from another packet field or mark, metadata, tag, or > immediate > > value (or pointer to it). > > > > Since the API is generic and covers a lot of action under its umbrella = it > makes > > sense to implement all the mechanics gradually in order to move to this= API > > for any packet field manipulations in the future. This is first step of= RTE > flows > Typo: "the first" >=20 > > consolidation. > > > > The modify field RTE flow supports three operations: set, add and sub. = This > Missed API|action? Should it be "The modify field RTE flow action suppo= rts" > ? Thanks, will fix typos. > > patch brings to live only the "set" operation. > > Support is provided for any packet header field as well as meta/tag/mar= k > and > > immediate value can be used as a source. > > > > There are few limitations for this first version of API support: > > - encapsulation levels are not supported, just outermost header can be > > manipulated for now. > > - offsets can only be 4-bytes aligned: 32, 64 and 96 for IPv6. > > - the special ITEM_START ID is not supported as we do not allow to cros= s > > packet header field boundaries yet. > > > > Signed-off-by: Alexander Kozyrev > > --- > > drivers/net/mlx5/mlx5_flow.h | 4 +- > > drivers/net/mlx5/mlx5_flow_dv.c | 507 > > +++++++++++++++++++++++++++++++- > > 2 files changed, 508 insertions(+), 3 deletions(-) > > > mlx5 documentation update? > release notes update? Let me add them. > > diff --git a/drivers/net/mlx5/mlx5_flow.h b/drivers/net/mlx5/mlx5_flow.= h > > index 2178a04e3a..6f6828c6a1 100644 > > --- a/drivers/net/mlx5/mlx5_flow.h > > +++ b/drivers/net/mlx5/mlx5_flow.h > > @@ -219,6 +219,7 @@ enum mlx5_feature_name { #define > > MLX5_FLOW_ACTION_SAMPLE (1ull << 36) #define > > MLX5_FLOW_ACTION_TUNNEL_SET (1ull << 37) #define > > MLX5_FLOW_ACTION_TUNNEL_MATCH (1ull << 38) > > +#define MLX5_FLOW_ACTION_MODIFY_FIELD (1ull << 39) > > > > #define MLX5_FLOW_FATE_ACTIONS \ > > (MLX5_FLOW_ACTION_DROP | MLX5_FLOW_ACTION_QUEUE | \ > > @@ -249,7 +250,8 @@ enum mlx5_feature_name { > > MLX5_FLOW_ACTION_MARK_EXT | \ > > MLX5_FLOW_ACTION_SET_META | \ > > MLX5_FLOW_ACTION_SET_IPV4_DSCP | \ > > - MLX5_FLOW_ACTION_SET_IPV6_DSCP) > > + MLX5_FLOW_ACTION_SET_IPV6_DSCP | \ > > + MLX5_FLOW_ACTION_MODIFY_FIELD) > > > > #define MLX5_FLOW_VLAN_ACTIONS > (MLX5_FLOW_ACTION_OF_POP_VLAN > > | \ > > MLX5_FLOW_ACTION_OF_PUSH_VLAN) > > diff --git a/drivers/net/mlx5/mlx5_flow_dv.c > > b/drivers/net/mlx5/mlx5_flow_dv.c index 1a0c0be680..d842dc9887 100644 > > --- a/drivers/net/mlx5/mlx5_flow_dv.c > > +++ b/drivers/net/mlx5/mlx5_flow_dv.c > > @@ -209,6 +209,8 @@ rte_col_2_mlx5_col(enum rte_color rcol) > > return MLX5_FLOW_COLOR_UNDEFINED; > > } > > > > +#define MLX5DV_FLOW_MAX_MOD_FIELDS 5 > Let's move to the mlx5_flow.h, closer to other #defines Ok. > > + > > struct field_modify_info { > > uint32_t size; /* Size of field in protocol header, in bytes. */ > > uint32_t offset; /* Offset of field in protocol header, in bytes. */ = @@ > - > > 431,6 +433,9 @@ flow_dv_convert_modify_action(struct rte_flow_item > > *item, > > (int)dcopy->offset < 0 ? off_b : dcopy- > >offset; > > /* Convert entire record to big-endian format. */ > > actions[i].data1 =3D > rte_cpu_to_be_32(actions[i].data1); > > + ++dcopy; > > + if (!dcopy) > > + break; > Sorry, I do not follow. dcopy is the structure pointer (we assume it poin= ts to > the array). > How pointer can be NULL after update ++dcopy ? Just a precaution if we go past the array due to some bug. > > } else { > > MLX5_ASSERT(item->spec); > > data =3D flow_dv_fetch_field((const uint8_t *)item- > > >spec + @@ -1324,6 +1329,339 @@ > > flow_dv_convert_action_modify_ipv6_dscp > > MLX5_MODIFICATION_TYPE_SET, > > error); } > > > > +static void > > +mlx5_flow_field_id_to_modify_info > > + (const struct rte_flow_action_modify_data *data, > > + struct field_modify_info *info, > > + uint32_t *mask, uint32_t *value, > > + struct rte_eth_dev *dev, > > + const struct rte_flow_attr *attr, > > + struct rte_flow_error *error) > > +{ > > + uint32_t idx =3D 0; > > + switch (data->field) { > > + case RTE_FLOW_FIELD_START: > > + /* not supported yet */ > > + break; > Let's move to default? To catch validation gap? Ok. > > + case RTE_FLOW_FIELD_MAC_DST: > > + if (mask) { > > + info[idx] =3D (struct field_modify_info){4, 0, > > + > > MLX5_MODI_OUT_DMAC_47_16}; > > + mask[idx] =3D (data->offset =3D=3D 32) ? 0x0 : 0xffffffff; > With zero mask we could just skip the element here > (not critical - anyway, it will be dropped at conversion stage to HW acti= ons) That is the ides - to skip element at the conversion stage.