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 C05ACC282CE for ; Wed, 13 Feb 2019 11:28:59 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 859722073D for ; Wed, 13 Feb 2019 11:28:59 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=Mellanox.com header.i=@Mellanox.com header.b="PWN5IYak" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2403921AbfBML26 (ORCPT ); Wed, 13 Feb 2019 06:28:58 -0500 Received: from mail-eopbgr150041.outbound.protection.outlook.com ([40.107.15.41]:45056 "EHLO EUR01-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1732733AbfBML24 (ORCPT ); Wed, 13 Feb 2019 06:28:56 -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=6fgrPgLygn6571qBNZx2HoolsZ51rs7OudEFUsk74lo=; b=PWN5IYakCXJ5moRxSPur7weL8QQvmhOojUPGZpM8IHGRtgdbtQB0ketG6pgRMe+9pRNvSf6yMo/VNJ/3ah86yX/VkYYNSXU+/PX8dquTXutcRykv3ZHbiYlaUu7E2yHlhCc5ipKyXceIGFFky6z7zvcdHykqF89SyQ8j2DGKfOU= Received: from AM6PR05MB5240.eurprd05.prod.outlook.com (20.177.196.214) by AM6PR05MB6230.eurprd05.prod.outlook.com (20.178.95.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1622.16; Wed, 13 Feb 2019 11:28:49 +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.1601.023; Wed, 13 Feb 2019 11:28:49 +0000 From: Ido Schimmel To: "netdev@vger.kernel.org" CC: "davem@davemloft.net" , Jiri Pirko , "andrew@lunn.ch" , mlxsw , Vadim Pasternak , Ido Schimmel Subject: [PATCH net-next 05/12] mlxsw: core: Set different thermal polling time based on bus frequency capability Thread-Topic: [PATCH net-next 05/12] mlxsw: core: Set different thermal polling time based on bus frequency capability Thread-Index: AQHUw49JA24Bn4CDgkmZw+MdFJUO2w== Date: Wed, 13 Feb 2019 11:28:48 +0000 Message-ID: <20190213112814.32334-6-idosch@mellanox.com> References: <20190213112814.32334-1-idosch@mellanox.com> In-Reply-To: <20190213112814.32334-1-idosch@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: LNXP265CA0090.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:76::30) 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: [193.47.165.251] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 1c424d14-3778-47ca-ea85-08d691a66c3e 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)(4605077)(4618075)(2017052603328)(7153060)(7193020);SRVR:AM6PR05MB6230; x-ms-traffictypediagnostic: AM6PR05MB6230: x-microsoft-exchange-diagnostics: =?iso-8859-1?Q?1;AM6PR05MB6230;23:4tNZGm2HMDKyEE+MVmuEuEbrkSnWjFuWUlbCZu3?= =?iso-8859-1?Q?GlzmBKeqOh3ECu6a0Gai46/8vyHrUpxpwxQ1I/Xp8Sbd4YqKgVzrsRX80k?= =?iso-8859-1?Q?NTznzoqgVPa/2GSfwdglezrEOsK/Q98+CHH/+SpQTIFS0TrPn9NDa8wC5M?= =?iso-8859-1?Q?y1VvCg8UcEH31emR52OGhAE6Hx2dJC0V+RAs2f1DOvVuju5B0hhsXGbfWx?= =?iso-8859-1?Q?WO1pII0xqTzj6BECpd3xQqzqzfc40ocBRhIUTKYDvxwlBafe4Mw6gToMjy?= =?iso-8859-1?Q?SuBvR0JAtYIj0xc7DYHnVgyjVoLrLPzMp8MXC1bLL8pIyKHq/Igcd1uv30?= =?iso-8859-1?Q?wIiLZTSEqGECA2CR2pXnl+BnF6vDMDz4lwvhMT9MJqgVcHQEgaZ2pdaSnB?= =?iso-8859-1?Q?0HcB2v3cAaKgd8eyvKL1g8VyZ7l41L1ukqYdLHMrz0aEm+72IcO8buhdhQ?= =?iso-8859-1?Q?mC2sA+4lOubJLq9bEO01JziiK6zKZXFVQ4TDTul4+TYR67I0QlsT5gjZeA?= =?iso-8859-1?Q?GFFjlYLBYGTC0Utt9xZJE1NkM2wUiZqGdPm1f2SsqHbhRrLDwk5vMB9WKk?= =?iso-8859-1?Q?SYsyyPZCnCOmMThd0jR3gfp8te+kB/JGNBxwshfXhaLD4gLrm7R6eZbZ7y?= =?iso-8859-1?Q?+b5Kh0UiUmId8WtrnQ55TIygdBgh22YhQjB/SE68uEtqjQn7+9XYzAexiE?= =?iso-8859-1?Q?x06OTD782tNVJzK3/2hvx810hC/fXayzZjdZ2ntDLYzL8bt/zzHusNfP80?= =?iso-8859-1?Q?2B92jsJUdb6m+ahNrS3/732KllTelL/MqGgOgAeXbglt2GkCAVoWbTIBG9?= =?iso-8859-1?Q?BW0xGB7/mhy/TVcVIHEGlcGsIJy+7l+E31/Gii5P79Mx9SwMGrjVu2Pq00?= =?iso-8859-1?Q?SenvMxAVfVCf6OoEgWmHjG8QPpJzUmqrJR8LTKEJRT7WvEMgWSHJznyV/h?= =?iso-8859-1?Q?xqIwANur0kKf5IXro513V1H8SffTbsmqWFCL1mX7Jiw5Nhodvgt5spz4Rz?= =?iso-8859-1?Q?vTGTSt0j8cbdyjTz38Y2iPNMtz2Vzf70TCajnFKh93ISp5PNMxiQKKFb4j?= =?iso-8859-1?Q?QYqXQYa7SHXWHZ2zYhxiZyZ+2hGHwUGIgaxoXZCWTT0E5cU8tqBp5J8E+g?= =?iso-8859-1?Q?hXGaIgDvxQ//icgFsHKAMX2TGfwUayGxlX6OmjFyYiWSzhKJKspKmwbEit?= =?iso-8859-1?Q?DEqN20KvQ/aEAy87lReXYbtvEVNcMHGPlvDz40KRQtAZUHO27dasm+2lnh?= =?iso-8859-1?Q?7loafieOojKZJOmxgRoZbAN09oPN+4LJhHih5n7rKO+J0sRwdXuFPwO9Gs?= =?iso-8859-1?Q?buIM+Nwus6jlzb/hevEbvCM84iBTbupJxpFGGDSYISA3x/MH59SZXCf5p7?= =?iso-8859-1?Q?EICzJHMc=3D?= x-microsoft-antispam-prvs: x-forefront-prvs: 094700CA91 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(376002)(366004)(396003)(346002)(136003)(39860400002)(189003)(199004)(26005)(186003)(386003)(6506007)(2616005)(476003)(446003)(11346002)(102836004)(486006)(2906002)(8936002)(106356001)(105586002)(71200400001)(2351001)(71190400001)(50226002)(97736004)(81166006)(8676002)(1730700003)(81156014)(6916009)(305945005)(7736002)(14454004)(478600001)(6116002)(3846002)(86362001)(2501003)(66066001)(14444005)(256004)(68736007)(107886003)(53936002)(6436002)(6512007)(1076003)(36756003)(25786009)(54906003)(316002)(6486002)(4326008)(5640700003)(99286004)(76176011)(52116002);DIR:OUT;SFP:1101;SCL:1;SRVR:AM6PR05MB6230;H:AM6PR05MB5240.eurprd05.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: JnClctzu3lufyVhn3N0/v4EtTQg2YxHxln4dJKmdGecjXwkj3xUU9Vm9zjrnrTvgclMEvlb3KZEPEJKFE3b3IgeB5SlO77V2vabDFqoAVOmdk5tUdnczHT1Y1hlbKEb9ncC7sFLPnC5wglI+ES8c0qkzlUMbfMXd6qONUvnU6P2YqgkVvLMGrFs/mmw/H02SeH3+Z+i7Tb84KgJRLoIiRW3QP4gOmVijWCnftMa2Enb8RdyLNMpf32DcBAGr5pXD9D07gqbOgDdCgv44+g+eaOpItWqxcIXbrps8sS664WcwweiMGltXdVfW6TjVA2Vfa0JMUhEA1ngc7Gmr1XKkZFG+ViWjs4+KDxEqU6IqrTiGuc9ZaoMuU/kd4glIv+/gARCTPGAAnOh8qbwIHi95+wFmEA752YvYbCNF28xN9yM= 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: 1c424d14-3778-47ca-ea85-08d691a66c3e X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Feb 2019 11:28:47.9840 (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: AM6PR05MB6230 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Vadim Pasternak Add low frequency bus capability in order to allow core functionality separation based on bus type. Driver could run over PCIe, which is considered as high frequency bus or I2C, which is considered as low frequency bus. In the last case time setting, for example, for thermal polling interval, should be increased. Use different thermal monitoring based on bus type. For I2C bus time is set to 20 seconds, while for PCIe 1 second polling interval is used. Signed-off-by: Vadim Pasternak Reviewed-by: Jiri Pirko Signed-off-by: Ido Schimmel --- drivers/net/ethernet/mellanox/mlxsw/core.h | 1 + drivers/net/ethernet/mellanox/mlxsw/core_thermal.c | 10 ++++++++-- drivers/net/ethernet/mellanox/mlxsw/i2c.c | 1 + 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlxsw/core.h b/drivers/net/ether= net/mellanox/mlxsw/core.h index c8e16a305969..cd0c6aa0dff9 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/core.h +++ b/drivers/net/ethernet/mellanox/mlxsw/core.h @@ -344,6 +344,7 @@ struct mlxsw_bus_info { struct mlxsw_fw_rev fw_rev; u8 vsd[MLXSW_CMD_BOARDINFO_VSD_LEN]; u8 psid[MLXSW_CMD_BOARDINFO_PSID_LEN]; + u8 low_frequency; }; =20 struct mlxsw_hwmon; diff --git a/drivers/net/ethernet/mellanox/mlxsw/core_thermal.c b/drivers/n= et/ethernet/mellanox/mlxsw/core_thermal.c index 61f897b40f82..b1f9b459766c 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/core_thermal.c +++ b/drivers/net/ethernet/mellanox/mlxsw/core_thermal.c @@ -13,6 +13,7 @@ #include "core.h" =20 #define MLXSW_THERMAL_POLL_INT 1000 /* ms */ +#define MLXSW_THERMAL_SLOW_POLL_INT 20000 /* ms */ #define MLXSW_THERMAL_MAX_TEMP 110000 /* 110C */ #define MLXSW_THERMAL_MAX_STATE 10 #define MLXSW_THERMAL_MAX_DUTY 255 @@ -76,6 +77,7 @@ struct mlxsw_thermal { struct mlxsw_core *core; const struct mlxsw_bus_info *bus_info; struct thermal_zone_device *tzdev; + int polling_delay; struct thermal_cooling_device *cdevs[MLXSW_MFCR_PWMS_MAX]; u8 cooling_levels[MLXSW_THERMAL_MAX_STATE + 1]; struct mlxsw_thermal_trip trips[MLXSW_THERMAL_NUM_TRIPS]; @@ -172,7 +174,7 @@ static int mlxsw_thermal_set_mode(struct thermal_zone_d= evice *tzdev, mutex_lock(&tzdev->lock); =20 if (mode =3D=3D THERMAL_DEVICE_ENABLED) - tzdev->polling_delay =3D MLXSW_THERMAL_POLL_INT; + tzdev->polling_delay =3D thermal->polling_delay; else tzdev->polling_delay =3D 0; =20 @@ -423,13 +425,17 @@ int mlxsw_thermal_init(struct mlxsw_core *core, thermal->cooling_levels[i] =3D max(MLXSW_THERMAL_SPEED_MIN_LEVEL, i); =20 + thermal->polling_delay =3D bus_info->low_frequency ? + MLXSW_THERMAL_SLOW_POLL_INT : + MLXSW_THERMAL_POLL_INT; + thermal->tzdev =3D thermal_zone_device_register("mlxsw", MLXSW_THERMAL_NUM_TRIPS, MLXSW_THERMAL_TRIP_MASK, thermal, &mlxsw_thermal_ops, NULL, 0, - MLXSW_THERMAL_POLL_INT); + thermal->polling_delay); if (IS_ERR(thermal->tzdev)) { err =3D PTR_ERR(thermal->tzdev); dev_err(dev, "Failed to register thermal zone\n"); diff --git a/drivers/net/ethernet/mellanox/mlxsw/i2c.c b/drivers/net/ethern= et/mellanox/mlxsw/i2c.c index 798bd5aca384..a87ca6b6580d 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/i2c.c +++ b/drivers/net/ethernet/mellanox/mlxsw/i2c.c @@ -503,6 +503,7 @@ static int mlxsw_i2c_probe(struct i2c_client *client, mlxsw_i2c->bus_info.device_kind =3D id->name; mlxsw_i2c->bus_info.device_name =3D client->name; mlxsw_i2c->bus_info.dev =3D &client->dev; + mlxsw_i2c->bus_info.low_frequency =3D true; mlxsw_i2c->dev =3D &client->dev; =20 err =3D mlxsw_core_bus_device_register(&mlxsw_i2c->bus_info, --=20 2.20.1