From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B750FC43381 for ; Wed, 20 Feb 2019 19:32:24 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 826202146E for ; Wed, 20 Feb 2019 19:32:24 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=Mellanox.com header.i=@Mellanox.com header.b="p5TtBAUt" 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;AM6PR05MB4871;23:Vu7iYL0/d1UqNTS977rs9pYTa7IFPry8t8925tk?= =?iso-8859-1?Q?+ZpSF1NNOYzgq/ZmjQP9dpoemRtmlQDNVBV66nZHZ6+p6s0MhS1Ha7ITKO?= =?iso-8859-1?Q?HRuO5xSfWWfW4tKCzXV9CiCIz541HrVRtsLBMqgSyZV/MEfXvXsVIsOvOx?= =?iso-8859-1?Q?RIqfcytgLqtp9xZj40ZtaCdzngfqpr7IXWpmkqaKxPooPLqk4LT62RpRmR?= =?iso-8859-1?Q?Gd9xqEl/ps8MXbevUPmfe04gPFghPxcmtP0hyeNDhdN0phaPEKZuCkA7jS?= =?iso-8859-1?Q?XgyvHTdGFZOpRH9w2pOpVptNj9DC6I1uR4jY+mkpSwHxwOFOMw9QiWRKjR?= =?iso-8859-1?Q?+9ZltMzHdjQUDBWC1oXEgK9Q/vxWBCCIptMmuJscbuHdxwxPkNdnXTqkMz?= =?iso-8859-1?Q?YIem4reAVdCk/JekQty3+4KZnAwIQvezMa6FV2VSq7OlzleQTXaaqDluD5?= =?iso-8859-1?Q?naI/3q21cl/CJk1dQtX/ZcAFDCdNp2LJoVklmnX71QDpsps8llZNrNSree?= =?iso-8859-1?Q?pz4RFzv8/bzJ13ykggcvnA1fBLOJ/BPrwkb6yv6kOXnHaIlVBdh/lwV0YC?= =?iso-8859-1?Q?AHz4j9FG6J1M9V3ZlKKXoH256wwFwzDPAfCPnlj8QV2ZSAZr7BG7RBtl+q?= =?iso-8859-1?Q?AwfdbU2fXh5Wke2C6sdjswi/rkKVrNW3xG8yKqlAYSYFd+pOGj5JEoPxOH?= =?iso-8859-1?Q?gXRBpl6Y7ZszEhS3ioo1tOnkJLpLOKT72Lk9zBNWqAo4JWzAUjbwKdmqx4?= =?iso-8859-1?Q?XvIjFMnBXhpjSNdTYANfWdGnSJj63Iz46rrSa4ec5cnJGbzn26gvHQQZuc?= =?iso-8859-1?Q?h9YVpvad1Oo5HsR/AswX3Uxw3Cd9an8W25GuRTsN7amXcSOjgRdOH0RyUW?= =?iso-8859-1?Q?eoD/wO4bWWg7o8bjf3E084aDnBuhUTQ80tROPF2qtk25PVE3x+85ozso/7?= =?iso-8859-1?Q?TrcIsXo+YJnuGhkwuhvNbxr+B3Iu5SbPT9FwstGoFLomgcLsOj7HrwPI08?= =?iso-8859-1?Q?jrcyhFocnxfagUR0Jtx2Q0wFZdk+WPTEno9cctX5foUhBGWkateMBeAoPY?= =?iso-8859-1?Q?rlwqpAz3l5ii0NSvS0CfHuWKvRd7Z0tGq994GfiafiS+L1T/1Ekc7+F1NC?= =?iso-8859-1?Q?h3xdq6ip0p3BVY9t0PuApZIHPlSI/SnV5OSfDPZsfjvFeNakX8Oh/9m03O?= =?iso-8859-1?Q?ljFUEsCljTbkAC865aKSvAdGZUebX8LPmlnqL1FsE+93HnbT5HFKCXKzXV?= =?iso-8859-1?Q?E9k/xzedkWR65yP+MIQa0KzDtPBQFdOImyu+RHxe/J55QDEfPYI6rg2t5e?= =?iso-8859-1?Q?2tZeK6Nn/DalpUD5/ROdgihmkbKLUOrgPAlwsajCdbCM8WX51ax1nsJ492?= =?iso-8859-1?Q?kdNu9aeE=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= Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable 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/drive= rs/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_po= ol_dess[] =3D { 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; }; =20 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_s= p_port *mlxsw_sp_port) return mlxsw_sp_port_pb_prio_init(mlxsw_sp_port); } =20 +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 =3D kcalloc(MLXSW_SP_SB_POOL_DESS_LEN, sizeof(*pms), GFP_KERNEL); + if (!pms) + return -ENOMEM; + sb_port->pms =3D 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 =3D mlxsw_core_max_ports(mlxsw_sp->core); + struct mlxsw_sp_sb_pr *prs; + int i; + int err; =20 mlxsw_sp->sb->ports =3D kcalloc(max_ports, sizeof(struct mlxsw_sp_sb_port), GFP_KERNEL); if (!mlxsw_sp->sb->ports) return -ENOMEM; + + prs =3D kcalloc(MLXSW_SP_SB_POOL_DESS_LEN, sizeof(*prs), GFP_KERNEL); + if (!prs) { + err =3D -ENOMEM; + goto err_alloc_prs; + } + mlxsw_sp->sb->prs =3D prs; + + for (i =3D 0; i < max_ports; i++) { + err =3D 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 >=3D 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; } =20 static void mlxsw_sp_sb_ports_fini(struct mlxsw_sp *mlxsw_sp) { + int max_ports =3D mlxsw_core_max_ports(mlxsw_sp->core); + int i; + + for (i =3D max_ports - 1; i >=3D 0; i--) + mlxsw_sp_sb_port_fini(&mlxsw_sp->sb->ports[i]); + kfree(mlxsw_sp->sb->prs); kfree(mlxsw_sp->sb->ports); } =20 --=20 2.20.1