From patchwork Mon Jun 27 07:06:09 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 12896287 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 0E3C9C433EF for ; Mon, 27 Jun 2022 07:07:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232577AbiF0HHK (ORCPT ); Mon, 27 Jun 2022 03:07:10 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53396 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232573AbiF0HHJ (ORCPT ); Mon, 27 Jun 2022 03:07:09 -0400 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2067.outbound.protection.outlook.com [40.107.94.67]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1675A5F78 for ; Mon, 27 Jun 2022 00:07:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PWskxIjTCk4ZHMfz8w1MqJBwTeg/C8K1cE9hj+W7/EPPy/4EwOYaPYFrKZCo8eebvmlqG5Zh4nWtMkHFZ5QkccHOMzsVkQjLk0/+23ja0Q4tzlUJyJF1V8kuuO3/+TlA7SmfP1GUJPw9tBXXKx+H1VXO9EbefNmyVnePtrUCq3X7Vzd6X40cdbGIdspHKkN5pggUoKh4uUVf36YMH+v17Yrji3+UKmyBoedgfnIOAzr9YexjSSxbkczvFUoYpSEXc1+7o/LEyfyc7HeZ8Js7rWselivERKpUrES51fO3lhD4oAV2X+5mGSMGhb9aYmR5SWYFrMNoZscHpCkzNYWGXQ== 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=ppvQexsri/rWAWgnpl3/Xq7iijohLHZIwQnZulVEBP4=; b=hFJmzyCPCfQrWj59lTi1ZCdoNUMitMwIYNfMLUCETZQtbVT0ke9F1dJdIRXE9weZsPzeK3g1gMkR8vEaUAaE6IdNXmQFHrR94mt9lMoNgLsInwX/UGT6La7IeNa+oW5G9eMPUsl3xU81X1tJFpM5WnmmecIO9T1xeaU2TYEUvVNM3p7QJyGWoOrg6naVXj6ZVGZhTV3LSz6Uk8foYO5t1d7Y5pDEkEOdDrpyerb8kPs5KfLrZglvkJofznK8l6MgkrqxrrD3C0KQuDhyVQIb1Fex85PvwgMFib2tHmZ10cu0ylqkXVlzG7uqkmNUF9Zk0vQv1AfmHS3ar7hXqPUYsQ== 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=ppvQexsri/rWAWgnpl3/Xq7iijohLHZIwQnZulVEBP4=; b=lnmHkod2C27DfooRloR/woaNZV/RdRNRHt4uW6DwCMpJBwwLoJpjA/tK3k5f3YKW6FRMCrzNIYzKuHBYlw7ihT+Dd31aCYWokzt7Z1b2Hq1l6kNplnVkS+xzK0hgvM1tIzoZa8Gasfeyj0aGtJSDN2EhAWC/wSzQNw35Tx3zbDD6bmaFALFD0aOTCPVN5g9KlZ6TxmdCUS7xtsR0cjOojQeuQQrmDzH/LwBrdnvLtddDGD2rbdj7ihaSm/TvgNJFvj39PQuhoB2rleUJPFmXW16Opi/uqB4JVKr84O30w0QoL4MpHd9v8CyLlQTUuD5EOCoXw7nCV35LaVZN/xXgAw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from CY5PR12MB6179.namprd12.prod.outlook.com (2603:10b6:930:24::22) by SJ0PR12MB5439.namprd12.prod.outlook.com (2603:10b6:a03:3ae::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5373.15; Mon, 27 Jun 2022 07:07:07 +0000 Received: from CY5PR12MB6179.namprd12.prod.outlook.com ([fe80::611c:e609:d343:aa34]) by CY5PR12MB6179.namprd12.prod.outlook.com ([fe80::611c:e609:d343:aa34%5]) with mapi id 15.20.5373.018; Mon, 27 Jun 2022 07:07:07 +0000 From: Ido Schimmel To: netdev@vger.kernel.org Cc: davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com, edumazet@google.com, petrm@nvidia.com, amcohen@nvidia.com, mlxsw@nvidia.com, Ido Schimmel Subject: [PATCH net-next 01/13] mlxsw: spectrum: Add a temporary variable to indicate bridge model Date: Mon, 27 Jun 2022 10:06:09 +0300 Message-Id: <20220627070621.648499-2-idosch@nvidia.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220627070621.648499-1-idosch@nvidia.com> References: <20220627070621.648499-1-idosch@nvidia.com> X-ClientProxiedBy: LO3P265CA0011.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:bb::16) To CY5PR12MB6179.namprd12.prod.outlook.com (2603:10b6:930:24::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 0e2c1b45-c925-4f51-e73e-08da580ba5d4 X-MS-TrafficTypeDiagnostic: SJ0PR12MB5439:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: vDwHyyV0U7AV1vpt6XsIss5euW/2CpZjTteINncOOQ0ifgk0S4sua4FLyZbK0mzDVkC5RjQzwWIBfd1BJgj0n37LFo6qixgNDWIPDLo2kqVVX3Rw3irsy2hCfK4KXnEETbdY/hOTHqGID8q/w55JmsFgM2cPanffEj3fqy3dNXUbm5bkLpRAdheKMNy83Qh6UBSi+0wXuckevUb6+PFKcNCVp3/CZWPM3Uk2NoTfJqEC8yN9L74V6pFY+sOVvnhHlEPa6jCcTUmovgPn5anLfwfoSLznaFuvzG+Qoa7jFF5YvUlcaHmD+fHAYd7pcUdz/ekffiQn9eZ6eE3X4aRMt6k0wCpS44ZDwUc4QG88dy8UDJDCHNFCh2BPTONh6+h81QX5HVPDbittmIj7746QlIVIhR6q8qT7aUZ/K/kjhpuv4k+9qEJJtbH2G8NMOxiHQsCr3BYHz7yYXQZ+RATfPFt5dTiE8t8rz6zXeXbIc8EFJA9UyydhK1jaudDnoLO4sSA2Ix3EQZ63SL6IOZQWfwK9+DVsbmbG2pz6LJoC59idQIFfIDSZjv7Fyaw+VZbiVkZVh3lcHV5Rd/ZwgpVVT0FTnTlE7iw1Et9djELvc1f56s4bIPjXg6bqQinK5FpwviF4/XQ67rHslpUqukKmPma+M7qcCVFu9RafofAmn3xyvxV5LTYjUNgFflcIxpm/7dSMznkrmrgbktkWcL1lP331nDx/pS/FLuXj0kIe50/Uaj2uCJnZGf7OUx/vQqEe X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CY5PR12MB6179.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(396003)(376002)(346002)(136003)(39860400002)(366004)(6512007)(2616005)(36756003)(6916009)(66556008)(316002)(107886003)(1076003)(186003)(66946007)(41300700001)(6506007)(2906002)(38100700002)(66476007)(6486002)(8936002)(478600001)(4326008)(86362001)(8676002)(83380400001)(26005)(5660300002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: vLXTamTxqEZQ9KQGBCiY9zzDMl6R4XqBySZ7hWK635WDH6Vtplzt5BhN6t01ToFzyIE6Bl1ekqNM7AxnreT9C+E8n4k8LYLMO7BCQ2i0hE6YqRpgnBxbiNphCmV8b/GGLJAWWob/oJzYg5OWbZtymii5ZHLn4oKodfeI6Tle4OQ8UNtYrhfBUJw9EbXhX+b+/XsNW3PqlSlRPG31fyiXU24U1pFd64hXbcY/yoMOz+lrIE2R2hqp4bSRN0+3u7agz+NNHqhKUX4iuD/3q4kPon6bal0oDakUthmmrc+k8aQZIgAefMku78BeFfb9V6ojhX8PY2a0p6viZpq4467MUXSgNT4TDDUzpMuxTKvclGeLMaUwKmcfcar3dyqQ8e1zRKzd1OffgTI0tLkWfmfoTQenYLH++8WX8xkJ/WeQiqq7Jiv9D9sQuZOn+zqYJnUby6tSyWqgm6EtKz/Uop7If64exPutq0lbianm6E0qMfnoIEcu3vWXMRR1VdKUtbK1eVjLf4X8RenMN5rp5O7Ur8O3ng8IKe0Y5KAPlFQKarC6DyZAv99z0/s5n+0nhCnpRLhwKYiJvQpi6VMEDbqMU+RjyrG7dDmfqbqorMlkyN1oczoYWiaS28bNfeh9oGXKbrF0CN/cA9AiKcdCd6nJRaHk2XPWtDDMc58KHvJT1cwp5s7gn26UKN28KRL5G+EoLFy/aaFdmduo7GDzF8/xL/ECtUlRgN9Q2vf1Y/VaAe/ZHHM8H0bcYH5kXfA31PQCA0WpvCDVdC/vHBg4kq0bTXTHUdFXwhXma9cYoLYpUlVXT5AdoTAKa/1Dz7u0j4OPM1sHeb23ryjj3Elkurp/WT+2rnvVSYTSGDCbx1HCwyV/Au4q21zUS/Pc92tXt7dfoVk7hvgr+jViwzKpiR7kh6xLyIlpOj0o/4bzRoHfSHBaUgsOAXflo7GcNunJfu/tmssCAN58sNBJIoav63FT38O7DZyhrJUMNF8eqqR68iHvYPW7e/VpSn1ux77I0+8eIbQ/PwY15r6lqcSm9jc6cfSipKR51GuNJXjUbpn4zbXU9qkxqB+7j7ymdfCAKIVDK+2CkofnLdynp/+B4lSU1zAqSnwb6Y4PLNi01LrKUGms5CUxgH0s56XKdylzu8ou97aVJzcYPc+I/wAGXzua4jy4UpvT+irhefuldRJvefmQ2i9TRzjOwKq93H4sUwhOoX1q+tX1MfFPPrVHW66RB+BIjypsyodZx+yQbwl9ZeUJZu/9z1LNfsIE0dEAUMwihcL92wK4q2ahZ4KcKeG9gCQhIIo8uE7BcNi3w0AQsVTPgXyS7rzZtQ1NHNYck7CBiasgn8/p7sZitXipfwNTiZyzqkM95Mb2FmJrzRW5a7AX2Ilb0N1lvJX2eBS45kI2aE9PRmuwG85BmX2MFsdgd51msMu+I/K0wX0IJ47d24fzuu8oETMLqjXOaYLwbNsVIu9yzgvb4Rk283+D0VQQEOMIbDlhZD7Y1atcBS/nEW5YYrsZevqYmNjC56rasclaWA0o4YA4MZn3SQCL8jIexQVF0F/ceixLg88pA0RGJZujahDO6+FmqbyewuIz9NI0 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0e2c1b45-c925-4f51-e73e-08da580ba5d4 X-MS-Exchange-CrossTenant-AuthSource: CY5PR12MB6179.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jun 2022 07:07:07.7518 (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: xmVE3Reaj3l6PLEYH4HJLltzPjOLAxkKJzDafWxT5LVJQ93buV8aq8hLA8OMiW0rN/GuUmBSV679IzbtuyNuvw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR12MB5439 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org From: Amit Cohen As part of transition to unified bridge model, many different firmware configurations are done. Some of the configuration that needs to be done for the unified bridge model is not valid under the legacy model, and would be rejected by the firmware. At the same time, the driver cannot switch to the unified bridge model until all of the code has been converted. To allow breaking the change into patches, and to not break driver behavior during the transition, add a boolean variable to indicate bridge model. Then, forbidden configurations will be skipped using the check - "if (!mlxsw_sp->ubridge)". The new variable is temporary for several sets, it will be removed when firmware will be configured to work with unified bridge model. Signed-off-by: Amit Cohen Reviewed-by: Petr Machata Signed-off-by: Ido Schimmel --- drivers/net/ethernet/mellanox/mlxsw/spectrum.c | 1 + drivers/net/ethernet/mellanox/mlxsw/spectrum.h | 1 + 2 files changed, 2 insertions(+) diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c index e58acd397edf..6b17fa9ab9c7 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c @@ -3155,6 +3155,7 @@ static int mlxsw_sp_init(struct mlxsw_core *mlxsw_core, goto err_ports_create; } + mlxsw_sp->ubridge = false; return 0; err_ports_create: diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum.h b/drivers/net/ethernet/mellanox/mlxsw/spectrum.h index 80006a631333..828d5a265157 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.h +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.h @@ -216,6 +216,7 @@ struct mlxsw_sp { u32 lowest_shaper_bs; struct rhashtable ipv6_addr_ht; struct mutex ipv6_addr_ht_lock; /* Protects ipv6_addr_ht */ + bool ubridge; }; struct mlxsw_sp_ptp_ops { From patchwork Mon Jun 27 07:06:10 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 12896288 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 C7DF7CCA473 for ; Mon, 27 Jun 2022 07:07:18 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232582AbiF0HHS (ORCPT ); Mon, 27 Jun 2022 03:07:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53538 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232592AbiF0HHQ (ORCPT ); Mon, 27 Jun 2022 03:07:16 -0400 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2074.outbound.protection.outlook.com [40.107.237.74]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4CB6C5FA9 for ; Mon, 27 Jun 2022 00:07:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lVJwB2x2nzHIIRVim7kcJstI1CFSZxQ9PjUULjPWlcebzili5bjPmgETSrsV3AicxJ4WGSGE8t1UBcavCulqwE9I0ZQOklD9kgPfU58tTJcROv7I5yEjqRTkwIyaeVH5AAZ0Hbj4DvSK2g6c6RRwq/QvrLpRpen66CX27kc2wz7C9koWIBHPMEbNpzbAixVukPSFe0JBXwlcWsdpERSZ0nGcNQJ/isTW8gP6Mj+wXC7D6Mu9lF6NMOG2wLQ7f7oNoIkTHW+LYbrPggp4gTQAKMBf7cA16AGN6x9m6nhOPRHQVLxK/n/InDBMjnNR/8FPTMp70U5gVk7cyIqQCgezeA== 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=g8WJVIbfQ3AIDmakzFZ4pU2KFBWj9roiSn+9Qapkcfw=; b=mRoE7zZHsDGS4EJVy2ayYeLrB0mCUKR0t1AG14aEuROXqev5WSIeD6Y3U4L2f/pa/jXBYRtK97LeNaJ7Ume+TgmtuJpaMll0Sq1Fc7xY36IZjJF62dGKUCkmz93hvfYGVB6tu6nK7YeDTjaPYcXknh5Obw2XpGuYSwf+QEMA9HEplI7dKXichsTgsJI9Q13mzchfyrw4MjDM2LNkZA8W5/S+ZlQLM6+s3uStm9lsEkcTqDk68aAYxfTnBWsz+68ueDZtGcZzh1SQsZkLdrtKkuBxFxReLvyINBxmdDm3rXFACrguJvR04suv7NlIgGljsKRSfMIqMaAJtpT2heDy8g== 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=g8WJVIbfQ3AIDmakzFZ4pU2KFBWj9roiSn+9Qapkcfw=; b=TOWakmY0OL4bDF1DLbUaTxMnkyZ5aW7fiEgE6Q/vL2IqTXkZlUVRMlMIhZ3RCbaGCcmjTOADy74jOcjv91I3KK7diD9M6K0A5Z38eySHem7Exjnm5uhavY2c9GRZ4OSB019tV6D2l6qsZQ3R2O2n4h7niC7hT6f8IqMjxovwBTbh//lJ4M/41xJgx7ozR1YGGFl1d3EoIOAApJIJ0ai/aHD3rVtKyqz0ovULh8ykDpwE6L/ljJ6T++HJFA35nye70HrSR7CGMvEMQzeWSWgTrWLkevxkuYeguPT/fMVKFyjBCe/dY/GdelscdhhoR3Q/si1bN/cV4Y/U4XzeR9WymQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from CY5PR12MB6179.namprd12.prod.outlook.com (2603:10b6:930:24::22) by SJ0PR12MB5439.namprd12.prod.outlook.com (2603:10b6:a03:3ae::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5373.15; Mon, 27 Jun 2022 07:07:13 +0000 Received: from CY5PR12MB6179.namprd12.prod.outlook.com ([fe80::611c:e609:d343:aa34]) by CY5PR12MB6179.namprd12.prod.outlook.com ([fe80::611c:e609:d343:aa34%5]) with mapi id 15.20.5373.018; Mon, 27 Jun 2022 07:07:13 +0000 From: Ido Schimmel To: netdev@vger.kernel.org Cc: davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com, edumazet@google.com, petrm@nvidia.com, amcohen@nvidia.com, mlxsw@nvidia.com, Ido Schimmel Subject: [PATCH net-next 02/13] mlxsw: spectrum_fid: Configure flooding table type for rFID Date: Mon, 27 Jun 2022 10:06:10 +0300 Message-Id: <20220627070621.648499-3-idosch@nvidia.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220627070621.648499-1-idosch@nvidia.com> References: <20220627070621.648499-1-idosch@nvidia.com> X-ClientProxiedBy: LO2P265CA0103.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:c::19) To CY5PR12MB6179.namprd12.prod.outlook.com (2603:10b6:930:24::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 1dcbe6bd-9d56-4500-ff15-08da580ba93d X-MS-TrafficTypeDiagnostic: SJ0PR12MB5439:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: tYvEp63+XZbzjZAMICv+VfECTw6OacfkYZS1S8UFCdAU++WIg09wFRGW4GfFpzg8crYQlvKAd6mZAKFUR4JKnD7mvUnubbYRK8sfe82GD6vB6IVUV6q9m6DGih35u2jmxqitNyd9HFXG3LiWAf4k6b5kb91zyFyrky3Mb9za4dq97jKOqt0lzNSOw1qp3qtdPBcNZ0cz9ul3F4IP10BLFgZnRNTLrXFOKaXvZtxmmIWsrog+2MD/l8EtLenV1CICYY76Z/lTyokogTU2DcTcJfNMZ/2ApC9IFDkQlaWPDyzaCkQH0S5OwhkcOb1vDOennmJZw6+FdHXLeGtUUxERYGCuDsQBW8ifpzONOGQDTFIQ1olYE1Rbixiu1n7QCqzyzzbqDZfIqOH3p7+cXxfEfSQ9IglqkT31FejL9of2SHYFoq5WhGFLY63crZWzprvnNhZ9iIrxkD+lFD874CufSRC+M8EYSBn+J6vkA1QhrEl1W60tTuXQbBnUI7Vw+WVbe8tM3ThCOSSmQKsPY53sInVneYlal7iofG+vHRnE6rpGB2bjdpiMwAxBV4bpbZSKbo/uHPRAaQqUBqFphMmapDcSJs27Aq/scFJ98zOo4Il3rM3Xw1rNEVbXGShkPeHgK+OxEeeIHIBMrjZOOZiAF0H7nylHtqHIpSW0v06RVuBTfgljn3CrpPsU5bGT5tr7TipUTSby9mZlqcXcQlG3X1qByVWt/HSA/nmoaJyYLQPvartXN8h9etdExSVAOey7 X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CY5PR12MB6179.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(396003)(376002)(346002)(136003)(39860400002)(366004)(66574015)(6512007)(2616005)(36756003)(6916009)(66556008)(316002)(107886003)(1076003)(186003)(66946007)(41300700001)(6506007)(2906002)(38100700002)(66476007)(6486002)(8936002)(478600001)(4326008)(86362001)(8676002)(83380400001)(26005)(5660300002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 11algpbsY7URA4oLatxUEQJiqCtqHe8IoUMe+klqgFZdo0hEgW0ZK0jgXLlMGgmutZvSSO3SKGtfG68mvryXXi0hD1gSPSNk2Nw9ojvsz93Kjki+I7/HcD3wV6oQi+9XCOG9pvH2IrCnx6/8UwNKYqEwoFIvccWufkUvKES/CwZ+moC/0gwQzz/IubV/5kuoQWQceWzSUCvXpW+WO2pePBK/xrEHkTBijtQqVwFUQ4NiwXSKSzr7aVoeVudk4OhLnyadgDAULbqYrkMsrI4/7FlIiU6eUUcP8O41uDvGOADnRrHMG6ve5Eybel33kg/yLPWAZNnDQN8WvwufM5H/7ohJ/7iN3ipVz/zNGqDljPPAIFvHY7egnjVt0biZybZ/IfDIMwVK5mpHAojC31xnUuSKiNMYQxNIsUKP54PR/n3iPuJYvKm9dU4nx2gSZ9Rzhv78iHVu+Eqd11rT8iy2CZzPBs2PFabPosRf8+mu8J0LyUUBbZ8C2+hyVwMynpEDK9MKjKqAMwqkhTqLK0DzLQbKxCN85OCXfU0xR3aBxOhnIALBMmtmhRo/oUsWZ0G7UTYKCc7qYX774E9FRjESTSqF2aGeIxlnRTrLNalgWQ7q+4EoI1ngQC81sJNDsuFm92RRVzCw5/FjzQ9ycv1Z4YMq0z+xe/haG4J9Bs9AK2ovnLx20KAtK84OLBt7ytTTuvC1Vs+ZkfUyx+WBOhabi5zx6QmIzkR3d4JG7YQEoD8vGowhAuUCWwFkUPS+/Sqdm36n5IcczYlIqGozK/S3OXNUx57NS02riTP7Pvp2u6HykyECUsv9pIzBPnZrDSboKfDM4UVV3HFeujXEMUiMU1ETznpN0zuIu/cx0T4/lUbrS88EKBCp4s3VPggaKU1qC9WQf/LrwISeMgUZpuR4vqoNpB5FNMwYrMougVLMO2Ymm5T+CZQ1h5cuunGWU46T/U+Rh3P8ZffVmuwQg9otrshy2fNEc0QHVEgQU2nHUNhLg+23gFUaI6JTgWWiBzxDsoPX7Qys1HP8T1G3sjHLmq/SPNNFlAXe6YtohiMwMqV3z4kEPl1rErzPjm2ArYtyDx6yq3W7852CeMAzO9VaHuKE0DhRLyxrwiwFNiDenkl+z/2j6exvWFzsO3V9d1l0eiaIbzULZ/1+AZztBjL5IwDPYOtKEZDYupubrLDl0Llu0sOnrlcNrb3mo19XP0h7c0ATpvnn2k8YrUOitSDx2FbHv2zPZV/YF0UTiFjEPgNgS0TrHIjx2QcqBYNkhLPr+d/wL1p5HaaE3/XDt5R+6vmn4fVEqQ967iI1bgRQUsl+1hKElffkb/ecTxq3uZ0X7a9qOfbq8sc9TJ3UXzgtNS5nusT3QxUGwQEv+7j6rxw5d89inQDuij8cuRBIPCrn79cXK6wXSGyFBo5Q+TINn3kmOKy3f1lFCOJz8Y46rpHiKrYFQGEpavvNxk1gpbYQ9ZHReKg1ioHyMcA5ePc/l4bdipm1G3phPdnX49IrouurjOAkVjQ+PSI0Jc5Z2d1gcFgWw1QFI6PbNpYQiVHY7v8lwTQNDAArm6jAECiJ+xYhViq5KjTjdwOn1laY8YPg X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1dcbe6bd-9d56-4500-ff15-08da580ba93d X-MS-Exchange-CrossTenant-AuthSource: CY5PR12MB6179.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jun 2022 07:07:13.4580 (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: hEc8l0vxF63DiH0B56XAPjgIL/Zm3hHWoxstsKhaZcY1JDWRF6jxVHcE+o6MUQYS8Z53F7Ym5pZKLpcNc6Zpyw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR12MB5439 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org From: Amit Cohen Using unified bridge model, RITR register no longer configures the rFID used for sub-port RIFs. It needs to be created by software via SFMR. Such FIDs need to be created with a special flood indication using 'SFMR.flood_rsp=1'. It means that for such FIDs, router sub-port flooding table will be used, this table is configured by firmware. Set the above mentioned field as part of FID initialization and FID edition, so then when other fields will be updated in SFMR, this field will store the correct value and will not be overwritten. Add 'flood_rsp' variable to 'struct mlxsw_sp_fid_family', set it to true for rFID and to false for the rest. Signed-off-by: Amit Cohen Reviewed-by: Petr Machata Signed-off-by: Ido Schimmel --- drivers/net/ethernet/mellanox/mlxsw/reg.h | 3 ++- drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c | 14 ++++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlxsw/reg.h b/drivers/net/ethernet/mellanox/mlxsw/reg.h index 7961f0c55fa6..80a02ba788bb 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/reg.h +++ b/drivers/net/ethernet/mellanox/mlxsw/reg.h @@ -1960,7 +1960,7 @@ MLXSW_ITEM32(reg, sfmr, smpe, 0x28, 0, 16); static inline void mlxsw_reg_sfmr_pack(char *payload, enum mlxsw_reg_sfmr_op op, u16 fid, - u16 fid_offset) + u16 fid_offset, bool flood_rsp) { MLXSW_REG_ZERO(sfmr, payload); mlxsw_reg_sfmr_op_set(payload, op); @@ -1968,6 +1968,7 @@ static inline void mlxsw_reg_sfmr_pack(char *payload, mlxsw_reg_sfmr_fid_offset_set(payload, fid_offset); mlxsw_reg_sfmr_vtfp_set(payload, false); mlxsw_reg_sfmr_vv_set(payload, false); + mlxsw_reg_sfmr_flood_rsp_set(payload, flood_rsp); } /* SPVMLR - Switch Port VLAN MAC Learning Register diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c index fb04fbec7c82..b67b51addb7d 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c @@ -109,6 +109,7 @@ struct mlxsw_sp_fid_family { enum mlxsw_sp_rif_type rif_type; const struct mlxsw_sp_fid_ops *ops; struct mlxsw_sp *mlxsw_sp; + bool flood_rsp; }; static const int mlxsw_sp_sfgc_uc_packet_types[MLXSW_REG_SFGC_TYPE_MAX] = { @@ -422,9 +423,13 @@ static int mlxsw_sp_fid_op(const struct mlxsw_sp_fid *fid, bool valid) { struct mlxsw_sp *mlxsw_sp = fid->fid_family->mlxsw_sp; char sfmr_pl[MLXSW_REG_SFMR_LEN]; + bool flood_rsp = false; + + if (mlxsw_sp->ubridge) + flood_rsp = fid->fid_family->flood_rsp; mlxsw_reg_sfmr_pack(sfmr_pl, mlxsw_sp_sfmr_op(valid), fid->fid_index, - fid->fid_offset); + fid->fid_offset, flood_rsp); return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(sfmr), sfmr_pl); } @@ -432,9 +437,13 @@ static int mlxsw_sp_fid_edit_op(const struct mlxsw_sp_fid *fid) { struct mlxsw_sp *mlxsw_sp = fid->fid_family->mlxsw_sp; char sfmr_pl[MLXSW_REG_SFMR_LEN]; + bool flood_rsp = false; + + if (mlxsw_sp->ubridge) + flood_rsp = fid->fid_family->flood_rsp; mlxsw_reg_sfmr_pack(sfmr_pl, MLXSW_REG_SFMR_OP_CREATE_FID, - fid->fid_index, fid->fid_offset); + fid->fid_index, fid->fid_offset, flood_rsp); mlxsw_reg_sfmr_vv_set(sfmr_pl, fid->vni_valid); mlxsw_reg_sfmr_vni_set(sfmr_pl, be32_to_cpu(fid->vni)); mlxsw_reg_sfmr_vtfp_set(sfmr_pl, fid->nve_flood_index_valid); @@ -898,6 +907,7 @@ static const struct mlxsw_sp_fid_family mlxsw_sp_fid_rfid_family = { .end_index = MLXSW_SP_RFID_BASE + MLXSW_SP_RFID_MAX - 1, .rif_type = MLXSW_SP_RIF_TYPE_SUBPORT, .ops = &mlxsw_sp_fid_rfid_ops, + .flood_rsp = true, }; static void mlxsw_sp_fid_dummy_setup(struct mlxsw_sp_fid *fid, const void *arg) From patchwork Mon Jun 27 07:06:11 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 12896289 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 DCA46C43334 for ; Mon, 27 Jun 2022 07:07:28 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232599AbiF0HH1 (ORCPT ); Mon, 27 Jun 2022 03:07:27 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53618 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232593AbiF0HHU (ORCPT ); Mon, 27 Jun 2022 03:07:20 -0400 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2076.outbound.protection.outlook.com [40.107.94.76]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id ADEC45F85 for ; Mon, 27 Jun 2022 00:07:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AYlwotFyvJyCvnuDNEYNUVJ29Xu0co7c7ZZsEB9Dh1nxGyS8QBO1iODsPV8o9wcbwBHjkcs5Ihn9zgFV+ybEGrhIJg2CYoVSKGqVFOdJstbdr5eb18qjl+9duOUgnbICRDrGBA84Cgje83pG2X1RwTh4qh0OMVOm4oQFO/nbMTGvFp+Oa1IUMcOerU7rEEM11A/tVImtsdLBLfBAHyfPfUanQ6cfY9Tvzm5ixRECp0XSqbfgF8MtYST4iOFp/zb5gs9kHfvl8ryInVX+QkdHbn9P1mCAOOAjD37C7+5YhHFMLCZlVk0SILcnZXKl0B92EpCdlPsCQkddMPQxIHyu2w== 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=6hG3uZCojnGt0WhrZmWSWPLx0JMuiFVpr7ToonRq2oM=; b=WCENfP0/rCphKvX+Hdcb5exn8/WC3YjardJGQHIXrltdNq/g9yI1df/2NP15bb42+PEVHCUu5WgnZDSZeeXn+zmzMPEvtgWAeeLM0OIaV+LM2PxzhhZvNNumOZLzrMIl5aPR6nKRzSDHLthdFiktHlAbUFIqHpbfxUpdA5jKiHzIBk0KvwoiHBZTyJeojSFXeirX+2Dvo2tUidrz05F1m8j5QPe0HMZSjigFHzMH7jN9QfS/cIgUsyZ2G1CCfk5I34+5eybHC/GyxPc3BQdhJ5jrbetzPqbdNLlznrJdCbc8xemqmQZQ5hwCvJSReKQ5Py0UFsgSb6IOh/mxOZX7PA== 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=6hG3uZCojnGt0WhrZmWSWPLx0JMuiFVpr7ToonRq2oM=; b=a8cEtXUXsCYlYw8myfH7dx55DOkJ1o/IeqVVAeAXE9l5lb9s98XKTL9dlCYle7RtYeg62fLbuA5j1qeAUaAwU6UNZDinS7+zxu9MDvzmBkr6R70ix2pYHQ+6H/2K7NTmGTi5YDDeQm/eI1gqW/YBBXj8tL0uTOyK5+IT5IL55MNuEF8/YhLrEHaaEsRVICk5+W0gMME7YgnOrK0wLYPa7ehnQzq4SlIfEr5MRwks6/14zQPO0T6dfVdKoxB+QiEs3y0riIPYCZ8t4OW4GbpigA/33qZYxSXKTSodGYvopVr6ZfAKz4UmTW4ClrBBEu25hlOdetwBFhi3cBBpbZII3Q== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from CY5PR12MB6179.namprd12.prod.outlook.com (2603:10b6:930:24::22) by SJ0PR12MB5439.namprd12.prod.outlook.com (2603:10b6:a03:3ae::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5373.15; Mon, 27 Jun 2022 07:07:18 +0000 Received: from CY5PR12MB6179.namprd12.prod.outlook.com ([fe80::611c:e609:d343:aa34]) by CY5PR12MB6179.namprd12.prod.outlook.com ([fe80::611c:e609:d343:aa34%5]) with mapi id 15.20.5373.018; Mon, 27 Jun 2022 07:07:18 +0000 From: Ido Schimmel To: netdev@vger.kernel.org Cc: davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com, edumazet@google.com, petrm@nvidia.com, amcohen@nvidia.com, mlxsw@nvidia.com, Ido Schimmel Subject: [PATCH net-next 03/13] mlxsw: Prepare 'bridge_type' field for SFMR usage Date: Mon, 27 Jun 2022 10:06:11 +0300 Message-Id: <20220627070621.648499-4-idosch@nvidia.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220627070621.648499-1-idosch@nvidia.com> References: <20220627070621.648499-1-idosch@nvidia.com> X-ClientProxiedBy: LO4P123CA0484.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:1a8::21) To CY5PR12MB6179.namprd12.prod.outlook.com (2603:10b6:930:24::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 273e692f-7b1a-43a3-3d6b-08da580bac39 X-MS-TrafficTypeDiagnostic: SJ0PR12MB5439:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ZsxQNc5b23qaZ6cWFZGfvBnuh1qKTdygq8wlJ8AhQaWtP/g1bLZf9OTOXOakLW6YbjnmlivS4btVoi2oaOi0inBleSP7Nv7aPlA8Xh31ByQUNLwGTjJoAkFnjdy0yH2uvOldYpFh8KH8SuKwLA8CspiNHKI/2IPWwwPmykrOzotCxYFHYiE3dBwmMhcmXu/28no/Cnj1eMSjoymsNPpnwAMbotRvdw9BqkFws6oIj/A71R3+bB9nPyPbtdHO1HlBow8TLnKHtk4HVQQOs8Ni5HmtiNew2GkBuhZH0hIBpaMp8MZRiLmrZNeKeDzfKZpYiDhW9trr6Ewhygv3EG4zxp48kHZi1kmgQYV3lBdlFVZs37nlqMG+9EKg0mMHye9oDcdDUpdibSZ0Ba2dn7/aawmT+33dXYtekoHQenbSE2er0Q5C4YsC9FGNW0H+sxC9o38xCWzdOmiUG4O2p0BR2qiW+bXIv6yldJ7Tus0hXdNiYIcCHChRAAbPwkqlCSu0ALw2FZU63EcLglvk813V+1s7iQf8pPchYV5y1wBORBKr0sFn0LWXgv+pcgB+vvTV43G7jk6gogr/QYS6WQJx3n8mACl//6PvVsnb2EzZ0ZVmJuUHNgUAq9wu7liDtPnuVcN5FnlJap4PbBBC0LyPnfVbjURiYdWJt1KHUlZ/XO5Prg0TESxWvSCjGndr8PBKlXTsBeBYu4J2t9gPvDVwaNJ0vAvZp7iI1fF+U3U3Q3lMfRTk6rhoI/BbBAadhJSW X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CY5PR12MB6179.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(396003)(376002)(346002)(136003)(39860400002)(366004)(6512007)(2616005)(36756003)(6666004)(6916009)(66556008)(316002)(107886003)(1076003)(186003)(66946007)(41300700001)(6506007)(2906002)(38100700002)(66476007)(6486002)(8936002)(478600001)(4326008)(86362001)(8676002)(83380400001)(26005)(5660300002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: TG4LVMdW29yxUoGQGBb80Z9ynzPjdDxzcw3EeDaHwesa7RqfReqDAuslL7nRGwZpDZ2nXOj/qB1Ui8ReIQc186VugkjZgzmkO4ZRVcvTfHRHfSGOpc9FJDgg9mOjUrjZjc1FpafPuyx60LV3np7VSIGZCuK3NHj+hVKHfAEsq7ay4iChpy3+Br57WTlqzUyOFZXR7mILsCQ6fa2sGko/biLULQY4MgdLH/rXdeKAw/SmG0onxpUUwUSrdjxuIdHgk4TloHTJbvV07dh77EtNED/QZsmoPULdunOjtho7YqqGFpVObjb1R0fOBMRxGyGTAWCQShyByVD7nYnLW8XbRaH7oyvgf0HcB4qyMd3e+7IGEqJTaT/KjCI2/OIGWxQVM5CNLw9AevXS0deSeZSejR2VGUUbIrKQaw40oEec6nvVqIIO7J6LYARzb2RevvKr3pVnnBpzCdHAJveo5OcKVOyLDwrW16eVWceX8b2BCXNdbm6L3tZ9hVliA00CWNo3FYjxQBL1M2KuvE59nRwGtVQqJ2yLXiXvSb59SBAWk3Km1NEU8ie4FfnMd7+d9Tg1Rm1BPR1gLI25eoprmXo+Vx2osWA2DGLl40KJjqO95YLksDqvNbzaWd8WkGbZLd35kOuDUhRUE5A82d7Rw9csNfK1iNj95z+ppyWFaGhOGWXFlduly8GoRkniWPQ5gkLzSXAf/DEd2ixAftnIjWNI2MUnHJfl0toF+poD3WlyciwSoH1lK6Gji9bneDdxT3V0A9O2b44KbST3iRkqv3bXC2AOjnKGmXGlb8HKAJOzjUmFa/6+HpjcHqb4F67HVFAogA1VKHTdYpB4Ykw/iiPewMz7TyQ7JKFRduzNy8g3gtYraHZviY/dr3LHJJUtm13b9+xCLgQUjTGYE7lniX6EIYWjjgUeOrmfI3LFdyMf7300sQBCfua5hPi1KedXlNMmROExx06+ouqAopN3W0XSzO+f9qwqvxmCkVttpSH5cKqGjL1id6sfpkWKq9/UjL7tGrTzq3QX6n7brKEhkznymSJS3YYTidYF02jKYQRGBtKxXkHWedWRGf0DeUzz7i7KyH1EZmq+8uP9LetZhIm+QNNbDRGPwTBIkBgaT6dZ21TFwrtB8OCaa2F7MfESnUhDuAAZ/fkTDmfPVJiUBvDgJvsIfsEg6Uxon0JBLJEvyebmZ+oW3Wqo+8yb7VdMtaPX7EV5k2A+AbyMlI9UkEyv0AaQDGg2EL3YVuJe7uS/qMsNGXjKWdJekC9lgV2tk4Bd4r0IXX/Gl+XFxp8WlX8000dgUs6O3wNK4aJnCE/CEq+F+33tjc9bExn9x6Tj7plEykRgvtR1GbgtRqRWfQPolgfT7OT6jaNGw94Xyg5cLC7FQDn7L4FZe3gtA3wBaEoeoq/8oFh2H4TKuPuL7kDMea3K5Ez3AAoadOp62w6m7iG8Uech7aT3JW5ON/hpqp8uEmNOdiZ88aEW97NQP85fKOZoiQQ7ARWG6yk2d2N1w9I/iQDVfnqtCE4gpok1fo7s0j0uW5bCZtjQI7gWH0vykQbHs+IbJJvC7n3MedtDBU1nYgRS8L4znPvhLuNjZ23T X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 273e692f-7b1a-43a3-3d6b-08da580bac39 X-MS-Exchange-CrossTenant-AuthSource: CY5PR12MB6179.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jun 2022 07:07:18.4445 (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: 2k/zfBcAWIAI9jthJAW22AsUCthmOh6ToNqNAXAy/lcYCOixjXx/l4uJk8/TPYnuGu4uZLPm92FWNXL4i3pJCQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR12MB5439 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org From: Amit Cohen Under the legacy bridge model, the field 'bridge_type' is used only in SFGC register, to determine the type of flood table (FID/FID offset). Under the unified bridge model, it will be used also in SFMR register. When a BUM packet needs to be flooded, SFGC is used to provide the 'mid_base' for PGT table. The access to SFGC is by {packet type, bridge type}. Under the unified bridge model, software is responsible for configuring 'bridge_type' as part of SFMR. As preparation for the new required configuration, rename 'enum mlxsw_reg_sfgc_bridge_type' to 'enum mlxsw_reg_bridge_type'. Then it can be used also in SFMR. In addition, align the names of the values to internal documentation. Signed-off-by: Amit Cohen Reviewed-by: Petr Machata Signed-off-by: Ido Schimmel --- drivers/net/ethernet/mellanox/mlxsw/reg.h | 9 +++++---- drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c | 8 ++++---- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlxsw/reg.h b/drivers/net/ethernet/mellanox/mlxsw/reg.h index 80a02ba788bb..e198ee7365b5 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/reg.h +++ b/drivers/net/ethernet/mellanox/mlxsw/reg.h @@ -1054,9 +1054,10 @@ enum mlxsw_reg_sfgc_type { */ MLXSW_ITEM32(reg, sfgc, type, 0x00, 0, 4); -enum mlxsw_reg_sfgc_bridge_type { - MLXSW_REG_SFGC_BRIDGE_TYPE_1Q_FID = 0, - MLXSW_REG_SFGC_BRIDGE_TYPE_VFID = 1, +/* bridge_type is used in SFGC and SFMR. */ +enum mlxsw_reg_bridge_type { + MLXSW_REG_BRIDGE_TYPE_0 = 0, /* Used for .1q FIDs. */ + MLXSW_REG_BRIDGE_TYPE_1 = 1, /* Used for .1d FIDs. */ }; /* reg_sfgc_bridge_type @@ -1111,7 +1112,7 @@ MLXSW_ITEM32(reg, sfgc, mid_base, 0x10, 0, 16); static inline void mlxsw_reg_sfgc_pack(char *payload, enum mlxsw_reg_sfgc_type type, - enum mlxsw_reg_sfgc_bridge_type bridge_type, + enum mlxsw_reg_bridge_type bridge_type, enum mlxsw_flood_table_type table_type, unsigned int flood_table) { diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c index b67b51addb7d..ef4d8ddb2a12 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c @@ -71,7 +71,7 @@ static const struct rhashtable_params mlxsw_sp_fid_vni_ht_params = { struct mlxsw_sp_flood_table { enum mlxsw_sp_flood_type packet_type; - enum mlxsw_reg_sfgc_bridge_type bridge_type; + enum mlxsw_reg_bridge_type bridge_type; enum mlxsw_flood_table_type table_type; int table_index; }; @@ -709,19 +709,19 @@ static const struct mlxsw_sp_fid_ops mlxsw_sp_fid_8021d_ops = { static const struct mlxsw_sp_flood_table mlxsw_sp_fid_8021d_flood_tables[] = { { .packet_type = MLXSW_SP_FLOOD_TYPE_UC, - .bridge_type = MLXSW_REG_SFGC_BRIDGE_TYPE_VFID, + .bridge_type = MLXSW_REG_BRIDGE_TYPE_1, .table_type = MLXSW_REG_SFGC_TABLE_TYPE_FID, .table_index = 0, }, { .packet_type = MLXSW_SP_FLOOD_TYPE_MC, - .bridge_type = MLXSW_REG_SFGC_BRIDGE_TYPE_VFID, + .bridge_type = MLXSW_REG_BRIDGE_TYPE_1, .table_type = MLXSW_REG_SFGC_TABLE_TYPE_FID, .table_index = 1, }, { .packet_type = MLXSW_SP_FLOOD_TYPE_BC, - .bridge_type = MLXSW_REG_SFGC_BRIDGE_TYPE_VFID, + .bridge_type = MLXSW_REG_BRIDGE_TYPE_1, .table_type = MLXSW_REG_SFGC_TABLE_TYPE_FID, .table_index = 2, }, From patchwork Mon Jun 27 07:06:12 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 12896298 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 732ABC433EF for ; Mon, 27 Jun 2022 07:08:22 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232733AbiF0HIU (ORCPT ); Mon, 27 Jun 2022 03:08:20 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53682 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232643AbiF0HH0 (ORCPT ); Mon, 27 Jun 2022 03:07:26 -0400 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2068.outbound.protection.outlook.com [40.107.237.68]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1EC525F5A for ; Mon, 27 Jun 2022 00:07:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KI7VXJyPr5DczFVsBieUL3QXHTJfAVY2dkIuXP1xMO8BWPiK/BMdq5fjoQNAxJuKYak2Bty6wapsIhPpQ2MwqMExfb7Zk4+wtPU9tRkq+DzPWwuhfrBAEdfYptymnW5bp94aAri2c8oqt8b4cIOZ7w6wqILJ2+LmGloYocbhFV3LA0chfzzelEOrMJG5544qVKchXxDpHHi657GGpX7G3HlyQ/U2CYzDi9CutwJa7jWwnqzibtFLzBAf4ILZdEKGnHZWkogNm3zMntbMMwfeSqCbTpu+/WQEr4jRdRXmQDulza0Pd3HtdIf5ofVo4JtJa8h6yh26+N/SFSxAJ/R+LQ== 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=fCjlcIaIpxmfhhm9aAwRtKu3id2I7R5kNQILjnwg+ug=; b=BbywjT13E7f3s2JkQJa3+sVPyDF4XMFkGxiiv4ENZBesiS/vQ8/1O0BA4WfIgCm5ABTt1HIXN8daqGZX/+hKTmRNcsGn6AYfMKwt5xy6SuktEz1GBsBrTPwKzvYv5layGIhH4NPViM2lDEhnVvODPb8t3cRhAwmUFESFzZeB/hMg5pD48vRx6gRV6CCiYyAoPxiQg7GOWSaHzGtQBeZKRTIQ+Tp6DKopEckVgaYa3MFGfCj8DcO23h5pxGzojUSaREbXaGzWUlfXSqO8ddXhoef0F95vuXBuf25ojm10dvDK8vp1oSwun1HOfGCT84MbB+nYPd+ixGaTXQJO2m2IBg== 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=fCjlcIaIpxmfhhm9aAwRtKu3id2I7R5kNQILjnwg+ug=; b=rQEO4YGfKJaIQ1TBm3t+PqIwm0qmZA6vBmrNp1VfzzoxNn+0PgYH+iUNjyPh2lujBcWsEvdaS/lIUc3wZf1mevZdVrWwoMsZukWEA4Pf/CYyniagsrAaAlT8ZTRFY6fNTYbsHf632dDNz4Toe5NTq+rgMDk9Kj9SDYJnUe9QdR0aDO7i8xQIAUK0oNZIV5/YDV7ipIAvOsJlOHF57GXAhTe0n9kB2e0+ex+i17K0w7O1cSHcRv2q+g7oXoeCzaqug1D3JQ+WCv2phqUO3FjclE8g6x6JmYvPYK3cV/+zMHkSOAqcWqXTyWfz9MME0hJnMlWqAn3JPIsnAVJmGp4r5A== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from CY5PR12MB6179.namprd12.prod.outlook.com (2603:10b6:930:24::22) by SJ0PR12MB5439.namprd12.prod.outlook.com (2603:10b6:a03:3ae::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5373.15; Mon, 27 Jun 2022 07:07:23 +0000 Received: from CY5PR12MB6179.namprd12.prod.outlook.com ([fe80::611c:e609:d343:aa34]) by CY5PR12MB6179.namprd12.prod.outlook.com ([fe80::611c:e609:d343:aa34%5]) with mapi id 15.20.5373.018; Mon, 27 Jun 2022 07:07:23 +0000 From: Ido Schimmel To: netdev@vger.kernel.org Cc: davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com, edumazet@google.com, petrm@nvidia.com, amcohen@nvidia.com, mlxsw@nvidia.com, Ido Schimmel Subject: [PATCH net-next 04/13] mlxsw: spectrum_fid: Store 'bridge_type' as part of FID family Date: Mon, 27 Jun 2022 10:06:12 +0300 Message-Id: <20220627070621.648499-5-idosch@nvidia.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220627070621.648499-1-idosch@nvidia.com> References: <20220627070621.648499-1-idosch@nvidia.com> X-ClientProxiedBy: LO4P123CA0377.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:18e::22) To CY5PR12MB6179.namprd12.prod.outlook.com (2603:10b6:930:24::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 09adbfcc-cf48-4731-79c3-08da580baf10 X-MS-TrafficTypeDiagnostic: SJ0PR12MB5439:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ri9vy+BPFmWS/31ukfttJySR69cb8emVbvcLa/Vy7Yg6psBw2gDz27wKw0T7EnnbjGA2BhrGglnVBOve2vhyLU67XRIJdfyYLtvq1sHB1SxREcLX2CT0JseoeQQz+/BS+X9ZGTmEMYKg/QCh4tPf6HVv/eDYf+s8yBNnqdhLO9wgSDfebkegWhrDa6EemKC+1L9r3yFW+MZc1hZyfGOtK03UpJRzIHQFXD1zwUY36pME/Y2+5eBj3xmG5flov40Q/e6UVGQJw0Ub36aYGvOEvkd5B+vpq8qE5ae/3xF7RE8IGuNViHlK0KtLS85h5zZ7jmQW3M4PQ8bYR1RSXWY2XVP8mPLwesUDbcXygWCPbi3SLyNT/NRn18ocAuIUa6tp3IabA1vBTR5HUt9dhntdE8y5nKPpbinFghlJU2RKElBgz8c5QpaMlTUoHyrZ+wZ8EXvjCYKrWjPP2OiDrTOVLsF52S7LN02qC/i121APhTMgPArKXhLErKdCKGQDBDnQPessCs1UGwt8px6aRGdOl+5XTMWGCHltGzSQo/XbgL17nGeBQKUNswkoGZrRFjAKzrdRm7iEGLNySLwR5pn+vm63uYDAkiCAy6yH8u4e1n9Hbxqr/eyIEiWKkJC2EK8LnLdkxxtrpzPTIOX7HcIbLC0afJT8WEPA8ELcdZ2dN92IZ5LyCTTB4Jzto0IC8OE/LurdmVYpU7xJY0x8sU7jK6EG4cZI01MFKZRZQOmpbHVX7sxu3t7mS/laNfL/MLb9 X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CY5PR12MB6179.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(396003)(376002)(346002)(136003)(39860400002)(366004)(6512007)(2616005)(36756003)(6666004)(6916009)(66556008)(316002)(107886003)(1076003)(186003)(66946007)(41300700001)(6506007)(2906002)(38100700002)(66476007)(6486002)(8936002)(478600001)(4326008)(86362001)(8676002)(83380400001)(26005)(5660300002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: /hRFPOIzHAGcFgAcU9NdASQ3txg4aKpv9Qc7XNghMymOVWfZIxLHY3UemmyEqLpJoCrukFl2QqY1nY4BgcPBoipJlqJ5fxN+nS3zr0/CEIRW3Epy2dJV+lsHazL47yc9adI20YvSFg3ZpjQS0jSNFgTnH58wS59s3uUTgVmEcp2DqYAOkRkOT5F5+NmYTNrazY6rFMF4kRlLRXVK2wO8m/MSMvxpj4eEEzoYR2zUir/1SSJALWSB2/6NsieSC+NUK4Lz1Bzb28HTvL99gNIBwAzIcujIQ3Kr4AMiOUnHjZv6sVUGWFC62IB1hsyPHBMZiKB6cCQG5a/5Pk0mL9SZs9gdyU2LeArP0lYoMvfHyUhZrX83ANtQLUa/ukQ5bGHqXP8s+3L/NZ7sC6b/NU/sOWlQLSnvNj/NuHw6d1jX9grYAEKDCeJSezL7JU3Z7bq6RykSPyQp6OgxsYXo7u5GORz+GyeWCffnffQVcxy3hN5hpmWXendhZX6OyeXRcP3QHxroRUXUcqKBe7LQgmtep1ecSRiuOUb3jZHqB3H13DJHipVEIo7B0Sxgti/6AwdlMRLVNm0L9Mqzhel+djKUvFMhQSKJCg0ZHiLYJdDlftkKeOmJHnQ3UIn3zgUeanl4p/5uNExoQAIjTDL75K0C1PbheN0ui6W32Jdi2bKWC0cNeXgNpPXR7yvidtGxrSSV65YCRsIY6cuZThd17b4VIQB/hHI3XyciyVg8dFVib59GgQHFlorZFIk45IG9/0e9fbF+0sC2jDGIZURhd01bzEM8ZHFN6aEToE1lFY3weWXUKMmLzKtz8smCRyfUe48GNaUttCXY8lovdKnUNvij6nwCMakL4YylixWp/baGI276xkrksR+5f0GgpbvHjwSjxYIkmXH9t7RXrroKMRNoerU0NnvKr6pULJAtwHTNqCpS2MEgBSOO0usthJybQFssApuHgW5B7gDqJmg18u9wMyElQc/51iP8yzQMRxUe84FqVhdKZT1FPjg81KiXqbtUJ2onI0IN3tBCIePwA/+PvZwzRvEOeYUV61eCqc9qSjlAI2vsiRw2kvC02TDyJgJBdaUZtx95YCgJo2RR8T+ncFhv1jsclw9bwAw1jzMkML39LntTfofRx/VBtz0IR5rMcspOgZgStYNPtFrmwYp2ypqwPc9jjhqbri8S/TvTubjpDNlts3F994Pjt6esVOOd5aPiuOnC2VcmPPG98E7RFV2Q9/axwFZ3SvCGEITO9++4b/alXmMdzvbl5BfCJqJcogZFsL7hkA34qIZfrwyo6x/KooTbsksAocwPb0Pm6IZ0sUHd4cztth9SqNPPlwrKraf/Yp23xbhlwt+DM21KfgVU/6aDSIveEJuRwcFVT4Fx+mUzCGkTxI39GiIpOHQJXhJgW7SiPbeoYV/pJLaVE39StKRWo35SnXooWpBuN1UmhmOdqggZ+XayGmDFXaa0Wqy7QDzQDjPsG7AOFAesyZ0vRsSPnf+8i0PWLUxFVXaNw8JBUTECsUu02S8t/BRowWVk2Fe3QhWalZm8Q/MDC6HGRSyLRGSkEs1cbGW4HwxSJjp7MzMq9XnE6nDCm2/W X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 09adbfcc-cf48-4731-79c3-08da580baf10 X-MS-Exchange-CrossTenant-AuthSource: CY5PR12MB6179.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jun 2022 07:07:23.2260 (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: 4V2Pbn2ixqRiLSg1g8T/yM+3qiMN3QD67CnaadR0qPq+Z1tMY72TqNCA1anJkP+Dmt2+HWs5TsCz4po1kmEvlg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR12MB5439 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org From: Amit Cohen Currently, 'bridge_type' is an attribute of 'struct mlxsw_sp_flood_table', which is defined per FID family. Instead, it can be an attribute of 'struct mlxsw_sp_fid_family' as all flood tables in the same family are of the same type. This change will ease the configuration of 'SFMR.flood_bridge_type' which will be added in the next patch. Signed-off-by: Amit Cohen Reviewed-by: Petr Machata Signed-off-by: Ido Schimmel --- drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c index ef4d8ddb2a12..279e65a5fad2 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c @@ -71,7 +71,6 @@ static const struct rhashtable_params mlxsw_sp_fid_vni_ht_params = { struct mlxsw_sp_flood_table { enum mlxsw_sp_flood_type packet_type; - enum mlxsw_reg_bridge_type bridge_type; enum mlxsw_flood_table_type table_type; int table_index; }; @@ -110,6 +109,7 @@ struct mlxsw_sp_fid_family { const struct mlxsw_sp_fid_ops *ops; struct mlxsw_sp *mlxsw_sp; bool flood_rsp; + enum mlxsw_reg_bridge_type bridge_type; }; static const int mlxsw_sp_sfgc_uc_packet_types[MLXSW_REG_SFGC_TYPE_MAX] = { @@ -709,19 +709,16 @@ static const struct mlxsw_sp_fid_ops mlxsw_sp_fid_8021d_ops = { static const struct mlxsw_sp_flood_table mlxsw_sp_fid_8021d_flood_tables[] = { { .packet_type = MLXSW_SP_FLOOD_TYPE_UC, - .bridge_type = MLXSW_REG_BRIDGE_TYPE_1, .table_type = MLXSW_REG_SFGC_TABLE_TYPE_FID, .table_index = 0, }, { .packet_type = MLXSW_SP_FLOOD_TYPE_MC, - .bridge_type = MLXSW_REG_BRIDGE_TYPE_1, .table_type = MLXSW_REG_SFGC_TABLE_TYPE_FID, .table_index = 1, }, { .packet_type = MLXSW_SP_FLOOD_TYPE_BC, - .bridge_type = MLXSW_REG_BRIDGE_TYPE_1, .table_type = MLXSW_REG_SFGC_TABLE_TYPE_FID, .table_index = 2, }, @@ -737,6 +734,7 @@ static const struct mlxsw_sp_fid_family mlxsw_sp_fid_8021d_family = { .nr_flood_tables = ARRAY_SIZE(mlxsw_sp_fid_8021d_flood_tables), .rif_type = MLXSW_SP_RIF_TYPE_FID, .ops = &mlxsw_sp_fid_8021d_ops, + .bridge_type = MLXSW_REG_BRIDGE_TYPE_1, }; static bool @@ -785,6 +783,7 @@ static const struct mlxsw_sp_fid_family mlxsw_sp_fid_8021q_emu_family = { .nr_flood_tables = ARRAY_SIZE(mlxsw_sp_fid_8021d_flood_tables), .rif_type = MLXSW_SP_RIF_TYPE_VLAN_EMU, .ops = &mlxsw_sp_fid_8021q_emu_ops, + .bridge_type = MLXSW_REG_BRIDGE_TYPE_1, }; static void mlxsw_sp_fid_rfid_setup(struct mlxsw_sp_fid *fid, const void *arg) @@ -1132,7 +1131,7 @@ mlxsw_sp_fid_flood_table_init(struct mlxsw_sp_fid_family *fid_family, if (!sfgc_packet_types[i]) continue; - mlxsw_reg_sfgc_pack(sfgc_pl, i, flood_table->bridge_type, + mlxsw_reg_sfgc_pack(sfgc_pl, i, fid_family->bridge_type, flood_table->table_type, flood_table->table_index); err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(sfgc), sfgc_pl); From patchwork Mon Jun 27 07:06:13 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 12896290 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 C2F57C43334 for ; Mon, 27 Jun 2022 07:07:36 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232649AbiF0HHf (ORCPT ); Mon, 27 Jun 2022 03:07:35 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53732 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232605AbiF0HHc (ORCPT ); Mon, 27 Jun 2022 03:07:32 -0400 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2054.outbound.protection.outlook.com [40.107.94.54]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 233F95F89 for ; Mon, 27 Jun 2022 00:07:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=H9a3p0P4BBdUx1O/92canef19ICFVdMAkkj9yQlbZTp5VNpBXc0jGBVDk3vxlw3bRl4VuM2lASJUJ86DXSlku63nTazAsHcKcgi7kK8gxIcSWpi9mHsZWy/sZSNBOF+vAECuFKB1dOsW8VKluu5Rq/D6albRxka/fhiXpxxgM/FhRRiopku+pzHm1bRfLZW3EIY3rnGatm38EYKp6Mngt+r7y4+OEmDmCeHrQQKyf+oTBSFUypqA5ODYGTlfG2AFH5hu89/3bvcR3Ji5T4eNnkn1ZjjeI+BW0v5qQIIlrE4p/8N8V39nu+mT3QyiMCz+1RgFjuSSzRo+AbA3sZoTMg== 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=NUQMX55mJbwoqzo0zvkpW/t5/fGayGr1F7Nl0FtIFAo=; b=f+BgYqHvzbnUuovnCt8oJ7TENA/Pmzv0qM7CX2Iw58VeT1/mcL0uCWP/oNpla4vhnUYcTl0RGdEszh9Q1PPOfidG72gswdrVoVoRuBs9HxyIFTYtuxJv8n58dfu203n3D4vsvpFntMjt4mmGEB/zS7A1EnrVyd+cenGctb/pbJuzJRFvRPkt/nBmXZGAM13oE87K/R6aMeQBhODGnvdGh5on2XdrzOYAOfYpOqz0CPXLWATWB0YQgYspCemPC7Zu+CktBk+4ChNKTQy1Rt5BMJs1UakwsuEE1Klfwp9hSuaKQ7rWhlCBVoRUgJa/fZxXngVgnFmgdmnfUG0p2wAxvA== 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=NUQMX55mJbwoqzo0zvkpW/t5/fGayGr1F7Nl0FtIFAo=; b=L+Z37z37qZqPNUV0TKux3Ekw9umtY7JV1xr3IkcGAoBSlN+pXGKkWDQ+aARHoe9mtBr0B0X2yV+EiDSXIBc/LyT6o88tTwS2dEFEgqmAAd2x9dvdnbYyixvwWbnI37DpKg2+d446NpAPb/cTScblXxWWm+cgFIhnshf276k4TrKjUOdjOHD/VrosQ8OoUy943vuVDwF9D6HfPArktTG+6z5TDkwzo87fO6oTa6hldkIWdFUxVBYZu7+xAJrWvEyt7UYOXdCohhr52jXjJNQP6JxUxmssCPiP3fAYzdwx/vg4U9UhUIIlqWab0O1Zv/ue2DKs1MksuQicl2ZH4mgSyQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from CY5PR12MB6179.namprd12.prod.outlook.com (2603:10b6:930:24::22) by SJ0PR12MB5439.namprd12.prod.outlook.com (2603:10b6:a03:3ae::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5373.15; Mon, 27 Jun 2022 07:07:28 +0000 Received: from CY5PR12MB6179.namprd12.prod.outlook.com ([fe80::611c:e609:d343:aa34]) by CY5PR12MB6179.namprd12.prod.outlook.com ([fe80::611c:e609:d343:aa34%5]) with mapi id 15.20.5373.018; Mon, 27 Jun 2022 07:07:28 +0000 From: Ido Schimmel To: netdev@vger.kernel.org Cc: davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com, edumazet@google.com, petrm@nvidia.com, amcohen@nvidia.com, mlxsw@nvidia.com, Ido Schimmel Subject: [PATCH net-next 05/13] mlxsw: Set flood bridge type for FIDs Date: Mon, 27 Jun 2022 10:06:13 +0300 Message-Id: <20220627070621.648499-6-idosch@nvidia.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220627070621.648499-1-idosch@nvidia.com> References: <20220627070621.648499-1-idosch@nvidia.com> X-ClientProxiedBy: LO4P123CA0255.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:194::8) To CY5PR12MB6179.namprd12.prod.outlook.com (2603:10b6:930:24::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: df37e876-1ddb-45c4-819f-08da580bb261 X-MS-TrafficTypeDiagnostic: SJ0PR12MB5439:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: uOgUlacOKwgKv3UfyVMQiRqzLIKWy0aG+3IYCgXF+y/03kFq2wPmEU7vI1v1FmAzeVu3hvKOcJrbddq/R7VFL1dtHOTk09fX6kT3o9C11F/xVFKWjGeIig0AKGQ5SPoB6r69cyre1nGVMsvnR1zpuz4YVPoFj4upAgykZgreFC1yamR8zuFIZFZ566qTHSV/5IeMxeYXJQZ/xFeEkz1jQGbQga7G1UlcIkKbFrmpTMmQfqGnnNtdzzO6s+At91wSMxk4Y9OhJgtkLxnHqy64yt2MmpAlOlsJqNiX531SsC6iFIHrBK5EwzerC1qCxOvL9w/qM1zC0BHrlwFk7nxawBDfd+082rsrLSjYczXSs5W3HBeUlRfwFYhYCJxJzghqPQpefcEU+vs8UxRIEvZL/Wh8owsA1rSGHCMcfjD6BjJmRdfbO38Li4OwJJJCxpSuUnTxP4E183a/snR/i96WV7wgE9EzoQjAi5J21KpFnBzP15rSe2nrjdIhhu+NdX9P/PVW5uJWtmH8xy6tj5qQuFLBQPChGYfJmqfExT68zcEn3oTtPlIzhsBYVpPWLo1nWPVvJw4Ih+tp2yG4fSCKXfJXXqY4pzTueV9uBYXuw9nz8dOGO0S2W0aaJH2S9CWp1JV8SufZO2+CdJLBLoRGjeW2PTI61/oFZRv2GgpjdMnTpHoNU/JPJEccSqb1sdFKFxttDiIPrORzAgqpSpCGTvpRreFVdwwGHIduW+vEyZvKfiREa7ifSlKMYIYacw+E X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CY5PR12MB6179.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(396003)(376002)(346002)(136003)(39860400002)(366004)(6512007)(2616005)(36756003)(6666004)(6916009)(66556008)(316002)(107886003)(1076003)(186003)(66946007)(41300700001)(6506007)(2906002)(38100700002)(66476007)(6486002)(8936002)(478600001)(4326008)(86362001)(8676002)(83380400001)(26005)(5660300002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 95Y96kfdeSJFDM8VRuelLW9ay6qMznJRWzmXyTlqPTEUbL5U+pfVur/GmIjHCIGJnxzLVCp/KCfGbQSNcgVl9oQe0kZoIJfeR5lghls8VC/PqvSR/asCGrZj1lWMkEamL53LATnHi78mzgaUZxQ8Racpba9wsn8FaRm1DME5GLiUd3JWFiNqPeoDviqaUf0/jnETI1KByNv5zN1XjLayJnrLxQqlVXMLH4iEJQ4lwQNbJ86LDObvgXEGMZbuxpQ/qVnik4pg/5eR5nUXyXXW3Q4LMaqYi82E9L9VUGiZdJteMPkpYW7nBNDFP0ibUhzepA0FNX9lC+ntbRHCg9d4AxAQn2CcSbWwuh2j+pUcRrCxdXDxRVF7e3EAT0/yIbLsE4tABlaESGBdBPk2UmQD9a4vEPJ8I+/l35p06NqRErEA0A0uz4DG4Jyju5CwjkZ2uzCS70rnVt3KTEPEReE7qOJAOh3U4HiiXjM2lx/j67JQ54/ex2gBCcGml9t1dxDgtn+yJui1cm/hbvNsv65XUZaJ8gWlC5a/RIiy/39Qoxw8aVhTH1N8Cq3XnQ97NIUM3FP4d5Ky321eXVgPqyWpcmkqCdhmxcW1nFUXqVnHmSN/RXggZL10sJyujEFhMY7bQhhJsBtKxY0qfbTz71FYZ/5Judukfx5o+mqPHCRftf21sXpUMTpCtexcagg5S69IST1rOZ4bkqNhAK46+x0/C7zfJ91kbAKt0t/NyG1ZTq2uChiIHzkIFrdTcHVx8nudXZopGSb5P6WyyqCIXe6BNaYS9DXaoJyIbrGwMFhe/yMQFFQaYUaHr8exi85UkIOoUceszGx9DdNit0xop+Xf3UCvl2lQTsvO5tjRHbCHEmogeGcZjQfploco2OiF2+nvrCTjzK1Qh8WnY/pVINVHaRVz3O1QHxH662AuD8R37joTUjq3fJuAq3t2SP55ZtPHdtNAKxWemOOKIDlfLguNn+vR5+ukFXosHoUKWL4qW1NBW4wZAfc5eMHB9KzdWF0RwmDj62Syn+JD6r2COUFT0B7gOzmbZeBQ0owPpUaBhUhl0xnV3tplUC2C707YpXr+eaXHs6mDKJOmKAnMGj4yrM1zWVQauJdN6ySRHDxsUaK+o0230V+YaK7xQnS6kYPWS+2hcBNvRD26L+gdJm9CWASiuIVzyGzigZMGpCG8moG7SjiLztI/czrayUh5Mh2E6rSMOKrhsNIzdvhpvGP2uDM2mw6OZgOUWtFk2c45QObIryPkNT6o2dkaY1n8SooXCbT6XNITajwCFrGOeTRONa5oU7HaLpY7KGYkAwob7HJX8JjLQ1OAeeBpzkSwBWJS2biKL6wcppot5HAq8vPI2Jt+oVyi0lthj3AGELdNg/U3F6H4xf6K1isvoip6EpgJP11fKHx+1qA+K5Gux4utgTFuHA1fwypKJS2z0FHiU3waW03Rn55dMGmO3CgYoBEjFw/5Q4RdPtyYevrLNYxGfJDfhVcDfAcW0Ch7UJ+Ow5gCmzP0+2uJi9cGbMboZIAjUrCLn7K07aqMjYfZuaQtA4L//ThFygaw1iI93VUNZxUKigVtZWaQjdjIUmmCN7E7 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: df37e876-1ddb-45c4-819f-08da580bb261 X-MS-Exchange-CrossTenant-AuthSource: CY5PR12MB6179.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jun 2022 07:07:28.8059 (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: 91vKhAZJzUo743r9/er2uCf1ALV/abY7g/azdnQcUeHywHFwouPuwuDEX18BkFUEAx7oGUMb8X2vwFdR/3VXwg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR12MB5439 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org From: Amit Cohen In the unified bridge model, the bridge type FID attribute is no longer configured by the firmware, but instead by software when creating and editing a FID via SFMR register. Set this field as part of FID creation and edition flow. Default to 0 (reserved) as long as the driver operates in the legacy bridge model. Signed-off-by: Amit Cohen Reviewed-by: Petr Machata Signed-off-by: Ido Schimmel --- drivers/net/ethernet/mellanox/mlxsw/reg.h | 4 +++- .../net/ethernet/mellanox/mlxsw/spectrum_fid.c | 15 +++++++++++---- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlxsw/reg.h b/drivers/net/ethernet/mellanox/mlxsw/reg.h index e198ee7365b5..d0ebb565b5cd 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/reg.h +++ b/drivers/net/ethernet/mellanox/mlxsw/reg.h @@ -1961,7 +1961,8 @@ MLXSW_ITEM32(reg, sfmr, smpe, 0x28, 0, 16); static inline void mlxsw_reg_sfmr_pack(char *payload, enum mlxsw_reg_sfmr_op op, u16 fid, - u16 fid_offset, bool flood_rsp) + u16 fid_offset, bool flood_rsp, + enum mlxsw_reg_bridge_type bridge_type) { MLXSW_REG_ZERO(sfmr, payload); mlxsw_reg_sfmr_op_set(payload, op); @@ -1970,6 +1971,7 @@ static inline void mlxsw_reg_sfmr_pack(char *payload, mlxsw_reg_sfmr_vtfp_set(payload, false); mlxsw_reg_sfmr_vv_set(payload, false); mlxsw_reg_sfmr_flood_rsp_set(payload, flood_rsp); + mlxsw_reg_sfmr_flood_bridge_type_set(payload, bridge_type); } /* SPVMLR - Switch Port VLAN MAC Learning Register diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c index 279e65a5fad2..3335d744f870 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c @@ -422,28 +422,35 @@ static enum mlxsw_reg_sfmr_op mlxsw_sp_sfmr_op(bool valid) static int mlxsw_sp_fid_op(const struct mlxsw_sp_fid *fid, bool valid) { struct mlxsw_sp *mlxsw_sp = fid->fid_family->mlxsw_sp; + enum mlxsw_reg_bridge_type bridge_type = 0; char sfmr_pl[MLXSW_REG_SFMR_LEN]; bool flood_rsp = false; - if (mlxsw_sp->ubridge) + if (mlxsw_sp->ubridge) { flood_rsp = fid->fid_family->flood_rsp; + bridge_type = fid->fid_family->bridge_type; + } mlxsw_reg_sfmr_pack(sfmr_pl, mlxsw_sp_sfmr_op(valid), fid->fid_index, - fid->fid_offset, flood_rsp); + fid->fid_offset, flood_rsp, bridge_type); return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(sfmr), sfmr_pl); } static int mlxsw_sp_fid_edit_op(const struct mlxsw_sp_fid *fid) { struct mlxsw_sp *mlxsw_sp = fid->fid_family->mlxsw_sp; + enum mlxsw_reg_bridge_type bridge_type = 0; char sfmr_pl[MLXSW_REG_SFMR_LEN]; bool flood_rsp = false; - if (mlxsw_sp->ubridge) + if (mlxsw_sp->ubridge) { flood_rsp = fid->fid_family->flood_rsp; + bridge_type = fid->fid_family->bridge_type; + } mlxsw_reg_sfmr_pack(sfmr_pl, MLXSW_REG_SFMR_OP_CREATE_FID, - fid->fid_index, fid->fid_offset, flood_rsp); + fid->fid_index, fid->fid_offset, flood_rsp, + bridge_type); mlxsw_reg_sfmr_vv_set(sfmr_pl, fid->vni_valid); mlxsw_reg_sfmr_vni_set(sfmr_pl, be32_to_cpu(fid->vni)); mlxsw_reg_sfmr_vtfp_set(sfmr_pl, fid->nve_flood_index_valid); From patchwork Mon Jun 27 07:06:14 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 12896291 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 9D041C43334 for ; Mon, 27 Jun 2022 07:07:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230432AbiF0HHn (ORCPT ); Mon, 27 Jun 2022 03:07:43 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53790 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232658AbiF0HHg (ORCPT ); Mon, 27 Jun 2022 03:07:36 -0400 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2040.outbound.protection.outlook.com [40.107.94.40]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0F5E05F56 for ; Mon, 27 Jun 2022 00:07:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XChaQLQz9CqvLrTPXvgEPz9RXvSGbjY6NmPSn4y0FbfGEsSL9vc6J/CybZAUTMcnzWpKVZODmR1vIM4/oIiECv+y0QaNSW51f26x94thZDN3E6WoWqZZ7emS/KqEUAwf05j8cnDSLXKZ9+e6SIcANGrqJ5lVfFeZm4G4sgKiMp72p0E5kUCF/YWWs8cPvr7tojyqs+/nHiOZrCxCram2FK3bT9uHN6xywacyE0WYENMXQYWdF/nqeOCnYh1GVXZv1YhhkVTCnBiQNWBqng22rB2jRKHnDur3hEG+ZChskEpyvaeyqmH6vvQDuSV5SJvtlMyl3B31Fi/yz5r0Ocy8Nw== 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=NTOJqNv642XUSoSY5/MgmUaNvMCxSsenelHkxf99hfs=; b=FMFVCQtL89iC1ka7MMJkjcUGe7A/miNjHVbxtz7q0ZC0Erb+s324krTBTb7a/xg3IGLzMDz6dCho2dZcKbLbeN2aIiCYutIs8uGT+E7OJynpY4Z5ixHC8TgKen8hwPAfFA3UBvFGSVKYFG3As3TWCB3hLiVBaJnof3L7wz+xh25DWNCWtMt75ZTq/LKkSk6IR9lV5aidZ/tMwd2lXREI3+mCW93xO2cRuJx9j1IU5fQ6RAnv10tg42cTXGFb5smehKtTD1yhWzD+L2AwKUODQm5IkZlISYWBGa/7WVplms6UNE31+Rw+pmMbhfKnbnB6U8RwQhaDS4/SnADfwHzsjw== 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=NTOJqNv642XUSoSY5/MgmUaNvMCxSsenelHkxf99hfs=; b=B4nVITYhecZxAddpoVH/kKFdN/hfz1m0ivRdPVr/DGbswaSB+KcGUEonSYNB2dPT+274X3u9A34SYwOief7FufQYi98aZ0Yp0kNCRAFVEgP85agRIqBg1CbYVdmghe/JQAZuFCUecqWpRxDvc4MccJnUeiTo6ROOqNARbzXR2LcJgqX8r37NT5qoqrrtTIKA4OtaMJhpgXvVgpCR6hohExjoLktWLOy7Fv5AuNzMwpJxuKPjqE8aiLkOetGQpjAU3S1vwa8n8ImX65dR9S/gWnZaJHWhzDZ6nHjVsClcHy///kWcyr/ebKDpmGBYYdsR17LY6SzNCZCECzg9Na7WMw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from CY5PR12MB6179.namprd12.prod.outlook.com (2603:10b6:930:24::22) by SJ0PR12MB5439.namprd12.prod.outlook.com (2603:10b6:a03:3ae::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5373.15; Mon, 27 Jun 2022 07:07:34 +0000 Received: from CY5PR12MB6179.namprd12.prod.outlook.com ([fe80::611c:e609:d343:aa34]) by CY5PR12MB6179.namprd12.prod.outlook.com ([fe80::611c:e609:d343:aa34%5]) with mapi id 15.20.5373.018; Mon, 27 Jun 2022 07:07:34 +0000 From: Ido Schimmel To: netdev@vger.kernel.org Cc: davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com, edumazet@google.com, petrm@nvidia.com, amcohen@nvidia.com, mlxsw@nvidia.com, Ido Schimmel Subject: [PATCH net-next 06/13] mlxsw: spectrum_fid: Configure egress VID classification for multicast Date: Mon, 27 Jun 2022 10:06:14 +0300 Message-Id: <20220627070621.648499-7-idosch@nvidia.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220627070621.648499-1-idosch@nvidia.com> References: <20220627070621.648499-1-idosch@nvidia.com> X-ClientProxiedBy: LO4P265CA0220.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:33a::18) To CY5PR12MB6179.namprd12.prod.outlook.com (2603:10b6:930:24::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: b38d663d-b12d-4c8d-09ab-08da580bb5ba X-MS-TrafficTypeDiagnostic: SJ0PR12MB5439:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 9nAXXigQRVYQW8zJsUMoV4K/nWIX6Jt+M2qYslzR1HkUHGld60HomUaMDa38gLuw/w7Rukiw/Iu/ch5nTfEjebL+cwNA6c4bxfcytcTw5VDJcPxBPT6JoB59cD7cRKJeUSqjwMP5Ie8CMhyX8bg5/W/lsenqlUrdti/LyioTzFa3xQzM8RQZvYbq8p6Dz1fVvYxQIm6KviEio5tZWQFjwWqsy+1W1+YgTEZ+IikEQuJLrSLMZqfZa6NvL4GcyHy9CIVmgdmoEhbDCgDEmeBWe2rVqkRtm8LeklUKR6+xCGhQwIjpNlCOJROiPmGyIsAlMIH9hKYPv7BTKoAwljlqgsZqZCZMvrRl1zluu8Ew13rF52pNQVQTdkiQBSchldu7grWpE2gDMk0oOoiLd5X6EdG6Lg/7bcCTmCE9+S+chI6XicSmygqXKJXgtnrzSEdWnUZ+sMoJtCsPcrRE413OWbIE5iU9i/2G83UFGQ5vALusU9a03EI8ieVTdvllnQq/1Q5ECoJKXRY9rg7TkiPDlkI4WUSM7Dxm6ysUUAhlL8ZdbyVZJbaHlNmcclsAbsdXDX9jo5PVpBHZps9Pe7JbuQZURfYBwyJrgE39rqesUV2pXE2ObRYH2/0inu2OYvPOkJRN+D5mh8CMCAvOYJaV+SRzhSeIM5aVku1TmEz4S+wC036+wK2YeQulyaQEsFgCtNTz7i2pPX/x+83lIJ27n5/YZeu+brGLZHiEOsDyEVQbBGKNPCs+sGCZd2FrE2ov X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CY5PR12MB6179.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(396003)(376002)(346002)(136003)(39860400002)(366004)(6512007)(2616005)(36756003)(6666004)(6916009)(66556008)(316002)(107886003)(1076003)(186003)(66946007)(41300700001)(6506007)(2906002)(38100700002)(66476007)(6486002)(8936002)(478600001)(4326008)(86362001)(8676002)(83380400001)(26005)(5660300002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 8ECiRPKwUx0aCczjPWC/ijeY1O0xE4iJ5/keVoBuBv+rzseVUMmeZESuQJRazcFByu3a92ZnJXex6QX+shTNuTXgOUf7hSJbEvRaB5ljjz0khL7SfXncWC06XX82zpLGO4U9lDztyY+qkZQmCAjKUFbBIdq7simWqEYvibqvpvkG0jcceJ60UCHhm5diY5zd7RXGpi/jfKlKZ+wPfo7aaKiRaN0YU0/jW8lUtPHo+XgKSRNlXavYLTD5F/57nd+SGn+NVbqZ1Lm0ySWgZ1Vr5zki9wS2Pt+N3OsFylXOlvNwQjjimS+w8Os1NUIFm4iBOgcPfV5mVQvNtg43YhXOxgqlddI+QI8QFs3e89B/SbnV6+aYbWUP0zaxefbrBFcQ0yblOG5jAoaI3XZSs+8THLaykYCExjVY+CoLL8KwheUOdY5rE7F828snMh6vFaVM4NSZv3iwbyjAQ2dpSoZA6As63BMVUsq7g07ahFnd0od+ftbiT2uuJm5IsP2UE0/1cdXQrHiQidCTL+sij/Dy/wUpblc8QUJqcgU0WnN1P3BfAu0kfBljryT4zLIJFrsfdv4oXamYO9GJWIixNS1js1Tt6yaXCd46rJmE5F4p8Lk/k94yqSC12xGH1Xu1+PfpuxIEbDWSbVTaSJsSeFQapgS3cz+rr3Cf0prh5UIy6sae3W/9xPy380ypyuuJl0ZSll6GjNzPrVB5hENKTtIkfPmEKgZrud9eoyPUUIxyhjFvD8w2QjqN5Ptmn68QUCKxWJFPZEssvE7Rzg2pZ+cMKNoTBDe447ovwmoXVug/1XmL7sJu8DQBh8cKg/w1mtNZqUCGTOQTwSjfnA5OLo7bfCRY44w2uxrAx1DB7vEINipQpYAO8pofWa9jJcuTQ6IPnu4jQ7Qx8zZG3lwbcrInXwKr3C8uNaHlg033Z+08brkG2demCDfoRlLElSZgoZ6DkzN9TAd1/VZPJqjutt0+bH3PsmnlB7Z2UyIidT1kCeICN6IzM93D4XaQEzbMtD0L/UX73iPspbrO5H5zuKVQCqO1qT/xelQqO5y7LozhcAcUI1avC5z9Vl9/R3DNRQh6gkd4/bk+tpVYrYtLmgKNTJxWoC30GPI906POqQbR+1K/B+bRimvVnCIVB7uFU+XxosVqVa90M2o44aDyZQyeXWTCgIArYF3NMlSD2EiM0Gkg/XQSXd4d42cnyaUXATw1IcoMxTRu9fsn/cQ99M1WUVbK2TI62dXftxrKk5Ek7tFqpQanoW52xtzkfK30aHXwXG/tmNFsN99uZKIlXfI8USakM1t/0M6JLUwzk7Kfmc7+D1XXvx249X3+jct3zkUtkc8O6RtNtMM/nlorVBkmEmB26c7Q1ekbY5hog3K3ew29aIwT4KlTsZv9OwC15/qD7l/rp2VYMYbb2CIt/bOdrs3vvuOdhKRaKY9tTFTObQB4uMJbh5byGjomVllpnKK+9lQfXUmDALE3ytN/mDOcCnqs80LpN9nz5s7leu/uOGBVEQN5Iv+r24sl/lMF7Zp8kxKQVOVWcaq4dCyq+6tbj8WZM/+Fr9XnO5NxxWZEYThOBbQ7AZn6ZPyUioXKP+RG X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: b38d663d-b12d-4c8d-09ab-08da580bb5ba X-MS-Exchange-CrossTenant-AuthSource: CY5PR12MB6179.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jun 2022 07:07:34.6536 (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: WPbTnkI4Kj5SUvXCN2FQBJ494DH623vzx2wOwqviZmHcK9piJuDwcC2suW3BlZIy763Fjy3IaaSKMAg8QO/qRQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR12MB5439 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org From: Amit Cohen The device includes two main tables to support layer 2 multicast (i.e., MDB and flooding). These are the PGT (Port Group Table) table and the MPE (Multicast Port Egress) table. - PGT is {MID -> (bitmap of local_port, SPME index)} - MPE is {(Local port, SMPE index) -> eVID} In the legacy model, software did not interact with MPE table as it was completely hidden in firmware. In the new model, software needs to populate the table itself in order to map from {Local port, SMPE} to an egress VID. This is done using the SMPE register. Configure SMPE register when a {Local port, VID} are mapped/unmapped to a 802.1d and 802.1q emulated FIDs. The MPE table is not relevant for rFIDs as firmware handles their flooding. Signed-off-by: Amit Cohen Reviewed-by: Petr Machata Signed-off-by: Ido Schimmel --- .../ethernet/mellanox/mlxsw/spectrum_fid.c | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c index 3335d744f870..a82612a894eb 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c @@ -622,6 +622,18 @@ mlxsw_sp_fid_port_vid_list_del(struct mlxsw_sp_fid *fid, u16 local_port, } } +static int +mlxsw_sp_fid_mpe_table_map(const struct mlxsw_sp_fid *fid, u16 local_port, + u16 vid, bool valid) +{ + struct mlxsw_sp *mlxsw_sp = fid->fid_family->mlxsw_sp; + char smpe_pl[MLXSW_REG_SMPE_LEN]; + + mlxsw_reg_smpe_pack(smpe_pl, local_port, fid->fid_index, + valid ? vid : 0); + return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(smpe), smpe_pl); +} + static int mlxsw_sp_fid_8021d_port_vid_map(struct mlxsw_sp_fid *fid, struct mlxsw_sp_port *mlxsw_sp_port, u16 vid) @@ -635,6 +647,12 @@ static int mlxsw_sp_fid_8021d_port_vid_map(struct mlxsw_sp_fid *fid, if (err) return err; + if (fid->fid_family->mlxsw_sp->ubridge) { + err = mlxsw_sp_fid_mpe_table_map(fid, local_port, vid, true); + if (err) + goto err_mpe_table_map; + } + err = mlxsw_sp_fid_port_vid_list_add(fid, mlxsw_sp_port->local_port, vid); if (err) @@ -652,6 +670,9 @@ static int mlxsw_sp_fid_8021d_port_vid_map(struct mlxsw_sp_fid *fid, mlxsw_sp->fid_core->port_fid_mappings[local_port]--; mlxsw_sp_fid_port_vid_list_del(fid, mlxsw_sp_port->local_port, vid); err_port_vid_list_add: + if (fid->fid_family->mlxsw_sp->ubridge) + mlxsw_sp_fid_mpe_table_map(fid, local_port, vid, false); +err_mpe_table_map: __mlxsw_sp_fid_port_vid_map(fid, mlxsw_sp_port->local_port, vid, false); return err; } @@ -667,6 +688,8 @@ mlxsw_sp_fid_8021d_port_vid_unmap(struct mlxsw_sp_fid *fid, mlxsw_sp_port_vlan_mode_trans(mlxsw_sp_port); mlxsw_sp->fid_core->port_fid_mappings[local_port]--; mlxsw_sp_fid_port_vid_list_del(fid, mlxsw_sp_port->local_port, vid); + if (fid->fid_family->mlxsw_sp->ubridge) + mlxsw_sp_fid_mpe_table_map(fid, local_port, vid, false); __mlxsw_sp_fid_port_vid_map(fid, mlxsw_sp_port->local_port, vid, false); } From patchwork Mon Jun 27 07:06:15 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 12896292 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 589BAC433EF for ; Mon, 27 Jun 2022 07:07:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232676AbiF0HHr (ORCPT ); Mon, 27 Jun 2022 03:07:47 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53886 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232672AbiF0HHp (ORCPT ); Mon, 27 Jun 2022 03:07:45 -0400 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2085.outbound.protection.outlook.com [40.107.237.85]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6ACF95F56 for ; Mon, 27 Jun 2022 00:07:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Cvq9oo22KyLIpEKC3ilfspAkFtuRaPUvJLKgWZShLNnNZrqpHKW26o6SJfTcGzd63bfsNAO+qka7ouZ9cKkgUeNclCgnQPlXkrmBW/BRR7u6S+lu+xT2NzAnVNjomTc4Ewt8iNRnhLlm+sNXXups4P9tUFiqQYJobvfToRM+xzysL8S0F2lCZEWOWnkxE5VbbVCXtCnbGCsxo4bcDqB7dvHomP2ndDeuhdIaTWFGBNS3DhlKKajyOCfFOOZCh8LeHY4hgmoWIpuyK3PKYxV/9zUl27CHAJ6w82KimGQIonRgAYlUihVd9DAO3c6CHkUFerzYTDZB5OgGD9SzouUtbw== 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=Bum3t0JRoQ0TQZz1rambujIUnkaKzNhXmRPtx+tM98g=; b=ao+G4OP/t+aed/0h1SO9iBBEi3gHI+qwms3Cza4jJH88YmeXJT3+IZk+40jlCuBrAkrnToozbqykX6hwSiu/aGer03KtQCr3hjBwezCQM4Kw3qFu7QDYfU+XeF5IDbov/swa7+glU0BjsXqK3dgFRBu0Oo3pi+fqIu0COpn0m8Htn+iqv5vRBv1+3CyTgmOBj3gLroW0sBkx4FS1QHbLUKnE1yTQjf9RHtAJZ7tv+1+xwMSpFNFA+eDKwZWh5I1+ida4yYSXpa4M37FAmOx51KxJRKYaZKj3Xy0GyzKlhAOSHcGrUWGcM+kbLWPsMudhGWe2NCjbtUfUvp/ZpHNhUw== 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=Bum3t0JRoQ0TQZz1rambujIUnkaKzNhXmRPtx+tM98g=; b=KfjDZgvbVJhh4H4tg4JYrL1g2AqlbL0aoBrMbkmKGd5SR560QRhEZGCtAKfcFX8T72rxQa7jaHzgdRDAELt6Sq71qOTny8tpWTOoPnO0MLr+lNknki2hO9SH2MqaQRcAPNpBNHOVqapE8uiBvJbv8bucrgGBtYInz5Y/4D0ouHvLFtoRJ5xztCn+wXanBNAAbNIc4Z4DFVKkftLASES0N8RrUZOrfv33Bjo9QdaWvqUvVveX2JBV3VD1s3rwS9xBHbfD+KeVXxJnXQ3z3NKrLOe3bS3kD/6QQekh79L6coiE+Rf6tfY/SNUZWzMAZMMqRp1RXN5BR9QzQWHkbJ8WgQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from CY5PR12MB6179.namprd12.prod.outlook.com (2603:10b6:930:24::22) by SJ0PR12MB5439.namprd12.prod.outlook.com (2603:10b6:a03:3ae::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5373.15; Mon, 27 Jun 2022 07:07:40 +0000 Received: from CY5PR12MB6179.namprd12.prod.outlook.com ([fe80::611c:e609:d343:aa34]) by CY5PR12MB6179.namprd12.prod.outlook.com ([fe80::611c:e609:d343:aa34%5]) with mapi id 15.20.5373.018; Mon, 27 Jun 2022 07:07:40 +0000 From: Ido Schimmel To: netdev@vger.kernel.org Cc: davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com, edumazet@google.com, petrm@nvidia.com, amcohen@nvidia.com, mlxsw@nvidia.com, Ido Schimmel Subject: [PATCH net-next 07/13] mlxsw: Add an initial PGT table support Date: Mon, 27 Jun 2022 10:06:15 +0300 Message-Id: <20220627070621.648499-8-idosch@nvidia.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220627070621.648499-1-idosch@nvidia.com> References: <20220627070621.648499-1-idosch@nvidia.com> X-ClientProxiedBy: LO4P265CA0219.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:33a::17) To CY5PR12MB6179.namprd12.prod.outlook.com (2603:10b6:930:24::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e6a5afb4-fe56-437a-759d-08da580bb959 X-MS-TrafficTypeDiagnostic: SJ0PR12MB5439:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: +oBXoIKiolesXmAmbU0OMNBHC+nKRAQLjLDvK/KJnYCWcigRMQAFDi3fzaP+HZQoU10BdE04htSMCfz4cuDf57Ir51ttuf6VKcd32NSyUgDU5pis3qSxUTjTm/3+ycvptiOVfc5ORtgbO2oP5YMzdZOkhkKo6A0hQ6qv81JDNc6EFhltheXqk0A+E6NXhn+qnSTnC/Hk/LHKOL9POF4FMINxd+i/vF6OQnNsXaZzM70pzmEz97cSqmMQ3FCibK8T2YZFowIQM8NR3fEMEAh/V5eq4O1z/rV0DYYxI5oApZmb2I0ZD4qqRS/FNqqun1dxoY4/BoZ+Lu9o0rLMYCuyukFPvMauUhqj2c5XRr637Kpq4id4C7TABe4M9QRcj6Cd4XT40cIkeLqUBcgZA/wUsCOZCmAzMhscAQMcjGkuk0V2VkBjYsek93V8UjIx3cDBp1EwXwMPTKCznhJ5JHxt96/oEEzWFcE7/CTNydxESCcyEiYOZb10E6bAOrdbMR1pQaaKC/Aayp0FZofzOE3fz9lSanuaND0vIpOqEao1NgRz5iCCnv+v6cwrlf5T/GNJuLLJpGyFEQVOGwRFy3G0lAYLQHsaLbI+k8RotfrU7FiMXmpmnuSim3HnRxL5qj9COLXUzHpzgLwQkVSvtlEtABySLGNZNOgP6EkZtwEZDkDFv56V64ZNkfQ+2MGm9yRF+w0nrEfiGzczA9L++QwrX5tfELOfbi0CFY7zrTN8kbZNFyElWC007aye3zPNzA7u X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CY5PR12MB6179.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(396003)(376002)(346002)(136003)(39860400002)(366004)(6512007)(2616005)(36756003)(6666004)(6916009)(66556008)(316002)(107886003)(1076003)(186003)(66946007)(41300700001)(6506007)(2906002)(38100700002)(66476007)(6486002)(8936002)(478600001)(4326008)(86362001)(8676002)(83380400001)(26005)(5660300002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: d7ucKWtiymOppxLI43UVPXP7xjXpAIwkdLfIo+wPi/1MVcde91c64YyGwvAi0x/mVsyKjRDYTZGmdGAocgnhjeAOzX4YNsVzPby08MF1I8vhcb5+6Bgo/6nqIs9qrf+LSDKo2M59okOEOXYvwJu/XnxuM4NPY5wf90xX2NzqDocE8YNTMMdFKF/MAZrfUg5POM87JFlPCqNtHXfWrN1Cy8EyIXJq1QrTaXkErJWH6kGNeAAmUxAlTIjpJZ8nAE5lX+LA28SIWUKTbKrfHeeqnnrwMskyKYZeOjUH9zXqrf/Jvy8vOEeScPOQapNlprqeEykm/yj8FL0qV6cwcvDuzTEYSoMHmFVr3qYxthumxzPZpqGv2HMTsCEfCrcgL1G4RImX4Alp0Q53s4NulhZ9N8IZDPP/fmUBEJda9mbjMd6Gl5K3fvzGJsIjgk6+zv30bYBvdp1IrWzN/k9KXHPyoXO5r3nx+v4kQ4IwfRrnck07ZCUPk/p5mDERGZBByoZUCNCbYYxhPI6g59/Nhy0eDV8MfxIozAE1nRrKOxHfBs4xfwhCxQXiRCuvylS8aDSvycIGeX9pzgbl8f+S9oRZ0yW9gJhuyizA/gOJ+VgqciQ8lrQIisTuCsmE/khM+ApyZKOE5Ho6Yvee40wOFZf1zQ43Gl2Gg1BcE1w9jYzdR+jEmdwGYsti/9r9o0rEFf5NVEhx1RWzMsgmcBtDzSxUxS0CMO7fJ1HmNf7j6123/elB7ApreihzZJWuEgbmL0KTHKDEn8OF3VIsdDUyV8dY196cYMZxqyfWw0fg4Sx/eXJinrIsUSpCAnAbUDTUcWWQdUh7aHRxv7Rfv4tAksavZL5YWDioqdfIaVs+F6wrTFfw3+9XHl33HmH/FYhwK+1OdCHM130y7TnmRtN5ghgk2FtURA/Iq3vjO2IkSxibJVJJUyCmaJa0ikUCFmeaUpNBQvfOVm71HnSiQ9FmG6847R79OKBG4QMGyc5jpzpxEuOyzh4WFA6NDJL54CZ/OIy4e5+HUSFMMoTKLBjBSubuHYe6O86KwS8ZccoCr3fxhrFuPVDxWTBfIshmxknQrOKlUrGNdE4wI7VMrHbTYztTIQgeARia1NQJq6+rTZZtLNJrg62rKOf/QlShv9RVhlhdIyir8qiFYVLA9WeIV9WlrN7wE0Ncq4bVsgEd7FkytaSv7y8qLUDMXNSF1u9dvZSdqVwU6ZAZWDpfpArwvEHAQW9GwavCV8CINnz2T8kHiNbkrtwHK+kmUP9EO/QJOQI1+RBdr7agP+Z56NvNLmWUbC7K9n9fV83HPJdOqhzlRM/q+KEy7W6h1PY2VR1O3HXL8mUmqSeI7kvGxo0j74eWtMCi9ibpIyysMFOnStpoh+11HIOXygL6NTHZBObRvYT2axQgRtJu0GHu9jLzTUyumc/D01kwXFFjnUBaVXdd/u4uJqCOwOatEthWlf4kl4rXVwyAQVnIYhohoZEppJHdfXTqG8gsS8GS6X7jOTCWRnxtXH2T79Adi2bdAxcghX2gF7mThQqQ8TtD68TIRf3uvFg8cCzmMU2yz5Mtsx5bge9VQ8XGHxwOZqhNOWM9RLm5 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: e6a5afb4-fe56-437a-759d-08da580bb959 X-MS-Exchange-CrossTenant-AuthSource: CY5PR12MB6179.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jun 2022 07:07:40.6064 (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: hc8Depyy4g4oT4eeAHWzmDE5Qo06knlFOj5fimyX8/tPtqQmFgTkQdoLbdsfCam4Zj7HZ15Gc1FZKhg7DcmzlA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR12MB5439 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org From: Amit Cohen The PGT (Port Group Table) table maps an index to a bitmap of local ports to which a packet needs to be replicated. This table is used for layer 2 multicast and flooding. In the legacy model, software did not interact with this table directly. Instead, it was accessed by firmware in response to registers such as SFTR and SMID. In the new model, the SFTR register is deprecated and software has full control over the PGT table using the SMID register. The entire state of the PGT table needs to be maintained in software because member ports in a PGT entry needs to be reference counted to avoid releasing entries which are still in use. Add the following APIs: 1. mlxsw_sp_pgt_{init, fini}() - allocate/free the PGT table. 2. mlxsw_sp_pgt_mid_alloc_range() - allocate a range of MID indexes in PGT. To be used by FID code during initialization to reserve specific PGT indexes for flooding entries. 3. mlxsw_sp_pgt_mid_free_range() - free indexes in a given range. 4. mlxsw_sp_pgt_mid_alloc() - allocate one MID index in the PGT at a non-specific range, just search for free index. To be used by MDB code. 5. mlxsw_sp_pgt_mid_free() - free the given index. Note that alloc() functions do not allocate the entries in software, just allocate IDs using 'idr'. Signed-off-by: Amit Cohen Reviewed-by: Petr Machata Signed-off-by: Ido Schimmel --- drivers/net/ethernet/mellanox/mlxsw/Makefile | 3 +- .../net/ethernet/mellanox/mlxsw/resources.h | 2 + .../net/ethernet/mellanox/mlxsw/spectrum.h | 12 ++ .../ethernet/mellanox/mlxsw/spectrum_pgt.c | 120 ++++++++++++++++++ 4 files changed, 136 insertions(+), 1 deletion(-) create mode 100644 drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c diff --git a/drivers/net/ethernet/mellanox/mlxsw/Makefile b/drivers/net/ethernet/mellanox/mlxsw/Makefile index c57e293cca25..c2d6d64ffe4b 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/Makefile +++ b/drivers/net/ethernet/mellanox/mlxsw/Makefile @@ -28,7 +28,8 @@ mlxsw_spectrum-objs := spectrum.o spectrum_buffers.o \ spectrum_qdisc.o spectrum_span.o \ spectrum_nve.o spectrum_nve_vxlan.o \ spectrum_dpipe.o spectrum_trap.o \ - spectrum_ethtool.o spectrum_policer.o + spectrum_ethtool.o spectrum_policer.o \ + spectrum_pgt.o mlxsw_spectrum-$(CONFIG_MLXSW_SPECTRUM_DCB) += spectrum_dcb.o mlxsw_spectrum-$(CONFIG_PTP_1588_CLOCK) += spectrum_ptp.o obj-$(CONFIG_MLXSW_MINIMAL) += mlxsw_minimal.o diff --git a/drivers/net/ethernet/mellanox/mlxsw/resources.h b/drivers/net/ethernet/mellanox/mlxsw/resources.h index daacf6291253..826e47fb4586 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/resources.h +++ b/drivers/net/ethernet/mellanox/mlxsw/resources.h @@ -11,6 +11,7 @@ enum mlxsw_res_id { MLXSW_RES_ID_KVD_SIZE, MLXSW_RES_ID_KVD_SINGLE_MIN_SIZE, MLXSW_RES_ID_KVD_DOUBLE_MIN_SIZE, + MLXSW_RES_ID_PGT_SIZE, MLXSW_RES_ID_MAX_KVD_LINEAR_RANGE, MLXSW_RES_ID_MAX_KVD_ACTION_SETS, MLXSW_RES_ID_MAX_TRAP_GROUPS, @@ -69,6 +70,7 @@ static u16 mlxsw_res_ids[] = { [MLXSW_RES_ID_KVD_SIZE] = 0x1001, [MLXSW_RES_ID_KVD_SINGLE_MIN_SIZE] = 0x1002, [MLXSW_RES_ID_KVD_DOUBLE_MIN_SIZE] = 0x1003, + [MLXSW_RES_ID_PGT_SIZE] = 0x1004, [MLXSW_RES_ID_MAX_KVD_LINEAR_RANGE] = 0x1005, [MLXSW_RES_ID_MAX_KVD_ACTION_SETS] = 0x1007, [MLXSW_RES_ID_MAX_TRAP_GROUPS] = 0x2201, diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum.h b/drivers/net/ethernet/mellanox/mlxsw/spectrum.h index 828d5a265157..b42b23d09ab2 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.h +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.h @@ -143,6 +143,7 @@ struct mlxsw_sp_ptp_ops; struct mlxsw_sp_span_ops; struct mlxsw_sp_qdisc_state; struct mlxsw_sp_mall_entry; +struct mlxsw_sp_pgt; struct mlxsw_sp_port_mapping { u8 module; @@ -217,6 +218,7 @@ struct mlxsw_sp { struct rhashtable ipv6_addr_ht; struct mutex ipv6_addr_ht_lock; /* Protects ipv6_addr_ht */ bool ubridge; + struct mlxsw_sp_pgt *pgt; }; struct mlxsw_sp_ptp_ops { @@ -1448,4 +1450,14 @@ int mlxsw_sp_policers_init(struct mlxsw_sp *mlxsw_sp); void mlxsw_sp_policers_fini(struct mlxsw_sp *mlxsw_sp); int mlxsw_sp_policer_resources_register(struct mlxsw_core *mlxsw_core); +/* spectrum_pgt.c */ +int mlxsw_sp_pgt_mid_alloc(struct mlxsw_sp *mlxsw_sp, u16 *p_mid); +void mlxsw_sp_pgt_mid_free(struct mlxsw_sp *mlxsw_sp, u16 mid_base); +int mlxsw_sp_pgt_mid_alloc_range(struct mlxsw_sp *mlxsw_sp, u16 mid_base, + u16 count); +void mlxsw_sp_pgt_mid_free_range(struct mlxsw_sp *mlxsw_sp, u16 mid_base, + u16 count); +int mlxsw_sp_pgt_init(struct mlxsw_sp *mlxsw_sp); +void mlxsw_sp_pgt_fini(struct mlxsw_sp *mlxsw_sp); + #endif diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c new file mode 100644 index 000000000000..27db277bc906 --- /dev/null +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c @@ -0,0 +1,120 @@ +// SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 +/* Copyright (c) 2022, NVIDIA CORPORATION & AFFILIATES. All rights reserved. */ + +#include +#include + +#include "spectrum.h" +#include "reg.h" + +struct mlxsw_sp_pgt { + struct idr pgt_idr; + u16 end_index; /* Exclusive. */ + struct mutex lock; /* Protects PGT. */ +}; + +int mlxsw_sp_pgt_mid_alloc(struct mlxsw_sp *mlxsw_sp, u16 *p_mid) +{ + int index, err = 0; + + mutex_lock(&mlxsw_sp->pgt->lock); + index = idr_alloc(&mlxsw_sp->pgt->pgt_idr, NULL, 0, + mlxsw_sp->pgt->end_index, GFP_KERNEL); + + if (index < 0) { + err = index; + goto err_idr_alloc; + } + + *p_mid = index; + mutex_unlock(&mlxsw_sp->pgt->lock); + return 0; + +err_idr_alloc: + mutex_unlock(&mlxsw_sp->pgt->lock); + return err; +} + +void mlxsw_sp_pgt_mid_free(struct mlxsw_sp *mlxsw_sp, u16 mid_base) +{ + mutex_lock(&mlxsw_sp->pgt->lock); + WARN_ON(idr_remove(&mlxsw_sp->pgt->pgt_idr, mid_base)); + mutex_unlock(&mlxsw_sp->pgt->lock); +} + +int +mlxsw_sp_pgt_mid_alloc_range(struct mlxsw_sp *mlxsw_sp, u16 mid_base, u16 count) +{ + unsigned int idr_cursor; + int i, err; + + mutex_lock(&mlxsw_sp->pgt->lock); + + /* This function is supposed to be called several times as part of + * driver init, in specific order. Verify that the mid_index is the + * first free index in the idr, to be able to free the indexes in case + * of error. + */ + idr_cursor = idr_get_cursor(&mlxsw_sp->pgt->pgt_idr); + if (WARN_ON(idr_cursor != mid_base)) { + err = -EINVAL; + goto err_idr_cursor; + } + + for (i = 0; i < count; i++) { + err = idr_alloc_cyclic(&mlxsw_sp->pgt->pgt_idr, NULL, + mid_base, mid_base + count, GFP_KERNEL); + if (err < 0) + goto err_idr_alloc_cyclic; + } + + mutex_unlock(&mlxsw_sp->pgt->lock); + return 0; + +err_idr_alloc_cyclic: + for (i--; i >= 0; i--) + idr_remove(&mlxsw_sp->pgt->pgt_idr, mid_base + i); +err_idr_cursor: + mutex_unlock(&mlxsw_sp->pgt->lock); + return err; +} + +void +mlxsw_sp_pgt_mid_free_range(struct mlxsw_sp *mlxsw_sp, u16 mid_base, u16 count) +{ + struct idr *pgt_idr = &mlxsw_sp->pgt->pgt_idr; + int i; + + mutex_lock(&mlxsw_sp->pgt->lock); + + for (i = 0; i < count; i++) + WARN_ON_ONCE(idr_remove(pgt_idr, mid_base + i)); + + mutex_unlock(&mlxsw_sp->pgt->lock); +} + +int mlxsw_sp_pgt_init(struct mlxsw_sp *mlxsw_sp) +{ + struct mlxsw_sp_pgt *pgt; + + if (!MLXSW_CORE_RES_VALID(mlxsw_sp->core, PGT_SIZE)) + return -EIO; + + pgt = kzalloc(sizeof(*mlxsw_sp->pgt), GFP_KERNEL); + if (!pgt) + return -ENOMEM; + + idr_init(&pgt->pgt_idr); + pgt->end_index = MLXSW_CORE_RES_GET(mlxsw_sp->core, PGT_SIZE); + mutex_init(&pgt->lock); + mlxsw_sp->pgt = pgt; + return 0; +} + +void mlxsw_sp_pgt_fini(struct mlxsw_sp *mlxsw_sp) +{ + mutex_destroy(&mlxsw_sp->pgt->lock); + WARN_ON(!idr_is_empty(&mlxsw_sp->pgt->pgt_idr)); + idr_destroy(&mlxsw_sp->pgt->pgt_idr); + kfree(mlxsw_sp->pgt); +} From patchwork Mon Jun 27 07:06:16 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 12896293 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 4CC07C43334 for ; Mon, 27 Jun 2022 07:07:58 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232674AbiF0HH5 (ORCPT ); Mon, 27 Jun 2022 03:07:57 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54156 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232696AbiF0HHy (ORCPT ); Mon, 27 Jun 2022 03:07:54 -0400 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2083.outbound.protection.outlook.com [40.107.94.83]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4B0355FBE for ; Mon, 27 Jun 2022 00:07:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XFrhneDjZBJ2BIWks5jBL9h+LTP+uj0HPig+ykDiWP3Gov6MB/Wd1N5LOCWBurKA/7h1g+mCUMhhRdKms8EpFRsd9FH+TIOb3lOhBpNbTnJ2UO85AzBbYoCg+Lf7AuKr/cen0fygqdjAiIGupABd4h1oTeHhIev8NVGOhCmE0zLYGdWo/s2Ubny+RN9Nz6olapmb8IB18HO5uE3VelvFz4iy+3FERVn9D/wC1TmrtgO+lSbERbrNeeEhiJFyoFCWVHu7wVkdrFTL/vGlyWgFP6Nn81UGCqqqcslub++WJf1+HeyYU8s20FQGeODEYSgBm3aTe3uNP94avto6knFnyg== 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=RSbFNxCRuZFDG9S/7p3+kx7SeQkRLGeyIZlFhcM0lZc=; b=RNBYLFcZ77rlWJCIDbXbSaeJjNXicacImhgGt9t8EtJ+miebieJI8JBfSi/tOcvrRZFWF6cSmh6C80FxpHH20az+My4pvzYFMFOKdA1odT5bV5dQYYpOVEHohM5jLjp+nCUwaxuIDvgG02p8EivrWGEMQ6O0Ek7kFAh9QgxzW8JlesjfbGo/yvKebtS+KdjvZ81Hwi3n/gCJxy1wbxBf2tT/hjEzf56+J70UuMiUO8OneBromGlY5iUELGhq4W8/HZUcWOwfhjSBrbT2/odCzvey4MayRsePM2wqK4LYTpfG1098QoSALy0Ppiq28ldYkD8r0mOO0yUlPpdP5+p9NQ== 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=RSbFNxCRuZFDG9S/7p3+kx7SeQkRLGeyIZlFhcM0lZc=; b=NMFx0Ej3/GO6ZErjtvJjDdgThVrYtObO1bEWqzYHnEHsR61mgURRfFyuXzDWV9E1bJCsyNvkI6gE4adru9ZL8mh2HZnBJ8/TTX2qagm4xAswhiiWzSjnWuejgA+yYGO1Lx8f+gW50cs83xHG0O+CkMJioWtsREGIBbQ6S6n4HzBRhasV9SxHas8WKxapGfujOgZqGIYEu+hqQd3DqqPu7fyxfdt/xU8JCHbhCpOH3HiNhm5iirlKX7a0UR6p8z7DbQ5dH93jZ9Fc9+wGknvniQn77Q5JSF3qquvJqlkjOaUmFbVw7l6mmjtURgvAZ0kIID0a2RUz4UhZoEeQfc595w== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from CY5PR12MB6179.namprd12.prod.outlook.com (2603:10b6:930:24::22) by SJ0PR12MB5439.namprd12.prod.outlook.com (2603:10b6:a03:3ae::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5373.15; Mon, 27 Jun 2022 07:07:46 +0000 Received: from CY5PR12MB6179.namprd12.prod.outlook.com ([fe80::611c:e609:d343:aa34]) by CY5PR12MB6179.namprd12.prod.outlook.com ([fe80::611c:e609:d343:aa34%5]) with mapi id 15.20.5373.018; Mon, 27 Jun 2022 07:07:46 +0000 From: Ido Schimmel To: netdev@vger.kernel.org Cc: davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com, edumazet@google.com, petrm@nvidia.com, amcohen@nvidia.com, mlxsw@nvidia.com, Ido Schimmel Subject: [PATCH net-next 08/13] mlxsw: Add an indication of SMPE index validity for PGT table Date: Mon, 27 Jun 2022 10:06:16 +0300 Message-Id: <20220627070621.648499-9-idosch@nvidia.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220627070621.648499-1-idosch@nvidia.com> References: <20220627070621.648499-1-idosch@nvidia.com> X-ClientProxiedBy: LO4P123CA0470.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:1a8::7) To CY5PR12MB6179.namprd12.prod.outlook.com (2603:10b6:930:24::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: b5cf98fa-aee8-4edb-b0d9-08da580bbcfa X-MS-TrafficTypeDiagnostic: SJ0PR12MB5439:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: IiQL9Gilw7ap9PIZ4ZkB/5bvOeG8JuJ7xL88IcS0cA8bfXsNFWilTi3xCSuAC53OicOsfRPIA6+aSxww1mu+CUU9RO3V3/xuri09yfS5lD8ET5bigUvXW3OfThIaX3LRMVlU+LyX1o7mlD3pW179rMK3US0x1K3v73sXeEqslfwjh2x9XWwJowUT+TNyAUoE9nFzTN6Qchu4hZsLfle21Afj44jYTrrpVrQOXCM0P+P9aDCEG0o8ZonrGeztLrgPrEGDFGivWAujH4WXHXmxbQLiXr1GRuJ9UjTWO7BuG+aYK3fJv5B20Recqel/VYbruvVjO4z+aVXZyujNj2Vj3DcHLPbPIIoa0PqGNPsUxt9R0WBbkoGQh9kQvHZAfU1mX03s/YwiG4gkLbi4mROvqkHYwz11RCWFp6Caa3UfF707S2q47/O/buBzaC9CHuChkck9lDUbp6a8SQ7TF9ZHRt/0yA0QdyNO56GYqoCtP3YVxQyTxzZttBndLGY0RXJflwpngqbacE1aGwrkzOVR/Me337gxm9n/0LiwfU2SOqcuWlgWXeKbgGLTY3KfuCeYWi81d+YTZQQr5so/0ynSI/cMc/g6lZoDKQ/ShPFBz4buiJyDm0GQLoiPhaJds9OyiEsUUf+veGy+Gguj5bud5tDmZWP2V43kAlSLLoH/bpqzRzotRkAo0wdeFcs2cgLW6y8/9r7dMGnhKPVcRFl4cW/aMyhGITmC36JTsf2F3jY7v5vkhFKBToYUpDpIVhX4 X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CY5PR12MB6179.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(396003)(376002)(346002)(136003)(39860400002)(366004)(6512007)(2616005)(36756003)(6666004)(6916009)(66556008)(316002)(107886003)(1076003)(186003)(66946007)(41300700001)(6506007)(2906002)(38100700002)(66476007)(6486002)(8936002)(478600001)(4326008)(86362001)(8676002)(83380400001)(26005)(5660300002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: FgxvoxMTsdDc+Orw2zPorywaMImwTtlEHwVK8hmTMW/pTLVHCKoHW83IaBVnJoeeQxmK/7uaHI9aU+dtSjVHbWPn88J4yq/mN+SdgZiuAJi/rOwDNi04bwSgh67a6eR5acV+v3NZ2/dBh+8U6VVH6zj9g6n0ijyI8aYA01zqcli85Y053xV7qxTHNwHZwMJMyXkG8JNHDsaCH/lK8kqBhnzcAAPTawZXyBF/3ge2L0FR6t58Jd971mQrKhFBbSaHkpuMk1CjJH9x0wIbuhz5V8RS7hi3YT7+nIRDX204UO+0gRdP9pF3UShwROU17rkoWPy4KkxzCBxhAEB526Htz7IrPKX5gjf79qkOEpCfUr0fi61IXV6pdA9bgEutWMUSkQMLJofFOnguVvu40L6uMDt8Vgf+LX54vPCmkajUiW3NhTYktIEcztkYgttFwlfJ79p7OIIivVJWy/EloSSz5DpfZYNNHqPP5XupfE9CsmhCgx5UOooyGtehW29+WP0V++U7d9gkLGeT39JCX0ZUFM4jCBur/NPhCO42NQzvRjP9cBOtdVG0/vDEjyLla/dLr9/jpFou74vFYn1XmiWNTEoukx1MqWNsoNNdl04C+sJs17i5PywVNVJQ29JWZQSHJSeRkbuDJktvNA/EeN/g9ihMaVhvwY9dYtbqohCFAjb1HQU3X25s/3v9SlyH/S2csdsHrvu3aswwWc3qmJTF2hng1saRsOkppSWRQYOswEDCuw9wWEnB2a3jnyl83QPOfNTqD+YiTpFYC2sxJPmJr/TrCtBTJRIyrYgZ78vpOehHnHYZNOAPY0rhzlIIfRABAGS/d/5llhtlwBpuxFHiLlfZ89RmGVjfRM6CNM/aFLcp6ES9gIhWCgQXZWjNDXG+FIeBn/+sROl8op63nEj8pfavFB5wjolPWlrvIqZeqMUNcYhnn7SYqZtJ27ZhjrYEU52BnVPgEB3/KpBuf+tTqc3gHVxO9iziSuVIy+aCZMBO3IolyYy+3qmPSQ2IN/uhPIG5fququftrz7uYhsWQYzf0K7HQ93G0zBUmtEsN+chuY/WZFdp7zaY/jqJwu84DUY8LDcR0Z1cXL4RKQy920XfHy95a/TIM03CWrsbYux+w/CZitQ+FuG2PYrJvLNuiw+BR1RrluuRielTSnqg6ljaR+HdFeEik0cpEdcMrgHmlw8lIWOn/kyaw/5KZaei1l+Y5UPY1e5o3FEsYY+AMIiavlfknpGtPAPljya5yRfWNTmr2XyHpiOmZheudIiTJ8kuhtvDPXVWftVYCZzvU+FLpuFkK9t7hrZPc4ZBhY+5olnITK6AApB5yb/bvzD6OHXcRBmu/dCc1xqaDH7CQVXAkY06VXnHjjWo+k/7dQFzPoa2kse+DTtWxfB4MgFWHRrAR3xBsBChROuzjkvMICFa3JB3iTzlJR6qbGF2j0If2RNqSjWex6TAClgn65OGi48ecM2BBivuFEDYUpyK2yk8cRD5eNL58e8wxJSx6FXAq1K5C577MwnlT1LtGBOKv7nu839GtQ4JrC+Uba7i2wp6qeZn7CtH+VojT8vXheDoZl2gRuCtmRl32uvX9NRil X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: b5cf98fa-aee8-4edb-b0d9-08da580bbcfa X-MS-Exchange-CrossTenant-AuthSource: CY5PR12MB6179.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jun 2022 07:07:46.5714 (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: qqkdfAP/tf8IFTm8Gzo+k1hd/q07C9XEWVESMGsqIr+ZA6CM3sMSA2oK+/zb21AXeFEieGo0U/Y0T/P0NVMBoA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR12MB5439 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org From: Amit Cohen In Spectrum-1, the index into the MPE table - called switch multicast to port egress VID (SMPE) - is derived from the PGT entry, whereas in Spectrum-2 and later ASICs it is derived from the FID. Therefore, in Spectrum-1, the SMPE index needs to be programmed as part of the PGT entry via SMID register, while it is reserved for Spectrum-2 and later ASICs. Add 'pgt_smpe_index_valid' boolean as part of 'struct mlxsw_sp' and set it to true for Spectrum-1 and to false for the later ASICs. Add 'smpe_index_valid' as part of 'struct mlxsw_sp_pgt' and set it according to the value in 'struct mlxsw_sp' as part of PGT initialization. Signed-off-by: Amit Cohen Reviewed-by: Petr Machata Signed-off-by: Ido Schimmel --- drivers/net/ethernet/mellanox/mlxsw/spectrum.c | 4 ++++ drivers/net/ethernet/mellanox/mlxsw/spectrum.h | 1 + drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c | 2 ++ 3 files changed, 7 insertions(+) diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c index 6b17fa9ab9c7..b128f900d0fe 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c @@ -3235,6 +3235,7 @@ static int mlxsw_sp1_init(struct mlxsw_core *mlxsw_core, mlxsw_sp->listeners_count = ARRAY_SIZE(mlxsw_sp1_listener); mlxsw_sp->fid_family_arr = mlxsw_sp1_fid_family_arr; mlxsw_sp->lowest_shaper_bs = MLXSW_REG_QEEC_LOWEST_SHAPER_BS_SP1; + mlxsw_sp->pgt_smpe_index_valid = true; return mlxsw_sp_init(mlxsw_core, mlxsw_bus_info, extack); } @@ -3268,6 +3269,7 @@ static int mlxsw_sp2_init(struct mlxsw_core *mlxsw_core, mlxsw_sp->listeners_count = ARRAY_SIZE(mlxsw_sp2_listener); mlxsw_sp->fid_family_arr = mlxsw_sp2_fid_family_arr; mlxsw_sp->lowest_shaper_bs = MLXSW_REG_QEEC_LOWEST_SHAPER_BS_SP2; + mlxsw_sp->pgt_smpe_index_valid = false; return mlxsw_sp_init(mlxsw_core, mlxsw_bus_info, extack); } @@ -3301,6 +3303,7 @@ static int mlxsw_sp3_init(struct mlxsw_core *mlxsw_core, mlxsw_sp->listeners_count = ARRAY_SIZE(mlxsw_sp2_listener); mlxsw_sp->fid_family_arr = mlxsw_sp2_fid_family_arr; mlxsw_sp->lowest_shaper_bs = MLXSW_REG_QEEC_LOWEST_SHAPER_BS_SP3; + mlxsw_sp->pgt_smpe_index_valid = false; return mlxsw_sp_init(mlxsw_core, mlxsw_bus_info, extack); } @@ -3334,6 +3337,7 @@ static int mlxsw_sp4_init(struct mlxsw_core *mlxsw_core, mlxsw_sp->listeners_count = ARRAY_SIZE(mlxsw_sp2_listener); mlxsw_sp->fid_family_arr = mlxsw_sp2_fid_family_arr; mlxsw_sp->lowest_shaper_bs = MLXSW_REG_QEEC_LOWEST_SHAPER_BS_SP4; + mlxsw_sp->pgt_smpe_index_valid = false; return mlxsw_sp_init(mlxsw_core, mlxsw_bus_info, extack); } diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum.h b/drivers/net/ethernet/mellanox/mlxsw/spectrum.h index b42b23d09ab2..600089364575 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.h +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.h @@ -219,6 +219,7 @@ struct mlxsw_sp { struct mutex ipv6_addr_ht_lock; /* Protects ipv6_addr_ht */ bool ubridge; struct mlxsw_sp_pgt *pgt; + bool pgt_smpe_index_valid; }; struct mlxsw_sp_ptp_ops { diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c index 27db277bc906..0fc29d486efc 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c @@ -11,6 +11,7 @@ struct mlxsw_sp_pgt { struct idr pgt_idr; u16 end_index; /* Exclusive. */ struct mutex lock; /* Protects PGT. */ + bool smpe_index_valid; }; int mlxsw_sp_pgt_mid_alloc(struct mlxsw_sp *mlxsw_sp, u16 *p_mid) @@ -107,6 +108,7 @@ int mlxsw_sp_pgt_init(struct mlxsw_sp *mlxsw_sp) idr_init(&pgt->pgt_idr); pgt->end_index = MLXSW_CORE_RES_GET(mlxsw_sp->core, PGT_SIZE); mutex_init(&pgt->lock); + pgt->smpe_index_valid = mlxsw_sp->pgt_smpe_index_valid; mlxsw_sp->pgt = pgt; return 0; } From patchwork Mon Jun 27 07:06:17 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 12896295 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 2A32FC433EF for ; Mon, 27 Jun 2022 07:08:05 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232678AbiF0HIE (ORCPT ); Mon, 27 Jun 2022 03:08:04 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54382 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232690AbiF0HIB (ORCPT ); Mon, 27 Jun 2022 03:08:01 -0400 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2083.outbound.protection.outlook.com [40.107.94.83]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B2E555F89 for ; Mon, 27 Jun 2022 00:07:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XiJCcWDZXvQkNuOBrlCoUMZQketaogl0Csvsf5tQXw0bkCfKkJ1G9EAtkX9kQHrNguHpx3OypwZTzjiGa1o9ngnY8TmF9kCRVcoWs+4WQ45c7x6fNK2zdbOHbuvGZR3v0ot2ZzaYEHxUwDHahGNprD5IJAb9ycJWYbddC7FYxr3t6r0FXjMjuSvWvJx9FIYK8PQ4fqLKDr+5vwKcWIBOeiFbnhQ71f9Ym9m4rL2gFHgHaVMgxdz74UjhvzRWh7S2Fvfvu4PN//DtK+eTevwHa0spUaCcyhq2UxzqFm8ET2exF0b6HYeZfYiw22xGRFJJhVRpO4hL0TjaeyhQlIPMYw== 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=x8uzpKB5opCfZjPpcVLAz9BMPqvEVecbCRE3UKzLV00=; b=hgcf3YOcLFRpTolXqHdLAjQx0KY09y8mRvz9JdJszimnhi6w+004Sn3pEv4TWdJw1vFTCsepxbGbfsTbxIeXI9sRvemLv8Y/BS1ChMHS3AFRTE5mKWHVgFbGaNk4ITxWWlpvO3b/pbTBGRUyKVNhKdbogspO4WSS2X+fRn4WlMrVSUrdjaM9/TOidV4JVPHRhSrEhQFQ9A7cVaefI/udmpYW+PYefeHTjvmp/2XQk3otMvOMBH9XvF72hNGGvMVUSKqNAoNhdYwLHgkT7gWQxrnK7L/qfgCfRvXnNvK/59QEmslx364h4RritmBWZmgzXwvileu10otJSIDA9B0O+Q== 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=x8uzpKB5opCfZjPpcVLAz9BMPqvEVecbCRE3UKzLV00=; b=NXsryycguC0g4MZGYodVP0X4dtpHIZxvAR93tW4kz+xMmDiH7I3Pc4OgROrSLhJLKgTkcgn1qay9+Ek2mpon6NGrQx/mNVpn3T1K3vcviakIT9Z0KjwMVbo4UsAe2cZpQH1p6PpMBeUbGWMNZtPLoZnAgQ2uWMn1jIIiJLqXs5s9OuedSOsklmqC1cnAgAO+Zk60fjp/haR8zapzI4cRhJ3enapBQB2d16ReTxPDUkalOq8L437RfLfauLp7t6IH9Uv5ISsavnXHYIKvHnBB69vYxKQK2vw9JO+lxFWQvW95f+Tg90rA+FPHj/JGVjxFsVphPRrg7d4U4EqVPMR/Mg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from CY5PR12MB6179.namprd12.prod.outlook.com (2603:10b6:930:24::22) by SJ0PR12MB5439.namprd12.prod.outlook.com (2603:10b6:a03:3ae::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5373.15; Mon, 27 Jun 2022 07:07:51 +0000 Received: from CY5PR12MB6179.namprd12.prod.outlook.com ([fe80::611c:e609:d343:aa34]) by CY5PR12MB6179.namprd12.prod.outlook.com ([fe80::611c:e609:d343:aa34%5]) with mapi id 15.20.5373.018; Mon, 27 Jun 2022 07:07:51 +0000 From: Ido Schimmel To: netdev@vger.kernel.org Cc: davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com, edumazet@google.com, petrm@nvidia.com, amcohen@nvidia.com, mlxsw@nvidia.com, Ido Schimmel Subject: [PATCH net-next 09/13] mlxsw: Add a dedicated structure for bitmap of ports Date: Mon, 27 Jun 2022 10:06:17 +0300 Message-Id: <20220627070621.648499-10-idosch@nvidia.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220627070621.648499-1-idosch@nvidia.com> References: <20220627070621.648499-1-idosch@nvidia.com> X-ClientProxiedBy: LO2P265CA0134.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:9f::26) To CY5PR12MB6179.namprd12.prod.outlook.com (2603:10b6:930:24::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 676610d9-ef5e-4a48-9522-08da580bc019 X-MS-TrafficTypeDiagnostic: SJ0PR12MB5439:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: +lqFmTseJT2+CekOv/4Av6v2hffXDzaIxWHtQ4ToZNJiNRFhI+eNKxk0MhQTlOGnZlCBknkTwnD8nsdMUqs4/Zz0r8oEZZMyOTTxMuefxeNAGqIhqPQujaaK+a4V8UxnyWQnsQM/ZGY7bfCzRP8D6+tGRxqua2rJiJnJ5VAAPiSG3j9rGxs7+ZZb3an6edNUvljb8luojGWJ/KmEpobFwPV0qiVvjLISF1qSKQP2qu94oVz7VyCZPy523ChxbWe40j4/B160loITq5u4w491sr1E9O3+HzxK2MSyy3dWxR8/OqvVJan7Rza5j+w3B4X26GUtjyJtDwQ7vW2+Xw3GB5IM1VugjPYZ22L6DUjs2dDsOS/ArLNOiJEL9F9Y/iybXIrNbwUx2+z0WW1VHpuNlIBIsZT5+tETWB+1X+t7D2C/mO8y3u1u0FTUD7FG06C3DGsLzAvnEI9qDXpnz7Yn5JWfQjqrDiSGOPgGlEg9wrlfRGs1Fck+IDcub47oTvrV2ZIJcUFXyhz+yzY/adUIpsC60fCl5/lYrPaMc0cVqMhNdfutWNi/4jIUR2+MnBzCVblZCBHD2ME67eaLVQ7usDVGJamsoBJ6uSNeV3rDUsDiTFX6eIgS81+cUvcYuQvvP4CXCfSLkHfrghYHoTqoQ85Lp8rVwPnKtk2PfLHSx11fULp8nhqGWCK2DOVp3kSNIFUmYc8iZvjE5TSXc5nqaxbe4LmStdIWMDt8ca1gcY4m4TZSgYJIHkD5YD2j/zx3 X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CY5PR12MB6179.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(396003)(376002)(346002)(136003)(39860400002)(366004)(66574015)(6512007)(2616005)(36756003)(6666004)(6916009)(66556008)(316002)(107886003)(1076003)(186003)(66946007)(41300700001)(6506007)(2906002)(38100700002)(66476007)(6486002)(8936002)(478600001)(4326008)(86362001)(8676002)(83380400001)(26005)(5660300002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: be2g2cpr9cGLtM9bax2JS7ETB5DD4Ky5V4+Gxjqe2TyVhA1Ioy0I3+qD3JUguRvhdX8donen+kgmUXRBybY4CF5bNHWsMMhZ6mrdykcA1LI02ZHg1GLftz7iXB1X2sOJ8LWXleVJEy4PKHa26ytxC/pneXLHibIK5Z4zGZQMOF02jc5Cr30tp2bJCJpUW24gmG7Y2PFYh3EVMTBHKMELCX2DkBeZ+vSxodK1WFITMm7cG4EBJGRWIEJavJnQJkiZQXuvsUa/R7RER8TBx9KE+7FuyLyFjwOpfnWe9abQFgdGdlyBvlyQrqG8YBL4TsJioJvuLqgKRh8QAvpk7s41McB8qCzY52IYPfrZozS4qqhgxhM3TuGR7tkESv9GP6y8TWbKeQ0nVfk/7eKz6UCKljFBPMxQWzzqI6iF0jgwguNQV506v0ghM0+jQbKZvsv0dkljP77cnfRDp0AWVM/LYSv2YjteDL77SRHVaYjq36PK24HQCNE7rPHuoipb4CLaORFCIaR5erqzH16GAOaJ5ACoJr/vwCKcE8H1shAma8ia7BW2rKfmcQwXM4vk07B8+1k2ztlLFbGUwGza5aNtJ0hI3/jY5Zm13yyLowTjVyeu0R1wlO+Y4axm6hPDztgMRARijLLHlidA1EodsPk/yS1VNVpPfax0AscNCWptS5TDSC4VtV1isN8X7IS25VHdhqSkTO8jNze5nivMBVnBorXHcMm6enwczkkQtbRLQCM8nT3zEZnyWMgJJy9oHKyGZo98IV7SnLkvsatSNV1sCfS/YMPIMcyWILI3qFSsqmnK5K2LN5xnCjTtNCoOVJ4ytd8x9AmDLxeQY3s3zW4vjgNN64cRXf3CQwmYJt5V4VC/HzRk3soKl/x3VuDapW9jzyxKtlFWOJyNbVnomD6HL742po2jSi4mXxvVuNiv60jcyjPV+5BbKDyNSOS2phwdJse7WOFHocB3b7LOOLPrlyBOh7kSEJlzLKt9WDAMYvBDQCVLe/as8r0R+ER53ip0m7kNguvLAc++3ivSVsrb2dBPvMt9bDecXDh4AmdXN9U2MzKuxXq8i85Tz8Y8VJ9kHoWmFMGltqL+l/muX6FDYWO/VkfmVY+i3mV1COW5i/m3CJSlz2HIU1iNzeXOY5nU2ORS3J+s4tyPpyNEu13LmGW+zrmYG/fBxlCwP2ZYeus56ODaFa6Y8SGg4If7Mqh3qCmiAEJbP37PkCmqox3N3U9Kq0uCjMhqw96dhkhzenTCzRY9wusjsdMY8X+1b7ibVe6YkmbiAVVu3IX/3cjfdh4GqxMCfSE9S6IPQ04GSd1LvFLW05boBWbhltC14+GJhY2TJbIGXbZ/e9BuoB8M4QyXnwdLBo75GKvIvWPJd5/cKvuWBWqM8ukuDcL/DmZ4aUPXWnb7DgKXveECVaHLjxvaaSJtD3xLI3SVLa0Vjr9HFWxnSE/iq75na/qJ0F1R0PK3gL9mncdMC1DoXqoYlYylUB5EtnzKNuCnkiveaiifaJ13Rpx2EwOR4YAM6i2Cwm5UnTwSZUPe0RAcvX4tQPFTrjdVdKQVn4mXA5IGtQDjv8YkXXnE5oIvodE21wdT X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 676610d9-ef5e-4a48-9522-08da580bc019 X-MS-Exchange-CrossTenant-AuthSource: CY5PR12MB6179.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jun 2022 07:07:51.8226 (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: di1Cf7nRPmxiWiNxtnmwzDCgH7o639v6RCThrjfM8qyNJUQchJluaBOiNGJGdEbTDS1DtY6HC2J7p9XDn8bAtQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR12MB5439 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org From: Amit Cohen Currently when bitmap of ports is needed, 'unsigned long *' type is used. The functions which use the bitmap assume its length according to its name, i.e., each function which gets a bitmap of ports queries the maximum number of ports and uses it as the size. As preparation for the next patch which will use bitmap of ports, add a dedicated structure for it. Refactor the existing code to use the new structure. Signed-off-by: Amit Cohen Signed-off-by: Ido Schimmel --- .../net/ethernet/mellanox/mlxsw/spectrum.h | 25 +++++++++++++ .../mellanox/mlxsw/spectrum_switchdev.c | 37 +++++++++---------- 2 files changed, 43 insertions(+), 19 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum.h b/drivers/net/ethernet/mellanox/mlxsw/spectrum.h index 600089364575..645244ac5dfc 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.h +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.h @@ -395,6 +395,31 @@ struct mlxsw_sp_port_type_speed_ops { u32 (*ptys_proto_cap_masked_get)(u32 eth_proto_cap); }; +struct mlxsw_sp_ports_bitmap { + unsigned long *bitmap; + unsigned int nbits; +}; + +static inline int +mlxsw_sp_port_bitmap_init(struct mlxsw_sp *mlxsw_sp, + struct mlxsw_sp_ports_bitmap *ports_bm) +{ + unsigned int nbits = mlxsw_core_max_ports(mlxsw_sp->core); + + ports_bm->nbits = nbits; + ports_bm->bitmap = bitmap_zalloc(nbits, GFP_KERNEL); + if (!ports_bm->bitmap) + return -ENOMEM; + + return 0; +} + +static inline void +mlxsw_sp_port_bitmap_fini(struct mlxsw_sp_ports_bitmap *ports_bm) +{ + bitmap_free(ports_bm->bitmap); +} + static inline u8 mlxsw_sp_tunnel_ecn_decap(u8 outer_ecn, u8 inner_ecn, bool *trap_en) { diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c index 863c8055746b..e153b6f2783a 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c @@ -1646,9 +1646,10 @@ static int mlxsw_sp_port_mdb_op(struct mlxsw_sp *mlxsw_sp, const char *addr, return err; } -static int mlxsw_sp_port_smid_full_entry(struct mlxsw_sp *mlxsw_sp, u16 mid_idx, - long *ports_bitmap, - bool set_router_port) +static int +mlxsw_sp_port_smid_full_entry(struct mlxsw_sp *mlxsw_sp, u16 mid_idx, + const struct mlxsw_sp_ports_bitmap *ports_bm, + bool set_router_port) { char *smid2_pl; int err, i; @@ -1666,7 +1667,7 @@ static int mlxsw_sp_port_smid_full_entry(struct mlxsw_sp *mlxsw_sp, u16 mid_idx, mlxsw_reg_smid2_port_mask_set(smid2_pl, mlxsw_sp_router_port(mlxsw_sp), 1); - for_each_set_bit(i, ports_bitmap, mlxsw_core_max_ports(mlxsw_sp->core)) + for_each_set_bit(i, ports_bm->bitmap, ports_bm->nbits) mlxsw_reg_smid2_port_set(smid2_pl, i, 1); mlxsw_reg_smid2_port_set(smid2_pl, mlxsw_sp_router_port(mlxsw_sp), @@ -1712,14 +1713,14 @@ mlxsw_sp_mid *__mlxsw_sp_mc_get(struct mlxsw_sp_bridge_device *bridge_device, static void mlxsw_sp_bridge_port_get_ports_bitmap(struct mlxsw_sp *mlxsw_sp, struct mlxsw_sp_bridge_port *bridge_port, - unsigned long *ports_bitmap) + struct mlxsw_sp_ports_bitmap *ports_bm) { struct mlxsw_sp_port *mlxsw_sp_port; u64 max_lag_members, i; int lag_id; if (!bridge_port->lagged) { - set_bit(bridge_port->system_port, ports_bitmap); + set_bit(bridge_port->system_port, ports_bm->bitmap); } else { max_lag_members = MLXSW_CORE_RES_GET(mlxsw_sp->core, MAX_LAG_MEMBERS); @@ -1729,13 +1730,13 @@ mlxsw_sp_bridge_port_get_ports_bitmap(struct mlxsw_sp *mlxsw_sp, lag_id, i); if (mlxsw_sp_port) set_bit(mlxsw_sp_port->local_port, - ports_bitmap); + ports_bm->bitmap); } } } static void -mlxsw_sp_mc_get_mrouters_bitmap(unsigned long *flood_bitmap, +mlxsw_sp_mc_get_mrouters_bitmap(struct mlxsw_sp_ports_bitmap *flood_bm, struct mlxsw_sp_bridge_device *bridge_device, struct mlxsw_sp *mlxsw_sp) { @@ -1745,7 +1746,7 @@ mlxsw_sp_mc_get_mrouters_bitmap(unsigned long *flood_bitmap, if (bridge_port->mrouter) { mlxsw_sp_bridge_port_get_ports_bitmap(mlxsw_sp, bridge_port, - flood_bitmap); + flood_bm); } } } @@ -1755,8 +1756,7 @@ mlxsw_sp_mc_write_mdb_entry(struct mlxsw_sp *mlxsw_sp, struct mlxsw_sp_mid *mid, struct mlxsw_sp_bridge_device *bridge_device) { - long *flood_bitmap; - int num_of_ports; + struct mlxsw_sp_ports_bitmap flood_bitmap; u16 mid_idx; int err; @@ -1765,18 +1765,17 @@ mlxsw_sp_mc_write_mdb_entry(struct mlxsw_sp *mlxsw_sp, if (mid_idx == MLXSW_SP_MID_MAX) return -ENOBUFS; - num_of_ports = mlxsw_core_max_ports(mlxsw_sp->core); - flood_bitmap = bitmap_alloc(num_of_ports, GFP_KERNEL); - if (!flood_bitmap) - return -ENOMEM; + err = mlxsw_sp_port_bitmap_init(mlxsw_sp, &flood_bitmap); + if (err) + return err; - bitmap_copy(flood_bitmap, mid->ports_in_mid, num_of_ports); - mlxsw_sp_mc_get_mrouters_bitmap(flood_bitmap, bridge_device, mlxsw_sp); + bitmap_copy(flood_bitmap.bitmap, mid->ports_in_mid, flood_bitmap.nbits); + mlxsw_sp_mc_get_mrouters_bitmap(&flood_bitmap, bridge_device, mlxsw_sp); mid->mid = mid_idx; - err = mlxsw_sp_port_smid_full_entry(mlxsw_sp, mid_idx, flood_bitmap, + err = mlxsw_sp_port_smid_full_entry(mlxsw_sp, mid_idx, &flood_bitmap, bridge_device->mrouter); - bitmap_free(flood_bitmap); + mlxsw_sp_port_bitmap_fini(&flood_bitmap); if (err) return err; From patchwork Mon Jun 27 07:06:18 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 12896296 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 92D3DC433EF for ; Mon, 27 Jun 2022 07:08:11 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232593AbiF0HIK (ORCPT ); Mon, 27 Jun 2022 03:08:10 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54152 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232681AbiF0HIE (ORCPT ); Mon, 27 Jun 2022 03:08:04 -0400 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2083.outbound.protection.outlook.com [40.107.94.83]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4C5E6C0C for ; Mon, 27 Jun 2022 00:08:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Jqbty5S1MsGVOjt4xKO0okjI2NXd1cmc0Uu1uwglVMkqHHGg1I2vruUC6+mKnrsgkIlqdxufUCxHUJDYhJ3dFtnmf3+PRJrt7UscUQAIZtxSwV4vypV58uUwNMHRQYmKaB9Ao/pK+g3REmmcXeBRvltot8xySKzC34lBnRhfLKPB8dQ9DMVWR6jxAypqcWJ9bPaFh+UC35jtQ6gGwSx7uy0qWGrtbYQZXM3VlYhvAKFWUsONFjmbOtW/PUQousI2Q+tvwV9Tc+mOm06InbdvhHPpUrQ7Q6VyLbnmAKst9QHDOM/UN/saHP1syaolY2HVN5aKntQ9cKS2FbrdD7ffeg== 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=1AhHxQBSoGC7cEBbcAkZZTNlEjhN1dc2Z16yaCUqb8M=; b=joeIHhuSn1l3bObjI+y32EMRX4B/VbZ+8rWP3mi9Yk6NRr+fEqDwB5xKdmC/DxinaCAJQXcAg4vl8S1P7FEiOjyTy8d3J7u0zXcYZwGIEWSTqcilhYsoknKuNtmUGkrkIaveXdOd9HasPopBhWVUjR0VsUdaD5mZsAFKu1P3dlqXlfVqL14Rr6CqC4LlGOysFKeaOccMnmgLspoG8q5asNEN2ApoQlSqYuBQ3geCYK1AXA9uaVQMBA7ZFho5pCjQJNg+rloxHJFpY01OwX7RWEGqY8HVt8pm/iSlLuEJ6R3nG1bkFAsaiBDL3uSV/25lzZqQzYI07g4941ytYM/jVw== 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=1AhHxQBSoGC7cEBbcAkZZTNlEjhN1dc2Z16yaCUqb8M=; b=EU+xcKdLKxZi+PdOTfsInEukHatPj9++WimGTPrvmyGvb0ssx1xN29JCvt2kPDAXrNsZM3ifkGTal8BFIPKymUxmXjl57OSx2UgfdpRndMaFJj02WJzDyKGyBs5++z195OjOKN1oZHxAs0sPGPZM+MnHT1mPYx9LvuFKZRMgNTnjTl8JmGgNupZEY4d0opVBhE/CmJ5542PEgswHDk/zACnuwL7+cuCn9z/ifWrT+kS2sUSdvroju53uHUIgbD9egxft3yB+T7sx6v6VCVRQghY8V5S196THPgAviuoQ7yUE2LdAX1eHIx3u9ehEZxvbn32DorWXI1qHXQj3piQkow== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from CY5PR12MB6179.namprd12.prod.outlook.com (2603:10b6:930:24::22) by SJ0PR12MB5439.namprd12.prod.outlook.com (2603:10b6:a03:3ae::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5373.15; Mon, 27 Jun 2022 07:07:57 +0000 Received: from CY5PR12MB6179.namprd12.prod.outlook.com ([fe80::611c:e609:d343:aa34]) by CY5PR12MB6179.namprd12.prod.outlook.com ([fe80::611c:e609:d343:aa34%5]) with mapi id 15.20.5373.018; Mon, 27 Jun 2022 07:07:57 +0000 From: Ido Schimmel To: netdev@vger.kernel.org Cc: davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com, edumazet@google.com, petrm@nvidia.com, amcohen@nvidia.com, mlxsw@nvidia.com, Ido Schimmel Subject: [PATCH net-next 10/13] mlxsw: Extend PGT APIs to support maintaining list of ports per entry Date: Mon, 27 Jun 2022 10:06:18 +0300 Message-Id: <20220627070621.648499-11-idosch@nvidia.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220627070621.648499-1-idosch@nvidia.com> References: <20220627070621.648499-1-idosch@nvidia.com> X-ClientProxiedBy: LO2P265CA0465.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:a2::21) To CY5PR12MB6179.namprd12.prod.outlook.com (2603:10b6:930:24::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5c19784b-bb44-4c07-0b46-08da580bc328 X-MS-TrafficTypeDiagnostic: SJ0PR12MB5439:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: PtnQrJGmCVqt4mWzhPf5RwX/zY4xLMg3QgVbkboV0oeiO7cG4r4hI2ziIVRvSlGpCJhLsdB1gYh93xrHnXS4cDvGPw3GIB7xHdVq8yE8ROsoIv1pK80DNvVlPW/qohy7EIfGQvZBMJlg3GkypecVjSZV6nLwzDsrq4Sr3lunzPmSAZOOhFcJAiebRpENO44bfOPaSye4ygvgqifXpKbxmuCPoFL/lmmQdkWF2Z28FjtZJSjC8IXAHMqdfAlLq2qcE6hHF8smcoRBKUq3vjJrM7rYwE+w2NuzcUIbHGnV4yma/PKy9QTYaI1Y9BweJHbo3wT47cz5KIPfq9oKGh7td6gSpJe/mEVHMWrmRiqPY5JBo+05anX1DpoSyWkxc9wAN6JPDZxaeJ/H3zK5mK14tndpX3bUD/8dE8j4CmAh730EhB1yWTWQXO0+enZfEpQZlj8UmjG0Hqk/mXBn9pIM8FSAkpA1ZhIfAoZnw4lGcS1nhZetILz0E7h9aAMphNfMl5x+cvakBvna6MFhx1tnRF6tJRpGEkd6s6/NX5dF0P/4F0yT2oJ8Z0N7ydWodonFdm2V505vGKS4ijt1Bp0QADSAyy8uuDicJR8wCd0E3F/xmW84+zjPN71/GKDZTDdTr4Q+mcnPFg5XJBAXToZCKyNUa+wBbEGvJrDXfdlGXg1+xVVrcgkZ+IHSsavz45j3KxBJI0dENcR9z/R5WXcTfnoruqdobMre2+UIOE2XeSGl7ack0t7UhwD/kLsBBToQ X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CY5PR12MB6179.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(396003)(376002)(346002)(136003)(39860400002)(366004)(6512007)(2616005)(36756003)(6666004)(6916009)(66556008)(316002)(107886003)(1076003)(186003)(66946007)(41300700001)(6506007)(2906002)(38100700002)(66476007)(6486002)(8936002)(478600001)(4326008)(86362001)(8676002)(83380400001)(26005)(5660300002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: tRL50i2UpGdU8v8lZ9GUYjhm73VZeyjitcMAxxp22eJEbduduxEsxHt19+Tcp5fbeXs0VttVOqtXTXs/3LB6h9b9Cob9e3EHgXNVMX4kcLvRAV/EW61CkdJ75405OVOKrHo3XgXl0m1BLar2R5kc7mHiuPUtah6VENbXtvlQBBUqp4QDUOGi2E3AFeCTsCq+ZJMTknvJGazuQXF4neeeOaRpoGx0nKqFGdoBPxYKrmAc2JfkeR1BArnNE0YTBmXMtG3gwpho52ydZDpPsGoPm+vSsK1WcUbdkAPvlfkAKN06jweqokgfVDbsnJ0VX9zk7+ky27sUDppaunH71AJFEW2c76El0sXQAz5vGer4+vVcdOpc7lujeFgbfDKcUnQNoZE50Ndd+zR1XVNNaAc24JCxUgyHiAvhHGVoPDRQOwDWn6fe4i/efhwDmyTGZztzFDP/HV8KcBMQOB1XDHWgbcO7u9/rnR76tLy0uhRB5+Gvj4A3+CnQE4Sdjl8dPetYZKK6r79tluWtJ9pSev8fo2bvrA6z5C9uW5Ew4ixFaYILWKpfS4JP84QqJxtGFRuY4QQJCKGUvouMveGkGtAXbMDnb2ihrc4+qvLh25M6UFMwOFxl1gY7vQUF4ITBTKQzmoAzcjpIGvUU5hzm/NlGLPzOTeGy/7b2XsseCjgsHyhOezUDKsQei5B6FtB1Ddty6sgryoVeUJw1T/+PuolmN7n6DqOFr00UduO4PRlXYPUPAubXuoFCddBE5eMI4zRcDik8RIe0i4FhXUA6A67fLA/Iqz+wEfng2Ti+paCevYJhlWmLYNIIfdh1HICcz+lvSB4k2fb5XTrxTZBP14aC2lMdul8bBa1Nj5ELv13LKH+jpBhwiY0ekUt9iFuozKonRqDLACs8IzDQOfWFPnAb78r20gM3YgtuKHrzlkHA98blb69ubEfiheSlTVxNOGAb70KXTJvmMM227lOE+RUXPNMIevDnn3nkN1B92fy8rrkc/eRWdCN2eEO5dLPAV9647kQVSI5lCsMrLuqTz/hK+nFMNuTvpXauxmUzjNR6s2+rISthTLo9ZDTyeHICCOfoG1zdgTgqLyd8khjSnSCxyrFlt4G/UcGGGYDVmu9vUvSxK8pLl8k/+1NOB/GTLYt6FXtc7HLD0vRD5snUkJXrBggI/Rds34u5a0yQ+TUFnSi062d3cpb3L+RXARzqJwoSnpM4uu5TWBgvGJbMZAN8RaxzFVLN4kqJnLydtWtttGU7JfdLo9LC2FIMIpo9OPvH1VPnXmq1UNTbLEGct5ewo8Xi37rAh7yu0MGQ9/bJsVhXSSDYWhCsRiBJbNp/yR41jFnXd68fVLS/I/9Crgwb1CKJXI9SzciYbMm3kHbDTvYMk00D+K9uUJaJErwqik+LbsNaB355/RVp4wLAs6kBnGNss+81F+u8uWs1vYf8oNmec9AzXy+WiBtY40lO02D0w8Vw8klDgqGGxAs2Xx4w9HWbtRbqWvJLo8WSpRbKrLUgxfcT5sOzDwvfJ8qWM9t3qFMXjMovr5fcjHfgu2iSo2IiYR+ASQRI9PsW8Z2+l007Fnog1hFZ8Y9dEEEmie+O X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5c19784b-bb44-4c07-0b46-08da580bc328 X-MS-Exchange-CrossTenant-AuthSource: CY5PR12MB6179.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jun 2022 07:07:57.0443 (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: 5QrR0JNGL4xy/V/zLTCBizfU+f1Mq8m5u2ZoeOC27ASY6BwJcXt2P9cjbWTV01X0LSBx6bBKl83fxgElA62KIg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR12MB5439 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org From: Amit Cohen Add an API to associate a PGT entry with SMPE index and add or remove a port. This API will be used by FID code and MDB code, to add/remove port from specific PGT entry. When the first port is added to PGT entry, allocate the entry in the given MID index, when the last port is removed from PGT entry, free it. Signed-off-by: Amit Cohen Signed-off-by: Ido Schimmel --- .../net/ethernet/mellanox/mlxsw/spectrum.h | 2 + .../ethernet/mellanox/mlxsw/spectrum_pgt.c | 229 ++++++++++++++++++ 2 files changed, 231 insertions(+) diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum.h b/drivers/net/ethernet/mellanox/mlxsw/spectrum.h index 645244ac5dfc..b128692611d9 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.h +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.h @@ -1483,6 +1483,8 @@ int mlxsw_sp_pgt_mid_alloc_range(struct mlxsw_sp *mlxsw_sp, u16 mid_base, u16 count); void mlxsw_sp_pgt_mid_free_range(struct mlxsw_sp *mlxsw_sp, u16 mid_base, u16 count); +int mlxsw_sp_pgt_entry_port_set(struct mlxsw_sp *mlxsw_sp, u16 mid, + u16 smpe, u16 local_port, bool member); int mlxsw_sp_pgt_init(struct mlxsw_sp *mlxsw_sp); void mlxsw_sp_pgt_fini(struct mlxsw_sp *mlxsw_sp); diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c index 0fc29d486efc..3b7265b539b2 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_pgt.c @@ -14,6 +14,17 @@ struct mlxsw_sp_pgt { bool smpe_index_valid; }; +struct mlxsw_sp_pgt_entry { + struct list_head ports_list; + u16 index; + u16 smpe_index; +}; + +struct mlxsw_sp_pgt_entry_port { + struct list_head list; /* Member of 'ports_list'. */ + u16 local_port; +}; + int mlxsw_sp_pgt_mid_alloc(struct mlxsw_sp *mlxsw_sp, u16 *p_mid) { int index, err = 0; @@ -94,6 +105,224 @@ mlxsw_sp_pgt_mid_free_range(struct mlxsw_sp *mlxsw_sp, u16 mid_base, u16 count) mutex_unlock(&mlxsw_sp->pgt->lock); } +static struct mlxsw_sp_pgt_entry_port * +mlxsw_sp_pgt_entry_port_lookup(struct mlxsw_sp_pgt_entry *pgt_entry, + u16 local_port) +{ + struct mlxsw_sp_pgt_entry_port *pgt_entry_port; + + list_for_each_entry(pgt_entry_port, &pgt_entry->ports_list, list) { + if (pgt_entry_port->local_port == local_port) + return pgt_entry_port; + } + + return NULL; +} + +static struct mlxsw_sp_pgt_entry * +mlxsw_sp_pgt_entry_create(struct mlxsw_sp_pgt *pgt, u16 mid, u16 smpe) +{ + struct mlxsw_sp_pgt_entry *pgt_entry; + void *ret; + int err; + + pgt_entry = kzalloc(sizeof(*pgt_entry), GFP_KERNEL); + if (!pgt_entry) + return ERR_PTR(-ENOMEM); + + ret = idr_replace(&pgt->pgt_idr, pgt_entry, mid); + if (IS_ERR(ret)) { + err = PTR_ERR(ret); + goto err_idr_replace; + } + + INIT_LIST_HEAD(&pgt_entry->ports_list); + pgt_entry->index = mid; + pgt_entry->smpe_index = smpe; + return pgt_entry; + +err_idr_replace: + kfree(pgt_entry); + return ERR_PTR(err); +} + +static void mlxsw_sp_pgt_entry_destroy(struct mlxsw_sp_pgt *pgt, + struct mlxsw_sp_pgt_entry *pgt_entry) +{ + WARN_ON(!list_empty(&pgt_entry->ports_list)); + + pgt_entry = idr_replace(&pgt->pgt_idr, NULL, pgt_entry->index); + if (WARN_ON(IS_ERR(pgt_entry))) + return; + + kfree(pgt_entry); +} + +static struct mlxsw_sp_pgt_entry * +mlxsw_sp_pgt_entry_get(struct mlxsw_sp_pgt *pgt, u16 mid, u16 smpe) +{ + struct mlxsw_sp_pgt_entry *pgt_entry; + + pgt_entry = idr_find(&pgt->pgt_idr, mid); + if (pgt_entry) + return pgt_entry; + + return mlxsw_sp_pgt_entry_create(pgt, mid, smpe); +} + +static void mlxsw_sp_pgt_entry_put(struct mlxsw_sp_pgt *pgt, u16 mid) +{ + struct mlxsw_sp_pgt_entry *pgt_entry; + + pgt_entry = idr_find(&pgt->pgt_idr, mid); + if (WARN_ON(!pgt_entry)) + return; + + if (list_empty(&pgt_entry->ports_list)) + mlxsw_sp_pgt_entry_destroy(pgt, pgt_entry); +} + +static void mlxsw_sp_pgt_smid2_port_set(char *smid2_pl, u16 local_port, + bool member) +{ + mlxsw_reg_smid2_port_set(smid2_pl, local_port, member); + mlxsw_reg_smid2_port_mask_set(smid2_pl, local_port, 1); +} + +static int +mlxsw_sp_pgt_entry_port_write(struct mlxsw_sp *mlxsw_sp, + const struct mlxsw_sp_pgt_entry *pgt_entry, + u16 local_port, bool member) +{ + bool smpe_index_valid; + char *smid2_pl; + u16 smpe; + int err; + + smid2_pl = kmalloc(MLXSW_REG_SMID2_LEN, GFP_KERNEL); + if (!smid2_pl) + return -ENOMEM; + + smpe_index_valid = mlxsw_sp->ubridge ? mlxsw_sp->pgt->smpe_index_valid : + false; + smpe = mlxsw_sp->ubridge ? pgt_entry->smpe_index : 0; + + mlxsw_reg_smid2_pack(smid2_pl, pgt_entry->index, 0, 0, smpe_index_valid, + smpe); + + mlxsw_sp_pgt_smid2_port_set(smid2_pl, local_port, member); + err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(smid2), smid2_pl); + + kfree(smid2_pl); + + return err; +} + +static struct mlxsw_sp_pgt_entry_port * +mlxsw_sp_pgt_entry_port_create(struct mlxsw_sp *mlxsw_sp, + struct mlxsw_sp_pgt_entry *pgt_entry, + u16 local_port) +{ + struct mlxsw_sp_pgt_entry_port *pgt_entry_port; + int err; + + pgt_entry_port = kzalloc(sizeof(*pgt_entry_port), GFP_KERNEL); + if (!pgt_entry_port) + return ERR_PTR(-ENOMEM); + + err = mlxsw_sp_pgt_entry_port_write(mlxsw_sp, pgt_entry, local_port, + true); + if (err) + goto err_pgt_entry_port_write; + + pgt_entry_port->local_port = local_port; + list_add(&pgt_entry_port->list, &pgt_entry->ports_list); + + return pgt_entry_port; + +err_pgt_entry_port_write: + kfree(pgt_entry_port); + return ERR_PTR(err); +} + +static void +mlxsw_sp_pgt_entry_port_destroy(struct mlxsw_sp *mlxsw_sp, + struct mlxsw_sp_pgt_entry *pgt_entry, + struct mlxsw_sp_pgt_entry_port *pgt_entry_port) + +{ + list_del(&pgt_entry_port->list); + mlxsw_sp_pgt_entry_port_write(mlxsw_sp, pgt_entry, + pgt_entry_port->local_port, false); + kfree(pgt_entry_port); +} + +static int mlxsw_sp_pgt_entry_port_add(struct mlxsw_sp *mlxsw_sp, u16 mid, + u16 smpe, u16 local_port) +{ + struct mlxsw_sp_pgt_entry_port *pgt_entry_port; + struct mlxsw_sp_pgt_entry *pgt_entry; + int err; + + mutex_lock(&mlxsw_sp->pgt->lock); + + pgt_entry = mlxsw_sp_pgt_entry_get(mlxsw_sp->pgt, mid, smpe); + if (IS_ERR(pgt_entry)) { + err = PTR_ERR(pgt_entry); + goto err_pgt_entry_get; + } + + pgt_entry_port = mlxsw_sp_pgt_entry_port_create(mlxsw_sp, pgt_entry, + local_port); + if (IS_ERR(pgt_entry_port)) { + err = PTR_ERR(pgt_entry_port); + goto err_pgt_entry_port_get; + } + + mutex_unlock(&mlxsw_sp->pgt->lock); + return 0; + +err_pgt_entry_port_get: + mlxsw_sp_pgt_entry_put(mlxsw_sp->pgt, mid); +err_pgt_entry_get: + mutex_unlock(&mlxsw_sp->pgt->lock); + return err; +} + +static void mlxsw_sp_pgt_entry_port_del(struct mlxsw_sp *mlxsw_sp, + u16 mid, u16 smpe, u16 local_port) +{ + struct mlxsw_sp_pgt_entry_port *pgt_entry_port; + struct mlxsw_sp_pgt_entry *pgt_entry; + + mutex_lock(&mlxsw_sp->pgt->lock); + + pgt_entry = idr_find(&mlxsw_sp->pgt->pgt_idr, mid); + if (!pgt_entry) + goto out; + + pgt_entry_port = mlxsw_sp_pgt_entry_port_lookup(pgt_entry, local_port); + if (!pgt_entry_port) + goto out; + + mlxsw_sp_pgt_entry_port_destroy(mlxsw_sp, pgt_entry, pgt_entry_port); + mlxsw_sp_pgt_entry_put(mlxsw_sp->pgt, mid); + +out: + mutex_unlock(&mlxsw_sp->pgt->lock); +} + +int mlxsw_sp_pgt_entry_port_set(struct mlxsw_sp *mlxsw_sp, u16 mid, + u16 smpe, u16 local_port, bool member) +{ + if (member) + return mlxsw_sp_pgt_entry_port_add(mlxsw_sp, mid, smpe, + local_port); + + mlxsw_sp_pgt_entry_port_del(mlxsw_sp, mid, smpe, local_port); + return 0; +} + int mlxsw_sp_pgt_init(struct mlxsw_sp *mlxsw_sp) { struct mlxsw_sp_pgt *pgt; From patchwork Mon Jun 27 07:06:19 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 12896297 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 F1792C433EF for ; Mon, 27 Jun 2022 07:08:18 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232729AbiF0HIS (ORCPT ); Mon, 27 Jun 2022 03:08:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54740 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232714AbiF0HIJ (ORCPT ); Mon, 27 Jun 2022 03:08:09 -0400 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2083.outbound.protection.outlook.com [40.107.94.83]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C5FA55FAC for ; Mon, 27 Jun 2022 00:08:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kliV8QVGLWw1wtwOy0MJY1jyscAmkZa3B+ru2fJH4a+5+FIVFJun4jKNpnknlfwoBnUQyV1UbnnIuUh6igOLPxWftupB48BT4UYnHHPjHPjVRK3MHrgbvqyE8Nffzu/H1Qn6a8eYxhCdmVnukJvXVr4tCmwwiU2AHygFicsgTxX1K/IMSIHrB0LMI+EdM1H084SP9S7uVlgz5jU3PbFbdrX3jdbAWybJcDR1I7/R2GOjVTmr5gERg1g87SFaSu22DwtEcHvz4f3lD3g/e7DsM+j8InFd3Wv8lpko5hWokbPS/VQ13J5CW6eBR77c/5PPN4XwvnY1f1zci1+Gw182jw== 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=ttOxS3jrfSLitubt5oIDnDn+fGYMGbpypNX5vlLuOgY=; b=L4vCkMAgLM7kTC4Ug0cptHpuKyJCa2ZkDPAWKvmk28hNU7mkC7BJRX5XXJyYBuHp0eNNj771i0Qgp8sM/i7qtKdOj7EcajsCeDQHhHGu6+8qXwnkIyVO+BJtovfsb8kpcFoO7Nsv65zb1tOoEt9mjXrng47sjaf8fhE0IsnXnHJts7sqwG+/BTGNCVl55t26IBbADsezAx3+gyLWqtlc19aXT3dAnuUU2BPIPlq/uHgdPabBonEsQ+xrku5TLUS6POWWqB0YV8wpQiAUTQBaPEmU/lW5yzOScXYB4l8nWdjoyH+NLBM121xEuj3W0C54L2L3wP4tkAd+/MJZ1Tzuyg== 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=ttOxS3jrfSLitubt5oIDnDn+fGYMGbpypNX5vlLuOgY=; b=AAfhAqQPD32/PAl/Y5mW4czkz6q82rZbAxIr3R/ixe0yOadeTdOu+kvzR+c2XzWwtaa4Rbrg703NPOcCuvtOFyEdfMsy6PHFcwM6AuPoHblCEqlTbgGAmgrnLPLZlCcB14ZHdcJH29pkNmBcEq3CoJA/1nfqTt54terzTxeA6AsX6kQ/rsu9iDYK/5xIYTKRtO0inZyuahKEf/Cd35rJErXLERm7bb9zGeLKLf6pT2RvulbUOuSK7esDGTjZNVowz0PEB3qkzUol1rMzgZ2qxBlgDQCPg3uNq7t44jerFWDVtQAwMTOc+wtxacnRvKR49+djfKr9Onp5Swv8Hqs8kA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from CY5PR12MB6179.namprd12.prod.outlook.com (2603:10b6:930:24::22) by SJ0PR12MB5439.namprd12.prod.outlook.com (2603:10b6:a03:3ae::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5373.15; Mon, 27 Jun 2022 07:08:01 +0000 Received: from CY5PR12MB6179.namprd12.prod.outlook.com ([fe80::611c:e609:d343:aa34]) by CY5PR12MB6179.namprd12.prod.outlook.com ([fe80::611c:e609:d343:aa34%5]) with mapi id 15.20.5373.018; Mon, 27 Jun 2022 07:08:01 +0000 From: Ido Schimmel To: netdev@vger.kernel.org Cc: davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com, edumazet@google.com, petrm@nvidia.com, amcohen@nvidia.com, mlxsw@nvidia.com, Ido Schimmel Subject: [PATCH net-next 11/13] mlxsw: spectrum: Initialize PGT table Date: Mon, 27 Jun 2022 10:06:19 +0300 Message-Id: <20220627070621.648499-12-idosch@nvidia.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220627070621.648499-1-idosch@nvidia.com> References: <20220627070621.648499-1-idosch@nvidia.com> X-ClientProxiedBy: LNXP123CA0020.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:d2::32) To CY5PR12MB6179.namprd12.prod.outlook.com (2603:10b6:930:24::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 8ac05f68-7f4f-49a5-a4c1-08da580bc604 X-MS-TrafficTypeDiagnostic: SJ0PR12MB5439:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 4TiHxuRt8ftPTbzuJSDcbHnO347I44bWNBCW8LpwJKz+42U/MrN2YGIIp1AziMC6NscFwUij/W775614HV/cvl4C/QZVppY1NHF5DCrUT1lesL+T98JoQyv6mqgrvmzAm1+PZ7ZCkOTArcaZeKYp7d3cAMFRzZTREuo2EQ3WE+w2z27Rcex2u0NvzFqo8D8wD8v3ZoHeklc8pXpz3ymmnfNPjUDvOg8qcBQPIPvqsF0zKazDf5774Kc1F9DnbxXJ0mgU5HsooJzSJlSK+LZr/WnvjSzmh0TWiDGbCv7NQm8nSTlfWHA6tDCq/WXp8xGBnEpqTi/RX8NaFkQayc3bMfnubECM5oMnx/IzpIcKWdnOuevREPDl43rEDrOXcB34UNTmW4XsNVlhnzWoOwMzfzuJ51eFExIMrGav9qMjrRgHD3xj0/FZUjoN3FEXfTS8/YO4OKsD8ZpzyFqgYeeBBMS7mfY7TPgGNiHUvwFDzPqq951CnULDSJ53DykNda0OT5bAatU/tQV9ZHjMZrlf9zpNoYsbOWmEtq+5lSiKCHJ96fgdbxGs0N58DslYa/LdvRAPC1zXcizQV0AMSqblceLnQF2EJ9U69adAODOGO3EMSWP01zy1OIJFobe1vRZDdJIVy7R2OV3+uz6JzrOZ/hLR3aSoWLgM48LiwYy/Tq8xEuNTvzgPo/HZeN+2rYMCDjpENbsW2US2X07R+N99w9y9i5AwvpFUDprnN+ijbay9SqhBgH3AbcymKbYXEGt8 X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CY5PR12MB6179.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(396003)(376002)(346002)(136003)(39860400002)(366004)(6512007)(2616005)(36756003)(6666004)(6916009)(66556008)(316002)(107886003)(1076003)(186003)(66946007)(41300700001)(6506007)(2906002)(38100700002)(66476007)(6486002)(8936002)(478600001)(4326008)(86362001)(8676002)(26005)(5660300002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Xs9SHS6Ld+geGhHeQDmrB4v/75t64Vr6JrxsBN+zoMtq/E3eQ9einRvyAcfjIBAKUrnMfsd0nSuhEFscnsPy9dzGAKr70teTAZRUKTgwQOi+mk0e6WPxxzxQgofhH34DLO/nLf/i47daIvqc+SXoZGixOqCeKXpLR0iagO0EDDQLZqBiak6ejXAQ8jYP/QisOg3rm/trs/3z8Vw6+k6n4YXpXPsRC81rZAqitQ1JXEiCiyh/jgROkQdfYcZwLn6gXVACTdvjpRXoFJAcDdTAGcZgDQen4ukP/8vCCzrA+44GX0PPPG2c/q4orXhFeJ9XRPgizcMHooFguNucspd/bwHZmFNjyldHkZT4eMW50uHQjNjph9rK3ghZqh0LsjIMwynLSBds8yrfMttaMxXTsghjv/Ck/2gvdVwEXa1t36BWn9H6E8egGUDm9bK4PAqJvqpZn4+MnADcJyMe6uBuSsgWcMcjtLsIMa+GIaeCYMlOepKxI4XYrgaLgJajYHS1oLfUqZUqPne2/V0vPCOyUDwyilZgI2xpi91Lk91q6Ey7xkE/9In4tsuBDKcQNB0wipNQb9cjVE5AoDCGl74dC4erkSwp/Y6rsFoYc8H46Pl48whEYQGdp1uDE5xIvr2a/jFaTkDyfqvMIb0XowMq2kb+g1ycSNXLWHc7PdgqDKbVBUFC+6/3C2onJ/VZ5f+6Kx8xLBLoKtLlxmnz7Bsy9K9RcsiopfNQptB8Tcq4iBNILN2oRXACLMcLzeMoqVXdiTZXJNX5K2Jo6cu232KrHa5QOdE8IaSW6r4Ygk2yda2yI3U3VP/XTeowZFnipq4axZuSURN1rHUu2nMgLw22wO1rPHv+unSYnxAC3JJ+wRS3iY1r0CLJ2QzLCN9SB97XS2FvEiMMTd97M+ZpRupJEygQCF9yh5by6C3JdpQEXc27oDS7lefk9ys8g6nlZTV6RsHaf3fjzK2nDoE+9X3I6xJ61nC38BfKoi2fxuOOLLYNMrSy0sOSlxNkD8dOxV6j5zvSDAE3VYKX5yX/MjwuNtkw4h6hoLAOraRzJGxoKhl+G9G7vBhqyUgssVUcmvpA55sAyWz3CbCYQyvEmKNBz4PhXyw63B9bwOfG0og8CiAxnqYVN4FK/Zr9ppiZ8KtVbMBAExxGvQhIwA5U07qtq+9bxgV0r6zGeRoSJf3pYKq3lanppAWcgDn3uvdJTRim39ti2ymvDIJWP5dZoSus6gnNk88KdSJIgScsif65YxJ12f0oRHoHi54PjYFAvuU2BO+X/W1xWRa5YkKoC9vbbj4+i/eI8SJ6CfjPHzkEdDWwaMP8QMk2erAT7zgT5EvhDqEXWB3aI100tZcdW1D74zySYMusDNANMfXdI+ktEaA/HFXfKX+WpGeVFskaBU99MJvkmXxrKlSiXy6VUH0fV7pylL3JX7JNa8vJ/TOR6RtZvEcC8/Hvn/vAqhhcYdpX8smiRV+JU4dB2HlitUD/xplN+uWy4HYq2NsmWOfEjkxDiTVpy6cXWqdNcnHd7ZtQ0+OSdcYTcC/r7352vFjBrG0W8ctXN/dOLIMsD3J2nCd2KwSgFORhraWQ1w2CXzdk X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8ac05f68-7f4f-49a5-a4c1-08da580bc604 X-MS-Exchange-CrossTenant-AuthSource: CY5PR12MB6179.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jun 2022 07:08:01.8455 (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: NyNE775lGRCYrys31kNw5wvpbpZNHKe3+w+Dsxvq2rXf/X+ifIpwadTv8nVBABMvCkgBKH9K7GqQ1JA14ojoRw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR12MB5439 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org From: Amit Cohen Initialize PGT table as part of mlxsw_sp_init(). This table will be used first in the next patch by FID code to set flooding entries, and later by MDB code to add multicast entries. Signed-off-by: Amit Cohen Reviewed-by: Petr Machata Signed-off-by: Ido Schimmel --- drivers/net/ethernet/mellanox/mlxsw/spectrum.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c index b128f900d0fe..ff94cd9d872f 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c @@ -3010,6 +3010,12 @@ static int mlxsw_sp_init(struct mlxsw_core *mlxsw_core, return err; } + err = mlxsw_sp_pgt_init(mlxsw_sp); + if (err) { + dev_err(mlxsw_sp->bus_info->dev, "Failed to initialize PGT\n"); + goto err_pgt_init; + } + err = mlxsw_sp_fids_init(mlxsw_sp); if (err) { dev_err(mlxsw_sp->bus_info->dev, "Failed to initialize FIDs\n"); @@ -3202,6 +3208,8 @@ static int mlxsw_sp_init(struct mlxsw_core *mlxsw_core, err_policers_init: mlxsw_sp_fids_fini(mlxsw_sp); err_fids_init: + mlxsw_sp_pgt_fini(mlxsw_sp); +err_pgt_init: mlxsw_sp_kvdl_fini(mlxsw_sp); mlxsw_sp_parsing_fini(mlxsw_sp); return err; @@ -3370,6 +3378,7 @@ static void mlxsw_sp_fini(struct mlxsw_core *mlxsw_core) mlxsw_sp_traps_fini(mlxsw_sp); mlxsw_sp_policers_fini(mlxsw_sp); mlxsw_sp_fids_fini(mlxsw_sp); + mlxsw_sp_pgt_fini(mlxsw_sp); mlxsw_sp_kvdl_fini(mlxsw_sp); mlxsw_sp_parsing_fini(mlxsw_sp); } From patchwork Mon Jun 27 07:06:20 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 12896299 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 C64CEC43334 for ; Mon, 27 Jun 2022 07:08:31 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232684AbiF0HIa (ORCPT ); Mon, 27 Jun 2022 03:08:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54708 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232673AbiF0HIM (ORCPT ); Mon, 27 Jun 2022 03:08:12 -0400 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2082.outbound.protection.outlook.com [40.107.237.82]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1323C2BD4 for ; Mon, 27 Jun 2022 00:08:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WClGXyjeacN9LPMy286363Uym/+Gz8cBKIWEwOMlZgbtGWES3Cg7CL8nUJV+jL71rESbnQ154AIh/Pz9nSKnO/uc8ogSDr9BPcQiaQ/eR2PL9kp72w356OOJ57/XjGJMkQHaqDK67CZ+CyRgLnohjP9EQacGA1tiyZLKm76NCa3/vnMB4tED3T6Yx8CcxCXmHKhLMErEj5BgVUSiY4Tevh+K5YbTYcExiodKiBViNQ2f4vxhbbh1iNbNmxk0MFTYkxlBbCQygdr9rdtBe2hYayrObgEqWY/WGmblQgMBqVzbZ8Pw3xfJFBKDQEmk2T5f4ncI4z4bLNNKmrdBC8IH4w== 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=DpxlTOC5ScCUNDsJaG9K+XLCGVBYmiRFFpOd1VEJIT0=; b=Z8b56Z63zl9nT3XRfCA4FJV2gDSAqApY5+3BJTVUNbDfn9jPL7p9m/tKR9wxAJb/LwymQ/bUEL8I2vUOHibQ6y9ub97lMYDyilYRcDuXk2Gs/Z0vj4l9IuCrOeoZ8Rc1hf3+uXqZi8QqYFkkQdAZJAKVCv7HtQg77dQnW5R7h8ijMOwtGOhKkJyhhiFnAsIXHoXZqYt14MBK4Sz2QFzWzAIeld+FsQdqIC+8mkmFKJWmd+2HVMSYbf8dyh6ELtAevohiJKlES6X+o0Gh7oM7zxyUADEVjk+YuS6/cKFeEeAPWPw9xuMkc3ps4Kz+sdc2tJcGRzn8JFZ1vnJyJVdnAg== 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=DpxlTOC5ScCUNDsJaG9K+XLCGVBYmiRFFpOd1VEJIT0=; b=RsobDoEfWGE1qMDVXpZhclPpogyQx6w79VP6tq80drVNPJ98F/X+5CTqdU5Xcc63u1gjaSa7qkTLhO8GXZL+ggUa7BtAFnwE++qAmsEomfawTezglumufYd4knYZCi44Hy5mpuAAlK69xdr1sKpD2LeSaaVruGDUeznLR90epMihNy1XwmKHxcckIVwhgesHs9zBQZpSKBmrnM63tRn97H+Ps/147eQDznnxB3eHRZxPuo9cT1Uqfo3mz/Ov9TAPkIJ1Gsm9s6c0Qq9CPNJQ2wI8WtnUC4LKa2m+9W4deBuFBsa2Yt59kQ0g2Bml4zhHJgIG+jJTZXrHi1pEry/L8A== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from CY5PR12MB6179.namprd12.prod.outlook.com (2603:10b6:930:24::22) by SJ0PR12MB5439.namprd12.prod.outlook.com (2603:10b6:a03:3ae::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5373.15; Mon, 27 Jun 2022 07:08:07 +0000 Received: from CY5PR12MB6179.namprd12.prod.outlook.com ([fe80::611c:e609:d343:aa34]) by CY5PR12MB6179.namprd12.prod.outlook.com ([fe80::611c:e609:d343:aa34%5]) with mapi id 15.20.5373.018; Mon, 27 Jun 2022 07:08:07 +0000 From: Ido Schimmel To: netdev@vger.kernel.org Cc: davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com, edumazet@google.com, petrm@nvidia.com, amcohen@nvidia.com, mlxsw@nvidia.com, Ido Schimmel Subject: [PATCH net-next 12/13] mlxsw: spectrum_fid: Set 'mid_base' as part of flood tables initialization Date: Mon, 27 Jun 2022 10:06:20 +0300 Message-Id: <20220627070621.648499-13-idosch@nvidia.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220627070621.648499-1-idosch@nvidia.com> References: <20220627070621.648499-1-idosch@nvidia.com> X-ClientProxiedBy: LO4P123CA0039.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:152::8) To CY5PR12MB6179.namprd12.prod.outlook.com (2603:10b6:930:24::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 715f7061-1da3-4db8-a80f-08da580bc93b X-MS-TrafficTypeDiagnostic: SJ0PR12MB5439:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: MXsBZGBhewgn5dv++yjcQw6Jl2tOVPM+9hJ/85hGMvJ3yAyZ3Ekr6WlVO/H7eH48ClaUuvHCUIRQub0lzp0ED+NLod4MN7gzCc7kc9xpw0p32564jCUUOvhtjq6NeKE26bdSk7pdTerF3Shm6OS4mSPT5yT3uXSvqxYrgcRePolgX9x9mlCGyHFxD+n2DxaIhgMNCA9Z5UxEmczhKfzVJxAgbOwumzqst+y60kpGj6NCK45ryt1+ApTYsibGdtzQcdgT58IuXyJEXVnFJAS8UtR6KeGfDnHiuuwAlaXfI0OTGBbPbmvgo+MX8gNN0qCzteZaGDCubcizm8KIKEAfPVzC2e0okXNew3fFJ/d/GwutE+j/wYCcEuUfl+eCSXtZl04CdEG9e2u1qM2tOABTJ/1uJ7qYmnajvJV9Sei0dmT334HQfWPAIwLsATeSSmTXrjNnSVMURIlzOE/YDtW00wkgktV6IDHvCBgkg0QM4bccm70vEzHT1lMYr0f7YN8CHf9d9yF7LxJzMggDyYugGlNpK22UDb/CZ2F+nK2EJ8SwSqsN7pDf8LNcgs9VI2sgWAQlJYiswTOIi5O4RKrp6zVW/n/eeo9/Vrv1D+9/RsxKpNqbf84fyYhUiJ6WkHdApftw7fD9VyBFArjNiKjJ0BI4fwalx0ve86JP3mBfsKlAdsLoXPw9FDX5FDPFjvk7MUhhmNZmPqcrfAzi91mG//8M/J4s+7r876uVIf2QtxjRmMHILvEKgSa9YzWtBsbw X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CY5PR12MB6179.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(396003)(376002)(346002)(136003)(39860400002)(366004)(6512007)(2616005)(36756003)(6666004)(6916009)(66556008)(316002)(107886003)(1076003)(186003)(66946007)(41300700001)(6506007)(2906002)(38100700002)(66476007)(6486002)(8936002)(478600001)(4326008)(86362001)(8676002)(83380400001)(26005)(5660300002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Zz2+BiOCbF4UQ3kT5eDDD3mf4THpl+oiNH4yiBgObnjyjE7OdXMFO+fx7BdCygFQbehk032VYH9el6d7llw0MTM7nRnPupvXDvq4HLdRzIPZToiNEqBKww1wWp4MCVZFOuOXIig5NfEW2hDWkDtQ1EELa5q0eMPMndbj7koUnBFiPllaZmh743sGMS1LFzFTd5RRviHauVuH5R26auQdKCAmvchtQa3S000ow1O4H7dr9D1k5uuAahBWDRevEmALIEMCkXGJGVgMHKZLx5obMEAR9eNjYUokfGDb9Eey5/1mTtQGMFqQo2hzG2y9+Vi7GVr3O1KLkk8swH3es4vf7e4FnOzkTx4Z0Fg3cAtf4t0JPCj3wwt7EJ+KCC6A/By1jIacyf+G8wa0n1H8/yZhNPPx6PAICtlKDcyMATzrM+FGuXX3PulxZ0ylP0VNbua8ulfEGGQeUQldvlQwqyhkggOMzyYF+mFWHffubln8X76GzoruhY0Wo9qD1QZVyxsfGj+zWd2j9EGnu2QNDjoja9crjceADjQ0FhnmKh3ZqI1LYlPWIlNnEM2/90XHTerwfnXEATzhsafXMcrePH88mEbjgiexEnI3rvXhnCdnaXQIWPRH6OF+n4xTrfp0XW/zaeMjUuEPIH3N35SKnygRMcgKTPpV663Z7a18jBerNvgJvLObcsaKDes6F0JtqSPp982WvkVpLGVeftlFnJMuI2lE6kubjgkVmbSYNMboszfEiqgB2WqEJcC0DW7CJA+06hcxFPeYP807w6mZnAQysdL63KsqJR6alurSnsEGgzmah7rMuLAgf0b/hC5lT22bBjOvkCRdQGcNVqiPNqrD0/FQqD1Ds+iNlyBWNlhG49YXUcqwS4cYrgwWrOnDhapwHCOAj6a4DrkGhgV8kZ9zktaIxaMdy405R9hIP20f+oMYi6nwHVs3HWwYK8yi2eeQeZ6jTPgiH4W0GjFzZcSaJB2vhR+S29PUyEXYwlhqjSgiwnaJahlJX9rhT61iB9pea22ZF4D5KAKV2B6yt9O2wZxZ5QRSXEfHJStkE2Jpu5haDxX04sToPQDywswTJuSe8j70UPKgLUlC0CEH5w8XUk/awcsgQxVH//2XdMSDN89lQrtVKCbwlhXuzLgmZAmzhan9C3m/KC4172KFw9FFel9h/XeqdBe1XSByeM78YA2O9M1uhb652B3AKdiO51Iturx44FESDKn0F+C42wqqHnlBW2QNpCbAXM6PRtoN9JWASO/QrvIWZbsuvUQ4LqPEfShWN2MEmFkCldxwP679WnZkkWazDGPdSz0aeCG4Y3BnBcLUAcrGN69YrNsqeFGHFhDJf2qtUycbiptLF5HwdqTiPbRThLkIbhTvTsDM1NUp2LsVLBxGred3SW4R+LiXDfI+XPi4mJZJQzN5O3ycAfEvcGbsJmHORrI5OHfbj6jqgE8gGat4TN+OKKFWjOTdS1Oy66B1l3Gk0Lk9Dd9iythCNkt4NBB4Pqr/wSilvZ7KdB2W7ao5GJiEyy/qXYmEqLFk5Iz+DI+Lc8o3VOj2Qm6BNxFVijgLnsDvncdzWW5ZzZB/f7HveLHZqMe0jg5m X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 715f7061-1da3-4db8-a80f-08da580bc93b X-MS-Exchange-CrossTenant-AuthSource: CY5PR12MB6179.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jun 2022 07:08:07.1923 (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: 2NfwkEPwWFpccxuHgliDmO9eSCouyoVcD1sj36VllOFo2tJyZqwXkFnfUAICKI3NjiqsnrKapOpdQzv0qZed2A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR12MB5439 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org From: Amit Cohen The PGT (Port Group Table) table maps an index to a bitmap of local ports to which a packet needs to be replicated. This table is used for layer 2 multicast and flooding. The index to PGT table which is called 'mid_index', is a result of 'mid_base' + 'fid_offset'. Using the legacy bridge model, firmware configures 'mid_base'. However, using the new model, software is responsible to configure it via SFGC register. The first 15K entries will be used for flooding and the rest for multicast. The table will look as follows: +----------------------------+ | | | 802.1q, unicast flooding | 4K entries | | +----------------------------+ | | | 802.1q, multicast flooding | 4K entries | | +----------------------------+ | | | 802.1q, broadcast flooding | 4K entries | | +----------------------------+ | 802.1d, unicast flooding | 1K entries +----------------------------+ | 802.1d, multicast flooding | 1K entries +----------------------------+ | 802.1d, broadcast flooding | 1K entries +----------------------------+ | | | | | Multicast entries | The rest of the table | | | | +----------------------------+ Add 'pgt_base' to 'struct mlxsw_sp_fid_family' and use it to calculate MID base, set 'SFGC.mid_base' as part of flood tables initialization. Signed-off-by: Amit Cohen Reviewed-by: Petr Machata Signed-off-by: Ido Schimmel --- drivers/net/ethernet/mellanox/mlxsw/reg.h | 3 +- .../ethernet/mellanox/mlxsw/spectrum_fid.c | 33 +++++++++++++++++-- 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlxsw/reg.h b/drivers/net/ethernet/mellanox/mlxsw/reg.h index d0ebb565b5cd..022b2168f3a5 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/reg.h +++ b/drivers/net/ethernet/mellanox/mlxsw/reg.h @@ -1114,13 +1114,14 @@ static inline void mlxsw_reg_sfgc_pack(char *payload, enum mlxsw_reg_sfgc_type type, enum mlxsw_reg_bridge_type bridge_type, enum mlxsw_flood_table_type table_type, - unsigned int flood_table) + unsigned int flood_table, u16 mid_base) { MLXSW_REG_ZERO(sfgc, payload); mlxsw_reg_sfgc_type_set(payload, type); mlxsw_reg_sfgc_bridge_type_set(payload, bridge_type); mlxsw_reg_sfgc_table_type_set(payload, table_type); mlxsw_reg_sfgc_flood_table_set(payload, flood_table); + mlxsw_reg_sfgc_mid_base_set(payload, mid_base); } /* SFDF - Switch Filtering DB Flush diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c index a82612a894eb..d168e9f5c62d 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c @@ -110,6 +110,7 @@ struct mlxsw_sp_fid_family { struct mlxsw_sp *mlxsw_sp; bool flood_rsp; enum mlxsw_reg_bridge_type bridge_type; + u16 pgt_base; }; static const int mlxsw_sp_sfgc_uc_packet_types[MLXSW_REG_SFGC_TYPE_MAX] = { @@ -321,6 +322,18 @@ mlxsw_sp_fid_flood_table_lookup(const struct mlxsw_sp_fid *fid, return NULL; } +static u16 +mlxsw_sp_fid_flood_table_mid(const struct mlxsw_sp_fid_family *fid_family, + const struct mlxsw_sp_flood_table *flood_table, + u16 fid_offset) +{ + u16 num_fids; + + num_fids = fid_family->end_index - fid_family->start_index + 1; + return fid_family->pgt_base + num_fids * flood_table->table_index + + fid_offset; +} + int mlxsw_sp_fid_flood_set(struct mlxsw_sp_fid *fid, enum mlxsw_sp_flood_type packet_type, u16 local_port, bool member) @@ -736,6 +749,10 @@ static const struct mlxsw_sp_fid_ops mlxsw_sp_fid_8021d_ops = { .fdb_clear_offload = mlxsw_sp_fid_8021d_fdb_clear_offload, }; +#define MLXSW_SP_FID_8021Q_MAX (VLAN_N_VID - 2) +#define MLXSW_SP_FID_8021Q_PGT_BASE 0 +#define MLXSW_SP_FID_8021D_PGT_BASE (3 * MLXSW_SP_FID_8021Q_MAX) + static const struct mlxsw_sp_flood_table mlxsw_sp_fid_8021d_flood_tables[] = { { .packet_type = MLXSW_SP_FLOOD_TYPE_UC, @@ -765,6 +782,7 @@ static const struct mlxsw_sp_fid_family mlxsw_sp_fid_8021d_family = { .rif_type = MLXSW_SP_RIF_TYPE_FID, .ops = &mlxsw_sp_fid_8021d_ops, .bridge_type = MLXSW_REG_BRIDGE_TYPE_1, + .pgt_base = MLXSW_SP_FID_8021D_PGT_BASE, }; static bool @@ -801,7 +819,7 @@ static const struct mlxsw_sp_fid_ops mlxsw_sp_fid_8021q_emu_ops = { /* There are 4K-2 emulated 802.1Q FIDs, starting right after the 802.1D FIDs */ #define MLXSW_SP_FID_8021Q_EMU_START (VLAN_N_VID + MLXSW_SP_FID_8021D_MAX) #define MLXSW_SP_FID_8021Q_EMU_END (MLXSW_SP_FID_8021Q_EMU_START + \ - VLAN_VID_MASK - 2) + MLXSW_SP_FID_8021Q_MAX - 1) /* Range and flood configuration must match mlxsw_config_profile */ static const struct mlxsw_sp_fid_family mlxsw_sp_fid_8021q_emu_family = { @@ -814,6 +832,7 @@ static const struct mlxsw_sp_fid_family mlxsw_sp_fid_8021q_emu_family = { .rif_type = MLXSW_SP_RIF_TYPE_VLAN_EMU, .ops = &mlxsw_sp_fid_8021q_emu_ops, .bridge_type = MLXSW_REG_BRIDGE_TYPE_1, + .pgt_base = MLXSW_SP_FID_8021Q_PGT_BASE, }; static void mlxsw_sp_fid_rfid_setup(struct mlxsw_sp_fid *fid, const void *arg) @@ -1151,8 +1170,11 @@ mlxsw_sp_fid_flood_table_init(struct mlxsw_sp_fid_family *fid_family, { enum mlxsw_sp_flood_type packet_type = flood_table->packet_type; const int *sfgc_packet_types; + u16 mid_base, table_index; int i; + mid_base = mlxsw_sp_fid_flood_table_mid(fid_family, flood_table, 0); + sfgc_packet_types = mlxsw_sp_packet_type_sfgc_types[packet_type]; for (i = 0; i < MLXSW_REG_SFGC_TYPE_MAX; i++) { struct mlxsw_sp *mlxsw_sp = fid_family->mlxsw_sp; @@ -1161,9 +1183,14 @@ mlxsw_sp_fid_flood_table_init(struct mlxsw_sp_fid_family *fid_family, if (!sfgc_packet_types[i]) continue; + + mid_base = mlxsw_sp->ubridge ? mid_base : 0; + table_index = mlxsw_sp->ubridge ? 0 : flood_table->table_index; + mlxsw_reg_sfgc_pack(sfgc_pl, i, fid_family->bridge_type, - flood_table->table_type, - flood_table->table_index); + flood_table->table_type, table_index, + mid_base); + err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(sfgc), sfgc_pl); if (err) return err; From patchwork Mon Jun 27 07:06:21 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 12896300 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 AD633C433EF for ; Mon, 27 Jun 2022 07:08:32 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232686AbiF0HIb (ORCPT ); Mon, 27 Jun 2022 03:08:31 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54860 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232706AbiF0HIP (ORCPT ); Mon, 27 Jun 2022 03:08:15 -0400 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2085.outbound.protection.outlook.com [40.107.237.85]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E3BC8265E for ; Mon, 27 Jun 2022 00:08:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UBCFb5T0jIEIbLvsn499l/ekWypdUo/EuGua+nbSZuCaXRfJNgvApgAGygY4siBZ8Za/qQ7FrxCssMqNjDxlAwnZulaDc+adI84H2LweeKsHtIukg/+jci+vj8uAbN/4aWCVAeKyf1/aLHEfCpqpJaDGpL/wOPGFcXpZS9LMyxn+GFq4dJjPjwqyokFoXH850k4AWLJQbk2/i0GWWTFDrk/ZAfzHmfSvgXlQaTZyGsF5evWY3EQNU9XxNfABwBAM3KlufOsruGmSO5ARxsHPfl9pZf/l4SkRFmiJW3m+CSH41bNqBW2OSoHodYdmt5+q6UphUOQiG7JdnisSVPp5bA== 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=D8WyNdEZd3RuAz+0A5TNp/TT5SIrgsR6wum7oKvaF0U=; b=UShx0QZy2XfurKQzZhtwzuAYJR3PfNUGSb3R+358PpBnqkwVGPq6YUz+WszQKUn04tv2iwpV/JVs6d8MWmLoHUeDpTYxbP2waKEi5Dhh3gTqmNFK+tViAu2682sqNKKiIn2xiArUqU9niltxx2m3tpi1OLYzkPMNRyFK0K3nMjTjW9QHVvk8sNhthWMXpYM/m2MtilZaPkdvYVm++zRNE6Q9RisO4Tpr8fEevgmVIyF2O20iJtX4FmetL0F1zPqNIvyF2COYz4wLInbkWSjUT5Y+s9YHnKwaHe7rWmh6/vYjBPfNEVmmtOR794uYvi3SyOnT47IR5qs/4UmeYy1k+Q== 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=D8WyNdEZd3RuAz+0A5TNp/TT5SIrgsR6wum7oKvaF0U=; b=EgL2OniHYkM9KevpWIw4VvtIVDsra/tTbrGt/a4sah0VLg2LDxmWDIvCh+yeL6oyazqCK8LrUbseWQJKc+FkiJ3+BINq1O837O1Hva82G/y9NhmwvKg6rDkWTsio9MW1XMWPI2tAmKpCKzVS7tS4XHNfXTP1MbgVH8xllbf0BG8mEZDKrutpfbmvueQ0f7Gp49Lf9a/fpiKY4dLMihULtqOvZOm7Jo4etpKf1eHc02AZmA8k/+JVf1/vQFiNbMhUmaVgH3r4Mq5vUXw2Yq867nj0RgNAQt6FEU6koK68B9yStF8L9G3EulXj/wxE+czJOCAenAFoj7gy6jc0MTf0CA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from CY5PR12MB6179.namprd12.prod.outlook.com (2603:10b6:930:24::22) by SJ0PR12MB5439.namprd12.prod.outlook.com (2603:10b6:a03:3ae::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5373.15; Mon, 27 Jun 2022 07:08:12 +0000 Received: from CY5PR12MB6179.namprd12.prod.outlook.com ([fe80::611c:e609:d343:aa34]) by CY5PR12MB6179.namprd12.prod.outlook.com ([fe80::611c:e609:d343:aa34%5]) with mapi id 15.20.5373.018; Mon, 27 Jun 2022 07:08:12 +0000 From: Ido Schimmel To: netdev@vger.kernel.org Cc: davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com, edumazet@google.com, petrm@nvidia.com, amcohen@nvidia.com, mlxsw@nvidia.com, Ido Schimmel Subject: [PATCH net-next 13/13] mlxsw: spectrum_fid: Configure flooding entries using PGT APIs Date: Mon, 27 Jun 2022 10:06:21 +0300 Message-Id: <20220627070621.648499-14-idosch@nvidia.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220627070621.648499-1-idosch@nvidia.com> References: <20220627070621.648499-1-idosch@nvidia.com> X-ClientProxiedBy: LO2P123CA0033.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600::21) To CY5PR12MB6179.namprd12.prod.outlook.com (2603:10b6:930:24::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 2e639b21-5433-43f7-c4e7-08da580bcc61 X-MS-TrafficTypeDiagnostic: SJ0PR12MB5439:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: EEd9DukByXenxZgvEFF4CGyjMgNKMziwgyw4xdtmr/0BG3sM32FLE2P3zy8FEOQVNDszB8rc9IAJubzQzDFaxeu/B5dQ6KAsPslCBWloiVE6krADIqJFNaQ1xwdH7F0jHmGqdqVJxEz40eCzfbk4UJqwEHrENZDl3dN/7/9uUq6iu0kVUFKmQYwLM4f4qxEZV662ueSXbXqWIyv69VhSUAGTeFHPCpmTOc8IYqLGRE1b4GkkI97LKQ5E/tkJz3SvBRFB0IblTjLJAKyk5oR5UrklMTwOF7/62QaCiBKnKlH+hYZ5BqGo3OxnxxcIUIaAkaxE6g9Z3K6v/uiUmNYLyKTGOKyQ+5HpOs/w8yVEwsc+hlAT8oBPG3w1J3YlMsrVgBeAsuUzE1Oq0gABRw1ZXOjvxwGSGQWHm/eS8euBIC1VDfQd1718GJv7hUu4n+la0Ky+sI66AxiOyalk9aprXmxo1n5jOuNMUtAezE36BDcWrGbfnvWMqR+fYRCNT88Vb3YZFM2qd3rUxgnsR1u0WrqzjlEogr6py6kgSoIGKvtzovwGYbJEiTdf3uK/GwTSsBhQXWTEwGCqHig17vnS0tbHHiaknQ3gDpL+XGg+QkH1k0rLHBB3kmM0bCe2fecCZFLjFjoTb5Abzn8chkUEmSHs6Eq8vWKQ3OrteyBvDqO7HjP/6VYA8BdFbjcCUO+bIfzo/N8RUmDXsFH5Aj1LyKObNTw+oAXA+fPFxUPeHX85aH8DxppyTT3qltG+kyI5 X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CY5PR12MB6179.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(396003)(376002)(346002)(136003)(39860400002)(366004)(6512007)(2616005)(36756003)(6666004)(6916009)(66556008)(316002)(107886003)(1076003)(186003)(66946007)(41300700001)(6506007)(2906002)(38100700002)(66476007)(6486002)(8936002)(478600001)(4326008)(86362001)(8676002)(83380400001)(26005)(5660300002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: aQRDjY+A/A6laKoTj6miE/09T/LEBH2eMzleS+2cPoyB5dKv+y/ynZ5KsyUed88lMioBEOqH7ihXp3bV/69NEQsXoql4COH7wcXFucF+vBzCeUW5ZWNpr72tg04ulTvn7KBHMA+3U4RSGB4V1bp7PY3P66PfVPiMouDpEARw9RIkZav6MutWQo6v2tOjViWR0n4UG/BdJZIfj0iDNAQHkdE2Dx49WM/DXzlqXsv303/dKzXsYS8QqvPiG0ILC/ZeLEM/Cbnlu1HKLMesMGqhZDatsLDqNNBmFesh0VY489p/zmcFKy/GBOFnUD0hIVYZxUZqeMfEM+dT4U/TA/NG/DCvsbubKGFYupDEurkO5Q2hf1kG8t0BYU4UuIEJh7g/puTNSNFE0YMqoFC2Ig82dY7D6ipnUPSIFGekMSWPe/vK3AWJ6YilBY3lyJxbcOFFgJRJFd0upnA16wHNxoN4bmffx4rZOo1TnqCk2kYXCn3P5921cb3JZZ032qosVXt1VGmpmuq/Ql9LDLPk8yVgiZKLW0edvZXwNpZr8WNvlqVMDLIPEeJTBAqmmqVZN41VlrBlOWPCSVd7sSssNf2ReFLZ5rWV0hOr0BCDuNIvndO1huOfeGBHFmnMDX+MEb4HF/Gg7EFI1REgwYOIfk0mJFE6uduxzjdLCjzlF4LcmhF7fobiD5//06uLhvB/e8AIFZZbRAgINae5bG2xfTOfgB1G0NmlFrWtdCbM5BiHzpotbqc3NK/jZOGUMeRTeNhaZ2m2PNZSb5b92/uFGZ2Y3zWq5HzdiKKfvgTLWC6c8kJvsfg0kC6GVfKvzJK6aI/xQlzlTKQ2vrwhtFkMAQm+tOKLdjMnukoym5pk8ZVZkgKMCQeteqt40xL7HtAgDIusbWISBvOG0fEl/uX4QR6hv0JyB6C8dqM36HtK3eT0r/bm24bfMsOEtMirt9MUREatjC6pETDR4xK4RDG6TgfjkRqXa+tCqpJHh26dpCRpdnqFGIZL6SpH6cU4KVKi8Q+PTtX784CnoK50JR5VtMr+TCQ9Ogeo0t68SnzSFtCxkcYOv5saDCVLrlDWva+UNV8OHUskGvsmTTVWK4cIG8IGUqJdz4pMEhIKDKty7Yp0OWFxKPMCmSN6Iq+jLCGCBscHp7zjIDG+qVrVY4uKBuS40Drskt8ipoQVr54AlgVtzvrW1E5PuTr50NZeL8yvBAl2MqqcGhtveA+HeqYug0FbhTyKBIqc+MSh/CXnQui9Ei/9OexlRiJebBAJdlyPECjyVTLVV7mIDFQGCtKKSix8wGbTUcJEItK38HmKdRkTE/9WJheAQxJ/aMSXwjU6ZBENPiwm1OqdpbWlbZU5cBibr6Z8yLVXt0GTZKLHxaJTvIZJBLeDjCATFoArXTxhWOxJd2ON4Y6GXQASMmMKp7or+NtvnVDTfvsdaCnIx+9oWE3VaDQDdSSKpovr6TR1af5Q3nJHniHU2FH6G15pttr1mCzda9nNoCkK3juhhD2NE3raKZjTGT8mtlTx09HOFtBEqOg/Ux05sR20b9HR0o4EMY1q8ADulDEWap3ee2QYRDiITWj/vEZZhyRVkBAnID9K X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2e639b21-5433-43f7-c4e7-08da580bcc61 X-MS-Exchange-CrossTenant-AuthSource: CY5PR12MB6179.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jun 2022 07:08:12.4128 (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: i1fCz8z354VrTkYxj42aPrtylbYNEq0/MxRf3U7zJZTO5tVqHNtfX0JdHxp/vdAmh5qxpw1PGbBby75k6BLIqg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR12MB5439 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org From: Amit Cohen The PGT (Port Group Table) table maps an index to a bitmap of local ports to which a packet needs to be replicated. This table is used for layer 2 multicast and flooding. In the legacy model, software did not interact with PGT table directly. Instead, it was accessed by firmware in response to registers such as SFTR and SMID. In the new model, the SFTR register is deprecated and software has full control over the PGT table using the SMID register. Use the new PGT APIs to allocate entries for flooding as part of flood tables initialization. Add mlxsw_sp_fid_flood_tables_fini() to free the allocated indexes. In addition, use PGT APIs to add/remove ports from PGT table. The existing code which configures the flood entries via SFTR2 will be removed later. Signed-off-by: Amit Cohen Reviewed-by: Petr Machata Signed-off-by: Ido Schimmel --- .../ethernet/mellanox/mlxsw/spectrum_fid.c | 65 +++++++++++++++++-- 1 file changed, 59 insertions(+), 6 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c index d168e9f5c62d..160c5af5235d 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c @@ -322,6 +322,12 @@ mlxsw_sp_fid_flood_table_lookup(const struct mlxsw_sp_fid *fid, return NULL; } +static u16 +mlxsw_sp_fid_family_num_fids(const struct mlxsw_sp_fid_family *fid_family) +{ + return fid_family->end_index - fid_family->start_index + 1; +} + static u16 mlxsw_sp_fid_flood_table_mid(const struct mlxsw_sp_fid_family *fid_family, const struct mlxsw_sp_flood_table *flood_table, @@ -329,7 +335,7 @@ mlxsw_sp_fid_flood_table_mid(const struct mlxsw_sp_fid_family *fid_family, { u16 num_fids; - num_fids = fid_family->end_index - fid_family->start_index + 1; + num_fids = mlxsw_sp_fid_family_num_fids(fid_family); return fid_family->pgt_base + num_fids * flood_table->table_index + fid_offset; } @@ -342,6 +348,7 @@ int mlxsw_sp_fid_flood_set(struct mlxsw_sp_fid *fid, const struct mlxsw_sp_fid_ops *ops = fid_family->ops; const struct mlxsw_sp_flood_table *flood_table; char *sftr2_pl; + u16 mid_index; int err; if (WARN_ON(!fid_family->flood_tables || !ops->flood_index)) @@ -351,6 +358,15 @@ int mlxsw_sp_fid_flood_set(struct mlxsw_sp_fid *fid, if (!flood_table) return -ESRCH; + if (fid_family->mlxsw_sp->ubridge) { + mid_index = mlxsw_sp_fid_flood_table_mid(fid_family, + flood_table, + fid->fid_offset); + return mlxsw_sp_pgt_entry_port_set(fid_family->mlxsw_sp, + mid_index, fid->fid_index, + local_port, member); + } + sftr2_pl = kmalloc(MLXSW_REG_SFTR2_LEN, GFP_KERNEL); if (!sftr2_pl) return -ENOMEM; @@ -1169,17 +1185,20 @@ mlxsw_sp_fid_flood_table_init(struct mlxsw_sp_fid_family *fid_family, const struct mlxsw_sp_flood_table *flood_table) { enum mlxsw_sp_flood_type packet_type = flood_table->packet_type; + struct mlxsw_sp *mlxsw_sp = fid_family->mlxsw_sp; + u16 mid_base, num_fids, table_index; const int *sfgc_packet_types; - u16 mid_base, table_index; - int i; + int err, i; mid_base = mlxsw_sp_fid_flood_table_mid(fid_family, flood_table, 0); + num_fids = mlxsw_sp_fid_family_num_fids(fid_family); + err = mlxsw_sp_pgt_mid_alloc_range(mlxsw_sp, mid_base, num_fids); + if (err) + return err; sfgc_packet_types = mlxsw_sp_packet_type_sfgc_types[packet_type]; for (i = 0; i < MLXSW_REG_SFGC_TYPE_MAX; i++) { - struct mlxsw_sp *mlxsw_sp = fid_family->mlxsw_sp; char sfgc_pl[MLXSW_REG_SFGC_LEN]; - int err; if (!sfgc_packet_types[i]) continue; @@ -1193,10 +1212,27 @@ mlxsw_sp_fid_flood_table_init(struct mlxsw_sp_fid_family *fid_family, err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(sfgc), sfgc_pl); if (err) - return err; + goto err_reg_write; } return 0; + +err_reg_write: + mid_base = mlxsw_sp_fid_flood_table_mid(fid_family, flood_table, 0); + mlxsw_sp_pgt_mid_free_range(mlxsw_sp, mid_base, num_fids); + return err; +} + +static void +mlxsw_sp_fid_flood_table_fini(struct mlxsw_sp_fid_family *fid_family, + const struct mlxsw_sp_flood_table *flood_table) +{ + struct mlxsw_sp *mlxsw_sp = fid_family->mlxsw_sp; + u16 num_fids, mid_base; + + mid_base = mlxsw_sp_fid_flood_table_mid(fid_family, flood_table, 0); + num_fids = mlxsw_sp_fid_family_num_fids(fid_family); + mlxsw_sp_pgt_mid_free_range(mlxsw_sp, mid_base, num_fids); } static int @@ -1217,6 +1253,19 @@ mlxsw_sp_fid_flood_tables_init(struct mlxsw_sp_fid_family *fid_family) return 0; } +static void +mlxsw_sp_fid_flood_tables_fini(struct mlxsw_sp_fid_family *fid_family) +{ + int i; + + for (i = 0; i < fid_family->nr_flood_tables; i++) { + const struct mlxsw_sp_flood_table *flood_table; + + flood_table = &fid_family->flood_tables[i]; + mlxsw_sp_fid_flood_table_fini(fid_family, flood_table); + } +} + static int mlxsw_sp_fid_family_register(struct mlxsw_sp *mlxsw_sp, const struct mlxsw_sp_fid_family *tmpl) { @@ -1258,6 +1307,10 @@ mlxsw_sp_fid_family_unregister(struct mlxsw_sp *mlxsw_sp, struct mlxsw_sp_fid_family *fid_family) { mlxsw_sp->fid_core->fid_family_arr[fid_family->type] = NULL; + + if (fid_family->flood_tables) + mlxsw_sp_fid_flood_tables_fini(fid_family); + bitmap_free(fid_family->fids_bitmap); WARN_ON_ONCE(!list_empty(&fid_family->fids_list)); kfree(fid_family);