From patchwork Wed Feb 20 19:32:12 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 1045547 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="F5QbWqfP"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 444SRT0RlRz9s6w for ; Thu, 21 Feb 2019 06:32:21 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726428AbfBTTcU (ORCPT ); Wed, 20 Feb 2019 14:32:20 -0500 Received: from mail-eopbgr00045.outbound.protection.outlook.com ([40.107.0.45]:11872 "EHLO EUR02-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1725851AbfBTTcT (ORCPT ); Wed, 20 Feb 2019 14:32:19 -0500 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=R3ch642LatHpcFjTPJAs8+BHKa6QBx02jN25dr4tLfk=; b=F5QbWqfP8GBPwl5R3RDy8p7wakF3u4bfQl7SOCbGoTEcM2kvil7eXs5QGWXvw34RzPvpSywTtHZNOzdUxCKjWy5w9jYJy9I4w2SzjboVOLHJkvleCF6mu88fwWLwFIGf+FR08taLWwJ/KRiz5SqCP7x7YrUPOAm9E9J1K10xJRI= Received: from AM6PR05MB5240.eurprd05.prod.outlook.com (20.177.196.214) by AM6PR05MB4871.eurprd05.prod.outlook.com (20.177.34.223) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1622.19; Wed, 20 Feb 2019 19:32:12 +0000 Received: from AM6PR05MB5240.eurprd05.prod.outlook.com ([fe80::3542:889c:3a85:3866]) by AM6PR05MB5240.eurprd05.prod.outlook.com ([fe80::3542:889c:3a85:3866%5]) with mapi id 15.20.1643.014; Wed, 20 Feb 2019 19:32:12 +0000 From: Ido Schimmel To: "netdev@vger.kernel.org" CC: "davem@davemloft.net" , Jiri Pirko , Petr Machata , mlxsw , Ido Schimmel Subject: [PATCH net-next 01/10] mlxsw: spectrum: Add struct mlxsw_sp_sb_vals Thread-Topic: [PATCH net-next 01/10] mlxsw: spectrum: Add struct mlxsw_sp_sb_vals Thread-Index: AQHUyVL6oRYLkKbsKUKOZ5I1oVbNEA== Date: Wed, 20 Feb 2019 19:32:12 +0000 Message-ID: <20190220193141.16498-2-idosch@mellanox.com> References: <20190220193141.16498-1-idosch@mellanox.com> In-Reply-To: <20190220193141.16498-1-idosch@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: AM6PR10CA0061.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:209:80::38) To AM6PR05MB5240.eurprd05.prod.outlook.com (2603:10a6:20b:64::22) authentication-results: spf=none (sender IP is ) smtp.mailfrom=idosch@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.20.1 x-originating-ip: [77.138.249.209] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: fe63eba7-73b5-4731-c90e-08d6976a1ca7 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600110)(711020)(4605104)(4618075)(2017052603328)(7153060)(7193020); SRVR:AM6PR05MB4871; x-ms-traffictypediagnostic: AM6PR05MB4871: x-microsoft-exchange-diagnostics: =?iso-8859-1?q?1=3BAM6PR05MB4871=3B23?= =?iso-8859-1?q?=3AeLRWj4FPgG5q8Othl5M9htvK2FD0Ts7tAtrolGFWE9J/+3Ec?= =?iso-8859-1?q?bzSAzVVVxtg0b7ocHG426EW/vZID/NC/QyYo/zt1mK7/d/oxtyh?= =?iso-8859-1?q?voJV5WmpsizZLZetD29fQFostKpRabUMZiEF4HwfffcV3ewEn4C?= =?iso-8859-1?q?rDelFFp0HxWI2WG71vUSb1WAJHzj52SJ2LdtO0WcIU8Yq4t7hX5?= =?iso-8859-1?q?AaX8Wk02Tfoxo9TrFhpoLrNIjSly5sSjCC3kRTjMEbaGO1t53Fo?= =?iso-8859-1?q?5C7YZ2QejhPX37MHMBDwvGYZXMgIKRCEWXoS6tsFmmE6DBxLXVe?= =?iso-8859-1?q?Pa4wpTSMqEix+5LtclOV3SpEiJT1nFyyoEJXaHmJBiH0odcFjm6?= =?iso-8859-1?q?OrlRd9uCYQd4ksZPhG/l9nf7Eo9n/RzyME0zwzFCNMeNZ4dw76H?= =?iso-8859-1?q?XNbwwSeXEMZnkiWtd6Wq2nG0URnRdhY7F1Ok9ZN6+EqbqfljXG1?= =?iso-8859-1?q?7apyCfP+n1+LerNyxa3V/NfzQ7pTT6Iua+3RI3zGYjoQtXMXUAB?= =?iso-8859-1?q?3jFNR1JO/fGoIaMHVNzyd8UWk5Bzb8b8+Cp0Zoth2auYUPPWzLu?= =?iso-8859-1?q?oZILn0MFkx1k9CsZsF7lwA2Jbgi7aEglF4aaKSIy8FYNqpGYMn3?= =?iso-8859-1?q?Gha8dRKH8u/ytNiH2u9RtKB93DdZAezYhjWxdMQvWa19gWnxs9r?= =?iso-8859-1?q?H8thJMhllhj/cEl4GsGIHQJ71Xwi6jb9jkGsMhH7PqXcbK9ZQox?= =?iso-8859-1?q?z05DWPQBhTm1T52LvJdj9ZfFqvl4XO8yszqMTh9zs0+Kmh3rbIp?= =?iso-8859-1?q?t6pbvWvdnWGX0yON6oplF/yVhXl2Csnp8vdT0pwqE62nuGnl3Si?= =?iso-8859-1?q?RvZ2GupWqOjdzn5Ww2jrZVvRuJKgfBdjftNryx65LG0h9UF28UO?= =?iso-8859-1?q?X+d1wkO6RNjOYO8jSP92aKZ2/qQkEec8lFsm1xWA8YFJtZ6jEnS?= =?iso-8859-1?q?xWf9Z4xSaOXhSiAthcicHLpQefDyClCf1uI2kTiCrcLb2phXwEn?= =?iso-8859-1?q?cM/CEOozDkDTNArbY0JFiwnEDg3xVHEfajARy/+Bg7QeMFnuCSu?= =?iso-8859-1?q?5Kvn+AE7oFC+wYHfbta3kqagXws2rjpZaL4An6amVDl4rR7HX/b?= =?iso-8859-1?q?RXUCg0n7dts+/QTTgH4ItR0qA+TfQ7/dSWX4tdjKDEiv/PaMxFy?= =?iso-8859-1?q?3UOL4+Epnl+xEc7fNj5YScjtBBeQMlMV1MHzQopexZrgyZttsZj?= =?iso-8859-1?q?GjxoxcKCt+rWWCy6cVug4tJ1kh8ZcbDez8b6Gp7j796jMhim8o2?= =?iso-8859-1?q?lUW0SRfpnxQiJ8nnZDD7Z6tcfOKZTJ35El/LHl6xFUzNS2lKp6M?= =?iso-8859-1?q?oIhPvOMsW9OeT3R6JOokSDGvLwmG2J7NseAVuxhVtVPigh8USZQ?= =?iso-8859-1?q?=3D?= x-microsoft-antispam-prvs: x-forefront-prvs: 0954EE4910 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(376002)(396003)(39860400002)(346002)(366004)(199004)(189003)(486006)(86362001)(446003)(2616005)(4326008)(2351001)(478600001)(2906002)(105586002)(106356001)(11346002)(107886003)(476003)(68736007)(6916009)(54906003)(316002)(25786009)(6506007)(26005)(102836004)(386003)(53936002)(186003)(6116002)(3846002)(52116002)(99286004)(97736004)(2501003)(256004)(81156014)(6512007)(6486002)(50226002)(5640700003)(81166006)(305945005)(8936002)(7736002)(8676002)(1730700003)(14454004)(76176011)(1076003)(5660300002)(71190400001)(71200400001)(66066001)(36756003)(6436002); DIR:OUT; SFP:1101; SCL:1; SRVR:AM6PR05MB4871; H:AM6PR05MB5240.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: auICODJz0MQObjMtaQxm4dFOeZjLv9oRDAhCpFconAOTTL+PsXG8UdQ2o62nuYgkl1jXBN4Wg+j9XyJDjfKJJSbJ/+x9DsHS/DqF2k9hl/AkOlGW/GiwRAFvKELDVyWGr26pN4DohLzCao/S9o3Ed1apm8Q5AYZXTrBciwX7as4IsHJm1sFmzku4Zk1r8neP3vREhr4HuRLD2HJYEWSrng4arNUbuQFQluKSBWi3Tu3t33MScGVb2uEgEb1g0SRfhHQbMCdz91j0lmIidz9v9F/brcWYj9KkuNG+1ZpMx8M/TzJFwwCyfgGUk2pt5agH1NEpaa2ChoRYo98gfXuqX3kxntvrXoS4APZ8nN40kbVJNl5iH57iQol1NH8xIVMv2rN8Hd/ZR8R/ixV4TVSpTEKWQw3+sYA8PVO/qRoCjDU= MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: fe63eba7-73b5-4731-c90e-08d6976a1ca7 X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Feb 2019 19:32:10.5777 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR05MB4871 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Petr Machata Spectrum-2 will be configured with a different shared buffer configuration than Spectrum-1. Therefore introduce a structure for keeping the chip-specific default and immutable configuration. Configuration mutable in runtime will still be kept in struct mlxsw_sp_sb. Signed-off-by: Petr Machata Signed-off-by: Ido Schimmel --- drivers/net/ethernet/mellanox/mlxsw/spectrum.c | 2 ++ drivers/net/ethernet/mellanox/mlxsw/spectrum.h | 5 +++++ drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c | 9 +++++++++ 3 files changed, 16 insertions(+) diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c index 7ee6d747e97b..c1ec4f89973b 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c @@ -4092,6 +4092,7 @@ static int mlxsw_sp1_init(struct mlxsw_core *mlxsw_core, mlxsw_sp->nve_ops_arr = mlxsw_sp1_nve_ops_arr; mlxsw_sp->mac_mask = mlxsw_sp1_mac_mask; mlxsw_sp->rif_ops_arr = mlxsw_sp1_rif_ops_arr; + mlxsw_sp->sb_vals = &mlxsw_sp1_sb_vals; return mlxsw_sp_init(mlxsw_core, mlxsw_bus_info); } @@ -4109,6 +4110,7 @@ static int mlxsw_sp2_init(struct mlxsw_core *mlxsw_core, mlxsw_sp->nve_ops_arr = mlxsw_sp2_nve_ops_arr; mlxsw_sp->mac_mask = mlxsw_sp2_mac_mask; mlxsw_sp->rif_ops_arr = mlxsw_sp2_rif_ops_arr; + mlxsw_sp->sb_vals = &mlxsw_sp2_sb_vals; return mlxsw_sp_init(mlxsw_core, mlxsw_bus_info); } diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum.h b/drivers/net/ethernet/mellanox/mlxsw/spectrum.h index ceebc91f4f1d..976843917c95 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.h +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.h @@ -133,6 +133,7 @@ struct mlxsw_sp_kvdl_ops; struct mlxsw_sp_mr_tcam_ops; struct mlxsw_sp_acl_tcam_ops; struct mlxsw_sp_nve_ops; +struct mlxsw_sp_sb_vals; struct mlxsw_sp { struct mlxsw_sp_port **ports; @@ -167,6 +168,7 @@ struct mlxsw_sp { const struct mlxsw_sp_acl_tcam_ops *acl_tcam_ops; const struct mlxsw_sp_nve_ops **nve_ops_arr; const struct mlxsw_sp_rif_ops **rif_ops_arr; + const struct mlxsw_sp_sb_vals *sb_vals; }; static inline struct mlxsw_sp_upper * @@ -372,6 +374,9 @@ int mlxsw_sp_sb_occ_tc_port_bind_get(struct mlxsw_core_port *mlxsw_core_port, u32 mlxsw_sp_cells_bytes(const struct mlxsw_sp *mlxsw_sp, u32 cells); u32 mlxsw_sp_bytes_cells(const struct mlxsw_sp *mlxsw_sp, u32 bytes); +extern const struct mlxsw_sp_sb_vals mlxsw_sp1_sb_vals; +extern const struct mlxsw_sp_sb_vals mlxsw_sp2_sb_vals; + /* spectrum_switchdev.c */ int mlxsw_sp_switchdev_init(struct mlxsw_sp *mlxsw_sp); void mlxsw_sp_switchdev_fini(struct mlxsw_sp *mlxsw_sp); diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c index 80066f437a65..cd23ec9268bc 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c @@ -73,6 +73,9 @@ struct mlxsw_sp_sb { u64 sb_size; }; +struct mlxsw_sp_sb_vals { +}; + u32 mlxsw_sp_cells_bytes(const struct mlxsw_sp *mlxsw_sp, u32 cells) { return mlxsw_sp->sb->cell_size * cells; @@ -625,6 +628,12 @@ static void mlxsw_sp_pool_count(u16 *p_ingress_len, u16 *p_egress_len) *p_egress_len = MLXSW_SP_SB_POOL_DESS_LEN - i; } +const struct mlxsw_sp_sb_vals mlxsw_sp1_sb_vals = { +}; + +const struct mlxsw_sp_sb_vals mlxsw_sp2_sb_vals = { +}; + int mlxsw_sp_buffers_init(struct mlxsw_sp *mlxsw_sp) { u16 ing_pool_count; From patchwork Wed Feb 20 19:32:14 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 1045548 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="p5TtBAUt"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 444SRX48j3z9s5c for ; Thu, 21 Feb 2019 06:32:24 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726818AbfBTTcX (ORCPT ); Wed, 20 Feb 2019 14:32:23 -0500 Received: from mail-eopbgr00045.outbound.protection.outlook.com ([40.107.0.45]:11872 "EHLO EUR02-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1725847AbfBTTcX (ORCPT ); Wed, 20 Feb 2019 14:32:23 -0500 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=/Me0QfLdE1b8f/UPBv7GhSSwi5T0zWTAZfJdV2PsLLc=; b=p5TtBAUtxy+eN+mCj6flpmtPkzoKF+BeGdwIeQ99l52t/BOyp6CEQnKMZlo7S8EptOX3z7iQkZ/52GsJIQl62uFwayZ62IAlytp+VP71tj6DikYLQHiVY9LgMZQ7LL0bAtjveLLE8wKdkskUvMjj12bAsYctHDUAB9YVHsWfO1U= Received: from AM6PR05MB5240.eurprd05.prod.outlook.com (20.177.196.214) by AM6PR05MB4871.eurprd05.prod.outlook.com (20.177.34.223) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1622.19; Wed, 20 Feb 2019 19:32:14 +0000 Received: from AM6PR05MB5240.eurprd05.prod.outlook.com ([fe80::3542:889c:3a85:3866]) by AM6PR05MB5240.eurprd05.prod.outlook.com ([fe80::3542:889c:3a85:3866%5]) with mapi id 15.20.1643.014; Wed, 20 Feb 2019 19:32:14 +0000 From: Ido Schimmel To: "netdev@vger.kernel.org" CC: "davem@davemloft.net" , Jiri Pirko , Petr Machata , mlxsw , Ido Schimmel Subject: [PATCH net-next 02/10] mlxsw: spectrum_buffers: Allocate prs & pms dynamically Thread-Topic: [PATCH net-next 02/10] mlxsw: spectrum_buffers: Allocate prs & pms dynamically Thread-Index: AQHUyVL7+3wXruuml0yWyFUxsfdXJw== Date: Wed, 20 Feb 2019 19:32:14 +0000 Message-ID: <20190220193141.16498-3-idosch@mellanox.com> References: <20190220193141.16498-1-idosch@mellanox.com> In-Reply-To: <20190220193141.16498-1-idosch@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: AM6PR10CA0061.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:209:80::38) To AM6PR05MB5240.eurprd05.prod.outlook.com (2603:10a6:20b:64::22) authentication-results: spf=none (sender IP is ) smtp.mailfrom=idosch@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.20.1 x-originating-ip: [77.138.249.209] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 1cea880a-fd8e-4fa0-df15-08d6976a1dd8 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600110)(711020)(4605104)(4618075)(2017052603328)(7153060)(7193020); SRVR:AM6PR05MB4871; x-ms-traffictypediagnostic: AM6PR05MB4871: x-microsoft-exchange-diagnostics: =?iso-8859-1?q?1=3BAM6PR05MB4871=3B23?= =?iso-8859-1?q?=3AVu7iYL0/d1UqNTS977rs9pYTa7IFPry8t8925tk+ZpSF1NNO?= =?iso-8859-1?q?Yzgq/ZmjQP9dpoemRtmlQDNVBV66nZHZ6+p6s0MhS1Ha7ITKOHR?= =?iso-8859-1?q?uO5xSfWWfW4tKCzXV9CiCIz541HrVRtsLBMqgSyZV/MEfXvXsVI?= =?iso-8859-1?q?sOvOxRIqfcytgLqtp9xZj40ZtaCdzngfqpr7IXWpmkqaKxPooPL?= =?iso-8859-1?q?qk4LT62RpRmRGd9xqEl/ps8MXbevUPmfe04gPFghPxcmtP0hyeN?= =?iso-8859-1?q?DhdN0phaPEKZuCkA7jSXgyvHTdGFZOpRH9w2pOpVptNj9DC6I1u?= =?iso-8859-1?q?R4jY+mkpSwHxwOFOMw9QiWRKjR+9ZltMzHdjQUDBWC1oXEgK9Q/?= =?iso-8859-1?q?vxWBCCIptMmuJscbuHdxwxPkNdnXTqkMzYIem4reAVdCk/JekQt?= =?iso-8859-1?q?y3+4KZnAwIQvezMa6FV2VSq7OlzleQTXaaqDluD5naI/3q21cl/?= =?iso-8859-1?q?CJk1dQtX/ZcAFDCdNp2LJoVklmnX71QDpsps8llZNrNSreepz4R?= =?iso-8859-1?q?Fzv8/bzJ13ykggcvnA1fBLOJ/BPrwkb6yv6kOXnHaIlVBdh/lwV?= =?iso-8859-1?q?0YCAHz4j9FG6J1M9V3ZlKKXoH256wwFwzDPAfCPnlj8QV2ZSAZr?= =?iso-8859-1?q?7BG7RBtl+qAwfdbU2fXh5Wke2C6sdjswi/rkKVrNW3xG8yKqlAY?= =?iso-8859-1?q?SYFd+pOGj5JEoPxOHgXRBpl6Y7ZszEhS3ioo1tOnkJLpLOKT72L?= =?iso-8859-1?q?k9zBNWqAo4JWzAUjbwKdmqx4XvIjFMnBXhpjSNdTYANfWdGnSJj?= =?iso-8859-1?q?63Iz46rrSa4ec5cnJGbzn26gvHQQZuch9YVpvad1Oo5HsR/AswX?= =?iso-8859-1?q?3Uxw3Cd9an8W25GuRTsN7amXcSOjgRdOH0RyUWeoD/wO4bWWg7o?= =?iso-8859-1?q?8bjf3E084aDnBuhUTQ80tROPF2qtk25PVE3x+85ozso/7TrcIsX?= =?iso-8859-1?q?o+YJnuGhkwuhvNbxr+B3Iu5SbPT9FwstGoFLomgcLsOj7HrwPI0?= =?iso-8859-1?q?8jrcyhFocnxfagUR0Jtx2Q0wFZdk+WPTEno9cctX5foUhBGWkat?= =?iso-8859-1?q?eMBeAoPYrlwqpAz3l5ii0NSvS0CfHuWKvRd7Z0tGq994GfiafiS?= =?iso-8859-1?q?+L1T/1Ekc7+F1NCh3xdq6ip0p3BVY9t0PuApZIHPlSI/SnV5OSf?= =?iso-8859-1?q?DPZsfjvFeNakX8Oh/9m03OljFUEsCljTbkAC865aKSvAdGZUebX?= =?iso-8859-1?q?8LPmlnqL1FsE+93HnbT5HFKCXKzXVE9k/xzedkWR65yP+MIQa0K?= =?iso-8859-1?q?zDtPBQFdOImyu+RHxe/J55QDEfPYI6rg2t5e2tZeK6Nn/DalpUD?= =?iso-8859-1?q?5/ROdgihmkbKLUOrgPAlwsajCdbCM8WX51ax1nsJ492kdNu9aeE?= =?iso-8859-1?q?=3D?= x-microsoft-antispam-prvs: x-forefront-prvs: 0954EE4910 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(376002)(396003)(39860400002)(346002)(366004)(199004)(189003)(486006)(86362001)(446003)(2616005)(4326008)(2351001)(478600001)(2906002)(105586002)(106356001)(11346002)(107886003)(476003)(68736007)(6916009)(54906003)(316002)(25786009)(6506007)(26005)(102836004)(386003)(53936002)(186003)(6116002)(3846002)(52116002)(99286004)(97736004)(2501003)(256004)(81156014)(6512007)(6486002)(50226002)(5640700003)(81166006)(305945005)(8936002)(7736002)(8676002)(1730700003)(14454004)(76176011)(1076003)(5660300002)(71190400001)(71200400001)(66066001)(36756003)(6436002); DIR:OUT; SFP:1101; SCL:1; SRVR:AM6PR05MB4871; H:AM6PR05MB5240.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: Yuxud1lY/EKIUwyGrrlxq3ui+GB9TXf+3L6KkXFahWorpE5Z2f2GFhIVdqKBmYRBi9Gj0nWVoIIGbzoPVsQCx4q4lbpuNlCpkODyWp+CG6OBd7HCa2GeMQcMcMw6BjnS40WDgqWbLjbD2Q6WdCaYzam4Gy3J9LE8BjEmxIKVR/mlkDC2ceO4w9evp5bqS0FuKk7oBnyHan1+fQ0jlEE5pakaEqbM55eLz991faSqbznf0XkXNkFTIuF76QEJy7kjXWrbGD+n5uShL+QOuDADI8Ve0YAfB2Y4AJkEb4FomRTMmdrGgcjL8qAlLn2tIHBFvkXBl/nNO3kK5tupsdbEg03w7N3a7HuX/cXhJ8RcvtmDSRry+MU0rhr7n92/Aspehyo7y7d/NMuxkhqBZZAutzaDshvBts44l+55Xo32pAg= MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1cea880a-fd8e-4fa0-df15-08d6976a1dd8 X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Feb 2019 19:32:12.8213 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR05MB4871 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Petr Machata Spectrum-2 will be configured with a different set of pools than Spectrum-1. The size of prs and pms buffers will therefore depend on the chip type of the device. Therefore, instead of reserving an array directly in a structure definition, allocate the buffer in mlxsw_sp_sb_port{,s}_init(). Signed-off-by: Petr Machata Signed-off-by: Ido Schimmel --- .../mellanox/mlxsw/spectrum_buffers.c | 52 ++++++++++++++++++- 1 file changed, 50 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c index cd23ec9268bc..7fa291ebcddf 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c @@ -63,11 +63,11 @@ static const struct mlxsw_sp_sb_pool_des mlxsw_sp_sb_pool_dess[] = { struct mlxsw_sp_sb_port { struct mlxsw_sp_sb_cm ing_cms[MLXSW_SP_SB_ING_TC_COUNT]; struct mlxsw_sp_sb_cm eg_cms[MLXSW_SP_SB_EG_TC_COUNT]; - struct mlxsw_sp_sb_pm pms[MLXSW_SP_SB_POOL_DESS_LEN]; + struct mlxsw_sp_sb_pm *pms; }; struct mlxsw_sp_sb { - struct mlxsw_sp_sb_pr prs[MLXSW_SP_SB_POOL_DESS_LEN]; + struct mlxsw_sp_sb_pr *prs; struct mlxsw_sp_sb_port *ports; u32 cell_size; u64 sb_size; @@ -283,20 +283,68 @@ static int mlxsw_sp_port_headroom_init(struct mlxsw_sp_port *mlxsw_sp_port) return mlxsw_sp_port_pb_prio_init(mlxsw_sp_port); } +static int mlxsw_sp_sb_port_init(struct mlxsw_sp *mlxsw_sp, + struct mlxsw_sp_sb_port *sb_port) +{ + struct mlxsw_sp_sb_pm *pms; + + pms = kcalloc(MLXSW_SP_SB_POOL_DESS_LEN, sizeof(*pms), GFP_KERNEL); + if (!pms) + return -ENOMEM; + sb_port->pms = pms; + return 0; +} + +static void mlxsw_sp_sb_port_fini(struct mlxsw_sp_sb_port *sb_port) +{ + kfree(sb_port->pms); +} + static int mlxsw_sp_sb_ports_init(struct mlxsw_sp *mlxsw_sp) { unsigned int max_ports = mlxsw_core_max_ports(mlxsw_sp->core); + struct mlxsw_sp_sb_pr *prs; + int i; + int err; mlxsw_sp->sb->ports = kcalloc(max_ports, sizeof(struct mlxsw_sp_sb_port), GFP_KERNEL); if (!mlxsw_sp->sb->ports) return -ENOMEM; + + prs = kcalloc(MLXSW_SP_SB_POOL_DESS_LEN, sizeof(*prs), GFP_KERNEL); + if (!prs) { + err = -ENOMEM; + goto err_alloc_prs; + } + mlxsw_sp->sb->prs = prs; + + for (i = 0; i < max_ports; i++) { + err = mlxsw_sp_sb_port_init(mlxsw_sp, &mlxsw_sp->sb->ports[i]); + if (err) + goto err_sb_port_init; + } + return 0; + +err_sb_port_init: + for (i--; i >= 0; i--) + mlxsw_sp_sb_port_fini(&mlxsw_sp->sb->ports[i]); + kfree(mlxsw_sp->sb->prs); +err_alloc_prs: + kfree(mlxsw_sp->sb->ports); + return err; } static void mlxsw_sp_sb_ports_fini(struct mlxsw_sp *mlxsw_sp) { + int max_ports = mlxsw_core_max_ports(mlxsw_sp->core); + int i; + + for (i = max_ports - 1; i >= 0; i--) + mlxsw_sp_sb_port_fini(&mlxsw_sp->sb->ports[i]); + kfree(mlxsw_sp->sb->prs); kfree(mlxsw_sp->sb->ports); } From patchwork Wed Feb 20 19:32:16 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 1045549 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="GLSfCQRq"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 444SRh0V04z9s5c for ; Thu, 21 Feb 2019 06:32:32 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726886AbfBTTcb (ORCPT ); Wed, 20 Feb 2019 14:32:31 -0500 Received: from mail-eopbgr00045.outbound.protection.outlook.com ([40.107.0.45]:11872 "EHLO EUR02-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726497AbfBTTca (ORCPT ); Wed, 20 Feb 2019 14:32:30 -0500 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=RYkplW0A1yiwooQhiIuIT2noeveE7DQ7AGGr6f9Sd60=; b=GLSfCQRqERQYYJUyrtHcVMsFdIx5ykO7M3UPyAlK714K3ou5Jnjb/n7M1aEC30yJ2Ltm7aIrAoZECQ6UsV97RIkzKtAiAmXs1sRaYPWCn/JR9sDQeQ4xySpnLLfK7lmjJFkvfucLJOUdTbUjnfx420Cot6cO92jmrkqGHYzfL5Q= Received: from AM6PR05MB5240.eurprd05.prod.outlook.com (20.177.196.214) by AM6PR05MB4871.eurprd05.prod.outlook.com (20.177.34.223) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1622.19; Wed, 20 Feb 2019 19:32:16 +0000 Received: from AM6PR05MB5240.eurprd05.prod.outlook.com ([fe80::3542:889c:3a85:3866]) by AM6PR05MB5240.eurprd05.prod.outlook.com ([fe80::3542:889c:3a85:3866%5]) with mapi id 15.20.1643.014; Wed, 20 Feb 2019 19:32:16 +0000 From: Ido Schimmel To: "netdev@vger.kernel.org" CC: "davem@davemloft.net" , Jiri Pirko , Petr Machata , mlxsw , Ido Schimmel Subject: [PATCH net-next 03/10] mlxsw: spectrum_buffers: Keep pool descriptors in mlxsw_sp_sb_vals Thread-Topic: [PATCH net-next 03/10] mlxsw: spectrum_buffers: Keep pool descriptors in mlxsw_sp_sb_vals Thread-Index: AQHUyVL81sBpmen7w0+x+5IKaph9eQ== Date: Wed, 20 Feb 2019 19:32:16 +0000 Message-ID: <20190220193141.16498-4-idosch@mellanox.com> References: <20190220193141.16498-1-idosch@mellanox.com> In-Reply-To: <20190220193141.16498-1-idosch@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: AM6PR10CA0061.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:209:80::38) To AM6PR05MB5240.eurprd05.prod.outlook.com (2603:10a6:20b:64::22) authentication-results: spf=none (sender IP is ) smtp.mailfrom=idosch@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.20.1 x-originating-ip: [77.138.249.209] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 0547c601-9a51-4e5d-6c91-08d6976a1ee0 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600110)(711020)(4605104)(4618075)(2017052603328)(7153060)(7193020); SRVR:AM6PR05MB4871; x-ms-traffictypediagnostic: AM6PR05MB4871: x-microsoft-exchange-diagnostics: =?iso-8859-1?q?1=3BAM6PR05MB4871=3B23?= =?iso-8859-1?q?=3AcYM/JTDdqZr9U6sIa+011kfHpKmfSUSxHUL/RdkbIzHukXEo?= =?iso-8859-1?q?56Iy+PMr2ZfIp4+DMF6zKtUoFl2OOSsCKqKEnF8z0XOsXXP12Y5?= =?iso-8859-1?q?uq7TBFgNvX6pmfRoPK3aSDK08KUQhH0YH1HRoVhCQeYonMcwTYD?= =?iso-8859-1?q?uL0ffZXRQN++S3wxphTzjykLTlFfXNZM3qE1FW69WzM9s9ifv/p?= =?iso-8859-1?q?cdvgdlhKJtmpFQ/gOmFHrFDAXHxZNZuXs64G2K7S+yKCklI3llV?= =?iso-8859-1?q?+U4FqOihaLpRLtn6KxmWDGBTITrLO8g2NLmc1+jVbvZ1rwfZdPz?= =?iso-8859-1?q?DcVJEEuCRCXyp+HG4kFO+Chj8rFnMHYIWv0TMdL2u0Z9S7zmIG5?= =?iso-8859-1?q?Z+bWxB7Qvn+h0fE8PwrekgaYNn+KblGdEyDQ8R8XI0TvODMOtZV?= =?iso-8859-1?q?/2Srtk3CEDdIdkg/GTfket4gRQeg6DiNKF3XzaKK12YWSf49rZP?= =?iso-8859-1?q?Z6Dlcrcj4SNnrC+NHdXViK9r4VWBUBKtLWFGI5Cl8YYnwbxfG4Q?= =?iso-8859-1?q?Ohvd/NnPNZR3oKSOMrJ6Lk0hqxHmTPGc2ooIHbOGSQUQ/FFrnzr?= =?iso-8859-1?q?R80I5pXNY+LcAag8+/StPoBwkj1j1bHLItoRceUbs+gkFvw6QyG?= =?iso-8859-1?q?Y1RHV+VmgQ/B0D2FNt36G3O8AetUbjJNp9SQZH5Y+qJnCc5fS6b?= =?iso-8859-1?q?NgxxExkc2lQfwASxUef5PeV8lb3eNslXPuAdIS+tyIWjHP9w5MY?= =?iso-8859-1?q?oQcgkW3lxRaxlzDBa0FBaOXMShWGcI5qvArU94v/FbbabxXs1yZ?= =?iso-8859-1?q?T+bgDN41XzqTU9p0F8p8MPRXVCv4NuBkX9EDntuskMYm0rvkh0m?= =?iso-8859-1?q?JSKWNhkLS8eSCWkSxre+3EZW8jSEcBewNo1H/I7TFsD+Fhu6Ufi?= =?iso-8859-1?q?AhKW0jCoRR1vSbRMKjnKK6Xx6VWIOeZ6lAGZPrn4mGsO1x6Dg+R?= =?iso-8859-1?q?tZ8SerFxoasA03/mt16qBHweFOH02tIIaocgeux13g3242nL3SG?= =?iso-8859-1?q?ipAlLZ8dDTgzDenfGlMInrDYV9U1irHTzf8CR8tOVdm89T0e4HA?= =?iso-8859-1?q?DCxKNeFkkidYFZ9KzWs5x/XwffxD44izt74JChpjtXIEshQZpfH?= =?iso-8859-1?q?/4QBompwTeeiTS11unfy4/+5TD5WUxTS+FXYdyuyYMr8fgowocA?= =?iso-8859-1?q?KSuXwgWCwkURdSI6OQ2GvdU7kg+Z14chHX3dZ3bgiiKZloIXjF+?= =?iso-8859-1?q?A8qrz46DprmpJl22yPu3h5qAq7Pv4dBnaQTeYTZyKPtMCX/DJiG?= =?iso-8859-1?q?ojXwkMuTfdTWLTugQTMWpT9BTButbMSADX8gu3dqsQ70iretYjI?= =?iso-8859-1?q?4lGYIyh5SOrCnMuyR5z+D4LreTwpFC2QiAs622n5NSVBJwfdiZ/?= =?iso-8859-1?q?eOvWcnl7Moz/J+u2rlrFq?= x-microsoft-antispam-prvs: x-forefront-prvs: 0954EE4910 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(376002)(396003)(39860400002)(346002)(366004)(199004)(189003)(486006)(86362001)(446003)(2616005)(4326008)(2351001)(478600001)(2906002)(105586002)(106356001)(11346002)(107886003)(476003)(68736007)(6916009)(54906003)(316002)(25786009)(6506007)(26005)(102836004)(386003)(53936002)(186003)(6116002)(3846002)(52116002)(99286004)(97736004)(2501003)(256004)(81156014)(6512007)(6486002)(50226002)(5640700003)(81166006)(305945005)(8936002)(7736002)(8676002)(1730700003)(14454004)(76176011)(1076003)(5660300002)(71190400001)(71200400001)(66066001)(14444005)(36756003)(6436002); DIR:OUT; SFP:1101; SCL:1; SRVR:AM6PR05MB4871; H:AM6PR05MB5240.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: TXtYiM5/WAh/NfZZUhGYQ9qexS/0Bog+6yNu3yBtreKanmLBUXfAB6KJCz3B8xq6l7eTByeiMrp1ZQ7aXj0ToWHmMd6Wa0TBfyC8F6qO8uouZoezhdrLd5y2iljKzpTs5k7Y2T8S9pwaQHwgr4hVYc1kmQNM1rBpVZMiC0aHjJs+0gSdtCR791N+tVDNQ9XcDf8jcG7HihwVFon11s6EMt4Fzdtws+5M2Vqziaw0YADxImtwrgqTWFG/mbe3sCBg7E4Zk/LJzbSj0LWPJt34/+GBHKgmlZk/SXorS0CDIHQUEPk6CqOI7LLLBUjwTAY8mG4CO34a8bdLfZlOEg65mxPStAu6OBzUGKx1LShjGsFvXh5g5KqnIj/ahWP4X4chkI9dR0g9jjON5CMV3ZT26qYYnGO9s5lXfnyw8zIP9lg= MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0547c601-9a51-4e5d-6c91-08d6976a1ee0 X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Feb 2019 19:32:14.6866 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR05MB4871 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Petr Machata Keep the table of pool descriptors and its length in struct mlxsw_sp_sb_vals so that it can be specialized per chip type. Redirect all users from the global definitions to the mlxsw_sp_sb fields. Give mlxsw_sp_pool_count() an extra mlxsw_sp parameter so that it can access the descriptor table. Drop the now unnecessary MLXSW_SP_SB_POOL_DESS_LEN. Signed-off-by: Petr Machata Signed-off-by: Ido Schimmel --- .../mellanox/mlxsw/spectrum_buffers.c | 50 +++++++++++-------- 1 file changed, 30 insertions(+), 20 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c index 7fa291ebcddf..72126d904013 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c @@ -55,8 +55,6 @@ static const struct mlxsw_sp_sb_pool_des mlxsw_sp_sb_pool_dess[] = { {MLXSW_REG_SBXX_DIR_EGRESS, 15}, }; -#define MLXSW_SP_SB_POOL_DESS_LEN ARRAY_SIZE(mlxsw_sp_sb_pool_dess) - #define MLXSW_SP_SB_ING_TC_COUNT 8 #define MLXSW_SP_SB_EG_TC_COUNT 16 @@ -74,6 +72,8 @@ struct mlxsw_sp_sb { }; struct mlxsw_sp_sb_vals { + unsigned int pool_count; + const struct mlxsw_sp_sb_pool_des *pool_dess; }; u32 mlxsw_sp_cells_bytes(const struct mlxsw_sp *mlxsw_sp, u32 cells) @@ -124,7 +124,7 @@ static int mlxsw_sp_sb_pr_write(struct mlxsw_sp *mlxsw_sp, u16 pool_index, u32 size, bool infi_size) { const struct mlxsw_sp_sb_pool_des *des = - &mlxsw_sp_sb_pool_dess[pool_index]; + &mlxsw_sp->sb_vals->pool_dess[pool_index]; char sbpr_pl[MLXSW_REG_SBPR_LEN]; struct mlxsw_sp_sb_pr *pr; int err; @@ -148,7 +148,7 @@ static int mlxsw_sp_sb_cm_write(struct mlxsw_sp *mlxsw_sp, u8 local_port, bool infi_max, u16 pool_index) { const struct mlxsw_sp_sb_pool_des *des = - &mlxsw_sp_sb_pool_dess[pool_index]; + &mlxsw_sp->sb_vals->pool_dess[pool_index]; char sbcm_pl[MLXSW_REG_SBCM_LEN]; struct mlxsw_sp_sb_cm *cm; int err; @@ -177,7 +177,7 @@ static int mlxsw_sp_sb_pm_write(struct mlxsw_sp *mlxsw_sp, u8 local_port, u16 pool_index, u32 min_buff, u32 max_buff) { const struct mlxsw_sp_sb_pool_des *des = - &mlxsw_sp_sb_pool_dess[pool_index]; + &mlxsw_sp->sb_vals->pool_dess[pool_index]; char sbpm_pl[MLXSW_REG_SBPM_LEN]; struct mlxsw_sp_sb_pm *pm; int err; @@ -198,7 +198,7 @@ static int mlxsw_sp_sb_pm_occ_clear(struct mlxsw_sp *mlxsw_sp, u8 local_port, u16 pool_index, struct list_head *bulk_list) { const struct mlxsw_sp_sb_pool_des *des = - &mlxsw_sp_sb_pool_dess[pool_index]; + &mlxsw_sp->sb_vals->pool_dess[pool_index]; char sbpm_pl[MLXSW_REG_SBPM_LEN]; mlxsw_reg_sbpm_pack(sbpm_pl, local_port, des->pool, des->dir, @@ -220,7 +220,7 @@ static int mlxsw_sp_sb_pm_occ_query(struct mlxsw_sp *mlxsw_sp, u8 local_port, u16 pool_index, struct list_head *bulk_list) { const struct mlxsw_sp_sb_pool_des *des = - &mlxsw_sp_sb_pool_dess[pool_index]; + &mlxsw_sp->sb_vals->pool_dess[pool_index]; char sbpm_pl[MLXSW_REG_SBPM_LEN]; struct mlxsw_sp_sb_pm *pm; @@ -288,7 +288,8 @@ static int mlxsw_sp_sb_port_init(struct mlxsw_sp *mlxsw_sp, { struct mlxsw_sp_sb_pm *pms; - pms = kcalloc(MLXSW_SP_SB_POOL_DESS_LEN, sizeof(*pms), GFP_KERNEL); + pms = kcalloc(mlxsw_sp->sb_vals->pool_count, sizeof(*pms), + GFP_KERNEL); if (!pms) return -ENOMEM; sb_port->pms = pms; @@ -313,7 +314,8 @@ static int mlxsw_sp_sb_ports_init(struct mlxsw_sp *mlxsw_sp) if (!mlxsw_sp->sb->ports) return -ENOMEM; - prs = kcalloc(MLXSW_SP_SB_POOL_DESS_LEN, sizeof(*prs), GFP_KERNEL); + prs = kcalloc(mlxsw_sp->sb_vals->pool_count, sizeof(*prs), + GFP_KERNEL); if (!prs) { err = -ENOMEM; goto err_alloc_prs; @@ -498,6 +500,7 @@ static int __mlxsw_sp_sb_cms_init(struct mlxsw_sp *mlxsw_sp, u8 local_port, const struct mlxsw_sp_sb_cm *cms, size_t cms_len) { + const struct mlxsw_sp_sb_vals *sb_vals = mlxsw_sp->sb_vals; int i; int err; @@ -509,7 +512,7 @@ static int __mlxsw_sp_sb_cms_init(struct mlxsw_sp *mlxsw_sp, u8 local_port, if (i == 8 && dir == MLXSW_REG_SBXX_DIR_INGRESS) continue; /* PG number 8 does not exist, skip it */ cm = &cms[i]; - if (WARN_ON(mlxsw_sp_sb_pool_dess[cm->pool_index].dir != dir)) + if (WARN_ON(sb_vals->pool_dess[cm->pool_index].dir != dir)) continue; min_buff = mlxsw_sp_bytes_cells(mlxsw_sp, cm->min_buff); @@ -648,7 +651,7 @@ static int mlxsw_sp_sb_mms_init(struct mlxsw_sp *mlxsw_sp) u32 min_buff; mc = &mlxsw_sp_sb_mms[i]; - des = &mlxsw_sp_sb_pool_dess[mc->pool_index]; + des = &mlxsw_sp->sb_vals->pool_dess[mc->pool_index]; /* All pools used by sb_mm's are initialized using dynamic * thresholds, therefore 'max_buff' isn't specified in cells. */ @@ -662,24 +665,30 @@ static int mlxsw_sp_sb_mms_init(struct mlxsw_sp *mlxsw_sp) return 0; } -static void mlxsw_sp_pool_count(u16 *p_ingress_len, u16 *p_egress_len) +static void mlxsw_sp_pool_count(struct mlxsw_sp *mlxsw_sp, + u16 *p_ingress_len, u16 *p_egress_len) { int i; - for (i = 0; i < MLXSW_SP_SB_POOL_DESS_LEN; ++i) - if (mlxsw_sp_sb_pool_dess[i].dir == MLXSW_REG_SBXX_DIR_EGRESS) + for (i = 0; i < mlxsw_sp->sb_vals->pool_count; ++i) + if (mlxsw_sp->sb_vals->pool_dess[i].dir == + MLXSW_REG_SBXX_DIR_EGRESS) goto out; WARN(1, "No egress pools\n"); out: *p_ingress_len = i; - *p_egress_len = MLXSW_SP_SB_POOL_DESS_LEN - i; + *p_egress_len = mlxsw_sp->sb_vals->pool_count - i; } const struct mlxsw_sp_sb_vals mlxsw_sp1_sb_vals = { + .pool_count = ARRAY_SIZE(mlxsw_sp_sb_pool_dess), + .pool_dess = mlxsw_sp_sb_pool_dess, }; const struct mlxsw_sp_sb_vals mlxsw_sp2_sb_vals = { + .pool_count = ARRAY_SIZE(mlxsw_sp_sb_pool_dess), + .pool_dess = mlxsw_sp_sb_pool_dess, }; int mlxsw_sp_buffers_init(struct mlxsw_sp *mlxsw_sp) @@ -714,7 +723,7 @@ int mlxsw_sp_buffers_init(struct mlxsw_sp *mlxsw_sp) err = mlxsw_sp_sb_mms_init(mlxsw_sp); if (err) goto err_sb_mms_init; - mlxsw_sp_pool_count(&ing_pool_count, &eg_pool_count); + mlxsw_sp_pool_count(mlxsw_sp, &ing_pool_count, &eg_pool_count); err = devlink_sb_register(priv_to_devlink(mlxsw_sp->core), 0, mlxsw_sp->sb->sb_size, ing_pool_count, @@ -762,10 +771,11 @@ int mlxsw_sp_sb_pool_get(struct mlxsw_core *mlxsw_core, unsigned int sb_index, u16 pool_index, struct devlink_sb_pool_info *pool_info) { - enum mlxsw_reg_sbxx_dir dir = mlxsw_sp_sb_pool_dess[pool_index].dir; struct mlxsw_sp *mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core); + enum mlxsw_reg_sbxx_dir dir; struct mlxsw_sp_sb_pr *pr; + dir = mlxsw_sp->sb_vals->pool_dess[pool_index].dir; pr = mlxsw_sp_sb_pr_get(mlxsw_sp, pool_index); pool_info->pool_type = (enum devlink_sb_pool_type) dir; pool_info->size = mlxsw_sp_cells_bytes(mlxsw_sp, pr->size); @@ -891,7 +901,7 @@ int mlxsw_sp_sb_tc_pool_bind_set(struct mlxsw_core_port *mlxsw_core_port, u32 max_buff; int err; - if (dir != mlxsw_sp_sb_pool_dess[pool_index].dir) + if (dir != mlxsw_sp->sb_vals->pool_dess[pool_index].dir) return -EINVAL; err = mlxsw_sp_sb_threshold_in(mlxsw_sp, pool_index, @@ -989,7 +999,7 @@ int mlxsw_sp_sb_occ_snapshot(struct mlxsw_core *mlxsw_core, continue; mlxsw_reg_sbsr_ingress_port_mask_set(sbsr_pl, local_port, 1); mlxsw_reg_sbsr_egress_port_mask_set(sbsr_pl, local_port, 1); - for (i = 0; i < MLXSW_SP_SB_POOL_DESS_LEN; i++) { + for (i = 0; i < mlxsw_sp->sb_vals->pool_count; i++) { err = mlxsw_sp_sb_pm_occ_query(mlxsw_sp, local_port, i, &bulk_list); if (err) @@ -1048,7 +1058,7 @@ int mlxsw_sp_sb_occ_max_clear(struct mlxsw_core *mlxsw_core, continue; mlxsw_reg_sbsr_ingress_port_mask_set(sbsr_pl, local_port, 1); mlxsw_reg_sbsr_egress_port_mask_set(sbsr_pl, local_port, 1); - for (i = 0; i < MLXSW_SP_SB_POOL_DESS_LEN; i++) { + for (i = 0; i < mlxsw_sp->sb_vals->pool_count; i++) { err = mlxsw_sp_sb_pm_occ_clear(mlxsw_sp, local_port, i, &bulk_list); if (err) From patchwork Wed Feb 20 19:32:18 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 1045550 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="HzMoSx4/"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 444SRj5SGNz9s6w for ; Thu, 21 Feb 2019 06:32:33 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726853AbfBTTca (ORCPT ); Wed, 20 Feb 2019 14:32:30 -0500 Received: from mail-eopbgr00055.outbound.protection.outlook.com ([40.107.0.55]:56667 "EHLO EUR02-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1725847AbfBTTca (ORCPT ); Wed, 20 Feb 2019 14:32:30 -0500 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=Un6643EAMddxNcMDjRB6o7013mmWvA4JWCShIhCHU7Y=; b=HzMoSx4/zpsWxgafqHq6Zq8EqPXYUzpfzX0jSPVJzn5llyHsQCvbnbIJjJ3dVUue8UAGUQnbGalyilboC/2wJLZL2HfhqrZW9qwnEtybRiOTG4QBqFpCJ1f0oqONinGMwF39ifqABkTDUu3xs2iE13wMGxY99/4Swobr9I8x1hY= Received: from AM6PR05MB5240.eurprd05.prod.outlook.com (20.177.196.214) by AM6PR05MB4871.eurprd05.prod.outlook.com (20.177.34.223) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1622.19; Wed, 20 Feb 2019 19:32:18 +0000 Received: from AM6PR05MB5240.eurprd05.prod.outlook.com ([fe80::3542:889c:3a85:3866]) by AM6PR05MB5240.eurprd05.prod.outlook.com ([fe80::3542:889c:3a85:3866%5]) with mapi id 15.20.1643.014; Wed, 20 Feb 2019 19:32:18 +0000 From: Ido Schimmel To: "netdev@vger.kernel.org" CC: "davem@davemloft.net" , Jiri Pirko , Petr Machata , mlxsw , Ido Schimmel Subject: [PATCH net-next 04/10] mlxsw: spectrum_buffers: Keep mlxsw_sp_sb_pms in mlxsw_sp_sb_vals Thread-Topic: [PATCH net-next 04/10] mlxsw: spectrum_buffers: Keep mlxsw_sp_sb_pms in mlxsw_sp_sb_vals Thread-Index: AQHUyVL9nRO719GmrUiYH9mdXmAA2Q== Date: Wed, 20 Feb 2019 19:32:18 +0000 Message-ID: <20190220193141.16498-5-idosch@mellanox.com> References: <20190220193141.16498-1-idosch@mellanox.com> In-Reply-To: <20190220193141.16498-1-idosch@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: AM6PR10CA0061.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:209:80::38) To AM6PR05MB5240.eurprd05.prod.outlook.com (2603:10a6:20b:64::22) authentication-results: spf=none (sender IP is ) smtp.mailfrom=idosch@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.20.1 x-originating-ip: [77.138.249.209] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: a8c10544-c71e-4f9b-f1be-08d6976a200a x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600110)(711020)(4605104)(4618075)(2017052603328)(7153060)(7193020); SRVR:AM6PR05MB4871; x-ms-traffictypediagnostic: AM6PR05MB4871: x-microsoft-exchange-diagnostics: =?iso-8859-1?q?1=3BAM6PR05MB4871=3B23?= =?iso-8859-1?q?=3AoKtYSXAE6G/X4ZhRtlyCBrPI9OKEYPCkvbLt25Tr2boXRFW7?= =?iso-8859-1?q?3gVgElH1biHh7xG5rq25XMWbk98PmB+DPxkJvOUJ7v651apcNeW?= =?iso-8859-1?q?m7u829SjT2ICdXYYo326gLqY7S0Fz33VVXZtNGAdC70CbZl7p5K?= =?iso-8859-1?q?CFdidTdUPRiR/+6augEjFhXjhJ8mR/PgA0N/m7vyNfXfnRHVKlq?= =?iso-8859-1?q?BH+g5cQjNjzXM1Ewl0lbRCJQ58Sw0jXgKL2WvKPKKXxg2yxbeOh?= =?iso-8859-1?q?Pv4IQxdC4f6gmL0LTCgFT6ZmQjt+o7Eo604LRol8ATe+nldD5Xb?= =?iso-8859-1?q?ExL425KVo8rkVndddja4fjZwGa4kWHr2DvqgweNUgTsDsXYJ/1C?= =?iso-8859-1?q?ggchzAmUrf2ic+E+O9HAkazgrvjutBK8M8h5IdIBJQWp4DO3HWz?= =?iso-8859-1?q?tufi5bMNvKdqNA/cpXvAyxhB13zXx27oL0fmmRr3TPHLVriQ2qI?= =?iso-8859-1?q?cOVY8GgOPzQtWKS6k0vDVv1RDLbq/m0YEqy5QU9VyS+fBZupqos?= =?iso-8859-1?q?1yIHQ7aZzEKpeH7NmigcegPmKjdFqZ68ZMFFYYiPSDsNIpuRTcv?= =?iso-8859-1?q?P/bvvay1nNldyAbjerCVp9w8bUbgDVN5y/AJqKtx0FC1GFhBvCd?= =?iso-8859-1?q?5PhtcWdK9Sl/1wwuG7xXBh2h1WFAgyKo4LP7qkx4yGGNxqIAHXX?= =?iso-8859-1?q?d2u+/98s9a1AGtkw4Fq0ZYjtPctNIoR+8Pu0J4fwHtqC/kKMZIt?= =?iso-8859-1?q?xlxkbyEiKWlVA8OWkQVtWV1LYGKcsVJNHq8RAWNcsLdAOteJpow?= =?iso-8859-1?q?zL3HhIvu3/88ohiTh+c2K+PBxZeuMhMbIZVmQyVB3kEM16DgcR6?= =?iso-8859-1?q?z+mcvsE9Qk3Dxl8s5PmJiCb1PUbgqA763C9NGqn25rvnklO0rbb?= =?iso-8859-1?q?vGy50DjFcZ26wNkkem4BCTaKduElkuIYqL4FlqNeqp6BtuKnMzE?= =?iso-8859-1?q?TRm3nXsvh8xCLUyWpLyr3QNDh7OOT/0xYPUyg1lLE2ivICf5ER/?= =?iso-8859-1?q?9dbY4wqqIFa2xUjUmmvwk7jy5nMgjXH1vlYBsdabukpTKepAR2L?= =?iso-8859-1?q?ifs6QHlD/8A8CmEflLvZ/GEVQ3gOSdmvPbgWyNBcem2+BwhFXP2?= =?iso-8859-1?q?WEoJw6txwkvPaahkjMIjJnFQQjjFOUsu2N5oZ96rEJLIL3j6Kjr?= =?iso-8859-1?q?brtDEZf5WfQj9ZmSEsdUzFVznAcFAlh1gXsFCHh3J0cB3CmD2VP?= =?iso-8859-1?q?vCHPEz784y2BXTPgwopY3MqD/1asP98ggj0IrZx5Dt8CLHltU7J?= =?iso-8859-1?q?8STiKVTtyXjnUQaqW8JNE6xj+qHp7Y+eT0drvixTUWT2ivG62UR?= =?iso-8859-1?q?YrigdwHHWUsuMvkaE1qnaqtUC5UfdSwaj54bv0bniSmWyJrIITw?= =?iso-8859-1?q?=3D?= x-microsoft-antispam-prvs: x-forefront-prvs: 0954EE4910 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(376002)(396003)(39860400002)(346002)(366004)(199004)(189003)(486006)(86362001)(446003)(2616005)(4326008)(2351001)(478600001)(2906002)(105586002)(106356001)(11346002)(107886003)(476003)(68736007)(6916009)(54906003)(316002)(25786009)(6506007)(26005)(102836004)(386003)(53936002)(186003)(6116002)(3846002)(52116002)(99286004)(97736004)(2501003)(256004)(81156014)(6512007)(6486002)(50226002)(5640700003)(81166006)(305945005)(8936002)(7736002)(8676002)(1730700003)(14454004)(76176011)(1076003)(5660300002)(71190400001)(71200400001)(66066001)(36756003)(6436002); DIR:OUT; SFP:1101; SCL:1; SRVR:AM6PR05MB4871; H:AM6PR05MB5240.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: OSf9uHrf5+n39Z9sFmX8RppuRa3gCXKVoPypIhDvhV1g0ryMOUz9trQKyX1vK1F6ci+1GyuBZybB+wfsffLbHq5kNxGhqOWrLYBgfnySgXlIYScUBEB+sPeAkl6GB6g66c8Dw6BRGazwUOeMw2drterAZwezGAXAOCxq4AK6gOzTUuchYmTbQgw/FIvDlcmq5JWhdVw2LLnQO0+BuVYTgnnIetrntfaTVdBxAU/Skw5j9O47/VnpbzSR3ijtR8n0dJdgKZYVQQIsWFwBDCWa0zh+2aI/O5W2CsesxWWQiMvMP4wTybNB/7MlRi+QOJZo1aJzoM0cPaMjPYDGutNWONkzBhnH2iLuSrServD72edtrltNVghcEk5Q4s+nbGnmfVWCB2IIRdVCJYsj4WtFihLamtvVAnf+PvyczAou2ic= MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: a8c10544-c71e-4f9b-f1be-08d6976a200a X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Feb 2019 19:32:16.5079 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR05MB4871 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Petr Machata The SBPM register can be used to configure quotas for packets ingressing from a certain pool to a certain port, and egressing from a certain pool to a certain port. The default configuration depends on the chip type. Therefore keep it in struct mlxsw_sp_sb_vals. Redirect the one reference from the global array to the field. Because the pool descriptor ID is implicit in the ordering of array members, both this array and the pool descriptor array have the same length. Therefore reuse mlxsw_sp_sb.pool_dess_len for the purpose of determining the length of SBPM array. Drop the now useless MLXSW_SP_SB_PMS_LEN. Signed-off-by: Petr Machata Signed-off-by: Ido Schimmel --- drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c index 72126d904013..672c27c79e8a 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c @@ -74,6 +74,7 @@ struct mlxsw_sp_sb { struct mlxsw_sp_sb_vals { unsigned int pool_count; const struct mlxsw_sp_sb_pool_des *pool_dess; + const struct mlxsw_sp_sb_pm *pms; }; u32 mlxsw_sp_cells_bytes(const struct mlxsw_sp *mlxsw_sp, u32 cells) @@ -581,16 +582,14 @@ static const struct mlxsw_sp_sb_pm mlxsw_sp_sb_pms[] = { MLXSW_SP_SB_PM(10000, 90000), }; -#define MLXSW_SP_SB_PMS_LEN ARRAY_SIZE(mlxsw_sp_sb_pms) - static int mlxsw_sp_port_sb_pms_init(struct mlxsw_sp_port *mlxsw_sp_port) { struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp; int i; int err; - for (i = 0; i < MLXSW_SP_SB_PMS_LEN; i++) { - const struct mlxsw_sp_sb_pm *pm = &mlxsw_sp_sb_pms[i]; + for (i = 0; i < mlxsw_sp->sb_vals->pool_count; i++) { + const struct mlxsw_sp_sb_pm *pm = &mlxsw_sp->sb_vals->pms[i]; u32 max_buff; u32 min_buff; @@ -684,11 +683,13 @@ static void mlxsw_sp_pool_count(struct mlxsw_sp *mlxsw_sp, const struct mlxsw_sp_sb_vals mlxsw_sp1_sb_vals = { .pool_count = ARRAY_SIZE(mlxsw_sp_sb_pool_dess), .pool_dess = mlxsw_sp_sb_pool_dess, + .pms = mlxsw_sp_sb_pms, }; const struct mlxsw_sp_sb_vals mlxsw_sp2_sb_vals = { .pool_count = ARRAY_SIZE(mlxsw_sp_sb_pool_dess), .pool_dess = mlxsw_sp_sb_pool_dess, + .pms = mlxsw_sp_sb_pms, }; int mlxsw_sp_buffers_init(struct mlxsw_sp *mlxsw_sp) From patchwork Wed Feb 20 19:32:20 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 1045555 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="s5dXrUoF"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 444SRv4D4hz9s5c for ; Thu, 21 Feb 2019 06:32:43 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726995AbfBTTci (ORCPT ); Wed, 20 Feb 2019 14:32:38 -0500 Received: from mail-eopbgr00055.outbound.protection.outlook.com ([40.107.0.55]:56667 "EHLO EUR02-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726154AbfBTTcd (ORCPT ); Wed, 20 Feb 2019 14:32:33 -0500 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=Xhui47Ps7TUk1u098J5wVK3J9ChS3YGaytNy6wx1uF0=; b=s5dXrUoFJx451fi691Tr6OW3ooOfGmDjibRyenHdMuUoOMiFTnxDJYN4xiyBjx0bkbGy5DiOHCroAn9X0UK4I/e3OH79p51u0klOnqj89d0v30f60LU7KPbXFUz7j7DqXzLf3fb9nihb7WJfXP8rEMKKZo0q9ZIFSHOYaOcl/iw= Received: from AM6PR05MB5240.eurprd05.prod.outlook.com (20.177.196.214) by AM6PR05MB4871.eurprd05.prod.outlook.com (20.177.34.223) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1622.19; Wed, 20 Feb 2019 19:32:20 +0000 Received: from AM6PR05MB5240.eurprd05.prod.outlook.com ([fe80::3542:889c:3a85:3866]) by AM6PR05MB5240.eurprd05.prod.outlook.com ([fe80::3542:889c:3a85:3866%5]) with mapi id 15.20.1643.014; Wed, 20 Feb 2019 19:32:20 +0000 From: Ido Schimmel To: "netdev@vger.kernel.org" CC: "davem@davemloft.net" , Jiri Pirko , Petr Machata , mlxsw , Ido Schimmel Subject: [PATCH net-next 05/10] mlxsw: spectrum_buffers: Keep mlxsw_sp_sb_prs in mlxsw_sp_sb_vals Thread-Topic: [PATCH net-next 05/10] mlxsw: spectrum_buffers: Keep mlxsw_sp_sb_prs in mlxsw_sp_sb_vals Thread-Index: AQHUyVL+Zi9+WZa1GEi/4mt3fmbjtw== Date: Wed, 20 Feb 2019 19:32:20 +0000 Message-ID: <20190220193141.16498-6-idosch@mellanox.com> References: <20190220193141.16498-1-idosch@mellanox.com> In-Reply-To: <20190220193141.16498-1-idosch@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: AM6PR10CA0061.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:209:80::38) To AM6PR05MB5240.eurprd05.prod.outlook.com (2603:10a6:20b:64::22) authentication-results: spf=none (sender IP is ) smtp.mailfrom=idosch@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.20.1 x-originating-ip: [77.138.249.209] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 310ca14e-ffbd-47fb-c8da-08d6976a2133 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600110)(711020)(4605104)(4618075)(2017052603328)(7153060)(7193020); SRVR:AM6PR05MB4871; x-ms-traffictypediagnostic: AM6PR05MB4871: x-microsoft-exchange-diagnostics: =?iso-8859-1?q?1=3BAM6PR05MB4871=3B23?= =?iso-8859-1?q?=3AE7nlBF6H+bIN2F35ocVEn9YrcwHHodkvjOc9w2j72grcC19M?= =?iso-8859-1?q?51oA4B1Ny9TQy4/fC5PVC554nD54fb2RslDSQzX0Y/LVVpvEolu?= =?iso-8859-1?q?U8rBRc/XF5ym/J43JqXBGcZofMHXqwpwk3feSsSU00HZ752HJ9n?= =?iso-8859-1?q?xvP8ka1KwwqxZcJd6Zg14gWRW88OYrGyesaCKC1HDXOd7bOSBrs?= =?iso-8859-1?q?NzKUAldCgnlNI3EDzvQCYvat3lOjNsN7sHTQ9/RbQ9tZN2TdpaI?= =?iso-8859-1?q?0/EAjLG+qNfCbpZFB4+Os3cb1dM5vLdb224qHWkvi8KWxBW9j+r?= =?iso-8859-1?q?MXyQxb1EPZsLlimaOQ6xB2LNK7brTUk3cETJgJKUneMm6R6bBBx?= =?iso-8859-1?q?x+/7Ie6wMLsMebQMTtu/8GYXLzlBBxEC5XGCFG91BIKIu9XbyHV?= =?iso-8859-1?q?5xppXgZubDo2t5lMjA0m3pXWf6dXtjEPv5m0CtfBsLRxHsC2kG2?= =?iso-8859-1?q?fw1ktayTDJDZW44LdkjI/ibdIroNOykV5NJPmz/9fVhne8wzMyW?= =?iso-8859-1?q?QB68FmrLaNH/qLc08qTOHawLkem3YS4apacCasAsuTtfXTnqz+j?= =?iso-8859-1?q?mqMb1ak41OBrzSWeVC/0sNAwJBos1Yb8x0s3Srb51LE06PsEcIK?= =?iso-8859-1?q?/D/x5ldwepKRXLDx2cCD2apbs2QO0suvEq8nOJzG4Uq0zT3B5MZ?= =?iso-8859-1?q?ZONhZfQ64wOxZz1iMJdBFdFZUiCvNnQiRSemnBxRqQ6UULODFnA?= =?iso-8859-1?q?RhaJ2KMR8yuBDki+NtRcXA0jNBNanNOL3CN87oKci51S5iDMmFt?= =?iso-8859-1?q?JchZ/mszhvMtaEwsgqGesg9sh8Mkz+OzHp/8wUe4tDz02bzim6b?= =?iso-8859-1?q?fS3EbqbOsqnxLGlNSJTVtATHApWeUvPifDzMGU4dREHPPzHCMcF?= =?iso-8859-1?q?h56wJcSzDPXRk1DYd2Lv7rucVb8d+ist7FCLA14Jxil02TCjXNn?= =?iso-8859-1?q?rZ0ZeyKXNkGJH0grGLyBjuoUMTqU6WanrUghIgcSZwQiuO0/Kif?= =?iso-8859-1?q?BY6/PjCLB/gT7QALJtlHNNLX0zNFK0yxZxaIzozH2R/xr3+exfI?= =?iso-8859-1?q?4Q0vRKPNBtrzK0rThPJO/4Hdq5zFSA2KpHABRFiaiRVSJajrr6H?= =?iso-8859-1?q?20wFo71FRRRCqM1t8VHBQNt2OC0UlmS3swUDIWmr989ZAh5jDAr?= =?iso-8859-1?q?RUGabW+SO3KIBzlKwQ62yvq4h4xbtW7AHCoor2i13HmNivUIvzH?= =?iso-8859-1?q?QuK7ZQVfHpprU9hY8dAxZesSr6YrnhRXm8BTlaACqGm+F7dXrCy?= =?iso-8859-1?q?qz/5F3jATr+fWeOiA45hDFFksSA+7th2wFt4smzI8SfFPOcIcad?= =?iso-8859-1?q?HUyZPOGmDdITRPW00m/dvL87kJUkYK2EKGD7ZpTRUqV7g82xjbE?= =?iso-8859-1?q?=3D?= x-microsoft-antispam-prvs: x-forefront-prvs: 0954EE4910 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(376002)(396003)(39860400002)(346002)(366004)(199004)(189003)(486006)(86362001)(446003)(2616005)(4326008)(2351001)(478600001)(2906002)(105586002)(106356001)(11346002)(107886003)(476003)(68736007)(6916009)(54906003)(316002)(25786009)(6506007)(26005)(102836004)(386003)(53936002)(186003)(6116002)(3846002)(52116002)(99286004)(97736004)(2501003)(256004)(81156014)(6512007)(6486002)(50226002)(5640700003)(81166006)(305945005)(8936002)(7736002)(8676002)(1730700003)(14454004)(76176011)(1076003)(5660300002)(71190400001)(71200400001)(66066001)(36756003)(6436002); DIR:OUT; SFP:1101; SCL:1; SRVR:AM6PR05MB4871; H:AM6PR05MB5240.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: 9RPrZFQo81rVD5Z2CnYaSqNHW2cNmKZ8cQhlWN1Wia+sUoo4kR0VnLstB2YJk1/3FOfvzvW4MYLgBFoQgOUGqj2Tu1e1NJWust1TynagtoQgdA2ofAuJ15fNEKZgQkPBmKrxxJmTzUN8t8Jboqv9lE3LabsL8JihnJml9JHzqv9/l36VcyxBKvJLzat9wXsbnZA4wxWcK5MpkzewH05l52HrKq7qcv2VFLIGMu1RlEYuL8Egci9m+Awr/12lG1mgZZPgHxKKAOhHvHpITj08NVToOq1Cjh4HSZdVFwUSBC+OEvKOGi/JfEJev1cewQv3aMvl4LSbVz0gEgPhv1K6RiddmW/x0ieV1cU+4VS1Dqe+Svw4TQEEYI+oJJ6aBrP5JHTSk6YCZOuk0tqgGNWVfeq/3eIu6KYmS2i1QsuUHp8= MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 310ca14e-ffbd-47fb-c8da-08d6976a2133 X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Feb 2019 19:32:18.4503 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR05MB4871 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Petr Machata The SBPR register configures shared buffer pools. The default configuration depends on the chip type. Therefore keep it in struct mlxsw_sp_sb_vals. Redirect the one reference from the global array to the field. Because the pool descriptor ID is implicit in the ordering of array members, both this array and the pool descriptor array have the same length. Therefore reuse mlxsw_sp_sb.pool_dess_len for the purpose of determining the length of SBPR array. Drop the now useless MLXSW_SP_SB_PRS_LEN. Signed-off-by: Petr Machata Signed-off-by: Ido Schimmel --- drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c index 672c27c79e8a..c100ce11417a 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c @@ -75,6 +75,7 @@ struct mlxsw_sp_sb_vals { unsigned int pool_count; const struct mlxsw_sp_sb_pool_des *pool_dess; const struct mlxsw_sp_sb_pm *pms; + const struct mlxsw_sp_sb_pr *prs; }; u32 mlxsw_sp_cells_bytes(const struct mlxsw_sp *mlxsw_sp, u32 cells) @@ -377,8 +378,6 @@ static const struct mlxsw_sp_sb_pr mlxsw_sp_sb_prs[] = { MLXSW_SP_SB_PR(MLXSW_REG_SBPR_MODE_STATIC, MLXSW_SP_SB_INFI), }; -#define MLXSW_SP_SB_PRS_LEN ARRAY_SIZE(mlxsw_sp_sb_prs) - static int mlxsw_sp_sb_prs_init(struct mlxsw_sp *mlxsw_sp, const struct mlxsw_sp_sb_pr *prs, size_t prs_len) @@ -684,12 +683,14 @@ const struct mlxsw_sp_sb_vals mlxsw_sp1_sb_vals = { .pool_count = ARRAY_SIZE(mlxsw_sp_sb_pool_dess), .pool_dess = mlxsw_sp_sb_pool_dess, .pms = mlxsw_sp_sb_pms, + .prs = mlxsw_sp_sb_prs, }; const struct mlxsw_sp_sb_vals mlxsw_sp2_sb_vals = { .pool_count = ARRAY_SIZE(mlxsw_sp_sb_pool_dess), .pool_dess = mlxsw_sp_sb_pool_dess, .pms = mlxsw_sp_sb_pms, + .prs = mlxsw_sp_sb_prs, }; int mlxsw_sp_buffers_init(struct mlxsw_sp *mlxsw_sp) @@ -710,12 +711,11 @@ int mlxsw_sp_buffers_init(struct mlxsw_sp *mlxsw_sp) mlxsw_sp->sb->cell_size = MLXSW_CORE_RES_GET(mlxsw_sp->core, CELL_SIZE); mlxsw_sp->sb->sb_size = MLXSW_CORE_RES_GET(mlxsw_sp->core, MAX_BUFFER_SIZE); - err = mlxsw_sp_sb_ports_init(mlxsw_sp); if (err) goto err_sb_ports_init; - err = mlxsw_sp_sb_prs_init(mlxsw_sp, mlxsw_sp_sb_prs, - MLXSW_SP_SB_PRS_LEN); + err = mlxsw_sp_sb_prs_init(mlxsw_sp, mlxsw_sp->sb_vals->prs, + mlxsw_sp->sb_vals->pool_count); if (err) goto err_sb_prs_init; err = mlxsw_sp_cpu_port_sb_cms_init(mlxsw_sp); From patchwork Wed Feb 20 19:32:22 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 1045551 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="tSH/zTHC"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 444SRl4M6Yz9s5c for ; Thu, 21 Feb 2019 06:32:35 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726949AbfBTTcd (ORCPT ); Wed, 20 Feb 2019 14:32:33 -0500 Received: from mail-eopbgr00045.outbound.protection.outlook.com ([40.107.0.45]:11872 "EHLO EUR02-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726838AbfBTTcc (ORCPT ); Wed, 20 Feb 2019 14:32:32 -0500 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=iNC5zJ8MZh55GMpvTY6mG5+vTwvONndadqDchIVbxso=; b=tSH/zTHC+IJ/xAVz2amFfNQOiqZZuJckoytRjFctcnsZmOeuR1t56H2BAG/OL9c6MEet++YYZzqkxxrk09kFVSsVh54x1/EtCpoiagpcBp2uyrjzygIr/qdY53on/HbK/gDmLGhDFGaYXuCDuNrOXBBjGtbzavqkMdLkUFb+m34= Received: from AM6PR05MB5240.eurprd05.prod.outlook.com (20.177.196.214) by AM6PR05MB4871.eurprd05.prod.outlook.com (20.177.34.223) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1622.19; Wed, 20 Feb 2019 19:32:22 +0000 Received: from AM6PR05MB5240.eurprd05.prod.outlook.com ([fe80::3542:889c:3a85:3866]) by AM6PR05MB5240.eurprd05.prod.outlook.com ([fe80::3542:889c:3a85:3866%5]) with mapi id 15.20.1643.014; Wed, 20 Feb 2019 19:32:22 +0000 From: Ido Schimmel To: "netdev@vger.kernel.org" CC: "davem@davemloft.net" , Jiri Pirko , Petr Machata , mlxsw , Ido Schimmel Subject: [PATCH net-next 06/10] mlxsw: spectrum_buffers: Keep mlxsw_sp_sb_cm in sb_vals Thread-Topic: [PATCH net-next 06/10] mlxsw: spectrum_buffers: Keep mlxsw_sp_sb_cm in sb_vals Thread-Index: AQHUyVMAOdeTSa2HBEC35687tsjsVQ== Date: Wed, 20 Feb 2019 19:32:22 +0000 Message-ID: <20190220193141.16498-7-idosch@mellanox.com> References: <20190220193141.16498-1-idosch@mellanox.com> In-Reply-To: <20190220193141.16498-1-idosch@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: AM6PR10CA0061.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:209:80::38) To AM6PR05MB5240.eurprd05.prod.outlook.com (2603:10a6:20b:64::22) authentication-results: spf=none (sender IP is ) smtp.mailfrom=idosch@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.20.1 x-originating-ip: [77.138.249.209] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: bce0aa48-31ee-4cc9-09cc-08d6976a2263 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600110)(711020)(4605104)(4618075)(2017052603328)(7153060)(7193020); SRVR:AM6PR05MB4871; x-ms-traffictypediagnostic: AM6PR05MB4871: x-microsoft-exchange-diagnostics: =?iso-8859-1?q?1=3BAM6PR05MB4871=3B23?= =?iso-8859-1?q?=3Ayzf7jypDyxMAqYpm1f0cn6MFlorDCB87xMZsU1LG5Y8FR4xf?= =?iso-8859-1?q?mCnNMHxRZp6TFUdcQH5gO4jqUDw3VuoBKjShyl0Bt4XEKYjWszC?= =?iso-8859-1?q?DUxuIOzX506cansP0hTAbD5B9XroqOZFcNZNvOT5zMkp2i4SRS4?= =?iso-8859-1?q?wP8WZ6KD7XSlm2fAXH0h0JxwgfrtBgcamfovclrGTfNlkx4MKPh?= =?iso-8859-1?q?t9Fn2JoVGzXhOZouP9kh/6a7fITMj9rdgd/PqwEPW3eYWTTzpzZ?= =?iso-8859-1?q?wZ/TwafyJlZODA1ldcdt7mgmPK4065ZBCuWYAWHEg26JOUqJViO?= =?iso-8859-1?q?YJbjrsnORdOj+PzJvhIlhAHh6Dq17CHlAO/lJbIyEAaJ2lJQ30j?= =?iso-8859-1?q?y2zWr5Nj8ERMIB7/aSmJ4nwsO3n2+eyj6yOfYIOacslAVvb3YcB?= =?iso-8859-1?q?eP75xvMlYePgqnkm7wzB6EqkHuw/247IhteYlwZvgJTnzU+LyQO?= =?iso-8859-1?q?GyMJb1hMxcy0H1syqLgN4O9flNnDofdQ8Chds65/TxkXbC1w7Cr?= =?iso-8859-1?q?ert7vrGZB8cm9i0wMPm4SK4h4CcgppAtJESEvP3Dy/N7WwZ73bD?= =?iso-8859-1?q?slSii7dBUjSNeLg2clz6jWomqGvyLGfd2KO4mNZz91/CuVlGUv0?= =?iso-8859-1?q?eax+pboupW0xS7gsVrNyQ8yBLHBeDZaRFzg+ne1sWF0MuID9x8C?= =?iso-8859-1?q?ZydSDalA9KG/ANlQS7LDLR2Zrr8jaKQJJ3/0KuEtTBKXRRvptXM?= =?iso-8859-1?q?mUji0D6iIVxYaFjPSnZ3db55eIGwD3Oc1bR3ZJvNFhIK4iTqQzp?= =?iso-8859-1?q?fMEoiNO6jXpfmybu16DLRz1kOJ22fq4oqj3jayY/NYb5Z/9tXqF?= =?iso-8859-1?q?+nr/CgfCeS6WCp0sOYIMax9z08FXPHqBUlZiOA0Hy05IsVg14Gg?= =?iso-8859-1?q?2C2qjK+LEwUAQ/eDKecwsHd+lz5pE5vENACCjU01x8v4B0CJl8B?= =?iso-8859-1?q?H7AbLPAdVTuoKOPwCvDu2jOQ1um+ci5lcTwyTubVBWPFp2ly16s?= =?iso-8859-1?q?tCLjJaU29b5WL8OcLgAKn6J1f0gRucXlEdyQXrEIVPVGCneCPvW?= =?iso-8859-1?q?OTHuxkkUEnPpIx4H5ovMA54h1hteXCmORBDWBNAcD6gwk5FqOHt?= =?iso-8859-1?q?cFIjfeaAtmkgvSFlGQrDI62v3Xc4ySX0K4NBq/TvwkYIdJQgwKl?= =?iso-8859-1?q?a/XR6YiW1kMUXiaEV0nBTDRy16RYWFw9otgqgijlPgdnxbj030Q?= =?iso-8859-1?q?+HE5ZR3PVcw8qYuMSw6t2uMVxwqKCwaLZTqwX61KDDDC2TctouB?= =?iso-8859-1?q?PR3PRCa29zS15NeP9zFIcMntgiJAI8Qt5rNVhlr7h+zlwLTDQdo?= =?iso-8859-1?q?OVEQGS7y3e0tCcPEG1EjLRLs0GXHoJX/oM3U9UOdNyHX7GDgsTL?= =?iso-8859-1?q?2avLV1DJx6zTomRYzXaE+?= x-microsoft-antispam-prvs: x-forefront-prvs: 0954EE4910 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(376002)(396003)(39860400002)(346002)(366004)(199004)(189003)(486006)(86362001)(446003)(2616005)(4326008)(2351001)(478600001)(2906002)(105586002)(106356001)(11346002)(107886003)(476003)(68736007)(6916009)(54906003)(316002)(25786009)(6506007)(26005)(102836004)(386003)(53936002)(186003)(6116002)(3846002)(52116002)(99286004)(97736004)(2501003)(256004)(81156014)(6512007)(6486002)(50226002)(5640700003)(81166006)(305945005)(8936002)(7736002)(8676002)(1730700003)(14454004)(76176011)(1076003)(5660300002)(71190400001)(71200400001)(66066001)(14444005)(36756003)(6436002); DIR:OUT; SFP:1101; SCL:1; SRVR:AM6PR05MB4871; H:AM6PR05MB5240.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: RzsQYaSE73UYeDfomZOHphccEeLA9eJiH4Ze/MPhYG7v9N4iSv0DaKJ76atXsPsXVt6ZUcnpoqCfjib3SSvabSI5u0S6+9Tz0VN/cpgxEIrKtTaxBymEXS2a1L4DxUSycL3/yw3b7csJfDTtWtDstDx0/4wmxTYj4DjEvaGaBo7sNMHMj8lsc3+/jWyoW1P8PnFmGsfueSoZ2q8b0MRRlBYUYlnyPxFeU7TLrfai+ZACTeDrgexlKHSSO7B1ipIU2IGkeFoDYG+mJtA8r3hoX3dez8E1XOVkxOMFfqCeXqEacEIShwmDLP8UyLRVFOJ1L3uRf/Odu8I9RdmjicFc13BgF/7/h4RFb8xW39T/vC12xN8sDUOVGyr+YGU+0Eu1TKLSaQHt45DCqfhHBkCslpJgoK/CrWejplO7BHdimLo= MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: bce0aa48-31ee-4cc9-09cc-08d6976a2263 X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Feb 2019 19:32:20.4267 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR05MB4871 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Petr Machata The SBCM register configures shared buffer quota according to port-priority resp. port-TC. The default configuration depends on the chip type. Therefore keep the tables and their lengths in struct mlxsw_sp_sb_vals. Redirect the references from the global definitions to the fields. Signed-off-by: Petr Machata Signed-off-by: Ido Schimmel --- .../mellanox/mlxsw/spectrum_buffers.c | 40 ++++++++++++------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c index c100ce11417a..18b182656df2 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c @@ -76,6 +76,12 @@ struct mlxsw_sp_sb_vals { const struct mlxsw_sp_sb_pool_des *pool_dess; const struct mlxsw_sp_sb_pm *pms; const struct mlxsw_sp_sb_pr *prs; + const struct mlxsw_sp_sb_cm *cms_ingress; + const struct mlxsw_sp_sb_cm *cms_egress; + const struct mlxsw_sp_sb_cm *cms_cpu; + unsigned int cms_ingress_count; + unsigned int cms_egress_count; + unsigned int cms_cpu_count; }; u32 mlxsw_sp_cells_bytes(const struct mlxsw_sp *mlxsw_sp, u32 cells) @@ -423,8 +429,6 @@ static const struct mlxsw_sp_sb_cm mlxsw_sp_sb_cms_ingress[] = { MLXSW_SP_SB_CM(20000, 1, 3), }; -#define MLXSW_SP_SB_CMS_INGRESS_LEN ARRAY_SIZE(mlxsw_sp_sb_cms_ingress) - 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), @@ -445,8 +449,6 @@ static const struct mlxsw_sp_sb_cm mlxsw_sp_sb_cms_egress[] = { MLXSW_SP_SB_CM(1, 0xff, 4), }; -#define MLXSW_SP_SB_CMS_EGRESS_LEN ARRAY_SIZE(mlxsw_sp_sb_cms_egress) - #define MLXSW_SP_CPU_PORT_SB_CM MLXSW_SP_SB_CM(0, 0, 4) static const struct mlxsw_sp_sb_cm mlxsw_sp_cpu_port_sb_cms[] = { @@ -484,9 +486,6 @@ static const struct mlxsw_sp_sb_cm mlxsw_sp_cpu_port_sb_cms[] = { MLXSW_SP_CPU_PORT_SB_CM, }; -#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) { @@ -538,27 +537,28 @@ static int __mlxsw_sp_sb_cms_init(struct mlxsw_sp *mlxsw_sp, u8 local_port, static int mlxsw_sp_port_sb_cms_init(struct mlxsw_sp_port *mlxsw_sp_port) { + struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp; int err; - err = __mlxsw_sp_sb_cms_init(mlxsw_sp_port->mlxsw_sp, + err = __mlxsw_sp_sb_cms_init(mlxsw_sp, mlxsw_sp_port->local_port, MLXSW_REG_SBXX_DIR_INGRESS, - mlxsw_sp_sb_cms_ingress, - MLXSW_SP_SB_CMS_INGRESS_LEN); + mlxsw_sp->sb_vals->cms_ingress, + mlxsw_sp->sb_vals->cms_ingress_count); if (err) return err; return __mlxsw_sp_sb_cms_init(mlxsw_sp_port->mlxsw_sp, mlxsw_sp_port->local_port, MLXSW_REG_SBXX_DIR_EGRESS, - mlxsw_sp_sb_cms_egress, - MLXSW_SP_SB_CMS_EGRESS_LEN); + mlxsw_sp->sb_vals->cms_egress, + mlxsw_sp->sb_vals->cms_egress_count); } static int mlxsw_sp_cpu_port_sb_cms_init(struct mlxsw_sp *mlxsw_sp) { return __mlxsw_sp_sb_cms_init(mlxsw_sp, 0, MLXSW_REG_SBXX_DIR_EGRESS, - mlxsw_sp_cpu_port_sb_cms, - MLXSW_SP_CPU_PORT_SB_MCS_LEN); + mlxsw_sp->sb_vals->cms_cpu, + mlxsw_sp->sb_vals->cms_cpu_count); } #define MLXSW_SP_SB_PM(_min_buff, _max_buff) \ @@ -684,6 +684,12 @@ const struct mlxsw_sp_sb_vals mlxsw_sp1_sb_vals = { .pool_dess = mlxsw_sp_sb_pool_dess, .pms = mlxsw_sp_sb_pms, .prs = mlxsw_sp_sb_prs, + .cms_ingress = mlxsw_sp_sb_cms_ingress, + .cms_egress = mlxsw_sp_sb_cms_egress, + .cms_cpu = mlxsw_sp_cpu_port_sb_cms, + .cms_ingress_count = ARRAY_SIZE(mlxsw_sp_sb_cms_ingress), + .cms_egress_count = ARRAY_SIZE(mlxsw_sp_sb_cms_egress), + .cms_cpu_count = ARRAY_SIZE(mlxsw_sp_cpu_port_sb_cms), }; const struct mlxsw_sp_sb_vals mlxsw_sp2_sb_vals = { @@ -691,6 +697,12 @@ const struct mlxsw_sp_sb_vals mlxsw_sp2_sb_vals = { .pool_dess = mlxsw_sp_sb_pool_dess, .pms = mlxsw_sp_sb_pms, .prs = mlxsw_sp_sb_prs, + .cms_ingress = mlxsw_sp_sb_cms_ingress, + .cms_egress = mlxsw_sp_sb_cms_egress, + .cms_cpu = mlxsw_sp_cpu_port_sb_cms, + .cms_ingress_count = ARRAY_SIZE(mlxsw_sp_sb_cms_ingress), + .cms_egress_count = ARRAY_SIZE(mlxsw_sp_sb_cms_egress), + .cms_cpu_count = ARRAY_SIZE(mlxsw_sp_cpu_port_sb_cms), }; int mlxsw_sp_buffers_init(struct mlxsw_sp *mlxsw_sp) From patchwork Wed Feb 20 19:32:23 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 1045552 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="o1n997GD"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 444SRn63H3z9s5c for ; Thu, 21 Feb 2019 06:32:37 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726976AbfBTTch (ORCPT ); Wed, 20 Feb 2019 14:32:37 -0500 Received: from mail-eopbgr00045.outbound.protection.outlook.com ([40.107.0.45]:11872 "EHLO EUR02-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726497AbfBTTcf (ORCPT ); Wed, 20 Feb 2019 14:32:35 -0500 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=d6gFp5rnhS/gZOK11ALFwUZUrJ/BeXm3DCbkKHJDf+s=; b=o1n997GDnw9A3tMy4rLQnyfMCvzh+puG1NgOSJ38smPad/2woOV0f7ZyQqmism8FTNh7UcYx7yxO0/2+Q2J75eyfOMFrWQZr0INbQXXojbGHmmenIrztwe+MNgmr5LYCKEmei4Ehwxmlz/L8jGVzUoSNXMXyXtXJc0+qGn9XNi4= Received: from AM6PR05MB5240.eurprd05.prod.outlook.com (20.177.196.214) by AM6PR05MB4871.eurprd05.prod.outlook.com (20.177.34.223) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1622.19; Wed, 20 Feb 2019 19:32:23 +0000 Received: from AM6PR05MB5240.eurprd05.prod.outlook.com ([fe80::3542:889c:3a85:3866]) by AM6PR05MB5240.eurprd05.prod.outlook.com ([fe80::3542:889c:3a85:3866%5]) with mapi id 15.20.1643.014; Wed, 20 Feb 2019 19:32:23 +0000 From: Ido Schimmel To: "netdev@vger.kernel.org" CC: "davem@davemloft.net" , Jiri Pirko , Petr Machata , mlxsw , Ido Schimmel Subject: [PATCH net-next 07/10] mlxsw: spectrum_buffers: Keep mlxsw_sp_sb_mm in sb_vals Thread-Topic: [PATCH net-next 07/10] mlxsw: spectrum_buffers: Keep mlxsw_sp_sb_mm in sb_vals Thread-Index: AQHUyVMBgzTenc2GAUSBPtyhIN94Vw== Date: Wed, 20 Feb 2019 19:32:23 +0000 Message-ID: <20190220193141.16498-8-idosch@mellanox.com> References: <20190220193141.16498-1-idosch@mellanox.com> In-Reply-To: <20190220193141.16498-1-idosch@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: AM6PR10CA0061.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:209:80::38) To AM6PR05MB5240.eurprd05.prod.outlook.com (2603:10a6:20b:64::22) authentication-results: spf=none (sender IP is ) smtp.mailfrom=idosch@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.20.1 x-originating-ip: [77.138.249.209] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: b545a522-b019-4c72-f278-08d6976a2359 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600110)(711020)(4605104)(4618075)(2017052603328)(7153060)(7193020); SRVR:AM6PR05MB4871; x-ms-traffictypediagnostic: AM6PR05MB4871: x-microsoft-exchange-diagnostics: =?iso-8859-1?q?1=3BAM6PR05MB4871=3B23?= =?iso-8859-1?q?=3AjqsMNzTMJudYR8Z4ISlDokEjeTAH1VciEwXF19VC7Sy+wO0a?= =?iso-8859-1?q?xJMnd5aaxbo0uXfE5ZN4C4qHUK1UdJ3c2L8fJufXW0+8FPHG80b?= =?iso-8859-1?q?UQ4vcCmWjz0GNwtbAoahaZ5SVdJ7oaTuE9a9cTgiRn1fV/At+PS?= =?iso-8859-1?q?SW6W31Ja0wpmTERN7aufVELmfpcUcZzL5FeIemEfZDN5ZlL4VH9?= =?iso-8859-1?q?qpnOP+CTyrL1Jf076dYGxqenQsmHnapNWWrbgfLUWIL3Vg+Jo/x?= =?iso-8859-1?q?AC+2ReZdDRqEY6FyiToNKo/+SNwf1bDMOYDKQ7VP8ZsB0DrvODK?= =?iso-8859-1?q?ukDz5TFvMk99Y0BBqyurfdBBFrJUHPj9auh8wn8Bw3cZLb2Q1mJ?= =?iso-8859-1?q?Rey5ZqBG8ghjasKY7IK7SMgF88nMM1os4Az+NQvyoKBmP4R4ztD?= =?iso-8859-1?q?DqhyZ6H6z/hmKrZ4+CKhO+DSYJzmjKxt3aTRRvrKyOtw8cqC0bm?= =?iso-8859-1?q?Y11Gx1ZQUWYyyl8pxT545n4B0DQ1OahencG+DJNuXuU5wHIOUCd?= =?iso-8859-1?q?R+tAS5OTT0cZP6LL1zT6JJzwvarOtS8+57Ml/TUF99+QaGexd7O?= =?iso-8859-1?q?c+jXR9tKKyf5YCT4IN09XtlumDhuZM2UFZvuZssk8ILv3XoSz9X?= =?iso-8859-1?q?ysy2Mq1ITOwrwc/325b+O8qqbkPhuKDyjiSr/2XMwjU4UtNg5rT?= =?iso-8859-1?q?ypjIxBKpuTQdN+Dgup9czppv9cRk+bvIMofmDhMADRBFBrdc1kz?= =?iso-8859-1?q?fpHCUCbCPjJ7KhU497lJmTZdGQQVr2oARlLxrMa2UncGCwEfno9?= =?iso-8859-1?q?8GT2+sx7KwC4KSNTyEStsNrLK7rsm42czOmXzB6rAzBw9KBlUHE?= =?iso-8859-1?q?2QQbmt7ZlxlbzohQ+rMHqCi0/nZFVeF5EdcKfIj6lOQuRuCe34B?= =?iso-8859-1?q?TGB2hTuuZ3BvpVZNu9KUoZAEPjU38wIwJGqXQAcsFpzL7R09K4E?= =?iso-8859-1?q?SDO/ED05a8C3POqrBUyggxsLFbU8MM+gb6FOuI2wBWIgpeDh1my?= =?iso-8859-1?q?zL/0tYCwuM1PaRUHUyKDK2sjCj1JLrVzCIXKJfnYozW1sBep6NM?= =?iso-8859-1?q?bO+A2A1/0pMEBo0914leJaZvxSq2w32tE66YSrgf8crUAGIlDWr?= =?iso-8859-1?q?q7BBeV58ZwO5RUC+GT3u7jN9L40WzJPNLtPEGyinh+K2OxrfoAz?= =?iso-8859-1?q?2kcLcgXRUn2zg3Tffqn586To1cU2wdvFwywp2cP+wJXD6/f7wGz?= =?iso-8859-1?q?fjkib8rz0gNCQkzM/A2oN/Ll6mmrgVoHXe267tF8p+2u9+HnE9G?= =?iso-8859-1?q?75wGiAl9grBJQhMoht/dZz0D93Z9waNinPW2K0HDKOjwSMtXdMt?= =?iso-8859-1?q?EFCK+gd0D9cfE96/7mrX2jdT13yf+UzWiiSXqs/BZL89TGJ8+vP?= =?iso-8859-1?q?OCrxvJ5JfkK+0Md3uHM8Y?= x-microsoft-antispam-prvs: x-forefront-prvs: 0954EE4910 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(376002)(396003)(39860400002)(346002)(366004)(199004)(189003)(486006)(86362001)(446003)(2616005)(4326008)(2351001)(478600001)(2906002)(105586002)(106356001)(11346002)(107886003)(476003)(68736007)(6916009)(54906003)(316002)(25786009)(6506007)(26005)(102836004)(386003)(53936002)(186003)(6116002)(3846002)(52116002)(99286004)(97736004)(2501003)(256004)(81156014)(6512007)(6486002)(50226002)(5640700003)(81166006)(305945005)(8936002)(7736002)(8676002)(1730700003)(14454004)(76176011)(1076003)(5660300002)(71190400001)(71200400001)(66066001)(14444005)(36756003)(6436002); DIR:OUT; SFP:1101; SCL:1; SRVR:AM6PR05MB4871; H:AM6PR05MB5240.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: gVXS9EkvIfn+871E1dWKoYNEHT5NasPHQ4VO2r0dQ4qUQxnVUNiaEaw5GlLqLk4rXsMzIJ4cT2pqeG04mnJAeI3N6X564R4ECU/xN/JkDkBbBG9UkRY7ZRNSY4H3vejsl0JE8C6vgHFN+18ZGBLXLY4AdNVqIrqAvhxTPW1ijzVE8qnKHn0zdxm8h8g3Cl+cYIIntYalUDPNVmYesxws3deXnszvgD7v6UcrsyeBsYr2P73TtWjm0z5meHqcRw9jrvA3RhBoWfkmGj0nENn9Q6rK3B6a2HDAklPf37k4HeH8sCWgwi6DsyHsmbX6suvPsrZg7Sbd+HblpMt80UBJyooRF1HTLqfF+ERHxAYmZhGKuZnq2PRqFgBBAKbp+fjC4Kq8cUwm5BQveS1BLBUbBq2UvbBkNclu/9VoyP/As3U= MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: b545a522-b019-4c72-f278-08d6976a2359 X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Feb 2019 19:32:22.3450 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR05MB4871 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Petr Machata The SBMM register configures the shared buffer quota for MC packets according to Switch-Priority. The default configuration depends on the chip type. Therefore keep the table and length in struct mlxsw_sp_sb_vals. Redirect the references from the global definitions to the fields. Signed-off-by: Petr Machata Signed-off-by: Ido Schimmel --- .../mellanox/mlxsw/spectrum_buffers.c | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c index 18b182656df2..5194fc8f80cc 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c @@ -37,6 +37,12 @@ struct mlxsw_sp_sb_pm { struct mlxsw_cp_sb_occ occ; }; +struct mlxsw_sp_sb_mm { + u32 min_buff; + u32 max_buff; + u16 pool_index; +}; + struct mlxsw_sp_sb_pool_des { enum mlxsw_reg_sbxx_dir dir; u8 pool; @@ -76,9 +82,11 @@ struct mlxsw_sp_sb_vals { const struct mlxsw_sp_sb_pool_des *pool_dess; const struct mlxsw_sp_sb_pm *pms; const struct mlxsw_sp_sb_pr *prs; + const struct mlxsw_sp_sb_mm *mms; const struct mlxsw_sp_sb_cm *cms_ingress; const struct mlxsw_sp_sb_cm *cms_egress; const struct mlxsw_sp_sb_cm *cms_cpu; + unsigned int mms_count; unsigned int cms_ingress_count; unsigned int cms_egress_count; unsigned int cms_cpu_count; @@ -604,12 +612,6 @@ static int mlxsw_sp_port_sb_pms_init(struct mlxsw_sp_port *mlxsw_sp_port) return 0; } -struct mlxsw_sp_sb_mm { - u32 min_buff; - u32 max_buff; - u16 pool_index; -}; - #define MLXSW_SP_SB_MM(_min_buff, _max_buff, _pool) \ { \ .min_buff = _min_buff, \ @@ -635,20 +637,18 @@ static const struct mlxsw_sp_sb_mm mlxsw_sp_sb_mms[] = { MLXSW_SP_SB_MM(0, 6, 4), }; -#define MLXSW_SP_SB_MMS_LEN ARRAY_SIZE(mlxsw_sp_sb_mms) - static int mlxsw_sp_sb_mms_init(struct mlxsw_sp *mlxsw_sp) { char sbmm_pl[MLXSW_REG_SBMM_LEN]; int i; int err; - for (i = 0; i < MLXSW_SP_SB_MMS_LEN; i++) { + for (i = 0; i < mlxsw_sp->sb_vals->mms_count; i++) { const struct mlxsw_sp_sb_pool_des *des; const struct mlxsw_sp_sb_mm *mc; u32 min_buff; - mc = &mlxsw_sp_sb_mms[i]; + mc = &mlxsw_sp->sb_vals->mms[i]; des = &mlxsw_sp->sb_vals->pool_dess[mc->pool_index]; /* All pools used by sb_mm's are initialized using dynamic * thresholds, therefore 'max_buff' isn't specified in cells. @@ -684,9 +684,11 @@ const struct mlxsw_sp_sb_vals mlxsw_sp1_sb_vals = { .pool_dess = mlxsw_sp_sb_pool_dess, .pms = mlxsw_sp_sb_pms, .prs = mlxsw_sp_sb_prs, + .mms = mlxsw_sp_sb_mms, .cms_ingress = mlxsw_sp_sb_cms_ingress, .cms_egress = mlxsw_sp_sb_cms_egress, .cms_cpu = mlxsw_sp_cpu_port_sb_cms, + .mms_count = ARRAY_SIZE(mlxsw_sp_sb_mms), .cms_ingress_count = ARRAY_SIZE(mlxsw_sp_sb_cms_ingress), .cms_egress_count = ARRAY_SIZE(mlxsw_sp_sb_cms_egress), .cms_cpu_count = ARRAY_SIZE(mlxsw_sp_cpu_port_sb_cms), @@ -697,9 +699,11 @@ const struct mlxsw_sp_sb_vals mlxsw_sp2_sb_vals = { .pool_dess = mlxsw_sp_sb_pool_dess, .pms = mlxsw_sp_sb_pms, .prs = mlxsw_sp_sb_prs, + .mms = mlxsw_sp_sb_mms, .cms_ingress = mlxsw_sp_sb_cms_ingress, .cms_egress = mlxsw_sp_sb_cms_egress, .cms_cpu = mlxsw_sp_cpu_port_sb_cms, + .mms_count = ARRAY_SIZE(mlxsw_sp_sb_mms), .cms_ingress_count = ARRAY_SIZE(mlxsw_sp_sb_cms_ingress), .cms_egress_count = ARRAY_SIZE(mlxsw_sp_sb_cms_egress), .cms_cpu_count = ARRAY_SIZE(mlxsw_sp_cpu_port_sb_cms), From patchwork Wed Feb 20 19:32:25 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 1045554 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="bXxmTs/2"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 444SRs6f7cz9s6w for ; Thu, 21 Feb 2019 06:32:41 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727077AbfBTTck (ORCPT ); Wed, 20 Feb 2019 14:32:40 -0500 Received: from mail-eopbgr00055.outbound.protection.outlook.com ([40.107.0.55]:56667 "EHLO EUR02-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726953AbfBTTcj (ORCPT ); Wed, 20 Feb 2019 14:32:39 -0500 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=8MJbWQcpj/7fFMmmB4vV0eDHt0VkU5bxpkK7v1GM614=; b=bXxmTs/2X0H2FfJ7xO7UwNsGmr9+zdduCZvSN9GWL5OOlt15Y9+1zGW32qxNXB/HvejeBv9u2bPCu97l2yYD4Vbygw5tcfKAHo24JahqD/6hXGhIWI5SkByq+V/g/nFOxZh/DbmDwbIaxD5s/zUaVp1yhrjR84BMeHlUQ1uzH00= Received: from AM6PR05MB5240.eurprd05.prod.outlook.com (20.177.196.214) by AM6PR05MB4871.eurprd05.prod.outlook.com (20.177.34.223) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1622.19; Wed, 20 Feb 2019 19:32:25 +0000 Received: from AM6PR05MB5240.eurprd05.prod.outlook.com ([fe80::3542:889c:3a85:3866]) by AM6PR05MB5240.eurprd05.prod.outlook.com ([fe80::3542:889c:3a85:3866%5]) with mapi id 15.20.1643.014; Wed, 20 Feb 2019 19:32:25 +0000 From: Ido Schimmel To: "netdev@vger.kernel.org" CC: "davem@davemloft.net" , Jiri Pirko , Petr Machata , mlxsw , Ido Schimmel Subject: [PATCH net-next 08/10] mlxsw: spectrum_buffers: Add Spectrum-2 shared buffer configuration Thread-Topic: [PATCH net-next 08/10] mlxsw: spectrum_buffers: Add Spectrum-2 shared buffer configuration Thread-Index: AQHUyVMCj9WatcADBkKsPeYNJB42Tw== Date: Wed, 20 Feb 2019 19:32:25 +0000 Message-ID: <20190220193141.16498-9-idosch@mellanox.com> References: <20190220193141.16498-1-idosch@mellanox.com> In-Reply-To: <20190220193141.16498-1-idosch@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: AM6PR10CA0061.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:209:80::38) To AM6PR05MB5240.eurprd05.prod.outlook.com (2603:10a6:20b:64::22) authentication-results: spf=none (sender IP is ) smtp.mailfrom=idosch@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.20.1 x-originating-ip: [77.138.249.209] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 3082c49b-6755-4db3-da71-08d6976a246f x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600110)(711020)(4605104)(4618075)(2017052603328)(7153060)(7193020); SRVR:AM6PR05MB4871; x-ms-traffictypediagnostic: AM6PR05MB4871: x-microsoft-exchange-diagnostics: =?iso-8859-1?q?1=3BAM6PR05MB4871=3B23?= =?iso-8859-1?q?=3Av1PoigNb8dQR0c7ZqdcSuPz0tvHk6OQ2QmQFedAkjhsyfwgQ?= =?iso-8859-1?q?7I5OjYYeSpTgqgvZpXC4IPnwDQ97VUHoA5tm10EOqxCWeAVWo+C?= =?iso-8859-1?q?GK/ojOT2aQX0sFBQIsMIAGYxZ8i5dlVshDmsQrbGRFPX19UQ6fy?= =?iso-8859-1?q?7RGGVL25UGRpmDFT1w0u055tilvKCdpEEclsgzBJgynYB5ytm6b?= =?iso-8859-1?q?Ra5VuQNd/snH8l6XjhSq9ji7oJqGgPgq8Vo+Nt3yMevEMuTLr/H?= =?iso-8859-1?q?hswRMC5xGKGHVQeVe3z1W3QiBLrbNBwEufpivBmrcJIHuwZo/U4?= =?iso-8859-1?q?04sC9VSlF1KBZHIb9eO1x0SyA+h4PbQQLVgHxluHgl3Mf8msEK4?= =?iso-8859-1?q?0nWtpuZiNE21UbSPQOxcwgwpMWxv4WmhpJaRGED6SrTAZmVNJgY?= =?iso-8859-1?q?tpelDQ8+PWbrd0K/x4MpRtSB8A8HPa3Mb0/uUs6aIMhOxE8dsmk?= =?iso-8859-1?q?r3Hz+3Asd/WKbbrm8jqgez8ga9r1dudHdJGB8YKWI2mRA37XyiZ?= =?iso-8859-1?q?byVy1Hs90WTWn4O/cOTdj5/MxO/rYv6Q+9Qy3I9d32p8cmJK/5o?= =?iso-8859-1?q?REAKCa4tBhhNYTU0yMkMuLcW7GUPrpyqVLB3z6VEzJCbvUF53hW?= =?iso-8859-1?q?s00WzOZeHJ/zT5ac0vnqtISw8VQlJf8S60Ui1p+3bNqpSx/XIxR?= =?iso-8859-1?q?zWRYGlCS+tmN86Bplkq3+JtU17R1S5lBRVOIVzcVCt5iV9pRHtQ?= =?iso-8859-1?q?OU8mnXRCPMoy8YupfydFdY7FS8Q8iwOcUM0Zevu1H2DI/fHCP4R?= =?iso-8859-1?q?377puli+Q7IAx2+CooR8jNAfd/AkzDWOU/UCs+/m3Crzeww7x9K?= =?iso-8859-1?q?2jM5JbfvcaHBjHw8nZmEo1hDBuMvXJGR/wkQ3daCJsqU0OXKk5s?= =?iso-8859-1?q?MocIwMqZbnP4YLg/eDAyaGAqm0+J9xRHF1lPRxNPwrpzBI4Rq5o?= =?iso-8859-1?q?Q8VGw1yPBmwjN4NcSBRBPYeC9NYAVfI/m2W08RKbsLgFbedKcF6?= =?iso-8859-1?q?PYXzXPdzb/JHTyvOnRycQ4ueDuZWposQVdfq2S8+0nDZ+dsQWUR?= =?iso-8859-1?q?8DUq8VP70WtmTWUGgNdIOtkKPQQ0eWBnadvl3EQjIooynMIj7e9?= =?iso-8859-1?q?+DfO55UPrU3p9hGVeeScZYgcM/sWR0E4DhTcwXYmWzuIkcH099o?= =?iso-8859-1?q?8m+/S2JsXqPj1MNfqZ1VKMx+A8U3VDLoAb/7miHMkPYW9ds+ZfF?= =?iso-8859-1?q?lV6Xee2x6ZH8OXON512ribrN2w5jWDOLMnsUTgjt8J2ZWasjmbQ?= =?iso-8859-1?q?CY/CHpEh7PCIRPiuMYALKT2ZVMp5zlGpB8SR3GIDoV9L4kWXxon?= =?iso-8859-1?q?5EHjGvhOIkQambZTHLrSp7dnsQSCiqWsnGfs21aKEvypJjo/1m5?= =?iso-8859-1?q?U/2SfmG5T+cExzkqVfTMt?= x-microsoft-antispam-prvs: x-forefront-prvs: 0954EE4910 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(376002)(396003)(39860400002)(346002)(366004)(199004)(189003)(486006)(86362001)(446003)(2616005)(4326008)(2351001)(478600001)(2906002)(105586002)(106356001)(11346002)(107886003)(476003)(68736007)(6916009)(54906003)(316002)(25786009)(6506007)(26005)(102836004)(386003)(53936002)(186003)(6116002)(3846002)(52116002)(99286004)(97736004)(2501003)(256004)(81156014)(6512007)(6486002)(50226002)(5640700003)(81166006)(305945005)(8936002)(7736002)(8676002)(1730700003)(14454004)(76176011)(1076003)(5660300002)(71190400001)(71200400001)(66066001)(14444005)(36756003)(6436002); DIR:OUT; SFP:1101; SCL:1; SRVR:AM6PR05MB4871; H:AM6PR05MB5240.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: GQKb7vun9hYT1654EpXCbGdG/pxQk1Nsn+3KoGc2Avj2jORSJ2cAFT0U8Hq+6qGTcB46IrYbmqiOX/Ak7ZAUmwtgHXBKhqzArofTyqsLLm/jIknMGzs6QyvuMxOvpd1Ns5TK4RUUfMEwU5gRYsEXZqr6cGcU8mMuoAVNucnhwTnm2kQiNmGDMaTC4wkXTxaMDOwB6ejwAaBHg/wEPAtfDEZvS4lmYOybihntVeyffYGEo7S1jejuZnfR0hcf1cHQtRdAtLDKlCeEAst5o5F97ongOPZXGMX4i6Y6F/zROeL1o+9/1ytxDF3txUjOmsLEQdIbvxWlsmL/DgTb843m9zy729TOUdeEo+9po879L0xq/JyJuvFvjJHbSSS8+g4o85GJZuPe3UGCMBM/fM5s5PZJkWRGloyzordoG6oWGps= MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3082c49b-6755-4db3-da71-08d6976a246f X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Feb 2019 19:32:24.0122 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR05MB4871 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Petr Machata Customize the tables related to shared buffer configuration to match the current recommendation for Spectrum-2 systems. Signed-off-by: Petr Machata Signed-off-by: Ido Schimmel --- .../mellanox/mlxsw/spectrum_buffers.c | 134 ++++++++++++++---- 1 file changed, 106 insertions(+), 28 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c index 5194fc8f80cc..bb327dfe1336 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c @@ -49,7 +49,7 @@ struct mlxsw_sp_sb_pool_des { }; /* Order ingress pools before egress pools. */ -static const struct mlxsw_sp_sb_pool_des mlxsw_sp_sb_pool_dess[] = { +static const struct mlxsw_sp_sb_pool_des mlxsw_sp1_sb_pool_dess[] = { {MLXSW_REG_SBXX_DIR_INGRESS, 0}, {MLXSW_REG_SBXX_DIR_INGRESS, 1}, {MLXSW_REG_SBXX_DIR_INGRESS, 2}, @@ -61,6 +61,17 @@ static const struct mlxsw_sp_sb_pool_des mlxsw_sp_sb_pool_dess[] = { {MLXSW_REG_SBXX_DIR_EGRESS, 15}, }; +static const struct mlxsw_sp_sb_pool_des mlxsw_sp2_sb_pool_dess[] = { + {MLXSW_REG_SBXX_DIR_INGRESS, 0}, + {MLXSW_REG_SBXX_DIR_INGRESS, 1}, + {MLXSW_REG_SBXX_DIR_INGRESS, 2}, + {MLXSW_REG_SBXX_DIR_INGRESS, 3}, + {MLXSW_REG_SBXX_DIR_EGRESS, 0}, + {MLXSW_REG_SBXX_DIR_EGRESS, 1}, + {MLXSW_REG_SBXX_DIR_EGRESS, 2}, + {MLXSW_REG_SBXX_DIR_EGRESS, 3}, +}; + #define MLXSW_SP_SB_ING_TC_COUNT 8 #define MLXSW_SP_SB_EG_TC_COUNT 16 @@ -366,32 +377,53 @@ static void mlxsw_sp_sb_ports_fini(struct mlxsw_sp *mlxsw_sp) kfree(mlxsw_sp->sb->ports); } -#define MLXSW_SP_SB_PR_INGRESS_SIZE 12440000 -#define MLXSW_SP_SB_PR_INGRESS_MNG_SIZE (200 * 1000) -#define MLXSW_SP_SB_PR_EGRESS_SIZE 13232000 - #define MLXSW_SP_SB_PR(_mode, _size) \ { \ .mode = _mode, \ .size = _size, \ } -static const struct mlxsw_sp_sb_pr mlxsw_sp_sb_prs[] = { +#define MLXSW_SP1_SB_PR_INGRESS_SIZE 12440000 +#define MLXSW_SP1_SB_PR_INGRESS_MNG_SIZE (200 * 1000) +#define MLXSW_SP1_SB_PR_EGRESS_SIZE 13232000 + +static const struct mlxsw_sp_sb_pr mlxsw_sp1_sb_prs[] = { /* Ingress pools. */ MLXSW_SP_SB_PR(MLXSW_REG_SBPR_MODE_DYNAMIC, - MLXSW_SP_SB_PR_INGRESS_SIZE), + MLXSW_SP1_SB_PR_INGRESS_SIZE), MLXSW_SP_SB_PR(MLXSW_REG_SBPR_MODE_DYNAMIC, 0), MLXSW_SP_SB_PR(MLXSW_REG_SBPR_MODE_DYNAMIC, 0), MLXSW_SP_SB_PR(MLXSW_REG_SBPR_MODE_DYNAMIC, - MLXSW_SP_SB_PR_INGRESS_MNG_SIZE), + MLXSW_SP1_SB_PR_INGRESS_MNG_SIZE), /* Egress pools. */ - MLXSW_SP_SB_PR(MLXSW_REG_SBPR_MODE_DYNAMIC, MLXSW_SP_SB_PR_EGRESS_SIZE), + MLXSW_SP_SB_PR(MLXSW_REG_SBPR_MODE_DYNAMIC, + MLXSW_SP1_SB_PR_EGRESS_SIZE), MLXSW_SP_SB_PR(MLXSW_REG_SBPR_MODE_DYNAMIC, 0), MLXSW_SP_SB_PR(MLXSW_REG_SBPR_MODE_DYNAMIC, 0), MLXSW_SP_SB_PR(MLXSW_REG_SBPR_MODE_DYNAMIC, 0), MLXSW_SP_SB_PR(MLXSW_REG_SBPR_MODE_STATIC, MLXSW_SP_SB_INFI), }; +#define MLXSW_SP2_SB_PR_INGRESS_SIZE 40960000 +#define MLXSW_SP2_SB_PR_INGRESS_MNG_SIZE (200 * 1000) +#define MLXSW_SP2_SB_PR_EGRESS_SIZE 40960000 + +static const struct mlxsw_sp_sb_pr mlxsw_sp2_sb_prs[] = { + /* Ingress pools. */ + MLXSW_SP_SB_PR(MLXSW_REG_SBPR_MODE_DYNAMIC, + MLXSW_SP2_SB_PR_INGRESS_SIZE), + MLXSW_SP_SB_PR(MLXSW_REG_SBPR_MODE_STATIC, 0), + MLXSW_SP_SB_PR(MLXSW_REG_SBPR_MODE_STATIC, 0), + MLXSW_SP_SB_PR(MLXSW_REG_SBPR_MODE_DYNAMIC, + MLXSW_SP2_SB_PR_INGRESS_MNG_SIZE), + /* Egress pools. */ + MLXSW_SP_SB_PR(MLXSW_REG_SBPR_MODE_DYNAMIC, + MLXSW_SP2_SB_PR_EGRESS_SIZE), + MLXSW_SP_SB_PR(MLXSW_REG_SBPR_MODE_STATIC, 0), + MLXSW_SP_SB_PR(MLXSW_REG_SBPR_MODE_STATIC, 0), + MLXSW_SP_SB_PR(MLXSW_REG_SBPR_MODE_STATIC, 0), +}; + static int mlxsw_sp_sb_prs_init(struct mlxsw_sp *mlxsw_sp, const struct mlxsw_sp_sb_pr *prs, size_t prs_len) @@ -424,7 +456,7 @@ static int mlxsw_sp_sb_prs_init(struct mlxsw_sp *mlxsw_sp, .pool_index = _pool, \ } -static const struct mlxsw_sp_sb_cm mlxsw_sp_sb_cms_ingress[] = { +static const struct mlxsw_sp_sb_cm mlxsw_sp1_sb_cms_ingress[] = { MLXSW_SP_SB_CM(10000, 8, 0), MLXSW_SP_SB_CM(0, MLXSW_REG_SBXX_DYN_MAX_BUFF_MIN, 0), MLXSW_SP_SB_CM(0, MLXSW_REG_SBXX_DYN_MAX_BUFF_MIN, 0), @@ -437,7 +469,20 @@ static const struct mlxsw_sp_sb_cm mlxsw_sp_sb_cms_ingress[] = { MLXSW_SP_SB_CM(20000, 1, 3), }; -static const struct mlxsw_sp_sb_cm mlxsw_sp_sb_cms_egress[] = { +static const struct mlxsw_sp_sb_cm mlxsw_sp2_sb_cms_ingress[] = { + MLXSW_SP_SB_CM(0, 7, 0), + MLXSW_SP_SB_CM(0, MLXSW_REG_SBXX_DYN_MAX_BUFF_MIN, 0), + MLXSW_SP_SB_CM(0, MLXSW_REG_SBXX_DYN_MAX_BUFF_MIN, 0), + MLXSW_SP_SB_CM(0, MLXSW_REG_SBXX_DYN_MAX_BUFF_MIN, 0), + MLXSW_SP_SB_CM(0, MLXSW_REG_SBXX_DYN_MAX_BUFF_MIN, 0), + MLXSW_SP_SB_CM(0, MLXSW_REG_SBXX_DYN_MAX_BUFF_MIN, 0), + MLXSW_SP_SB_CM(0, MLXSW_REG_SBXX_DYN_MAX_BUFF_MIN, 0), + MLXSW_SP_SB_CM(0, MLXSW_REG_SBXX_DYN_MAX_BUFF_MIN, 0), + MLXSW_SP_SB_CM(0, 0, 0), /* dummy, this PG does not exist */ + MLXSW_SP_SB_CM(20000, 1, 3), +}; + +static const struct mlxsw_sp_sb_cm mlxsw_sp1_sb_cms_egress[] = { MLXSW_SP_SB_CM(1500, 9, 4), MLXSW_SP_SB_CM(1500, 9, 4), MLXSW_SP_SB_CM(1500, 9, 4), @@ -457,6 +502,26 @@ static const struct mlxsw_sp_sb_cm mlxsw_sp_sb_cms_egress[] = { MLXSW_SP_SB_CM(1, 0xff, 4), }; +static const struct mlxsw_sp_sb_cm mlxsw_sp2_sb_cms_egress[] = { + MLXSW_SP_SB_CM(0, 7, 4), + MLXSW_SP_SB_CM(0, 7, 4), + MLXSW_SP_SB_CM(0, 7, 4), + MLXSW_SP_SB_CM(0, 7, 4), + MLXSW_SP_SB_CM(0, 7, 4), + MLXSW_SP_SB_CM(0, 7, 4), + MLXSW_SP_SB_CM(0, 7, 4), + MLXSW_SP_SB_CM(0, 7, 4), + MLXSW_SP_SB_CM(0, 7, 4), + MLXSW_SP_SB_CM(0, 7, 4), + MLXSW_SP_SB_CM(0, 7, 4), + MLXSW_SP_SB_CM(0, 7, 4), + MLXSW_SP_SB_CM(0, 7, 4), + MLXSW_SP_SB_CM(0, 7, 4), + MLXSW_SP_SB_CM(0, 7, 4), + MLXSW_SP_SB_CM(0, 7, 4), + MLXSW_SP_SB_CM(1, 0xff, 4), +}; + #define MLXSW_SP_CPU_PORT_SB_CM MLXSW_SP_SB_CM(0, 0, 4) static const struct mlxsw_sp_sb_cm mlxsw_sp_cpu_port_sb_cms[] = { @@ -575,7 +640,7 @@ static int mlxsw_sp_cpu_port_sb_cms_init(struct mlxsw_sp *mlxsw_sp) .max_buff = _max_buff, \ } -static const struct mlxsw_sp_sb_pm mlxsw_sp_sb_pms[] = { +static const struct mlxsw_sp_sb_pm mlxsw_sp1_sb_pms[] = { /* Ingress pools. */ MLXSW_SP_SB_PM(0, MLXSW_REG_SBXX_DYN_MAX_BUFF_MAX), MLXSW_SP_SB_PM(0, MLXSW_REG_SBXX_DYN_MAX_BUFF_MIN), @@ -589,6 +654,19 @@ static const struct mlxsw_sp_sb_pm mlxsw_sp_sb_pms[] = { MLXSW_SP_SB_PM(10000, 90000), }; +static const struct mlxsw_sp_sb_pm mlxsw_sp2_sb_pms[] = { + /* Ingress pools. */ + MLXSW_SP_SB_PM(0, 7), + MLXSW_SP_SB_PM(0, 0), + MLXSW_SP_SB_PM(0, 0), + MLXSW_SP_SB_PM(0, MLXSW_REG_SBXX_DYN_MAX_BUFF_MAX), + /* Egress pools. */ + MLXSW_SP_SB_PM(0, 7), + MLXSW_SP_SB_PM(0, 0), + MLXSW_SP_SB_PM(0, 0), + MLXSW_SP_SB_PM(0, 0), +}; + static int mlxsw_sp_port_sb_pms_init(struct mlxsw_sp_port *mlxsw_sp_port) { struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp; @@ -680,32 +758,32 @@ static void mlxsw_sp_pool_count(struct mlxsw_sp *mlxsw_sp, } const struct mlxsw_sp_sb_vals mlxsw_sp1_sb_vals = { - .pool_count = ARRAY_SIZE(mlxsw_sp_sb_pool_dess), - .pool_dess = mlxsw_sp_sb_pool_dess, - .pms = mlxsw_sp_sb_pms, - .prs = mlxsw_sp_sb_prs, + .pool_count = ARRAY_SIZE(mlxsw_sp1_sb_pool_dess), + .pool_dess = mlxsw_sp1_sb_pool_dess, + .pms = mlxsw_sp1_sb_pms, + .prs = mlxsw_sp1_sb_prs, .mms = mlxsw_sp_sb_mms, - .cms_ingress = mlxsw_sp_sb_cms_ingress, - .cms_egress = mlxsw_sp_sb_cms_egress, + .cms_ingress = mlxsw_sp1_sb_cms_ingress, + .cms_egress = mlxsw_sp1_sb_cms_egress, .cms_cpu = mlxsw_sp_cpu_port_sb_cms, .mms_count = ARRAY_SIZE(mlxsw_sp_sb_mms), - .cms_ingress_count = ARRAY_SIZE(mlxsw_sp_sb_cms_ingress), - .cms_egress_count = ARRAY_SIZE(mlxsw_sp_sb_cms_egress), + .cms_ingress_count = ARRAY_SIZE(mlxsw_sp1_sb_cms_ingress), + .cms_egress_count = ARRAY_SIZE(mlxsw_sp1_sb_cms_egress), .cms_cpu_count = ARRAY_SIZE(mlxsw_sp_cpu_port_sb_cms), }; const struct mlxsw_sp_sb_vals mlxsw_sp2_sb_vals = { - .pool_count = ARRAY_SIZE(mlxsw_sp_sb_pool_dess), - .pool_dess = mlxsw_sp_sb_pool_dess, - .pms = mlxsw_sp_sb_pms, - .prs = mlxsw_sp_sb_prs, + .pool_count = ARRAY_SIZE(mlxsw_sp2_sb_pool_dess), + .pool_dess = mlxsw_sp2_sb_pool_dess, + .pms = mlxsw_sp2_sb_pms, + .prs = mlxsw_sp2_sb_prs, .mms = mlxsw_sp_sb_mms, - .cms_ingress = mlxsw_sp_sb_cms_ingress, - .cms_egress = mlxsw_sp_sb_cms_egress, + .cms_ingress = mlxsw_sp2_sb_cms_ingress, + .cms_egress = mlxsw_sp2_sb_cms_egress, .cms_cpu = mlxsw_sp_cpu_port_sb_cms, .mms_count = ARRAY_SIZE(mlxsw_sp_sb_mms), - .cms_ingress_count = ARRAY_SIZE(mlxsw_sp_sb_cms_ingress), - .cms_egress_count = ARRAY_SIZE(mlxsw_sp_sb_cms_egress), + .cms_ingress_count = ARRAY_SIZE(mlxsw_sp2_sb_cms_ingress), + .cms_egress_count = ARRAY_SIZE(mlxsw_sp2_sb_cms_egress), .cms_cpu_count = ARRAY_SIZE(mlxsw_sp_cpu_port_sb_cms), }; From patchwork Wed Feb 20 19:32:27 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 1045553 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="c2liBOUo"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 444SRr4hBYz9s5c for ; Thu, 21 Feb 2019 06:32:40 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727055AbfBTTcj (ORCPT ); Wed, 20 Feb 2019 14:32:39 -0500 Received: from mail-eopbgr00045.outbound.protection.outlook.com ([40.107.0.45]:11872 "EHLO EUR02-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726838AbfBTTch (ORCPT ); Wed, 20 Feb 2019 14:32:37 -0500 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=MDF4nTa5pbf8xetGE+jCLvRyOXN+bOZVjQscCVapp+s=; b=c2liBOUoMSSb7Fgw0QuzWo2Lv2Et8ecA6Zn+F3zem34YPbKHOHd8vI/aplHUq3Bud+VU1wLQXlkr88nLkdPVacLP466YSrsbe9xgdwziTu/zcPDyawT3pUKqKK2zaTtRwwgsKJTT5iOnSIqlVKxqOESyhHe7jPvOZ7siIq3RTr8= Received: from AM6PR05MB5240.eurprd05.prod.outlook.com (20.177.196.214) by AM6PR05MB4871.eurprd05.prod.outlook.com (20.177.34.223) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1622.19; Wed, 20 Feb 2019 19:32:28 +0000 Received: from AM6PR05MB5240.eurprd05.prod.outlook.com ([fe80::3542:889c:3a85:3866]) by AM6PR05MB5240.eurprd05.prod.outlook.com ([fe80::3542:889c:3a85:3866%5]) with mapi id 15.20.1643.014; Wed, 20 Feb 2019 19:32:28 +0000 From: Ido Schimmel To: "netdev@vger.kernel.org" CC: "davem@davemloft.net" , Jiri Pirko , Petr Machata , mlxsw , Ido Schimmel Subject: [PATCH net-next 09/10] mlxsw: spectrum_buffers: Update port headroom configuration Thread-Topic: [PATCH net-next 09/10] mlxsw: spectrum_buffers: Update port headroom configuration Thread-Index: AQHUyVMD26ZPn4L4R0ODipBCcAHiWg== Date: Wed, 20 Feb 2019 19:32:27 +0000 Message-ID: <20190220193141.16498-10-idosch@mellanox.com> References: <20190220193141.16498-1-idosch@mellanox.com> In-Reply-To: <20190220193141.16498-1-idosch@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: AM6PR10CA0061.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:209:80::38) To AM6PR05MB5240.eurprd05.prod.outlook.com (2603:10a6:20b:64::22) authentication-results: spf=none (sender IP is ) smtp.mailfrom=idosch@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.20.1 x-originating-ip: [77.138.249.209] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 1ba73ad0-ae56-4ff2-1cf4-08d6976a25c7 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600110)(711020)(4605104)(4618075)(2017052603328)(7153060)(7193020); SRVR:AM6PR05MB4871; x-ms-traffictypediagnostic: AM6PR05MB4871: x-microsoft-exchange-diagnostics: =?iso-8859-1?q?1=3BAM6PR05MB4871=3B23?= =?iso-8859-1?q?=3A+Te9ma538yjdszmpfWT8Yj9fT8lvThoRkgORaaXUtU4yyHxC?= =?iso-8859-1?q?enhwYTwNexv+cZO+W9eRt+EvTbgcY/oYvx0RvEq9MIUf2Jq2x1v?= =?iso-8859-1?q?bRbnrArjB1kuXFM1f7DPKN7+BAT91tUePOPfqIXXE0Hs87U6NGY?= =?iso-8859-1?q?OOZ/EaMMQrIMXGwJn6DB/xhle6UrTcxR8z07oQc+fZI7002mFMR?= =?iso-8859-1?q?mE6Swa/uU7cyIyL1cN/4E+QYXvslp+85t/RB3yfH1ygxfaE8e7m?= =?iso-8859-1?q?WSJrIWS9RrF6/budh14sa3A4FKIS4rLA9eAKN2KPZAfkdsAvZuK?= =?iso-8859-1?q?EPPPpWuw7FHanZ0qAd/6oWtAkZHiSoqkzR6LPCtHiWnNzJU6AXF?= =?iso-8859-1?q?1YSwZrqJrid9ACKZVQL1Kb2IxBIoVY3aH8LMWT66GMkiobnQuQV?= =?iso-8859-1?q?DzM9rzOi14hRLcNqC516SKN6YW7ULGJVgbaS4CG0m5kAU8+yhQp?= =?iso-8859-1?q?nHG1mEuFbAFakFAS+hii42RFmYmn/n1LaHUDn6I/g70i+n9tcXu?= =?iso-8859-1?q?6FBncqprnPFSPPdz09RIT4dqCgQ6KlIoq4uUgWh2Pr2kzZ/dE9C?= =?iso-8859-1?q?Td6G0VvBUij8giddGRg4/Ay1pM4E/avj4hFBLtwUodkmVpP7/87?= =?iso-8859-1?q?iAIZQK8k6ur0DnMqPcNUiEQ1H89O4PGTDo6Ym9ti0Wc6Ybq/r+O?= =?iso-8859-1?q?cbd2dI13NXwQV09Ww+uAXYILn3kKHPMyXgCYrE2k11ZD31V6Xas?= =?iso-8859-1?q?wk4zrOMiW9vjL149MSL8HQ9Vqm5neYYec1oEAlmyCFISs5TDcbo?= =?iso-8859-1?q?+cu63qKY6M4MfEpnAhZBknnLtWfaRKdEGijOGCmhrIfPYqrNp0/?= =?iso-8859-1?q?pdK7558rCBYXuu/kv22ie1Y8kDGu7jtqDSQUWbH1FrCJKdEAHrl?= =?iso-8859-1?q?NvfKJc/U5SQ36EV9rZSFhNZSKJxnpBPITZ6v6/Eiek16sQ2Onss?= =?iso-8859-1?q?3wB9LOg0JijaRGRrOBf1jIVkmd5PypRbUgZNmhYJy0ZJbiWhQO9?= =?iso-8859-1?q?FTuCVWyngXJSU/2YeE/Czj/ngAPv7GVdAMTQDv9H6YFLmFiMKic?= =?iso-8859-1?q?C487Z3Nb4lUUcsal0vBwysRK/65USop7j69ahsuuNwVyEufFz3W?= =?iso-8859-1?q?D0a3Mc4CYm7NxYUluHY2Nf5ke4YCP0q2fyeLMhMNRsVIczCbu71?= =?iso-8859-1?q?aG7YhmS+Qc6FfFNhKD1WPCfgsY0tigNB6ObV8VIZBkFE7i/XsCX?= =?iso-8859-1?q?eee1hKLStM3wF65CrVHWNJqoF2wIj7Uy8lzra6YyoBn/TFGgmpD?= =?iso-8859-1?q?Fm0RuRHwVwlxTBVgHTTfimAADg9UDULYE7n93y8WPOYBhwBF/BT?= =?iso-8859-1?q?ZWEA7yjGVq83UfkN80cBWfz0p16ttD+uH3Q0MbdsAMiqITMlW0M?= =?iso-8859-1?q?Kem52LC47YY3aMhAZ98urQlkJtvayzCN3i+XwLPBhwg=3D=3D?= x-microsoft-antispam-prvs: x-forefront-prvs: 0954EE4910 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(376002)(396003)(39860400002)(346002)(366004)(199004)(189003)(486006)(86362001)(446003)(2616005)(4326008)(2351001)(478600001)(2906002)(105586002)(106356001)(11346002)(107886003)(476003)(68736007)(6916009)(54906003)(316002)(25786009)(6506007)(26005)(102836004)(386003)(53936002)(186003)(6116002)(3846002)(52116002)(99286004)(97736004)(2501003)(256004)(81156014)(6512007)(6486002)(50226002)(5640700003)(81166006)(305945005)(8936002)(7736002)(8676002)(1730700003)(14454004)(76176011)(1076003)(5660300002)(71190400001)(71200400001)(66066001)(15650500001)(14444005)(36756003)(6436002); DIR:OUT; SFP:1101; SCL:1; SRVR:AM6PR05MB4871; H:AM6PR05MB5240.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: uLduLra+dn7cETg41dP6JtRU3PiOw4Z/DddBH/7eBsFxhsIXTwKB2jN/CBUMIatl83eF1wVPENAKaSvDzfcRWJ3xbSVc9GwYPWuSdUP/Uy85F6qpvVmANnPzv6KvcCIcGGYr0C+CLv1GTPYxSyuMmNvbP+pwxiywECj3SO5HYMiHwBpG+Kgo4CLwRJ+kYG71ngWLpVVE3WnKJmjThhoZLUXgVoSj/jNZ/GnRh8aIwkouxW8Ed91jm7H65EOYvK0MED6ZCoBCPJVG10OGpdOrP2pduSeMlPpSxMEGZG8cHWqmjiOJv0RujRdoUiiC1C8yl+GYGf9aMgwLY6OOVqT0SQWgpfPrTBd3xeNkdfGuk3veaZ9YoYCBrY2/6kPaYIFylKrFC3r8ORBxzlGgFAaXyRlR4jXn333Vygz5/Khvmcs= MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1ba73ad0-ae56-4ff2-1cf4-08d6976a25c7 X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Feb 2019 19:32:25.8275 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR05MB4871 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Petr Machata The recommendation for headroom size for 100Gbps port and 100m cable is 101.6KB, reduced accordingly for split ports. The closest higher number evenly divisible by cell size for both Spectrum-1 and Spectrum-2, and such that the number of cells can be further divided by maximum split factor of 4, is 102528 bytes, or 25632 bytes per lane. Update mlxsw_sp_port_pb_init() to compute the headroom taking into account this recommended per-lane value and number of lanes actually dedicated to a given port. Signed-off-by: Petr Machata Signed-off-by: Ido Schimmel --- .../ethernet/mellanox/mlxsw/spectrum_buffers.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c index bb327dfe1336..65ef4a9f6afb 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c @@ -260,24 +260,24 @@ static int mlxsw_sp_sb_pm_occ_query(struct mlxsw_sp *mlxsw_sp, u8 local_port, (unsigned long) pm); } -static const u16 mlxsw_sp_pbs[] = { - [0] = 2 * ETH_FRAME_LEN, - [9] = 2 * MLXSW_PORT_MAX_MTU, -}; - -#define MLXSW_SP_PBS_LEN ARRAY_SIZE(mlxsw_sp_pbs) +/* 1/4 of a headroom necessary for 100Gbps port and 100m cable. */ +#define MLXSW_SP_PB_HEADROOM 25632 #define MLXSW_SP_PB_UNUSED 8 static int mlxsw_sp_port_pb_init(struct mlxsw_sp_port *mlxsw_sp_port) { + const u32 pbs[] = { + [0] = MLXSW_SP_PB_HEADROOM * mlxsw_sp_port->mapping.width, + [9] = 2 * MLXSW_PORT_MAX_MTU, + }; struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp; char pbmc_pl[MLXSW_REG_PBMC_LEN]; int i; mlxsw_reg_pbmc_pack(pbmc_pl, mlxsw_sp_port->local_port, 0xffff, 0xffff / 2); - for (i = 0; i < MLXSW_SP_PBS_LEN; i++) { - u16 size = mlxsw_sp_bytes_cells(mlxsw_sp, mlxsw_sp_pbs[i]); + for (i = 0; i < ARRAY_SIZE(pbs); i++) { + u16 size = mlxsw_sp_bytes_cells(mlxsw_sp, pbs[i]); if (i == MLXSW_SP_PB_UNUSED) continue; From patchwork Wed Feb 20 19:32:29 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 1045556 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="tOwgmYfo"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 444SRx6SFXz9s6w for ; Thu, 21 Feb 2019 06:32:45 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727086AbfBTTco (ORCPT ); Wed, 20 Feb 2019 14:32:44 -0500 Received: from mail-eopbgr00045.outbound.protection.outlook.com ([40.107.0.45]:11872 "EHLO EUR02-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726994AbfBTTck (ORCPT ); Wed, 20 Feb 2019 14:32:40 -0500 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=yfJDAb+FqXQkRxLkIuhDVt0f8uFukp7fEuD8pVpyBXY=; b=tOwgmYfoeZnNKslPyT6tMADRtj+uSM/OdMXGI8vaupB+zJiiUv7efTXBXQMmQibrl/ZCVSxdaOsH9lJ/WGkXmwm5eIacdkb16X7g8058ck6tQw0dq8lA/2w1v9hU3Rh88JcRRQsC6JPv4nUx+BNj6nS3TFvzFtPfscOk2NjeXLU= Received: from AM6PR05MB5240.eurprd05.prod.outlook.com (20.177.196.214) by AM6PR05MB4871.eurprd05.prod.outlook.com (20.177.34.223) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1622.19; Wed, 20 Feb 2019 19:32:29 +0000 Received: from AM6PR05MB5240.eurprd05.prod.outlook.com ([fe80::3542:889c:3a85:3866]) by AM6PR05MB5240.eurprd05.prod.outlook.com ([fe80::3542:889c:3a85:3866%5]) with mapi id 15.20.1643.014; Wed, 20 Feb 2019 19:32:29 +0000 From: Ido Schimmel To: "netdev@vger.kernel.org" CC: "davem@davemloft.net" , Jiri Pirko , Petr Machata , mlxsw , Ido Schimmel Subject: [PATCH net-next 10/10] mlxsw: spectrum_buffers: Reject overlarge headroom size requests Thread-Topic: [PATCH net-next 10/10] mlxsw: spectrum_buffers: Reject overlarge headroom size requests Thread-Index: AQHUyVMEH+Q75KUehUGJ8S21r4seng== Date: Wed, 20 Feb 2019 19:32:29 +0000 Message-ID: <20190220193141.16498-11-idosch@mellanox.com> References: <20190220193141.16498-1-idosch@mellanox.com> In-Reply-To: <20190220193141.16498-1-idosch@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: AM6PR10CA0061.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:209:80::38) To AM6PR05MB5240.eurprd05.prod.outlook.com (2603:10a6:20b:64::22) authentication-results: spf=none (sender IP is ) smtp.mailfrom=idosch@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.20.1 x-originating-ip: [77.138.249.209] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: f8872a84-d5b0-43ae-df60-08d6976a26d1 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600110)(711020)(4605104)(4618075)(2017052603328)(7153060)(7193020); SRVR:AM6PR05MB4871; x-ms-traffictypediagnostic: AM6PR05MB4871: x-microsoft-exchange-diagnostics: =?iso-8859-1?q?1=3BAM6PR05MB4871=3B23?= =?iso-8859-1?q?=3AUhoTvo6uYwvm79dUDvrl8s8F3Sk/srS88AQSIlcyjQJg160O?= =?iso-8859-1?q?HG/+nBhhlCHKXpffM9F8pCn2rXi2YA9KmlBA6W3hru9xfDmCbOf?= =?iso-8859-1?q?SZRYWz/A5/MK6NGP3c8e/aiyyN+oL6fAtcNN5JNg9PGlrXN6/Gz?= =?iso-8859-1?q?zQrbuetY8n9aVyVEnhE6FuTSnNAmAEFAIVwh3OSHbXPlzK+34ZL?= =?iso-8859-1?q?qJPN0Ql8vtfiPe1CFdCQREgv5G4FSiRCd1G/rzZxIODDXbMIrTW?= =?iso-8859-1?q?AF1elnf6zoCICIpiWMuzd4DhyJpUQyzXprN1qsSqe3ZVozB8VnS?= =?iso-8859-1?q?EIIBckHpn8cUPMFEIcpZA9dhVl38yaxzYL1jpTWlDMpN54NrFEC?= =?iso-8859-1?q?afklMlfR7zmA+wrAdjCHYR7qi/BwZItsintweWzeoXSu4D5RPUb?= =?iso-8859-1?q?xNpUtHbcfbocTgMhtNlE6lda2PJN9WidXm4Qis+rJEYK1mBqurh?= =?iso-8859-1?q?rk25HY8zCEqEWl+JnnJN6/7Y6qhft5VKbKAbA52pF6Z4v8kMHT9?= =?iso-8859-1?q?Kx/AeybEf4jebmKLK0kY59SpEBmqCoxZqbbe6kWzXHxujx8dxo7?= =?iso-8859-1?q?OjPsSrqp8WvcOoR9O5odGkrdUw5vxE4m9NcjwC5won8YoQcgl+K?= =?iso-8859-1?q?dvOj5ToyIrG2IXacbhF4+2G9bp4l4I8MSGHuGDFexN89QTG5tje?= =?iso-8859-1?q?kskxMUoFuFNMLUZeMTf+HubE3XwA0cAiWnuZHMymU197cLHTO+l?= =?iso-8859-1?q?jyyiC9nltDuhdzHYvSwxCVzdNHpF2qr9EwFEmKeqEf5Kfd9OTX1?= =?iso-8859-1?q?9Gdb8Sr1JW7T4BYgb899+QDivWgzBNscfMPGp82UoM9A50cckBo?= =?iso-8859-1?q?kOvZHnDaiztEYN1eazfEqRqu6uRJs24nNnbSdgM8FvMMLTGAX35?= =?iso-8859-1?q?KvgksIsg0Ri3DSR5i/h5YmsLN+I4u4fD754NfQG5tsLVlOg+Qxf?= =?iso-8859-1?q?3nLFbnY3t8Glzve7ZQ0xk84+frGmahViwDPGHQba2glg3IZyLOe?= =?iso-8859-1?q?EmfXCW8kyfjZwq6rpemReipXi95qRiH+WTxHAsUvbMj/xL0EP0O?= =?iso-8859-1?q?OZtkxxVouY0eTAqdkQbz07D8N6Mq5EuqgBcn2yFJtq3tNDY08Z3?= =?iso-8859-1?q?pe1cyBVhSQy8fv6Dz/MmHf2q0ltZIJEIllS2j6+lFjRVEy6fyDZ?= =?iso-8859-1?q?l0fGCx4Xyoryym8d66YFtUjzUTYhSv78XklFwgpPH4/Tw2xHPAH?= =?iso-8859-1?q?GR1Uz89P3VMez/CGjZ9AQy0GnExHKUPJ6Myp8MREHpyuE7WLQ/M?= =?iso-8859-1?q?aKPLg5praSVsqyhci0FEL/UAkno6ujTI2q35c0H3H4lGFpzjH7r?= =?iso-8859-1?q?60VcOVXksR66YEe7BoSXsQiVSpTVoRy4gLak8JeRsAnCYf2VZfx?= =?iso-8859-1?q?BjKY1mxQ3seog3SVIGYOwuh9WD0whxx1AI3WqgrYd5w=3D=3D?= x-microsoft-antispam-prvs: x-forefront-prvs: 0954EE4910 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(376002)(396003)(39860400002)(346002)(366004)(199004)(189003)(486006)(86362001)(446003)(2616005)(4326008)(2351001)(478600001)(2906002)(105586002)(106356001)(11346002)(107886003)(476003)(68736007)(6916009)(54906003)(316002)(25786009)(6506007)(26005)(102836004)(386003)(53936002)(186003)(6116002)(3846002)(52116002)(99286004)(97736004)(2501003)(256004)(81156014)(6512007)(6486002)(50226002)(5640700003)(81166006)(305945005)(8936002)(7736002)(8676002)(1730700003)(14454004)(76176011)(1076003)(5660300002)(71190400001)(71200400001)(66066001)(14444005)(36756003)(6436002)(309714004); DIR:OUT; SFP:1101; SCL:1; SRVR:AM6PR05MB4871; H:AM6PR05MB5240.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: BHnAu0v/NaUEFckVaoo0b9LzZIbeWro0jIdPJtwEXTJospoU0xV8ENYGzTUTsNoT3d76r0RMHF86l/zEroJCFqUcLrHIarIEuCvle5yusASW7oMqXN+q2kOA5O/ZqTU43PedkU4XUCRlUziMP45ytjfvXH+i07jnbIQh9I6fm1lFX36OfISeGX8oxX6JXKJfgNKnGe0UEyYSEft7txxKtn6DZN9lhcRPcXd+PLre3NuofF8B+QqpfUJgV8SzCeutO/1MufUUSUTeAG5559drYTQJzsxt2BqFBOGTOF5UGnZ6y1KH3aBzXs8OORQRnF+XKF8+HVF7jbzB80lK5YZCzUvJNbLG/gR0SSvjmXkvbviLFt73GuyXVAXlsr4vvdXfZ/7gCgTWgMTHIic8d1U3D2y+Khr0WjAahoQT7c1lqUQ= MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: f8872a84-d5b0-43ae-df60-08d6976a26d1 X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Feb 2019 19:32:28.0841 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR05MB4871 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Petr Machata cap_max_headroom_size holds maximum headroom size supported. Overstepping that limit might under certain conditions lead to ASIC freeze. Query and store the value, and add mlxsw_sp_sb_max_headroom_cells() for obtaining the stored value. In __mlxsw_sp_port_headroom_set(), reject requests where the total port buffer is larger than the advertised maximum. Signed-off-by: Petr Machata Signed-off-by: Ido Schimmel --- drivers/net/ethernet/mellanox/mlxsw/resources.h | 2 ++ drivers/net/ethernet/mellanox/mlxsw/spectrum.c | 13 ++++++++++++- drivers/net/ethernet/mellanox/mlxsw/spectrum.h | 1 + .../ethernet/mellanox/mlxsw/spectrum_buffers.c | 16 ++++++++++++++++ 4 files changed, 31 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/mellanox/mlxsw/resources.h b/drivers/net/ethernet/mellanox/mlxsw/resources.h index b8b3a01c2a9e..773ef7fdb285 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/resources.h +++ b/drivers/net/ethernet/mellanox/mlxsw/resources.h @@ -26,6 +26,7 @@ enum mlxsw_res_id { MLXSW_RES_ID_MAX_LAG_MEMBERS, MLXSW_RES_ID_MAX_BUFFER_SIZE, MLXSW_RES_ID_CELL_SIZE, + MLXSW_RES_ID_MAX_HEADROOM_SIZE, MLXSW_RES_ID_ACL_MAX_TCAM_REGIONS, MLXSW_RES_ID_ACL_MAX_TCAM_RULES, MLXSW_RES_ID_ACL_MAX_REGIONS, @@ -79,6 +80,7 @@ static u16 mlxsw_res_ids[] = { [MLXSW_RES_ID_MAX_LAG_MEMBERS] = 0x2521, [MLXSW_RES_ID_MAX_BUFFER_SIZE] = 0x2802, /* Bytes */ [MLXSW_RES_ID_CELL_SIZE] = 0x2803, /* Bytes */ + [MLXSW_RES_ID_MAX_HEADROOM_SIZE] = 0x2811, /* Bytes */ [MLXSW_RES_ID_ACL_MAX_TCAM_REGIONS] = 0x2901, [MLXSW_RES_ID_ACL_MAX_TCAM_RULES] = 0x2902, [MLXSW_RES_ID_ACL_MAX_REGIONS] = 0x2903, diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c index c1ec4f89973b..f018b0607dac 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c @@ -852,8 +852,12 @@ int __mlxsw_sp_port_headroom_set(struct mlxsw_sp_port *mlxsw_sp_port, int mtu, u8 pfc_en = !!my_pfc ? my_pfc->pfc_en : 0; u16 delay = !!my_pfc ? my_pfc->delay : 0; char pbmc_pl[MLXSW_REG_PBMC_LEN]; + u32 taken_headroom_cells = 0; + u32 max_headroom_cells; int i, j, err; + max_headroom_cells = mlxsw_sp_sb_max_headroom_cells(mlxsw_sp); + mlxsw_reg_pbmc_pack(pbmc_pl, mlxsw_sp_port->local_port, 0, 0); err = mlxsw_reg_query(mlxsw_sp->core, MLXSW_REG(pbmc), pbmc_pl); if (err) @@ -864,6 +868,7 @@ int __mlxsw_sp_port_headroom_set(struct mlxsw_sp_port *mlxsw_sp_port, int mtu, bool pfc = false; u16 thres_cells; u16 delay_cells; + u16 total_cells; bool lossy; for (j = 0; j < IEEE_8021QAZ_MAX_TCS; j++) { @@ -881,7 +886,13 @@ int __mlxsw_sp_port_headroom_set(struct mlxsw_sp_port *mlxsw_sp_port, int mtu, thres_cells = mlxsw_sp_pg_buf_threshold_get(mlxsw_sp, mtu); delay_cells = mlxsw_sp_pg_buf_delay_get(mlxsw_sp, mtu, delay, pfc, pause_en); - mlxsw_sp_pg_buf_pack(pbmc_pl, i, thres_cells + delay_cells, + total_cells = thres_cells + delay_cells; + + taken_headroom_cells += total_cells; + if (taken_headroom_cells > max_headroom_cells) + return -ENOBUFS; + + mlxsw_sp_pg_buf_pack(pbmc_pl, i, total_cells, thres_cells, lossy); } diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum.h b/drivers/net/ethernet/mellanox/mlxsw/spectrum.h index 976843917c95..8bb83d0facc2 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.h +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.h @@ -373,6 +373,7 @@ int mlxsw_sp_sb_occ_tc_port_bind_get(struct mlxsw_core_port *mlxsw_core_port, u32 *p_cur, u32 *p_max); u32 mlxsw_sp_cells_bytes(const struct mlxsw_sp *mlxsw_sp, u32 cells); u32 mlxsw_sp_bytes_cells(const struct mlxsw_sp *mlxsw_sp, u32 bytes); +u32 mlxsw_sp_sb_max_headroom_cells(const struct mlxsw_sp *mlxsw_sp); extern const struct mlxsw_sp_sb_vals mlxsw_sp1_sb_vals; extern const struct mlxsw_sp_sb_vals mlxsw_sp2_sb_vals; diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c index 65ef4a9f6afb..9a79b5e11597 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c @@ -85,6 +85,7 @@ struct mlxsw_sp_sb { struct mlxsw_sp_sb_pr *prs; struct mlxsw_sp_sb_port *ports; u32 cell_size; + u32 max_headroom_cells; u64 sb_size; }; @@ -113,6 +114,11 @@ u32 mlxsw_sp_bytes_cells(const struct mlxsw_sp *mlxsw_sp, u32 bytes) return DIV_ROUND_UP(bytes, mlxsw_sp->sb->cell_size); } +u32 mlxsw_sp_sb_max_headroom_cells(const struct mlxsw_sp *mlxsw_sp) +{ + return mlxsw_sp->sb->max_headroom_cells; +} + static struct mlxsw_sp_sb_pr *mlxsw_sp_sb_pr_get(struct mlxsw_sp *mlxsw_sp, u16 pool_index) { @@ -789,6 +795,7 @@ const struct mlxsw_sp_sb_vals mlxsw_sp2_sb_vals = { int mlxsw_sp_buffers_init(struct mlxsw_sp *mlxsw_sp) { + u32 max_headroom_size; u16 ing_pool_count; u16 eg_pool_count; int err; @@ -799,12 +806,21 @@ int mlxsw_sp_buffers_init(struct mlxsw_sp *mlxsw_sp) if (!MLXSW_CORE_RES_VALID(mlxsw_sp->core, MAX_BUFFER_SIZE)) return -EIO; + if (!MLXSW_CORE_RES_VALID(mlxsw_sp->core, MAX_HEADROOM_SIZE)) + return -EIO; + mlxsw_sp->sb = kzalloc(sizeof(*mlxsw_sp->sb), GFP_KERNEL); if (!mlxsw_sp->sb) return -ENOMEM; mlxsw_sp->sb->cell_size = MLXSW_CORE_RES_GET(mlxsw_sp->core, CELL_SIZE); mlxsw_sp->sb->sb_size = MLXSW_CORE_RES_GET(mlxsw_sp->core, MAX_BUFFER_SIZE); + max_headroom_size = MLXSW_CORE_RES_GET(mlxsw_sp->core, + MAX_HEADROOM_SIZE); + /* Round down, because this limit must not be overstepped. */ + mlxsw_sp->sb->max_headroom_cells = max_headroom_size / + mlxsw_sp->sb->cell_size; + err = mlxsw_sp_sb_ports_init(mlxsw_sp); if (err) goto err_sb_ports_init;