From patchwork Thu Jan 26 16:21:30 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Aurelien Aptel X-Patchwork-Id: 13117439 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id EE5B6C54E94 for ; Thu, 26 Jan 2023 16:25:25 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229577AbjAZQZY (ORCPT ); Thu, 26 Jan 2023 11:25:24 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33692 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229639AbjAZQZV (ORCPT ); Thu, 26 Jan 2023 11:25:21 -0500 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2089.outbound.protection.outlook.com [40.107.92.89]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 328C56F23F for ; Thu, 26 Jan 2023 08:24:36 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZhdtvJ7co8vlUivFAsc8HUq4r5gKHeFOg3U1K0ZmTJhdpORj0xrHZJ7i365dIBZ33P86HvJJryNQNfRIDXK6b3BOUN068poJmu/qgFjw4TgyXUequL2afGtEaeBrbQeHVzznANZsNctydFZPBftVdv0SXJ0Uctlk0/VtSpEaPJ9jpaNzZFIrYPfceTda0R5D6yrtcCTAZc8/86TcDbskBgEyRU5AsrqN5ZKOdh1UD9RAqbZJSi+XoA/LLBEsZs4yWka1phqrxbIHyw8CEsIqYt0ZhKnUaYVA97mm8E3W4ncl1IhisYJsBQNVVMguYZbEjgKNHCKWqdcSce49bbc3yw== 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=frZ8+7cWKtArgmDeA3M3gyIsxjFNZwS0sSpJ1ht1F0k=; b=VwhQb2CN1FvUFXoYFoHNBBEt3lvDGv6Sxwy6A6C1m4Pz4FaxPubb8DuKk2Ltjvz0CMt36dZ5sDq/xQyF5aGHsbR7vFU8ZW6AIQHByuT5kDQciflIeGiV/ZwK0G5vof/hCc/fpUhjbPemwFmnHGyE/KamTHgUWb+4Psq3F/TC1ZtZ6+WegHjUY25cCcSjuOtd0pWRL2R5NyYzuE7bMGnldBAgfohlBXUfPeqehzQHg0pfUPXDWkPEa42bxcMzg+KelXZwMmi+gEYIg6pFNF9IMlsMDe3sxPatt5FqR/7GSZpacsbPTpjnCEOSXLL76U7KWMJPeEHEcJAg7/IBavDb5g== 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=frZ8+7cWKtArgmDeA3M3gyIsxjFNZwS0sSpJ1ht1F0k=; b=CCn7ax06XpEwL2DGhsoYRBCc81Z46ALI0oej5Xj1yUqz8J9B7yaMo4JSTYMF8jNr/+whHS8flBpin+jqIcfAQyR/qahhX9m7LJsQ2lxsB7YFA12omfAvtzJlnop/jR/hqO/KYOVpwuZ8Ey90SCzwDUZ0iuk4ZDWIdcJoYqLOYOCyv8Tsrz+aMi1+HEhB6RPntZxqZQxPRBFOMfOVWWlv09Lb5KKbfRVBtcUzuvgvvbNlTKW6ivR6tLokfiDHl7XSAGTVaav/skLnXBjyXlS4pTUUhWkb/igCXf0YGJC8RSg3W98/PGQOKeGZ84/mTmYm8G9o2yK5CtTEzPqmJPY0Rw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from SJ1PR12MB6075.namprd12.prod.outlook.com (2603:10b6:a03:45e::8) by PH0PR12MB7792.namprd12.prod.outlook.com (2603:10b6:510:281::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6002.33; Thu, 26 Jan 2023 16:23:44 +0000 Received: from SJ1PR12MB6075.namprd12.prod.outlook.com ([fe80::9fd9:dadc:4d8a:2d84]) by SJ1PR12MB6075.namprd12.prod.outlook.com ([fe80::9fd9:dadc:4d8a:2d84%6]) with mapi id 15.20.6043.022; Thu, 26 Jan 2023 16:23:44 +0000 From: Aurelien Aptel To: linux-nvme@lists.infradead.org, netdev@vger.kernel.org, sagi@grimberg.me, hch@lst.de, kbusch@kernel.org, axboe@fb.com, chaitanyak@nvidia.com, davem@davemloft.net, kuba@kernel.org Cc: Aurelien Aptel , aurelien.aptel@gmail.com, smalin@nvidia.com, malin1024@gmail.com, ogerlitz@nvidia.com, yorayz@nvidia.com, borisp@nvidia.com Subject: [PATCH v10 19/25] net/mlx5e: TCP flow steering for nvme-tcp acceleration Date: Thu, 26 Jan 2023 18:21:30 +0200 Message-Id: <20230126162136.13003-20-aaptel@nvidia.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20230126162136.13003-1-aaptel@nvidia.com> References: <20230126162136.13003-1-aaptel@nvidia.com> X-ClientProxiedBy: FR3P281CA0151.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:a2::12) To SJ1PR12MB6075.namprd12.prod.outlook.com (2603:10b6:a03:45e::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ1PR12MB6075:EE_|PH0PR12MB7792:EE_ X-MS-Office365-Filtering-Correlation-Id: c3cfcfd4-d4cd-4177-7ee9-08daffb9b1d9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: FWQlVEBpXzfFvMb6llq5A9A/x2a8A08Vqr5nkGEVdZ5xF30WzmvP0zuuQFUCXg2h3R+aGtAVu9PKs4WUFS9kNg5yOZbGK4grNXmVKmC1TXQeZ0yk7SbZa8EGwHalG6CE5h9PkAeETgLJS0a4YJZjQkmR1B4cDP0Wwbvn/np2qIoogrYg6xUUkcXqII2Z9sB2q1m198BXEaYmsJzzL90xHQkwcDHzEUqM6/VntdxKvztNWCMcb0vG6TKEor6CPXrt5KBmee3t0b6AZK1WhwN59J3EXF0qgvoxDDbj8q10HFKgoO7lWn86xnLiMxFxS7NfYfmKeFn2pUduKIHgBpLgYl5lrNmTCSpeE8oHGIxL/zXLU4jMm39O2ag6uhUKW+LMkhXAedGIgziDWdGwJkBzW9gve/qw9WJToSwmczECtUxUr15MPUHDuX3Vv/BnNmO/poXyO9Um3CcgbBaw8d4LcqPa4S3++VS0swvGupLYOR825+NqEI6MJ9qyd9M40Ox2O7WUKt5HDjMPbq/K0bIf/OvmBSKylVXYsasjtznIzjPhXHy6giDCzlf4YUlGOQ6pTCueieNnAOaLMb/dZEu22SEaOrZWdCeoppjk0in4Dv35VRkYng5nAKKUwuV458Gh3Otaq8fY+NNY4gC/sz/W3g== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ1PR12MB6075.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(4636009)(346002)(39860400002)(136003)(396003)(366004)(376002)(451199018)(4326008)(66476007)(316002)(36756003)(66556008)(86362001)(66946007)(8676002)(6512007)(107886003)(478600001)(2616005)(26005)(83380400001)(8936002)(186003)(6666004)(5660300002)(1076003)(6486002)(2906002)(7416002)(38100700002)(6506007)(41300700001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: LJwsoh+7Es5hAKmW8+TE5HEhQxov1BAHWiXT16OFOM0Nn+O7U6nAQAJsyDX//uqPamSNEMW2Ola7jxlNA6SS4V2xGnUmkiqs6RjukAaUEq5bxHtA8DxCENOOfGHsGdeUNJpZsoYKX1+fCJSNS3/O8yF5jkmDeWieb/Pe4G0j+5SNF/jhLhpK5qebJW+8+xR8+DcOlkXjNX2cMJh+rymmcGa3+aBGZIe1iDX2u8HIudQaY13j86tf7uRf/TcmwgtQkL70f+Bp+00ZWySqYktrOLrgXdxQCpSRbeVzfehxZVZ6Q4HsiwqokMDDwWSUGjsJ2GaQrSGuUcgJnRXtHEgpiueJ5/eiMIXnyQZMXrMXpfcn0Xi+ISwGpGDF1V2p9g3P5TWQfy1UoUH1bCglo4rdrjJbJaqD3fE2FEfgEIU2ss8gD5+wd8a5dqCkV+PcCunhQMcQKORL/xNWFiRqifwoa7pbzAjOhSgaUH0IG4b3/aN/bUmNdgbK9ad1sZyqkQdnPhkPSh1Yovvd6iyVeeIfWDRhj9XvBzBOtkkcTucA5UfrWkJHoc0q4rxeaLhjNOv8PWFCl1WcUndE7koy9sSYThQG78u5PSEmEILfExnPJuC+WY7ZWD99cBqubDmJAipM5OP7SXwizltdZ/GdFJay7WqhuHkAFvVh2Tkslxs6e9BdfzaNvsU9pPYQLU8mB1ptx3YFVxQWuG9AMtuuJrSa7zouM/yIYMFcybi+fIiooMWqtWiswoliIfFb4N2jw3OCl5VF6f64IUjjr5En8Mlahsxw6IcFBlaJrRuETAR1JXrWhk9TVis5JCUu4FVe2qSSik0q0cBbDjSCBZhVMEuyBH7Qeoy10w3W9ACvHVmBqxrHVKCw/bxBAo9aZcUjXjbGefUwiK65WBPi8wI4l5ncjyX2ok1aw43uCfRdBV+Srmh+2iXQEiC11AauuqTnl86SnBlit+sKo2DPofylbrBujte7r5E9igL7Z2bC7/Iw53aLPkbFfPHlyMAhOJQiOBdgUvV5LumegO7/aWRBG9fFqXqyH4+fRvbbbJs/e1OgkTbLYOOGfwnBx3vwpD1tSY3Sj+BpwVcCpu88ieBDWrlgcfyfHCAVJOlzDcyc3aBRQkZbAKtiJP3wOtJeG7F9obq3rQ/5HDkmLNq3/lO6OR9jw9RTI8aP//3DUx4FJdf7Wz4rxY8vFuDizChGN6aQvbGyV7gQ09/d3jAFE0TCLZSz594kmT6nWRnjitgd8Rpxxb80LoosoFiWB6GY/x3FJuRI1c/yXBiLhffgCbbH//jJFrtB49V39VKNx4e5UpRBVjfNkDbUnyBEfoSGeVrSkiZRatVPATFaF13UviMPYYR/7/r8XIP23NkBcBvZDuFjsKTklzLlg8xXPllTCQptTKTOIm2Iw54EUAZpn1s5Lxk8hu3msqNRQm6EYHNxlgqF/fT/RoLX3HsCqNrs/ukEhNqhDuRWe9Ft+aS+WQz9mvLZTDYyLZDHVqWPO/BUDbQ//hXF6tFAIaQ38Zu1Hjb9Kre3OOBhlZN6igxEQEpMLkut6oWC198ElYz1UoRPxmJsBIondOBlnwbWcPy2dutMpZf1 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: c3cfcfd4-d4cd-4177-7ee9-08daffb9b1d9 X-MS-Exchange-CrossTenant-AuthSource: SJ1PR12MB6075.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Jan 2023 16:23:44.7181 (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: MHu17EiTcfFPt/98rrWh0PAAoGv10loqcNLxc8kdNBpbGDI+x6knVMo+kf4D2HU3DM2Rph48LhFiGPkM4X59eg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR12MB7792 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org From: Boris Pismenny Both nvme-tcp and tls acceleration require tcp flow steering. Add reference counter to share TCP flow steering structure. Signed-off-by: Boris Pismenny Signed-off-by: Ben Ben-Ishay Signed-off-by: Or Gerlitz Signed-off-by: Yoray Zack Signed-off-by: Aurelien Aptel Reviewed-by: Tariq Toukan --- .../ethernet/mellanox/mlx5/core/en_accel/fs_tcp.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_accel/fs_tcp.c b/drivers/net/ethernet/mellanox/mlx5/core/en_accel/fs_tcp.c index 88a5aed9d678..29152d6e80d2 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_accel/fs_tcp.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_accel/fs_tcp.c @@ -14,6 +14,7 @@ enum accel_fs_tcp_type { struct mlx5e_accel_fs_tcp { struct mlx5e_flow_table tables[ACCEL_FS_TCP_NUM_TYPES]; struct mlx5_flow_handle *default_rules[ACCEL_FS_TCP_NUM_TYPES]; + refcount_t user_count; }; static enum mlx5_traffic_types fs_accel2tt(enum accel_fs_tcp_type i) @@ -360,6 +361,9 @@ void mlx5e_accel_fs_tcp_destroy(struct mlx5e_flow_steering *fs) if (!accel_tcp) return; + if (!refcount_dec_and_test(&accel_tcp->user_count)) + return; + accel_fs_tcp_disable(fs); for (i = 0; i < ACCEL_FS_TCP_NUM_TYPES; i++) @@ -371,12 +375,17 @@ void mlx5e_accel_fs_tcp_destroy(struct mlx5e_flow_steering *fs) int mlx5e_accel_fs_tcp_create(struct mlx5e_flow_steering *fs) { - struct mlx5e_accel_fs_tcp *accel_tcp; + struct mlx5e_accel_fs_tcp *accel_tcp = mlx5e_fs_get_accel_tcp(fs); int i, err; if (!MLX5_CAP_FLOWTABLE_NIC_RX(mlx5e_fs_get_mdev(fs), ft_field_support.outer_ip_version)) return -EOPNOTSUPP; + if (accel_tcp) { + refcount_inc(&accel_tcp->user_count); + return 0; + } + accel_tcp = kzalloc(sizeof(*accel_tcp), GFP_KERNEL); if (!accel_tcp) return -ENOMEM; @@ -392,6 +401,7 @@ int mlx5e_accel_fs_tcp_create(struct mlx5e_flow_steering *fs) if (err) goto err_destroy_tables; + refcount_set(&accel_tcp->user_count, 1); return 0; err_destroy_tables: