From patchwork Thu Sep 20 06:21:31 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 972178 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=mellanox.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=Mellanox.com header.i=@Mellanox.com header.b="mIAY8zW9"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 42G68r0ZkTz9sBW for ; Thu, 20 Sep 2018 16:22:36 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732116AbeITMET (ORCPT ); Thu, 20 Sep 2018 08:04:19 -0400 Received: from mail-eopbgr00082.outbound.protection.outlook.com ([40.107.0.82]:18059 "EHLO EUR02-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1731962AbeITMEH (ORCPT ); Thu, 20 Sep 2018 08:04:07 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=rGFvHn8yOyk3nEETwfUGIifPfJ6G0qFly8F2/O7++YY=; b=mIAY8zW9AmsiMgE3w2z+JLSsKRzvVimlNUm60bNkkB90EzC4b87ALu1lOazOTChy0CAzl4D8VQxCEJEpUe+NcaeIlKnt7aHANnYtz+VX7pkuKJFdM1aLUmgNqyZ1UuzxeKLBSEnxUqZBAAiJ676UxTxUuvRaSfJeiMkPQDhZjw4= Received: from splinter.mtl.com (193.47.165.251) by AM0PR05MB4980.eurprd05.prod.outlook.com (2603:10a6:208:d0::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1143.15; Thu, 20 Sep 2018 06:22:07 +0000 From: Ido Schimmel To: netdev@vger.kernel.org Cc: davem@davemloft.net, jiri@mellanox.com, petrm@mellanox.com, mlxsw@mellanox.com, Ido Schimmel Subject: [PATCH net-next 08/13] mlxsw: spectrum_buffers: Allow configuration of static pools Date: Thu, 20 Sep 2018 09:21:31 +0300 Message-Id: <20180920062136.11888-9-idosch@mellanox.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180920062136.11888-1-idosch@mellanox.com> References: <20180920062136.11888-1-idosch@mellanox.com> MIME-Version: 1.0 X-Originating-IP: [193.47.165.251] X-ClientProxiedBy: AM4PR05CA0036.eurprd05.prod.outlook.com (2603:10a6:205::49) To AM0PR05MB4980.eurprd05.prod.outlook.com (2603:10a6:208:d0::33) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: b97dc310-d136-47a1-9ccc-08d61ec1647a X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989299)(4534165)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:AM0PR05MB4980; X-Microsoft-Exchange-Diagnostics: 1; AM0PR05MB4980; 3:0nd+CdUpOXPnWG++CIZxn2h01WgaPNsNMp7mgcQ+V+ML355JhlCSn/CpPCIPyTd+yZHQTl7fza1vTvAPsczV8wMCUm48jOkZ2r/Cyqf0u8Bn0roCsCVrB4j6tZKc1PyAb75jJlHD3tFowiycY10Z9c3aUKysw/S/qol5oYmQYnf/jgremSplBEQhXd7fQB/GSzDN9ElufTNi9ZVPxSLdLM7ss6+xBZq7qD6lKEoLf/baVmD3kZCT97wqOopDxWx7; 25:tTVGVNBL21MZ+AIBfWsZjBcZai/a7cP3idJu/bN0m07mhisANKsI9Ps84uBfb3riYw4a3BmdWNjjRq2HFeSWLyimQ0sfkgaLq9RvM6KIBWacy44X/cyPyDhrWEC5Fe+2tG/Ca4g6FHj8dbqP44oMGF4bp/YRKcHo7q58EldzSXDfAIwWn4/yMt8cMQ0LAS9a+ACAYxuiF+4hD8qbHOlN6VnkFXrXNbcNucK8OQnPOH8vSvf5U2n4EPfpqpvkq3ZY1g6ILtWKQqUfjaehrAwVZGGgjVIszL2ZNrapn40vDSI3wjc9Qm3+K3QyJp2sOHwuoutoVx8rEVhQbdo3b6bg6A==; 31:4Qxzgm2gz5tZXuRodGtSQnCeDug0ORyrxmPT7i7NzG+Y4UTZgz7eXqQT1Uvhg6FQGw2y835e2V9C4MVjFEE5T8P3K+RAApswy0EA0g3uf8NfPe+8FI38RRNpX4d/o3iMZlS8zJ5u0fVLxAf45L0DfWUqJHSrs2HBlhgfrCZwRzco4WpdZVuy5B63T2vw17Ry8B4d2alfHQh+4mDJ7zvYs0HCFJE2BEd9ghADGuU3J8w= X-MS-TrafficTypeDiagnostic: AM0PR05MB4980: Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=idosch@mellanox.com; X-Microsoft-Exchange-Diagnostics: 1; AM0PR05MB4980; 20:Fr9r8CpwPQtE6V2sjUAcTHvFgfSeZp6DWH1TlVth4CwscWldJHPoruh+aB1dHIXLs+B5RoaOavtXBPH8adr6uY9+m43AfXaWiH+0UGNkGw8j0eYkT5Vu0KB2aVWAAFVybKgesX7jB3oH5sulpvsekgD1JK7G1gln1DCJ5h7Jv6umYEqnJME1rcsVypJc24XbjeWxQS+BV/n3xcWffm8nQHDD79NDBrPS4Eueg+mKdPS9f8rdU8vsbqecnN90o6P7/WmrE6xmyboJJUC2aQgX8CCg4UAVHxnVXO72xiZ5eXRS8JDY3JHUQFxZZtSn5fW7bt1aay/zKk5YgQr7/dV89cHyFPh53ZnXns0KXQAq3ujipRiQ4c6mLyXUB6EKKdUzQUewQNpq1DTll898GQ47uiTUlutDIMN89646XTw+QpCfKuzM5QHQ5FEWSJV1AXeRsSKtNbUocJ7CtCGbhNjRdzoe7XAJ0Hf2qeihN6EPmCyj0iNRlPxI/Y+dfjXwaftf; 4:FWZQcvSzdo+94mRFycYviWKu28Fo4gVdJQ5FERanBRd80WBY1HDRZWjeh7ob4yZiIqQRGIsu1OwZe4izVVH8kji9inWOh4bGFsGp0idEgncsIjLYIVPdn9up6HQ/8/g0JvJIC6r2dfq5fAUX1hGSvxN9k2+cupXKGUWyTIBC+ljhxSzf79p9Orbe2s5aqvXGdU5KuY3CLUJ3gX+KPc7TbhhQvQKU/nbG7QzGKLKVFhc+nPC8yCf16XknOedOk+iBjy+GkpgDtnUae66sLn4e+w== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3002001)(93006095)(93001095)(3231355)(944501410)(52105095)(10201501046)(6055026)(149027)(150027)(6041310)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(201708071742011)(7699051)(76991041); SRVR:AM0PR05MB4980; BCL:0; PCL:0; RULEID:; SRVR:AM0PR05MB4980; X-Forefront-PRVS: 0801F2E62B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(979002)(39860400002)(136003)(376002)(396003)(366004)(346002)(189003)(199004)(478600001)(81156014)(1076002)(8936002)(446003)(11346002)(476003)(6512007)(48376002)(5660300001)(6486002)(2906002)(2616005)(16586007)(6666003)(956004)(486006)(3846002)(6916009)(316002)(16526019)(52116002)(76176011)(186003)(50466002)(53936002)(6116002)(51416003)(97736004)(86362001)(50226002)(386003)(6506007)(8676002)(25786009)(66066001)(106356001)(53416004)(81166006)(2351001)(14444005)(305945005)(47776003)(2361001)(105586002)(107886003)(68736007)(36756003)(26005)(4326008)(7736002)(969003)(989001)(999001)(1009001)(1019001); DIR:OUT; SFP:1101; SCL:1; SRVR:AM0PR05MB4980; H:splinter.mtl.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; AM0PR05MB4980; 23:q4ngN1qUAHJsfEwlfZ6rC8eA77PG+W0Ex9CxaN7BiUQtcslpuNa7fUlFWZkOrSemKpDcNBD3ea1pGJkOe1cy7dj9tCnXbpTaQh3I1eP3D5XuxLTAztmc3t5z2gxLLgGKkhjCNhAYKhnivH7cIUz/mPD/7OIzcHB7WvU9/Kc/rgPEF93dlh+35O6m1bhIBqokn9DmvzXw3964/w0uCXJiyPVg0jyes0+oNHjWNOoES3UWE+mv68AJgWKycIxpc/2e+ilTx7dP5fjcD1xkC3PElKw+OVzonhsYOKp73m8iHbuOrvYz9FBdvagrawMCswkPIMWzXSo7VkKdcpcG2earkEz/zJ/whgdSkvl109wshlfa6s/v69BezuKbcY2CWy0i3fRrZkSgMS1c6iaC9Ai3U5KHF8TQRcmtt8qd8xlqcMNLGGmlVRCKQ5UQmE86QTe02S7uOI3TbQ7kKXBGgfzHXuFhzMUm2EOBLjg+1RObYuie57LOXHppCsLBTYUrIdsKKD/5zXzkS3Yds1qNN0d9U6H/x0hqBnqhUnps0jjSMACQx3uxkNQvvr9Dr/6Mg9xuTfGpjIpbF8MRC3r+E6K5mX84wjN8ju6QGIv7HUb11WGJXPeyu8yI4IaAWWj0M0KF4Io2mulFsI0l76rQ6jm7yoQnLapvRv7393V1Zvy40OzIhRVbHORDy/w3VYX4K3EW5zgblWRn+gq3X7V8E6plKJ8gbbPYKhhPBrn0fxR9IlTPijUnNfH08zV4kfS/VVgF+ij0dWxsveYzMre8Ih7HC6XZKCTdnPKaw70rUOgPl8GeguLX+TzuZrHMnqR65Y835+bgOXuiKxDianDn9mkttTFMMZ9MIlYBb/4xZpJlyv83fyhulb4+DkGiS1G53RrKPuGZtOLjdHRBY6t1PpoIJlJFdRjWSkmvUkLQBsUkDGX9WuQXltLydgbxzr5i97v54QqZb1rP/kP6Px2e3MxQCB+N2K9mXoJA998WerA/rMYeAXr1f6D5cc2zrop8Wu+/bdYI85XdBQzPAQqr4+I6fkp7ZrhUD3vuVUxlJckRVx6kb9/QbC356Onbh4CCfpM/buAM4S/Vni37RFATCGtAGTTm/Mveq7+fDJ3bZzwso0ArzxHTAy15XNoz6Ybh5BolbLq5VcUCP1ixXPuBqTIPFp7LrEgnXufydDcOyvwHBRK+Yl5MMR+kecABH5+o8I5NBrGqLQ4BIObXE/UWyd1Sxr4V/LTiQFN9zXyhzNpVceMmvSsA0UN1A7Xc2tOgBMy6vzLACckSXXl8j1Ul75jrRiO/PvPWCZCXD5UeB4o6j8IpY92ap1qf39PdBmC9BvqRJLzlb/jvFslc25zzyfUyzKLKAxYJfcnjrYdLtgK1RWg= X-Microsoft-Antispam-Message-Info: L2wcfRQzPjktE1YYhAI68Vlo+T9h090iac8qaYnD5+01qYl+SRMEM7N3EAVW/yG1SvppleacDSRSJ6f3sG9FZnTxTZdA0INJ5meYVQaVp72WduVruIO6q6oppAkY/tM3Nfkeijo4T+KfcP+62Z7WF51mgFVfRnb/wKa9EsP7BUTncxkHJ9h/iK2BsKkZaEEB9zJAPUIqBCOaKnO3F/gVxqntjPEOuqL0Td8nyhrOLRq5raKtOnACz6v9a97M0rhNEJNsmWr9DFL2qjNDv5TqKJvMZ/u+639TTTkwo2SNM/8URyn722EogTxQC5JTlhuRA72u62HKgYIpRCD+Uj4yF4zKTj33YGP5SYsJ6Gq4WOE= X-Microsoft-Exchange-Diagnostics: 1; AM0PR05MB4980; 6:1RkSSuDI2cFhrir/f34FupfxzQEuYf6zvwKqlePpKiYzaRTLsgQhYZMKznx5ZJidjZNCP62uKnoEe3j0jHsRljxLD0qX22qTxRqG4ZBxip9ngA1rWSJD260zhgg1sSmAivHqrhDe9NObbZtOvMtIN3Bb9IDzTJOHmIZt2AOSFrXobl6Jvfa4caBTjRVszG8c6rm5Q6YhL1Kc4CeuIuiU3JWsnyBCPXXwHLPequ4fCvsb8F09s13TTedZCANeMwwy/DDj8VjWQwc9jnH5HRFRJCro9SPu7SB/vtidV6LPi5goYr+QJ258WE/1qTkktwDNl9UmjKHLhCOYc41lyQYG3249G7e9qM+cCZyL5BW+q/V4qcD9r1VD5gPRTf9kORf8cU9lUqnoVmHmGThKxsgTueTd3Yn2eWiWY/SMSMeul2zuXIAhrFL57c6EA0saYbTyOXGBIKlm+Pqq0RPBVTTuew==; 5:QM8vSmlMu3L8ZqW9Rlh3MqWyvOTL3ELoAO1Cpb0gF8usvwvCb5a8bV8pialVYDGgw3uarp5XynEgUgjK1+CPOXo0hvoooOLMKk/90oRaWfFzNSUbTlVcUkb2zPaKVM6+jgV9Y/oLf6gX31hLHjsfMLVUGoj8HCVLDPGMpj7NKG8=; 7:LrHInNRWZfOLD/gsYKPkrDcKuFUZP5FyVgOLp2hHJlQczW2JKBO/EGbVUX448EiAglQvVZcOLGZBx+RFJ5wyFeLNi/osUBED8OEW8mh0sODGCJR9mf18Hb/fxF+M7DAAXwsRhIk9PSEXmn+WNPYz2+U9ekhm4gtBRjS4HluFxMtc7LJ2uJPevh0Zd8T89FNvf/nCMIj+Mfa6176HrkJyiyHKKQZXSx7UpvDeCKXLbeKnUmAfYAEtSZNbBY1T38Bk SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Sep 2018 06:22:07.7626 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b97dc310-d136-47a1-9ccc-08d61ec1647a X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR05MB4980 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Petr Machata Some pools configured through the sb_pm entries may have by default static size. The MC pool is now not explicitly configured, however it gets configured as static implicitly by 0-initializing sb->prs, and a follow-up patch adds an explicit configuration to the same effect. To support this, pass max_buff taken from sb_pm and sb_cm entries through cell conversion before handing it to mlxsw_sp_sb_pm_write(), if the pool that the sb_pm entry configures is statically-sized. To keep current behavior, update mlxsw_sp_sb_cms_egress[] to denote buffer sizes in bytes (assuming Spectrum 1 cell sizes, which the original code assumed as well) instead of cells. Note that a follow-up patch changes this to infinite size. Also tweak a comment at SBMM configuration to remain true now that statically-sized pools exist. Signed-off-by: Petr Machata Reviewed-by: Jiri Pirko Signed-off-by: Ido Schimmel --- .../mellanox/mlxsw/spectrum_buffers.c | 50 ++++++++++++------- 1 file changed, 33 insertions(+), 17 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c index 021b7c219f4e..c7b453f7881c 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c @@ -380,14 +380,14 @@ static const struct mlxsw_sp_sb_cm mlxsw_sp_sb_cms_egress[] = { MLXSW_SP_SB_CM(1500, 9, 4), MLXSW_SP_SB_CM(1500, 9, 4), MLXSW_SP_SB_CM(1500, 9, 4), - MLXSW_SP_SB_CM(0, 140000, 8), - MLXSW_SP_SB_CM(0, 140000, 8), - MLXSW_SP_SB_CM(0, 140000, 8), - MLXSW_SP_SB_CM(0, 140000, 8), - MLXSW_SP_SB_CM(0, 140000, 8), - MLXSW_SP_SB_CM(0, 140000, 8), - MLXSW_SP_SB_CM(0, 140000, 8), - MLXSW_SP_SB_CM(0, 140000, 8), + MLXSW_SP_SB_CM(0, 13440000, 8), + MLXSW_SP_SB_CM(0, 13440000, 8), + MLXSW_SP_SB_CM(0, 13440000, 8), + MLXSW_SP_SB_CM(0, 13440000, 8), + MLXSW_SP_SB_CM(0, 13440000, 8), + MLXSW_SP_SB_CM(0, 13440000, 8), + MLXSW_SP_SB_CM(0, 13440000, 8), + MLXSW_SP_SB_CM(0, 13440000, 8), MLXSW_SP_SB_CM(1, 0xff, 4), }; @@ -433,6 +433,14 @@ static const struct mlxsw_sp_sb_cm mlxsw_sp_cpu_port_sb_cms[] = { #define MLXSW_SP_CPU_PORT_SB_MCS_LEN \ ARRAY_SIZE(mlxsw_sp_cpu_port_sb_cms) +static bool +mlxsw_sp_sb_pool_is_static(struct mlxsw_sp *mlxsw_sp, u16 pool_index) +{ + struct mlxsw_sp_sb_pr *pr = mlxsw_sp_sb_pr_get(mlxsw_sp, pool_index); + + return pr->mode == MLXSW_REG_SBPR_MODE_STATIC; +} + static int __mlxsw_sp_sb_cms_init(struct mlxsw_sp *mlxsw_sp, u8 local_port, enum mlxsw_reg_sbxx_dir dir, const struct mlxsw_sp_sb_cm *cms, @@ -444,6 +452,7 @@ static int __mlxsw_sp_sb_cms_init(struct mlxsw_sp *mlxsw_sp, u8 local_port, for (i = 0; i < cms_len; i++) { const struct mlxsw_sp_sb_cm *cm; u32 min_buff; + u32 max_buff; if (i == 8 && dir == MLXSW_REG_SBXX_DIR_INGRESS) continue; /* PG number 8 does not exist, skip it */ @@ -451,18 +460,21 @@ static int __mlxsw_sp_sb_cms_init(struct mlxsw_sp *mlxsw_sp, u8 local_port, if (WARN_ON(mlxsw_sp_sb_pool_dess[cm->pool_index].dir != dir)) continue; - /* All pools are initialized using dynamic thresholds, - * therefore 'max_buff' isn't specified in cells. - */ min_buff = mlxsw_sp_bytes_cells(mlxsw_sp, cm->min_buff); - if (cm->max_buff == MLXSW_SP_SB_INFI) + max_buff = cm->max_buff; + if (max_buff == MLXSW_SP_SB_INFI) { err = mlxsw_sp_sb_cm_write(mlxsw_sp, local_port, i, min_buff, 0, true, cm->pool_index); - else + } else { + if (mlxsw_sp_sb_pool_is_static(mlxsw_sp, + cm->pool_index)) + max_buff = mlxsw_sp_bytes_cells(mlxsw_sp, + max_buff); err = mlxsw_sp_sb_cm_write(mlxsw_sp, local_port, i, - min_buff, cm->max_buff, + min_buff, max_buff, false, cm->pool_index); + } if (err) return err; } @@ -523,11 +535,15 @@ static int mlxsw_sp_port_sb_pms_init(struct mlxsw_sp_port *mlxsw_sp_port) for (i = 0; i < MLXSW_SP_SB_PMS_LEN; i++) { const struct mlxsw_sp_sb_pm *pm = &mlxsw_sp_sb_pms[i]; + u32 max_buff; u32 min_buff; min_buff = mlxsw_sp_bytes_cells(mlxsw_sp, pm->min_buff); + max_buff = pm->max_buff; + if (mlxsw_sp_sb_pool_is_static(mlxsw_sp, i)) + max_buff = mlxsw_sp_bytes_cells(mlxsw_sp, max_buff); err = mlxsw_sp_sb_pm_write(mlxsw_sp, mlxsw_sp_port->local_port, - i, min_buff, pm->max_buff); + i, min_buff, max_buff); if (err) return err; } @@ -580,8 +596,8 @@ static int mlxsw_sp_sb_mms_init(struct mlxsw_sp *mlxsw_sp) mc = &mlxsw_sp_sb_mms[i]; des = &mlxsw_sp_sb_pool_dess[mc->pool_index]; - /* All pools are initialized using dynamic thresholds, - * therefore 'max_buff' isn't specified in cells. + /* All pools used by sb_mm's are initialized using dynamic + * thresholds, therefore 'max_buff' isn't specified in cells. */ min_buff = mlxsw_sp_bytes_cells(mlxsw_sp, mc->min_buff); mlxsw_reg_sbmm_pack(sbmm_pl, i, min_buff, mc->max_buff,