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 D546342546; Fri, 8 Sep 2023 11:35:08 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 63DBA402D7; Fri, 8 Sep 2023 11:35:08 +0200 (CEST) Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2074.outbound.protection.outlook.com [40.107.220.74]) by mails.dpdk.org (Postfix) with ESMTP id 9AFB140285 for ; Fri, 8 Sep 2023 11:35:06 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Xz+IQCM4RK+YfIiyo/BT3FCCElbq+nVEWYELRsqYfE0Sca1vh+W9ugFWVdG+DQFlexC0Dw/lCLWozXrielbcvv71/aeUCdz4ZvVwGgox9fJggtDfzrxk2XBJTzB8NMGVyQPdr2XTXAjVQzgxfNsPpexbvXCVRoydX2ObRtY43NsY153LVLVYsvdGkukVvL4izRAhqkv6A4FkAJpLXU/JlA4xh5G6bK/2C77rWY4kXp1vbbzDHpo7/xkm7EdbzlF5LgYRSrbK9tI0QRQKncHquzyBkWgFjUVQNSLD9JaDx9RHaYJyrUvqR+bwqwVJx3fPd6ydC/d2Tf7uSRq2QW2llA== 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=VRfS5SvEg3K85OWPcFYCO3sgqGR+32yn2CoHJ4DzAcc=; b=WbXu8+gtGA6LR4ECbqvJPFUkHGJtQQ2TiT/wRiQziYm2rdU6PQoxgChpPmiwIXYubW6YCFL74Gciij0U3plkp8ff1nKAl841MUhtNrXxEAFcKCiDEYzim/STWMeLPUr8LCPsCiIWXQXhDi4TDaknzVKe4qKo28XiBXRJGdwoOf+BMEfhx0zQZ5hp8NeU8yXMTujBzBnfEkT+YDgyxAAVIOZ3SPyn7VJZ6yrLZ98YZTw0tAzzZuQNRcAqhgTDhAkoT4PkXf1sEzPUCYlrPqK6TYpzlTec/C91exo+e30qpIeTsepkUNHsmvdxJi+DGbhrrV7TBYBTcQ8eCsuyCr8zMg== 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=VRfS5SvEg3K85OWPcFYCO3sgqGR+32yn2CoHJ4DzAcc=; b=EQATrinl2KlpBa2dOZw0pUr/rZ6uk2dQINdBxC+iVIjdys2vDgnYDnXyGEbfA0+NEL8zQ6+HWcFIF77KlmTStOA/GU14J1Uo4+6v3ReEk6DD08IM9e0Z+Cm38TNvf1MbCoSTdXx4uR1PrkgK3wAEFPB+iwGiRAXd5xzLf9SY7cIMSkO1KinwOoLo0bt8s2lYNXPSmgrYgwti6tPcQ8MnKZvMUDPbxVpq7iTiP0rU8MdjFHCMsyWt9LCdHj7dL4W0JCf/1J+xf8paqcNOrXeY3n1hgG+tIgNlNi6rNLik//wm1y+6FESfYcRT+1/jGU5qD57rQDs1ucoO2p0KSJqyzg== Received: from SJ0PR12MB5405.namprd12.prod.outlook.com (2603:10b6:a03:3af::11) by CH0PR12MB5155.namprd12.prod.outlook.com (2603:10b6:610:ba::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6768.30; Fri, 8 Sep 2023 09:35:03 +0000 Received: from SJ0PR12MB5405.namprd12.prod.outlook.com ([fe80::1523:a1f8:127a:3b64]) by SJ0PR12MB5405.namprd12.prod.outlook.com ([fe80::1523:a1f8:127a:3b64%6]) with mapi id 15.20.6745.034; Fri, 8 Sep 2023 09:35:03 +0000 From: Suanming Mou To: "Jiawei(Jonny) Wang" , Ori Kam , "NBU-Contact-Thomas Monjalon (EXTERNAL)" CC: "dev@dpdk.org" , Raslan Darawsheh Subject: RE: [PATCH 1/3] net/mlx5: extend send to kernel action support Thread-Topic: [PATCH 1/3] net/mlx5: extend send to kernel action support Thread-Index: AQHZ4jXd6K4luejpUU6m9u/gQg3DorAQqu8Q Date: Fri, 8 Sep 2023 09:35:03 +0000 Message-ID: References: <20230908092100.38587-1-jiaweiw@nvidia.com> <20230908092100.38587-2-jiaweiw@nvidia.com> In-Reply-To: <20230908092100.38587-2-jiaweiw@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-traffictypediagnostic: SJ0PR12MB5405:EE_|CH0PR12MB5155:EE_ x-ms-office365-filtering-correlation-id: 41d39c2e-0fea-4718-baf7-08dbb04ee0f2 x-ld-processed: 43083d15-7273-40c1-b7db-39efd9ccc17a,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: W3aWgPKC1bR/Zy2EksWGtuOK7m0ISmrqWNoHGUglejZAMapDnhrvzJ0Ee6G9UelZwA9rff0xHVCJS5+qrLx00QtI/t64ad5L9wfQhHQcJq6DpQR4+4Xc9Sd81XnpZ5hvyXjDfLJJ7nOR9sFWvNcaIJ6PWMyZoCZxzmvQpM9y6wOzGFAKoJWudx/1/SioZ1CQRbcWcN7FeRBNd2mK8gVhwCVyYxWRbFBSDn4Fgzh5q5nMyjqFWaH9rOXjBORLwWqleVnVzpmwqz0gM9IE42QoWaZR5abb4G/J/IEvbrLljvY/u568cwJkF1LXaoXaDm7ibpD16I7+zhVBZajUObQgU7brECVStKejwyI0G3NeDFeNcelQhz3tFamrpM/y/gllMONKuJsom6baG/kDk15/Z0LkmwWhRzazUHRe47QB0Md/j5jKKOtwD9G2Hu1ANUtOYep4wu18kMgDukZcuZI7ATHovOAuGsa8+1iKqASnoW1OoFAef8jWzscUJXaxRWqHHXZdbgcKvM5CvRQl9OMeW7Jz80HHmLIM0/3T5EtJnxdvHav36jZcOEsBkMpXKt0EvJwbaPxLlbsyx7sDhNs+3xviItPUOa+gHUBPKUR6MmptXxNXZjmQ1WSFMKrLJBk6 x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR12MB5405.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(366004)(136003)(376002)(346002)(39860400002)(396003)(186009)(1800799009)(451199024)(38070700005)(52536014)(5660300002)(7696005)(4326008)(8676002)(6506007)(8936002)(66476007)(66946007)(66556008)(316002)(66446008)(54906003)(41300700001)(64756008)(478600001)(2906002)(71200400001)(53546011)(9686003)(107886003)(76116006)(83380400001)(55016003)(122000001)(110136005)(38100700002)(86362001)(33656002); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?nwrHb2y7GZt1zUF0+I5W5/dHG4dViyohnALj/dWLry9XVwuCUt6iMM2NEPPn?= =?us-ascii?Q?Q46czK9dohKowlySa9CxFu/V+IrTidZa3VkJHArtWqj1aXd+nDO3Q4CUW/D0?= =?us-ascii?Q?fpaPKKhbjvmSUAf9Kh5GUG4ixGmp1DPeuGlfO6VPgMPq63al5SU6m5mbIRSW?= =?us-ascii?Q?e8Tm4xdTZO5v+SAjE0cw5XHCBrkVWW5OsS+l4DrgEjpO1EXrY777lVFZmcm3?= =?us-ascii?Q?AMqcGxjdMHPiJXSG/k6OSgC9ULKs+Osj6MdtqNGLhPk9xdytGFRh9UmumDlm?= =?us-ascii?Q?RnXijV5IR2K5jW9NIMj6ryPL9hL5gUphRNjTQnz/TF/UIVBY9cPedKXDoZSc?= =?us-ascii?Q?/hJGqk00Lp1wbEhgYkrUpOW7R2n5kEu2AWwCfHc8chCLra1fA07DoQuOYbbr?= =?us-ascii?Q?CwSb7Mcq4gJWh3d0vEdd+NUwAE1YzDE0sOqHNXvlbyB32UyoyYFl5yuLUz7s?= =?us-ascii?Q?vwXpz48+WBgirHUzh47hQT/JpjeQeNzWyF2DRS3y/cozw/zZCffFmO9yqnvH?= =?us-ascii?Q?UWT24AZ/GFknrmrdfZAtTrtuCllLiTEUICNb+q7Xk0EDJ0uDnuELUTexsJhz?= =?us-ascii?Q?K8OFlXFpoOJVldyCS+JOSc65sbG79zyVjI3HvYP8d0z1so7wsiPJ34Zen8cG?= =?us-ascii?Q?qMsczynrvYrY8zIzWX5FXRCOmQW0esXm3UhuKMozfICf4ixMcHGyJaoLY6xn?= =?us-ascii?Q?jVPu28UBJX3gXejpuLpHdNfYbz/4R4S6rWcyFg7j/v92Y5ijpO7WRIt+d84k?= =?us-ascii?Q?HrwO5snsAxXm1RpvUQvD2Yskl4q/O/3g9TFTrXQe6otu8s9M8m7G639pXmrS?= =?us-ascii?Q?047n/xIKXdSQC1NIRmVuwHPJ5+m0IPu+ODGyG4O4DdxAjWoa/tedxQpCUO5G?= =?us-ascii?Q?46MlcIfAkzMSyRzLibaA7Na8JEz43o8cTU68WN/EGcIOsEDHGF+lQnJqsc8S?= =?us-ascii?Q?ZaRIrmxRV2edn+lSeQVe++I7jE9N0XCpxKSTmwW+DlgfP4wadVm57IlteLim?= =?us-ascii?Q?wh+cednH2ORq84AzX8b17ECwbGzagmIUGrd23vWwogEIIWv0ntzQ9iPnlYiV?= =?us-ascii?Q?+tMIEJ+M9BHd2ZY2b6x2KWKNgAnp1OiMTjzp5KgR4qoJlzi/Kaqlbiqqb9kS?= =?us-ascii?Q?13n/gs008B7X0ieVymCXVcCwefj1btdUwPx2YPlp3OzrDdPKOWnjU8el2xL1?= =?us-ascii?Q?frUSVRjwoTDkpL64HyqUTvoTnu7s5hdOCKDxeeZn5EkkOOBc8RRc6T3331cq?= =?us-ascii?Q?C7/s4ZpIsW+tB6oR6Xq6/es7OvhTQNeFasy+ilMVe0hv4SgJs29uslqen99B?= =?us-ascii?Q?Ek7OMaXgXD8qEVQSJTbvKT9xgbgpUdA+mdSv/qAFMtnjGqBcpaZHAls7Jtim?= =?us-ascii?Q?P/8WgTUytWMZprDNSWqCpfV5Zh9/bhace+JwpouN8VyJQSr5O5oF7aYEofkj?= =?us-ascii?Q?Pi4eO2smDcUPY2i5C8XgBu+7qS/paAA8gjt1oQvM5YCviqi7DXc3wEDSPcA6?= =?us-ascii?Q?vsN/WbrKjSkVePXR5JwCAnxd7mPOlIhvVxnFIDa/x7QOzjIY37Ajc6w/mA?= =?us-ascii?Q?=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: SJ0PR12MB5405.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 41d39c2e-0fea-4718-baf7-08dbb04ee0f2 X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Sep 2023 09:35:03.0720 (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: qAoC7NhW/n5VIOwdO297jQB9p8KKe9Fj9z2CNSHtJWxmQy62EuQgxum6By5EwNfJaxMvQ99p0k2hWG2UMkVZfQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR12MB5155 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 > -----Original Message----- > From: Jiawei(Jonny) Wang > Sent: Friday, September 8, 2023 5:21 PM > To: Suanming Mou ; Ori Kam ; > NBU-Contact-Thomas Monjalon (EXTERNAL) > Cc: dev@dpdk.org; Raslan Darawsheh > Subject: [PATCH 1/3] net/mlx5: extend send to kernel action support >=20 > The send to kernel action was supported in NIC and FDB tables, Currently,= the > send to kernel action is created in NIC RX only. >=20 > With some TC rules (example: roce packets, redirects into rep ports) and = DPDK > RTE rules for the rest of the traffic. Then it needs the specific rule to= re-route the > packets into the kernel through the FDB table. >=20 > This patch adds the FDB and NIC-TX tables support for sending to the kern= el > action. >=20 > Signed-off-by: Jiawei Wang Acked-by: Suanming Mou > --- > drivers/net/mlx5/linux/mlx5_os.c | 25 +++++++++++++++---------- > drivers/net/mlx5/mlx5.h | 4 +++- > drivers/net/mlx5/mlx5_flow.h | 1 + > drivers/net/mlx5/mlx5_flow_dv.c | 17 +++++++++++------ > 4 files changed, 30 insertions(+), 17 deletions(-) >=20 > diff --git a/drivers/net/mlx5/linux/mlx5_os.c b/drivers/net/mlx5/linux/ml= x5_os.c > index d8f1adfe3d..38572eb652 100644 > --- a/drivers/net/mlx5/linux/mlx5_os.c > +++ b/drivers/net/mlx5/linux/mlx5_os.c > @@ -675,6 +675,9 @@ void > mlx5_os_free_shared_dr(struct mlx5_priv *priv) { > struct mlx5_dev_ctx_shared *sh =3D priv->sh; > +#ifdef HAVE_MLX5DV_DR > + int i; > +#endif >=20 > MLX5_ASSERT(sh && sh->refcnt); > if (sh->refcnt > 1) > @@ -703,18 +706,20 @@ mlx5_os_free_shared_dr(struct mlx5_priv *priv) > mlx5_glue->destroy_flow_action(sh->pop_vlan_action); > sh->pop_vlan_action =3D NULL; > } > - if (sh->send_to_kernel_action.action) { > - void *action =3D sh->send_to_kernel_action.action; > + for (i =3D 0; i < MLX5DR_TABLE_TYPE_MAX; i++) { > + if (sh->send_to_kernel_action[i].action) { > + void *action =3D sh->send_to_kernel_action[i].action; >=20 > - mlx5_glue->destroy_flow_action(action); > - sh->send_to_kernel_action.action =3D NULL; > - } > - if (sh->send_to_kernel_action.tbl) { > - struct mlx5_flow_tbl_resource *tbl =3D > - sh->send_to_kernel_action.tbl; > + mlx5_glue->destroy_flow_action(action); > + sh->send_to_kernel_action[i].action =3D NULL; > + } > + if (sh->send_to_kernel_action[i].tbl) { > + struct mlx5_flow_tbl_resource *tbl =3D > + sh->send_to_kernel_action[i].tbl; >=20 > - flow_dv_tbl_resource_release(sh, tbl); > - sh->send_to_kernel_action.tbl =3D NULL; > + flow_dv_tbl_resource_release(sh, tbl); > + sh->send_to_kernel_action[i].tbl =3D NULL; > + } > } > #endif /* HAVE_MLX5DV_DR */ > if (sh->default_miss_action) > diff --git a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h index > 3785103308..6960a07d40 100644 > --- a/drivers/net/mlx5/mlx5.h > +++ b/drivers/net/mlx5/mlx5.h > @@ -1432,7 +1432,9 @@ struct mlx5_dev_ctx_shared { > /* Direct Rules tables for FDB, NIC TX+RX */ > void *dr_drop_action; /* Pointer to DR drop action, any domain. */ > void *pop_vlan_action; /* Pointer to DR pop VLAN action. */ > - struct mlx5_send_to_kernel_action send_to_kernel_action; > +#if defined(HAVE_IBV_FLOW_DV_SUPPORT) > || !defined(HAVE_INFINIBAND_VERBS_H) > + struct mlx5_send_to_kernel_action > +send_to_kernel_action[MLX5DR_TABLE_TYPE_MAX]; > +#endif > struct mlx5_hlist *encaps_decaps; /* Encap/decap action hash list. */ > struct mlx5_hlist *modify_cmds; > struct mlx5_hlist *tag_table; > diff --git a/drivers/net/mlx5/mlx5_flow.h b/drivers/net/mlx5/mlx5_flow.h = index > 3a97975d69..6beac3902c 100644 > --- a/drivers/net/mlx5/mlx5_flow.h > +++ b/drivers/net/mlx5/mlx5_flow.h > @@ -331,6 +331,7 @@ enum mlx5_feature_name { >=20 > #define MLX5_FLOW_FATE_ESWITCH_ACTIONS \ > (MLX5_FLOW_ACTION_DROP | MLX5_FLOW_ACTION_PORT_ID | \ > + MLX5_FLOW_ACTION_SEND_TO_KERNEL | \ > MLX5_FLOW_ACTION_JUMP | > MLX5_FLOW_ACTION_METER_WITH_TERMINATED_POLICY) >=20 > #define MLX5_FLOW_MODIFY_HDR_ACTIONS > (MLX5_FLOW_ACTION_SET_IPV4_SRC | \ diff --git > a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c index > a8dd9920e6..fe0814a2eb 100644 > --- a/drivers/net/mlx5/mlx5_flow_dv.c > +++ b/drivers/net/mlx5/mlx5_flow_dv.c > @@ -12724,17 +12724,22 @@ flow_dv_translate_action_sample(struct > rte_eth_dev *dev, >=20 > static void * > flow_dv_translate_action_send_to_kernel(struct rte_eth_dev *dev, > + const struct rte_flow_attr *attr, > struct rte_flow_error *error) > { > struct mlx5_flow_tbl_resource *tbl; > struct mlx5_dev_ctx_shared *sh; > uint32_t priority; > void *action; > + int ft_type; > int ret; >=20 > sh =3D MLX5_SH(dev); > - if (sh->send_to_kernel_action.action) > - return sh->send_to_kernel_action.action; > + ft_type =3D (attr->ingress) ? MLX5DR_TABLE_TYPE_NIC_RX : > + ((attr->transfer) ? MLX5DR_TABLE_TYPE_FDB : > + MLX5DR_TABLE_TYPE_NIC_TX); > + if (sh->send_to_kernel_action[ft_type].action) > + return sh->send_to_kernel_action[ft_type].action; > priority =3D mlx5_get_send_to_kernel_priority(dev); > if (priority =3D=3D (uint32_t)-1) { > rte_flow_error_set(error, ENOTSUP, > @@ -12742,7 +12747,7 @@ flow_dv_translate_action_send_to_kernel(struct > rte_eth_dev *dev, > "required priority is not available"); > return NULL; > } > - tbl =3D flow_dv_tbl_resource_get(dev, 0, 0, 0, false, NULL, 0, 0, 0, > + tbl =3D flow_dv_tbl_resource_get(dev, 0, attr->egress, attr->transfer, > +false, NULL, 0, 0, 0, > error); > if (!tbl) { > rte_flow_error_set(error, ENODATA, > @@ -12759,8 +12764,8 @@ flow_dv_translate_action_send_to_kernel(struct > rte_eth_dev *dev, > goto err; > } > MLX5_ASSERT(action); > - sh->send_to_kernel_action.action =3D action; > - sh->send_to_kernel_action.tbl =3D tbl; > + sh->send_to_kernel_action[ft_type].action =3D action; > + sh->send_to_kernel_action[ft_type].tbl =3D tbl; > return action; > err: > flow_dv_tbl_resource_release(sh, tbl); @@ -14511,7 +14516,7 @@ > flow_dv_translate(struct rte_eth_dev *dev, > break; > case RTE_FLOW_ACTION_TYPE_SEND_TO_KERNEL: > dev_flow->dv.actions[actions_n] =3D > - flow_dv_translate_action_send_to_kernel(dev, > + flow_dv_translate_action_send_to_kernel(dev, > attr, > error); > if (!dev_flow->dv.actions[actions_n]) > return -rte_errno; > -- > 2.18.1