From patchwork Tue May 16 22:59:50 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tony Duan X-Patchwork-Id: 1782370 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=Nvidia.com header.i=@Nvidia.com header.a=rsa-sha256 header.s=selector2 header.b=lpNIqVhi; dkim-atps=neutral Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4QLWtC62rGz20dn for ; Wed, 17 May 2023 09:00:34 +1000 (AEST) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1pz3eX-0008Go-31; Tue, 16 May 2023 23:00:21 +0000 Received: from mail-dm3nam02on2074.outbound.protection.outlook.com ([40.107.95.74] helo=NAM02-DM3-obe.outbound.protection.outlook.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1pz3eS-0008GA-5u for kernel-team@lists.ubuntu.com; Tue, 16 May 2023 23:00:16 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=My9q1jVJQSChmPSm3TC1nkmooBnVjhwLmqZsC2MbqxcS7HxXuoOGfv71PodlSQR0kKbSHrlyyUemCGKCMKX50ZEDisAct9kRPkcwaa5NohoWQOqc5mP23lIPs28c2ff5p3J/ClmJYJ1N8Ro5sXfAnDJWFHT16b8CqzGr5+Rt33d820vMjEB/x56ip9FXbrXBT2ddpYZXeG6mluU+poNPvDM3mjxpNbo9BkJTk7yRMULO4K9wgCqS0SDT5rmnz/u6xigwLHVxtb51GESJI/kowycAhrvkDSZgtWZeVRs6lpYZqK1H1Rm6sFGvI/i6MjGvr8x6ckaPLlo0xuvdQ1Szkw== 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=qDZirguK9cD1Q3B/JpyZpxeSwPkhsjqcdIfPaLPuQ58=; b=DbhoSprj192fT0ymLSx0Jg+RyjqUuwu6FCCAabnPiC4C01ieODMkx9p8cvXMZYPAbGNvX719e7Xt356ZI5xbwppsCTPhQfFgW+2UyIgjOjY/K6ur5BRIauPDkATNqowWUIVdXfMFF4zqmE/NIzqAvH4F+XuVnuME+wYrTGv5ER7+ql6I6xtiu4nBkN5vWfD2GkAzsKq8moha/Md6YCBZFjZHPPR2KOyDGC2CRTG2NLiU7JlOFLIGAbGkLg7zijRm3voD1k8DV+Wjpc6OwWBgu9ly6LOGgReJ32NLGgUSg6embTztciVREKcBAWx73dvJWwLsk6yNmG7MFFz7ReQsgw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.118.233) smtp.rcpttodomain=canonical.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); 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=qDZirguK9cD1Q3B/JpyZpxeSwPkhsjqcdIfPaLPuQ58=; b=lpNIqVhi5lPNxjCn/y0DOKCVXKjuqCu3GnUvWzMB4Y4+eY9lGNP7SpihwCfhde6TUNSV/aS86El3tI3eGtPwANdhI1XbULxAoWHCnO6npdL7cm0clnD1lbbEtzEdmMW4DdZEk44kgF6wx58SiOppoH1i7bj9RVil6Yvktb0ebCCqTKbuO6EiEbICclD82ImtVu8Ipeh3iE6keMpYoVO70zCbbzW1nnBW0Okb4hyKrn3SDYUFg+aM/w9vTlk0EGW9rQLnW6igodVdChJhmn9uB7lnvxUmXRgFdb+SUa9fusHwpMwqdfuiLO6Vj6eOzMpmpeU0C3MYLNov2FD8V/SXXQ== Received: from MW3PR06CA0018.namprd06.prod.outlook.com (2603:10b6:303:2a::23) by BY5PR12MB4146.namprd12.prod.outlook.com (2603:10b6:a03:20d::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6387.32; Tue, 16 May 2023 23:00:12 +0000 Received: from CO1NAM11FT025.eop-nam11.prod.protection.outlook.com (2603:10b6:303:2a:cafe::e9) by MW3PR06CA0018.outlook.office365.com (2603:10b6:303:2a::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6387.33 via Frontend Transport; Tue, 16 May 2023 23:00:12 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.118.233) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.118.233 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.118.233; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.118.233) by CO1NAM11FT025.mail.protection.outlook.com (10.13.175.232) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6411.15 via Frontend Transport; Tue, 16 May 2023 23:00:12 +0000 Received: from drhqmail202.nvidia.com (10.126.190.181) by mail.nvidia.com (10.127.129.6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.5; Tue, 16 May 2023 16:00:05 -0700 Received: from drhqmail203.nvidia.com (10.126.190.182) by drhqmail202.nvidia.com (10.126.190.181) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.37; Tue, 16 May 2023 16:00:05 -0700 Received: from mtl123.mtl.labs.mlnx (10.127.8.10) by mail.nvidia.com (10.126.190.182) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.37 via Frontend Transport; Tue, 16 May 2023 16:00:04 -0700 Received: from sw-mtx-008.mtx.labs.mlnx. (sw-mtx-008.mtx.labs.mlnx [10.9.150.35]) by mtl123.mtl.labs.mlnx (8.14.4/8.14.4) with ESMTP id 34GMxxSf019536; Wed, 17 May 2023 02:00:01 +0300 From: Tony Duan To: Subject: [SRU][J:linux-bluefield][PATCH v2 01/10] net: flow_offload: provision conntrack info in ct_metadata Date: Tue, 16 May 2023 17:59:50 -0500 Message-ID: <1684277999-18029-2-git-send-email-yifeid@nvidia.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1684277999-18029-1-git-send-email-yifeid@nvidia.com> References: <1684277999-18029-1-git-send-email-yifeid@nvidia.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1NAM11FT025:EE_|BY5PR12MB4146:EE_ X-MS-Office365-Filtering-Correlation-Id: 06b56b48-93a4-450d-aee0-08db56614e45 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: xjOQc2dQiqDA9mW7QAt0qLlBudAhgZT1RgXyo/MzVK0ObjIFyy821K7uYRIlInd7IEZvRuSwoiKcbB2Hg6kbEEgAd4UEPuVrrfOQDaXWX9W4rpVyI+tiKxE4v3BqlcX9c9CNspDLgf705CzOKhZk5bnyqrfUGIYBSiuRDFlS/cedWmCr0zb2fJwC9etRp9sUAVZgH8Sde1xY9QukHWI0nkJmS+Y+GQHcJnn4+b7jJWVIV/Ufkd7rJ6mxky3KFKomZSTPdyV7xGuqa0AEwz3J+bs4rQmNs3bZu0Ka3Rm6o+flgaJx2SCKdAyWOjpN4MPX8jAOdWIIan7LLo5E3WoGfFKOGysCpc+TX749IR04g0VcBPNK5KRcGbEJZZcGszpNvJwQMHMTziEFVPirizXl5T6PMW1DvPjZHviUFPUOu4RNk97KOuO2IaTaFck4ZMTfTVLY92WwbxfziyIQr2NErFPeaEr9mDJhN38RPgJBbZmkSAKDNfD+JlW103cFsxq3MhsTDiYEqLQLqGeywYUPQBGBIMpuMJXPWHIwIHdTaNgEv7RCzywdOkOT2WVf2slmfetavIgmuN9CrHjzf5LvWYTD6zGh8S3Tmpc5KjpylcxXF4u5erIiOCMD6h6VSFaAShVcMFCJuePWienZ0Pn+z/tf/BaAlmQJwfwBpEbYzAPjGYqVP6KMuMv13Jy4eoch0jbQOBxl43hXXA7VJnTmWZ65Xb/AgLBbjAqky55cm1BCvO+ZmdrcEnN3SbXHoTYE5NQ0cdgj9MGGtmsQ1ue2xAGiiZjhNi9s9lVA7HDI/Hw= X-Forefront-Antispam-Report: CIP:216.228.118.233; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc7edge2.nvidia.com; CAT:NONE; SFS:(13230028)(4636009)(376002)(396003)(346002)(136003)(39860400002)(451199021)(36840700001)(40470700004)(46966006)(186003)(2616005)(26005)(966005)(336012)(82310400005)(47076005)(83380400001)(6666004)(40460700003)(36860700001)(36756003)(5660300002)(316002)(2906002)(478600001)(40480700001)(82740400003)(86362001)(70206006)(4326008)(6916009)(70586007)(8936002)(41300700001)(8676002)(54906003)(7636003)(356005); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 May 2023 23:00:12.7281 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 06b56b48-93a4-450d-aee0-08db56614e45 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.118.233]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT025.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR12MB4146 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: bodong@nvidia.com, vlad@nvidia.com, cascardo@canonical.com, dann.frazier@canonical.com Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Vlad Buslov BugLink: https://bugs.launchpad.net/bugs/2019264 In order to offload connections in other states besides "established" the driver offload callbacks need to have access to connection conntrack info. Flow offload intermediate representation data structure already contains that data encoded in 'cookie' field, so just reuse it in the drivers. Reject offloading IP_CT_NEW connections for now by returning an error in relevant driver callbacks based on value of ctinfo. Support for offloading such connections will need to be added to the drivers afterwards. Signed-off-by: Vlad Buslov Signed-off-by: David S. Miller (cherry picked from commit 29744a10c59ede4f996c0c893127ac11bcc85c0c) Signed-off-by: Paul Blakey Signed-off-by: Tony Duan --- drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c | 4 ++++ .../net/ethernet/netronome/nfp/flower/conntrack.c | 24 ++++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c b/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c index 94200f2..53684ac 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c @@ -1007,12 +1007,16 @@ static void mlx5_tc_ct_entry_del_work(struct work_struct *work) struct mlx5_tc_ct_priv *ct_priv = ft->ct_priv; struct flow_action_entry *meta_action; unsigned long cookie = flow->cookie; + enum ip_conntrack_info ctinfo; struct mlx5_ct_entry *entry; int err; meta_action = mlx5_tc_ct_get_ct_metadata_action(flow_rule); if (!meta_action) return -EOPNOTSUPP; + ctinfo = meta_action->ct_metadata.cookie & NFCT_INFOMASK; + if (ctinfo == IP_CT_NEW) + return -EOPNOTSUPP; spin_lock_bh(&ct_priv->ht_lock); entry = rhashtable_lookup_fast(&ft->ct_entries_ht, &cookie, cts_ht_params); diff --git a/drivers/net/ethernet/netronome/nfp/flower/conntrack.c b/drivers/net/ethernet/netronome/nfp/flower/conntrack.c index 7e9fcc1..39cb8e6 100644 --- a/drivers/net/ethernet/netronome/nfp/flower/conntrack.c +++ b/drivers/net/ethernet/netronome/nfp/flower/conntrack.c @@ -1658,6 +1658,27 @@ int nfp_fl_ct_stats(struct flow_cls_offload *flow, return 0; } +static bool +nfp_fl_ct_offload_nft_supported(struct flow_cls_offload *flow) +{ + struct flow_rule *flow_rule = flow->rule; + struct flow_action *flow_action = + &flow_rule->action; + struct flow_action_entry *act; + int i; + + flow_action_for_each(i, act, flow_action) { + if (act->id == FLOW_ACTION_CT_METADATA) { + enum ip_conntrack_info ctinfo = + act->ct_metadata.cookie & NFCT_INFOMASK; + + return ctinfo != IP_CT_NEW; + } + } + + return false; +} + static int nfp_fl_ct_offload_nft_flow(struct nfp_fl_ct_zone_entry *zt, struct flow_cls_offload *flow) { @@ -1670,6 +1691,9 @@ int nfp_fl_ct_stats(struct flow_cls_offload *flow, extack = flow->common.extack; switch (flow->command) { case FLOW_CLS_REPLACE: + if (!nfp_fl_ct_offload_nft_supported(flow)) + return -EOPNOTSUPP; + /* Netfilter can request offload multiple times for the same * flow - protect against adding duplicates. */