From patchwork Tue Jun 2 09:38:09 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shiri Kuzin X-Patchwork-Id: 70732 X-Patchwork-Delegate: rasland@nvidia.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 C087AA04EF; Tue, 2 Jun 2020 11:38:50 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 96EC91BF75; Tue, 2 Jun 2020 11:38:50 +0200 (CEST) Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80077.outbound.protection.outlook.com [40.107.8.77]) by dpdk.org (Postfix) with ESMTP id 7D435F72 for ; Tue, 2 Jun 2020 11:38:49 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Fm6W18M+PRiN78yzDUUZJkYsW5fABT6SnyV9/Iy/wordHC1rOdEFhueV0xe51WBUwzNoyMafCck8YHzuVz6J+ABvf7d1+X0/YRvZpsfwyk+9fhJb7/R2annc8qjCZQT8sw7dSq74ozFrj1fvmUCXWn9OBnYV7j8UcrkksStl2fy20MkYarM5AtqGKQc681kgWiuM7WLoWuH22WdpIWZVMHyoJK9fsglbal4CuB30cbupjTPtJHwOoRz6zmXU31GofdiIj0CQ3x9ubV5z54BWZ8k6ZU8c/2y3OVyU2mW40cLhxyGnwbCCeZ3xOoqXpH6SiqPAxtzXaJv0hW21qo3QUQ== 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=RuNHybhM5MXxPXcFtGdOwcsTq09SdFEFHkRb+EU2i2w=; b=Q4ULZRm8bLdLoKtSmVLD9IPDZawf74JnIFqnLisbrmkUx+jGCPa1al8TdnPntY/zm8cUA2QYEe8vvnsb2NOgpLcKXIIze7PyKmHB0WKCgDZ/DMAOcFuhf/mVBW0g7dx7A41AfavW9p/l3DtFUz3NdQXagB5uKaL/hWDNRRx/+IbSvJIgm7mHcxLtTrFA9C6VRFwmXDgsTQUT9hQELkMx9ItKgN9TqGzWJFn8cmQLRU3BEhEBKnvfOf2P2WvHO2fBQkDpWZP7ZeDDmfrrn1Bj6jXZC3fiHiJyhKHviDGL+wOu5jZSBb8isM2KArUWZj1hdblB0LvnbngfHbCrs3UVUg== 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=RuNHybhM5MXxPXcFtGdOwcsTq09SdFEFHkRb+EU2i2w=; b=U2AzgZAKJ3d22su/ryj/gjHgSc3jyp0WfJWO6ZMLXCQJlWPKYqlmJh/SobzfKEpUU4aafVK/7a2DHDDBX+2HrkKFCrSKPMU9Phhf+HAuIlxab7c4WH0+1JR0OwxqQTAmid18BxFNvTAnNI9XSqTvAqUbJCTrwm31/SMxfFWz1J8= Authentication-Results: dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=none action=none header.from=mellanox.com; Received: from AM0PR0502MB3874.eurprd05.prod.outlook.com (2603:10a6:208:1a::29) by AM0PR0502MB3650.eurprd05.prod.outlook.com (2603:10a6:208:1c::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3045.22; Tue, 2 Jun 2020 09:38:47 +0000 Received: from AM0PR0502MB3874.eurprd05.prod.outlook.com ([fe80::2cea:8f0a:cb2f:2a85]) by AM0PR0502MB3874.eurprd05.prod.outlook.com ([fe80::2cea:8f0a:cb2f:2a85%6]) with mapi id 15.20.3045.022; Tue, 2 Jun 2020 09:38:47 +0000 From: Shiri Kuzin To: dev@dpdk.org Cc: matan@mellanox.com, rasland@mellanox.com, viacheslavo@mellanox.com Date: Tue, 2 Jun 2020 12:38:09 +0300 Message-Id: X-Mailer: git-send-email 1.8.3.1 In-Reply-To: References: X-ClientProxiedBy: AM0PR02CA0098.eurprd02.prod.outlook.com (2603:10a6:208:154::39) To AM0PR0502MB3874.eurprd05.prod.outlook.com (2603:10a6:208:1a::29) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from mellanox.com (94.188.199.18) by AM0PR02CA0098.eurprd02.prod.outlook.com (2603:10a6:208:154::39) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3045.18 via Frontend Transport; Tue, 2 Jun 2020 09:38:46 +0000 X-Mailer: git-send-email 1.8.3.1 X-Originating-IP: [94.188.199.18] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 1078ac2e-b513-42e6-e416-08d806d8bfb8 X-MS-TrafficTypeDiagnostic: AM0PR0502MB3650: X-LD-Processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtFwd X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:4714; X-Forefront-PRVS: 0422860ED4 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: QeebwpS4be0MfOjHKmw6OAzLb+Gf6Sb8QoSX0hrTa9LO12BBjFrWcU2BUZlHh/+uf1p8D6bQCROJQGn83SMLB012tgSUuCMFYZZyYdLwnHdBIeahBMGnS4a0erADxOPVxklzp+Su6QQvzop8sQfoH0HoYih1GEgNzFJv+vL+IY9aR9lncL6IEqczxENhcPAg+Kd5AxeRtV7GwS9+5c45Bas9KqZnK+BbPjE4/a8pjKKi3rwewhMyN8WiVvZZfzdFna/skK+oTh+766zfbLDlgMacLvb5tovUWj7Vv/mA1dz4Z5GfSqv6y46f8OY9w1D/ X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0PR0502MB3874.eurprd05.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(4636009)(396003)(39860400002)(136003)(346002)(376002)(366004)(55016002)(66476007)(66946007)(66556008)(8676002)(956004)(2616005)(6916009)(2906002)(26005)(186003)(16526019)(8886007)(316002)(86362001)(52116002)(36756003)(6666004)(4326008)(8936002)(107886003)(5660300002)(478600001)(7696005); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: waDmsrZW2uljFuWg8lG1quU1Ku4aolVhb9k3G/3QT+hLmE11v68TYj/m8IOvu2ehg09u3QeeyjfF49OVrNvxXh9n97A4v4pymjfSO4ELT8G3LHX1pTWfnUPsT0+Fzb5A/aFndQUM3HBw7P72MPUjBf8G0jyHimX5Auk4s5Kd9Z/+3VzLoUQ66YHhCaHxwTFxhPpPKtdl4u0GHi0HKYW8eFzNhlZkhTQpKjpDK4GA4Fd1OYs4ynTKE++QPVEJN33/yv+QAY1Kcn8T1hpmMH5G46kdiooVY6fWE7rApdwYSBXQyfQqCIKZzz/+L8hFnQ36EJszNuXc086IfymRww/9jpsmkI2exjeq1xAW75dIwV2Ae2q00Txpcq9cRLZ1Xkl3WHT88UgECc44m61V//LcX/il4a8yEPIa8k2PcV6+g1Wy71nGgeomFGhHGBYRc2EaFeNQEk3eWNpfe1CBqftcyZuPFgypdXzyFFDU44cBVsQ= X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1078ac2e-b513-42e6-e416-08d806d8bfb8 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jun 2020 09:38:47.4181 (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: cYCUv8b1T90WOjVEuf2fUnx0WZivlhw/SI9ro+UxHNjaM95lHTNeVusMBJ6kGN+qRQO6hq2u4q7u2NuL+w3DwA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR0502MB3650 Subject: [dpdk-dev] [RFC 1/3] common/mlx5: add default miss 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" Add dv_create_action_default_miss wrapper function for the action added to the rdma-core MLX5DV_FLOW_ACTION_DEFAULT_MISS. When a packet matches MLX5DV_FLOW_ACTION_DEFAULT_MISS action it is steered to the default miss of the verbs steering domain. Signed-off-by: Shiri Kuzin --- drivers/common/mlx5/Makefile | 5 +++++ drivers/common/mlx5/meson.build | 2 ++ drivers/common/mlx5/mlx5_glue.c | 13 +++++++++++++ drivers/common/mlx5/mlx5_glue.h | 1 + 4 files changed, 21 insertions(+) diff --git a/drivers/common/mlx5/Makefile b/drivers/common/mlx5/Makefile index 0d8cc1b..c5c979a 100644 --- a/drivers/common/mlx5/Makefile +++ b/drivers/common/mlx5/Makefile @@ -153,6 +153,11 @@ mlx5_autoconf.h.new: $(RTE_SDK)/buildtools/auto-config-h.sh enum MLX5DV_FLOW_ACTION_COUNTERS_DEVX \ $(AUTOCONF_OUTPUT) $Q sh -- '$<' '$@' \ + HAVE_MLX5_DR_CREATE_ACTION_DEFAULT_MISS \ + infiniband/mlx5dv.h \ + enum MLX5DV_FLOW_ACTION_DEFAULT_MISS \ + $(AUTOCONF_OUTPUT) + $Q sh -- '$<' '$@' \ HAVE_IBV_DEVX_ASYNC \ infiniband/mlx5dv.h \ func mlx5dv_devx_obj_query_async \ diff --git a/drivers/common/mlx5/meson.build b/drivers/common/mlx5/meson.build index 5a802ba..9ba90b7 100644 --- a/drivers/common/mlx5/meson.build +++ b/drivers/common/mlx5/meson.build @@ -120,6 +120,8 @@ has_sym_args = [ 'mlx5dv_devx_obj_create' ], [ 'HAVE_IBV_FLOW_DEVX_COUNTERS', 'infiniband/mlx5dv.h', 'MLX5DV_FLOW_ACTION_COUNTERS_DEVX' ], + [ 'HAVE_MLX5_DR_CREATE_ACTION_DEFAULT_MISS', 'infiniband/mlx5dv.h', + 'MLX5DV_FLOW_ACTION_DEFAULT_MISS' ], [ 'HAVE_IBV_DEVX_ASYNC', 'infiniband/mlx5dv.h', 'mlx5dv_devx_obj_query_async' ], [ 'HAVE_IBV_DEVX_QP', 'infiniband/mlx5dv.h', diff --git a/drivers/common/mlx5/mlx5_glue.c b/drivers/common/mlx5/mlx5_glue.c index f270f67..62e15cb 100644 --- a/drivers/common/mlx5/mlx5_glue.c +++ b/drivers/common/mlx5/mlx5_glue.c @@ -795,6 +795,17 @@ #endif } +static void * +mlx5_glue_dr_create_flow_action_default_miss(void) +{ +#if defined(HAVE_MLXDV_DR) && defined(HAVE_MLX5_DR_CREATE_ACTION_DEFAULT_MISS) + return mlx5dv_dr_action_create_default_miss(); +#else + errno = ENOTSUP; + return NULL; +#endif +} + static int mlx5_glue_dv_destroy_flow(void *flow_id) { @@ -1264,6 +1275,8 @@ .dv_create_flow_action_tag = mlx5_glue_dv_create_flow_action_tag, .dv_create_flow_action_meter = mlx5_glue_dv_create_flow_action_meter, .dv_modify_flow_action_meter = mlx5_glue_dv_modify_flow_action_meter, + .dr_create_flow_action_default_miss = + mlx5_glue_dr_create_flow_action_default_miss, .dv_destroy_flow = mlx5_glue_dv_destroy_flow, .dv_destroy_flow_matcher = mlx5_glue_dv_destroy_flow_matcher, .dv_open_device = mlx5_glue_dv_open_device, diff --git a/drivers/common/mlx5/mlx5_glue.h b/drivers/common/mlx5/mlx5_glue.h index 81d6a22..f5bec6a 100644 --- a/drivers/common/mlx5/mlx5_glue.h +++ b/drivers/common/mlx5/mlx5_glue.h @@ -237,6 +237,7 @@ struct mlx5_glue { (struct mlx5dv_dr_flow_meter_attr *attr); int (*dv_modify_flow_action_meter)(void *action, struct mlx5dv_dr_flow_meter_attr *attr, uint64_t modify_bits); + void *(*dr_create_flow_action_default_miss)(); int (*dv_destroy_flow)(void *flow); int (*dv_destroy_flow_matcher)(void *matcher); struct ibv_context *(*dv_open_device)(struct ibv_device *device); From patchwork Tue Jun 2 09:38:10 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shiri Kuzin X-Patchwork-Id: 70733 X-Patchwork-Delegate: rasland@nvidia.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 B8279A04EF; Tue, 2 Jun 2020 11:38:59 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id AFFE11BF98; Tue, 2 Jun 2020 11:38:54 +0200 (CEST) Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-eopbgr70041.outbound.protection.outlook.com [40.107.7.41]) by dpdk.org (Postfix) with ESMTP id 712CC1BF87 for ; Tue, 2 Jun 2020 11:38:53 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=d1TSdU2rqv51/FdLeqd6ihqJKSjb02zZvQN/Y5LsQQOLj43NTgxM+9QNf0KylOR77IJG2vV456sIsUasqkYWW/mKKdpw4OzEBgja7FiXhpwCLCBl+SWi+DS1CJ0hBqlozX45dplNSoqzldt/KE1YAwNncILA5q1pMLJ5F8PMQZFIaMOLPovVNbooCMmlwWTH/vm8tz480q+bQDey4TptTTEpcXPQLWVXyqDaxiLjHGDbahoRPTsk7oq5yW8zG2CvlRak/ST0QHbvAjzTB/SO7/On2ToQHNgEXt/8E+NWXZVYEBQAgrZwWZNeRx+xccsxQ6G9Zn3W+1O3DjBcei2LuA== 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=SvFEw1dAd1YIoy+pMPlAVVlN7WPDysUz81aRAiT+VMg=; b=JVKTf7lYJRhdMwApIoT0jL/MTgzpQkxRJlfQy23xz7LZhPiidPeenjupU5wH/ZWUMysY34DnfnxBww23d0c6f7snh8efLIAaR5PbetyZOrvBIhMIszzpVD8b1MKjFeBe+if4jpsWqmjg3UFb6dj+F+WR9G4V7FWrvShdY1+D+MttGFf4yf97Xvuf3KHlt60jm6Q/5k1BxPFDnw8DAmLTWhiQ87i23KL46wQshdZIP3y3t2b5Nad5zCL8HI0LHBSGpHLsv5U5d+W0xGhfCtQgQaamd1nRqXhefVVAgtPHqjwpaR/hgvohJ4kAFJO0wpGL5QVIoxWHwvuxjz9A9vCk/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=SvFEw1dAd1YIoy+pMPlAVVlN7WPDysUz81aRAiT+VMg=; b=OGGS2QeJ25Qk8+dnykRrIpKHG9Pt4p5Ad6IwBnajyx6NT4poQYMF6D8FkRjzPvmRqvFDpoDD6ZAidA1WYItlz1t4VSYRkLaVu9c480ps7f9kHl3Q8G3XyhIuq2o6fPwq59+KVg2DrRT7WTE80E4tVMbd7dbt+lGvpDzrMe00O+g= Authentication-Results: dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=none action=none header.from=mellanox.com; Received: from AM0PR0502MB3874.eurprd05.prod.outlook.com (2603:10a6:208:1a::29) by AM0PR0502MB3650.eurprd05.prod.outlook.com (2603:10a6:208:1c::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3045.22; Tue, 2 Jun 2020 09:38:52 +0000 Received: from AM0PR0502MB3874.eurprd05.prod.outlook.com ([fe80::2cea:8f0a:cb2f:2a85]) by AM0PR0502MB3874.eurprd05.prod.outlook.com ([fe80::2cea:8f0a:cb2f:2a85%6]) with mapi id 15.20.3045.022; Tue, 2 Jun 2020 09:38:51 +0000 From: Shiri Kuzin To: dev@dpdk.org Cc: matan@mellanox.com, rasland@mellanox.com, viacheslavo@mellanox.com Date: Tue, 2 Jun 2020 12:38:10 +0300 Message-Id: X-Mailer: git-send-email 1.8.3.1 In-Reply-To: References: X-ClientProxiedBy: AM0PR02CA0098.eurprd02.prod.outlook.com (2603:10a6:208:154::39) To AM0PR0502MB3874.eurprd05.prod.outlook.com (2603:10a6:208:1a::29) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from mellanox.com (94.188.199.18) by AM0PR02CA0098.eurprd02.prod.outlook.com (2603:10a6:208:154::39) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3045.18 via Frontend Transport; Tue, 2 Jun 2020 09:38:51 +0000 X-Mailer: git-send-email 1.8.3.1 X-Originating-IP: [94.188.199.18] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 61f841c1-3316-4b3e-dac5-08d806d8c25b X-MS-TrafficTypeDiagnostic: AM0PR0502MB3650: X-LD-Processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtFwd X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:3826; X-Forefront-PRVS: 0422860ED4 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: UPOJf0AUZcX71zLzaAkg0LLeylssMSsVhpaRmcmDGnOOvh2g2TKACEdW10J5egWb+4qWYQBFVDTpWq06pCS/cwAp7EihbYXa+mtfnGcSwPccyigmjIGAQfRG2V6iCUHPoc6inP2l0KAOkdAaLQcZNRooUYWGRCWclnKf41gdj+UVDlHN62ZP+dsE8BqAj7ZPzNeWK6QQSZ+Z607lB/1CaJ/PZttsW4d5XhlAm25rG4U/Iyivil0yQG6uZLRFgelMkYbN5pl9RcmflitQ/Y4c0CFMjvSTzRS3CIsYu2lnyx+HLo1Kyc05+YEUqHvG9Z8M X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0PR0502MB3874.eurprd05.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(4636009)(396003)(39860400002)(136003)(346002)(376002)(366004)(83380400001)(55016002)(66476007)(66946007)(66556008)(8676002)(956004)(2616005)(6916009)(2906002)(26005)(186003)(16526019)(8886007)(316002)(86362001)(52116002)(36756003)(6666004)(4326008)(8936002)(107886003)(5660300002)(478600001)(7696005); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: M6dOg/+Rdcv1WH7VenCrAn56syDf/F9VmilYvU6RQFsXr23KIEb1DIrbKBDXsn+CA2P1wu8R4GWaHItChzfc1ZpfAt4NjGoZRF/daydGkrSCFFfS31Ngsp9XxzZDwWCZpDmNL9cW79SXuGPqhppsLEAJpJxP3B3v9+DJXX0XLS92HqoO7uGDP0WsfrxBEES4A0J0mhvpatsjusEv5avDmJaU8rG4Oy9yj8zWqh8wCM2byU20lcYJbtsVM6eXpsDr+clGyuGZHaN8mzNIcqakAgCQF/Uqe56EYhOI+aO1NY3vK3p7/MnRWKKFJBvu55ikuXCw//af9PBTG/CHyIQR65C4kmVQtbEZ0Ledc4ct0cTTDYDc3slPGvL0kx+am0O7idp30M3GI1aJlinxkdzj1VefDDDcggjTpHLLgd3dDT1CzpNtW8RbR6d6CWYLLFW8JJR7DDUobg3aXSPYsQoCE5OAg51PK0ar9p72VJQ324Y= X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 61f841c1-3316-4b3e-dac5-08d806d8c25b X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jun 2020 09:38:51.7846 (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: QHcWKp4FiiBVYdc+I+nAU7bVsKZufsMHiTlDQ7tFIZmcDc9gNNJublqtXf0BVSpkL4O42hvIL2jVQgLJoY+Npg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR0502MB3650 Subject: [dpdk-dev] [RFC 2/3] net/mlx5: add default miss action to flow engine 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 new action is an internal mlx5 action that will call the rdma-core function MLX5DV_FLOW_ACTION_DEFAULT_MISS. The default miss action will be used when a bond is configured to allow traffic realted to the bond to be managed in the kernel. Signed-off-by: Shiri Kuzin --- drivers/net/mlx5/mlx5.h | 5 +++ drivers/net/mlx5/mlx5_flow.c | 72 ++++++++++++++++++++++++++++++++ drivers/net/mlx5/mlx5_flow.h | 10 ++++- drivers/net/mlx5/mlx5_flow_dv.c | 91 ++++++++++++++++++++++++++++++++++++++++- 4 files changed, 175 insertions(+), 3 deletions(-) diff --git a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h index 2908c8b..bc57fb5 100644 --- a/drivers/net/mlx5/mlx5.h +++ b/drivers/net/mlx5/mlx5.h @@ -509,6 +509,9 @@ struct mlx5_ibv_shared { uint32_t port_id_action_list; /* List of port ID actions. */ uint32_t push_vlan_action_list; /* List of push VLAN actions. */ struct mlx5_flow_counter_mng cmng; /* Counters management structure. */ + void *default_miss_action; /* Pointer to the rdma-core action. */ + rte_atomic32_t default_miss_refcnt; + /* Default miss action reference counter. */ struct mlx5_indexed_pool *ipool[MLX5_IPOOL_MAX]; /* Memory Pool for mlx5 flow resources. */ /* Shared interrupt handler section. */ @@ -801,6 +804,8 @@ int mlx5_ctrl_flow_vlan(struct rte_eth_dev *dev, int mlx5_ctrl_flow(struct rte_eth_dev *dev, struct rte_flow_item_eth *eth_spec, struct rte_flow_item_eth *eth_mask); +int mlx5_flow_default_miss(struct rte_eth_dev *dev, + struct rte_flow_item_eth *eth_spec); struct rte_flow *mlx5_flow_create_esw_table_zero_flow(struct rte_eth_dev *dev); int mlx5_flow_create_drop_queue(struct rte_eth_dev *dev); void mlx5_flow_delete_drop_queue(struct rte_eth_dev *dev); diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c index f2c3cf9..d3eb42e 100644 --- a/drivers/net/mlx5/mlx5_flow.c +++ b/drivers/net/mlx5/mlx5_flow.c @@ -1242,6 +1242,30 @@ uint32_t mlx5_flow_adjust_priority(struct rte_eth_dev *dev, int32_t priority, } /* + * Validate the default miss action. + * + * @param[in] action_flags + * Bit-fields that holds the actions detected until now. + * @param[out] error + * Pointer to error structure. + * + * @return + * 0 on success, a negative errno value otherwise and rte_errno is set. + */ +int +mlx5_flow_validate_action_default_miss(uint64_t action_flags, + struct rte_flow_error *error) +{ + + if (action_flags & MLX5_FLOW_FATE_ACTIONS) + return rte_flow_error_set(error, EINVAL, + RTE_FLOW_ERROR_TYPE_ACTION, NULL, + "can't have 2 fate actions in" + " same flow"); + return 0; +} + +/* * Validate the count action. * * @param[in] dev @@ -4988,6 +5012,54 @@ struct rte_flow * } /** + * Deafult miss flow + * + * @param dev + * Pointer to Ethernet device. + * @param eth_spec + * An Ethernet flow spec to apply. + * + * @return + * 0 on success, a negative errno value otherwise and rte_errno is set. + */ +int +mlx5_flow_default_miss(struct rte_eth_dev *dev, + struct rte_flow_item_eth *eth_spec) +{ + struct mlx5_priv *priv = dev->data->dev_private; + const struct rte_flow_attr attr = { + .ingress = 1, + .priority = 0, + }; + struct rte_flow_item items[] = { + { + .type = RTE_FLOW_ITEM_TYPE_ETH, + .spec = eth_spec, + }, + { + .type = RTE_FLOW_ITEM_TYPE_END, + }, + }; + struct rte_flow_action actions[] = { + { + .type = MLX5_RTE_FLOW_ACTION_TYPE_DEFAULT_MISS, + }, + { + .type = RTE_FLOW_ACTION_TYPE_END, + }, + }; + + struct rte_flow_error error; + uint32_t flow_idx; + + flow_idx = flow_list_create(dev, &priv->ctrl_flows, + &attr, items, actions, false, &error); + if (!flow_idx) + return -rte_errno; + return 0; +} + +/** * Destroy a flow. * * @see rte_flow_destroy() diff --git a/drivers/net/mlx5/mlx5_flow.h b/drivers/net/mlx5/mlx5_flow.h index 2c96677..d489f64 100644 --- a/drivers/net/mlx5/mlx5_flow.h +++ b/drivers/net/mlx5/mlx5_flow.h @@ -43,6 +43,7 @@ enum mlx5_rte_flow_action_type { MLX5_RTE_FLOW_ACTION_TYPE_TAG, MLX5_RTE_FLOW_ACTION_TYPE_MARK, MLX5_RTE_FLOW_ACTION_TYPE_COPY_MREG, + MLX5_RTE_FLOW_ACTION_TYPE_DEFAULT_MISS, }; /* Matches on selected register. */ @@ -200,10 +201,12 @@ enum mlx5_feature_name { #define MLX5_FLOW_ACTION_SET_IPV4_DSCP (1ull << 32) #define MLX5_FLOW_ACTION_SET_IPV6_DSCP (1ull << 33) #define MLX5_FLOW_ACTION_AGE (1ull << 34) +#define MLX5_FLOW_ACTION_DEFAULT_MISS (1ull << 35) #define MLX5_FLOW_FATE_ACTIONS \ (MLX5_FLOW_ACTION_DROP | MLX5_FLOW_ACTION_QUEUE | \ - MLX5_FLOW_ACTION_RSS | MLX5_FLOW_ACTION_JUMP) + MLX5_FLOW_ACTION_RSS | MLX5_FLOW_ACTION_JUMP | \ + MLX5_FLOW_ACTION_DEFAULT_MISS) #define MLX5_FLOW_FATE_ESWITCH_ACTIONS \ (MLX5_FLOW_ACTION_DROP | MLX5_FLOW_ACTION_PORT_ID | \ @@ -365,6 +368,7 @@ enum mlx5_flow_fate_type { MLX5_FLOW_FATE_PORT_ID, MLX5_FLOW_FATE_DROP, MLX5_FLOW_FATE_MAX, + MLX5_FLOW_FATE_DEFAULT_MISS }; /* Matcher PRM representation */ @@ -537,7 +541,7 @@ struct mlx5_flow_handle { void *ib_flow; /**< Verbs flow pointer. */ uint32_t split_flow_id:28; /**< Sub flow unique match flow id. */ uint32_t mark:1; /**< Metadate rxq mark flag. */ - uint32_t fate_action:3; /**< Fate action type. */ + uint32_t fate_action:4; /**< Fate action type. */ union { uint32_t rix_hrxq; /**< Hash Rx queue object index. */ uint32_t rix_jump; /**< Index to the jump action resource. */ @@ -946,6 +950,8 @@ int mlx5_flow_validate_action_rss(const struct rte_flow_action *action, const struct rte_flow_attr *attr, uint64_t item_flags, struct rte_flow_error *error); +int mlx5_flow_validate_action_default_miss(uint64_t action_flags, + struct rte_flow_error *error); int mlx5_flow_validate_attributes(struct rte_eth_dev *dev, const struct rte_flow_attr *attributes, struct rte_flow_error *error); diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c index e481831..70d9cc3 100644 --- a/drivers/net/mlx5/mlx5_flow_dv.c +++ b/drivers/net/mlx5/mlx5_flow_dv.c @@ -2675,6 +2675,44 @@ struct field_modify_info modify_tcp[] = { } /** + * Find existing default miss resource or create and register a new one. + * + * @param[in, out] dev + * Pointer to rte_eth_dev structure. + * @param[in, out] tbl + * Pointer to flow table resource. + * @parm[in, out] dev_flow + * Pointer to the dev_flow. + * @param[out] error + * pointer to error structure. + * + * @return + * 0 on success otherwise -errno and errno is set. + */ +static int +flow_dv_default_miss_resource_register(struct rte_eth_dev *dev, + struct rte_flow_error *error) +{ + struct mlx5_priv *priv = dev->data->dev_private; + struct mlx5_ibv_shared *sh = priv->sh; + int cnt; + + cnt = rte_atomic32_read(&sh->default_miss_refcnt); + if (!cnt){ + sh->default_miss_action = + mlx5_glue->dr_create_flow_action_default_miss; + if (sh->default_miss_action) + return rte_flow_error_set(error, ENOMEM, + RTE_FLOW_ERROR_TYPE_UNSPECIFIED, + NULL, "cannot create default miss action"); + DRV_LOG(DEBUG, "new default miss resource %p: refcnt %d++", + (void *)sh->default_miss_action, cnt); + } + rte_atomic32_inc(&sh->default_miss_refcnt); + return 0; +} + +/** * Find existing table port ID resource or create and register a new one. * * @param[in, out] dev @@ -5215,6 +5253,15 @@ struct field_modify_info modify_tcp[] = { action_flags |= MLX5_FLOW_ACTION_RSS; ++actions_n; break; + case MLX5_RTE_FLOW_ACTION_TYPE_DEFAULT_MISS: + ret = + mlx5_flow_validate_action_default_miss(action_flags, + error); + if (ret < 0) + return ret; + action_flags |= MLX5_FLOW_ACTION_DEFAULT_MISS; + ++actions_n; + break; case RTE_FLOW_ACTION_TYPE_COUNT: ret = flow_dv_validate_action_count(dev, error); if (ret < 0) @@ -8178,6 +8225,14 @@ struct field_modify_info modify_tcp[] = { return -rte_errno; action_flags |= MLX5_FLOW_ACTION_SET_TAG; break; + case MLX5_RTE_FLOW_ACTION_TYPE_DEFAULT_MISS: + if (flow_dv_default_miss_resource_register + (dev, error)) + return -rte_errno; + action_flags |= MLX5_FLOW_ACTION_DEFAULT_MISS; + dev_flow->handle->fate_action = + MLX5_FLOW_FATE_DEFAULT_MISS; + break; case RTE_FLOW_ACTION_TYPE_METER: mtr = actions->conf; if (!flow->meter) { @@ -8270,7 +8325,11 @@ struct field_modify_info modify_tcp[] = { flow_dv_translate_item_eth(match_mask, match_value, items, tunnel, dev_flow->dv.group); - matcher.priority = MLX5_PRIORITY_MAP_L2; + matcher.priority = + ((action_flags & MLX5_FLOW_ACTION_DEFAULT_MISS) & + (!dev_flow->external)) ? + MLX5_PRIORITY_MAP_L3 : + MLX5_PRIORITY_MAP_L2; last_item = tunnel ? MLX5_FLOW_LAYER_INNER_L2 : MLX5_FLOW_LAYER_OUTER_L2; break; @@ -8732,6 +8791,34 @@ struct field_modify_info modify_tcp[] = { } /** + * Release a default miss resource. + * + * @param dev + * Pointer to Ethernet device. + * @return + * 1 while a reference on it exists, 0 when freed. + */ +static int +flow_dv_default_miss_resource_release(struct rte_eth_dev *dev) +{ + struct mlx5_priv *priv = dev->data->dev_private; + struct mlx5_ibv_shared *sh = priv->sh; + + MLX5_ASSERT(sh->default_miss_action); + DRV_LOG(DEBUG, "default miss resource %p: refcnt %d--", + (void *)sh->default_miss_action, + rte_atomic32_read(&sh->default_miss_refcnt)); + if (rte_atomic32_dec_and_test(&sh->default_miss_refcnt)){ + claim_zero(mlx5_glue->destroy_flow_action + (sh->default_miss_action)); + DRV_LOG(DEBUG, "default miss resource %p: removed", + (void *)sh->default_miss_action); + return 0; + } + return 1; +} + +/** * Release a modify-header resource. * * @param handle @@ -8866,6 +8953,8 @@ struct field_modify_info modify_tcp[] = { flow_dv_jump_tbl_resource_release(dev, handle); else if (handle->fate_action == MLX5_FLOW_FATE_PORT_ID) flow_dv_port_id_action_resource_release(dev, handle); + else if (handle->fate_action == MLX5_FLOW_FATE_DEFAULT_MISS) + flow_dv_default_miss_resource_release(dev); else DRV_LOG(DEBUG, "Incorrect fate action:%d", handle->fate_action); handle->rix_fate = 0; From patchwork Tue Jun 2 09:38:11 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shiri Kuzin X-Patchwork-Id: 70734 X-Patchwork-Delegate: rasland@nvidia.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 77EFCA04EF; Tue, 2 Jun 2020 11:39:13 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 1818E1BFB1; Tue, 2 Jun 2020 11:38:56 +0200 (CEST) Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-eopbgr70054.outbound.protection.outlook.com [40.107.7.54]) by dpdk.org (Postfix) with ESMTP id 8DEC41BFA6 for ; Tue, 2 Jun 2020 11:38:55 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fSjTHdxHUdSriL8VvMwZ7m13gFrt6Tr7glqKrAw4nrdD9IVn8F4Q85XRhdQEpcgwq/AKN1PmA13z4CB9W7QNkKAdq6NSxquIYQ9jpR+Sr0nq1xGUH0isEAysAD50VXqqGgQ8Bfd5bJbq8PHEVNvBZp41CyGvT1GHNB5GPgWy7io1K1a3i3f+ZSMh+q9vI1vfZLRcYiIVfakp16V3x+1OKUPCprziRJo5ZNsKwKor2dCXsh1Yf632dRaAoEM4ziwmL5WxipnTX9M3ida5b2AjWrn4okAyXIvJAWBvRWp/+pVuWnhxAjShZL+4tF2N3gdrBsuxLokn4QedUD5w/e+L1w== 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=achJtZcsO+vS0q86AvlpI0Zkw0Iw+Jaj9K0+0d67mwA=; b=LClBRhOfyfuYs0vgVS1G5VNktvENHbxvPuHC2hYB3bQyu7kpA1IhvfQcYP7TkwN+w03pgJPuTJom2aHcoMbojCuIy1y9TnJq/QcdD0qUvDeWJNDdDBpDu7bgnAty+sTghrLCJE7AQpAGSIdRQwM3VayCRwH9UW12EVatuZDJxt/hVyN5E0+NRpBg2NyAXeZ6U3q5Zu85Uk5wtFWzASLYDJVlMpgIei3dO4S2m3COBQginXBcX+6h+DNvU4ZrWDwvUnVQGdqZNcjG8jWWcHJfnn6zLa2s5t53QPb2wRszHaRGydzs4ZLmpmcfida79PdgpY0fJiRB+TPHiLw14iOCrg== 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=achJtZcsO+vS0q86AvlpI0Zkw0Iw+Jaj9K0+0d67mwA=; b=kbEBKx3Tmt6vaBV5XxC4zmIZBBwW7OGCm1WK1FrDwcvNlG2uy1ZuXtdDXJ4WIoXFG+zd/gmhdqfS4kp1sF0s3JppPTVJvb47ZHyuZL2vmfabgxtvSvgdPspf+4vTMFMsFLmK5KehJTZiMzytc22pgU8RQnnbetu+Gw70oQA2syw= Authentication-Results: dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=none action=none header.from=mellanox.com; Received: from AM0PR0502MB3874.eurprd05.prod.outlook.com (2603:10a6:208:1a::29) by AM0PR0502MB3650.eurprd05.prod.outlook.com (2603:10a6:208:1c::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3045.22; Tue, 2 Jun 2020 09:38:54 +0000 Received: from AM0PR0502MB3874.eurprd05.prod.outlook.com ([fe80::2cea:8f0a:cb2f:2a85]) by AM0PR0502MB3874.eurprd05.prod.outlook.com ([fe80::2cea:8f0a:cb2f:2a85%6]) with mapi id 15.20.3045.022; Tue, 2 Jun 2020 09:38:54 +0000 From: Shiri Kuzin To: dev@dpdk.org Cc: matan@mellanox.com, rasland@mellanox.com, viacheslavo@mellanox.com Date: Tue, 2 Jun 2020 12:38:11 +0300 Message-Id: X-Mailer: git-send-email 1.8.3.1 In-Reply-To: References: X-ClientProxiedBy: AM0PR02CA0098.eurprd02.prod.outlook.com (2603:10a6:208:154::39) To AM0PR0502MB3874.eurprd05.prod.outlook.com (2603:10a6:208:1a::29) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from mellanox.com (94.188.199.18) by AM0PR02CA0098.eurprd02.prod.outlook.com (2603:10a6:208:154::39) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3045.18 via Frontend Transport; Tue, 2 Jun 2020 09:38:53 +0000 X-Mailer: git-send-email 1.8.3.1 X-Originating-IP: [94.188.199.18] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: d6cee145-0445-4c77-7432-08d806d8c3b1 X-MS-TrafficTypeDiagnostic: AM0PR0502MB3650: X-LD-Processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtFwd X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:6430; X-Forefront-PRVS: 0422860ED4 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: YthwSsqzlq+5f7w+PINrdmERwY4L/H5rY0NC7Ts6SWE8+vx38SroOQnhE28ZyV3T0HIx1FLXiQ4SJpejicZCiPS/+ZPOrTrTJbqxrhc8KL8IJMmveoZU5CWR+d1FCUICJl7H0IOKlah0LoJr95YFqtuPwRMxCDMyhuVU5mueUO8NfiFLH0ND572kg0waMUu64PQ4GGjbI5yMO+MzEuComww1fiEHd6kqdxS+FpDfrvNlj8a+jxm8BSadkhMNwloCjUKZmu9n7Rw6GXwt3RtbvLfqV57jR2VsVObVD3nmLb6g9MiDnuY1tOKn0NiUq1dT3j272Wqa6Z4HKmVKmBW6psfIVMXty7NfYkm0kOpr+HDllON+A9Ve155YIHk53fEv X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0PR0502MB3874.eurprd05.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(4636009)(396003)(39860400002)(136003)(346002)(376002)(366004)(83380400001)(55016002)(66476007)(66946007)(66556008)(8676002)(956004)(2616005)(6916009)(2906002)(26005)(186003)(16526019)(8886007)(316002)(86362001)(52116002)(36756003)(6666004)(4326008)(8936002)(107886003)(5660300002)(478600001)(7696005)(309714004); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: IGeOjCwjfjMola3EYqk2M7w0zwWM34ZSUHuQ/3InKb+wzrxhZMvDD8BdROaJpPDZb05g/V4gZYrmT8QVAlMcJ6oeGNy9fvSjMe0/1TOftxYPmimLJpvVDOCvnyvXfDofIWg4s1JPNhd84lAW/qeLWltzbKeonMZTSq8A3pejWPZ2VOjHb9VzvmUx7TJRX7mljZwBj51GvNZ6ugngfPLD84YfgbE+iwJaSNX57rTqXP6k3AoV0WHiFYUt3j3AViTN5w3R2ROGNnSG2AaHB0ZMCxR64wrUh7oeSKSsZ8Q0gKDU0PW4dbd45xR/SXi/h5i1lMv+XlZRzfRaGBReN1J4sZ9B22UmVpgQF06fBgc80kqvc/wOqwqdV97K10QMKiLg4O1rd+bRXRBHtBmFqo0JFL6c5Nbz2oLUJvoAsI860h+g+/Z4mQK4qsI/Y+heSl8umhjHc+Wdxy3HQa72DAhn16zbBoqWSSrl6w7Yq/ShMjc= X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: d6cee145-0445-4c77-7432-08d806d8c3b1 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jun 2020 09:38:54.1912 (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: rUViiNjjnKenQR2u4KPEXrVrXzJ6MzdlWlBLqFz7HZuKq2VOb7bRAnHTThdXLScCVYazFEm/gafO9ckojH9NuA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR0502MB3650 Subject: [dpdk-dev] [RFC 3/3] net/mlx5: add new devarg dv_lacp_by_user 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 new devarg will control the steering of the lacp traffic. when setting dv_lacp_by_user = 0 the lacp traffic will be steered to kernel and managed there. When setting dv_lacp_by_user = 1 the lacp traffic will not be steered and the user will need to manage it. Signed-off-by: Shiri Kuzin --- drivers/net/mlx5/mlx5.c | 6 ++++++ drivers/net/mlx5/mlx5.h | 2 ++ drivers/net/mlx5/mlx5_trigger.c | 9 +++++++++ 3 files changed, 17 insertions(+) diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c index 469ff73..f015050 100644 --- a/drivers/net/mlx5/mlx5.c +++ b/drivers/net/mlx5/mlx5.c @@ -140,6 +140,9 @@ /* Enable extensive flow metadata support. */ #define MLX5_DV_XMETA_EN "dv_xmeta_en" +/* Device parameter to let the user manage the lacp traffic of bonded device */ +#define MLX5_DV_LACP_BY_USER "dv_lacp_by_user" + /* Activate Netlink support in VF mode. */ #define MLX5_VF_NL_EN "vf_nl_en" @@ -1852,6 +1855,8 @@ struct mlx5_flow_id_pool * return -rte_errno; } config->dv_xmeta_en = tmp; + } else if (strcmp(MLX5_DV_LACP_BY_USER, key) == 0) { + config->dv_lacp_by_user = !!tmp; } else if (strcmp(MLX5_MR_EXT_MEMSEG_EN, key) == 0) { config->mr_ext_memseg_en = !!tmp; } else if (strcmp(MLX5_MAX_DUMP_FILES_NUM, key) == 0) { @@ -1910,6 +1915,7 @@ struct mlx5_flow_id_pool * MLX5_DV_ESW_EN, MLX5_DV_FLOW_EN, MLX5_DV_XMETA_EN, + MLX5_DV_LACP_BY_USER, MLX5_MR_EXT_MEMSEG_EN, MLX5_REPRESENTOR, MLX5_MAX_DUMP_FILES_NUM, diff --git a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h index bc57fb5..ff6bd83 100644 --- a/drivers/net/mlx5/mlx5.h +++ b/drivers/net/mlx5/mlx5.h @@ -157,6 +157,8 @@ struct mlx5_dev_config { unsigned int dv_esw_en:1; /* Enable E-Switch DV flow. */ unsigned int dv_flow_en:1; /* Enable DV flow. */ unsigned int dv_xmeta_en:2; /* Enable extensive flow metadata. */ + unsigned int dv_lacp_by_user:1; + /* Enable user to manage LACP traffic. */ unsigned int swp:1; /* Tx generic tunnel checksum and TSO offload. */ unsigned int devx:1; /* Whether devx interface is available or not. */ unsigned int dest_tir:1; /* Whether advanced DR API is available. */ diff --git a/drivers/net/mlx5/mlx5_trigger.c b/drivers/net/mlx5/mlx5_trigger.c index f123193..ef5c8f2 100644 --- a/drivers/net/mlx5/mlx5_trigger.c +++ b/drivers/net/mlx5/mlx5_trigger.c @@ -434,6 +434,10 @@ const struct rte_ether_addr cmp = { .addr_bytes = "\x00\x00\x00\x00\x00\x00", }; + struct rte_flow_item_eth lacp_spec = { + .type = 0x8809, + .dst.addr_bytes = "\x01\x80\xc2\x00\x00\x02", + }; unsigned int i; unsigned int j; int ret; @@ -464,6 +468,11 @@ " configured - only Eswitch group 0 flows are" " supported.", dev->data->port_id); } + if (!priv->config.dv_lacp_by_user && priv->pf_bond) { + ret = mlx5_flow_default_miss(dev,&lacp_spec); + if (ret) + goto error; + } if (priv->isolated) return 0; if (dev->data->promiscuous) {