From patchwork Wed Feb 13 11:28:44 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 1041190 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="wLwya3XT"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43zy2r5Rlsz9s7h for ; Wed, 13 Feb 2019 22:28:52 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2403910AbfBML2v (ORCPT ); Wed, 13 Feb 2019 06:28:51 -0500 Received: from mail-eopbgr40047.outbound.protection.outlook.com ([40.107.4.47]:46912 "EHLO EUR03-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1732913AbfBML2u (ORCPT ); Wed, 13 Feb 2019 06:28:50 -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=337l5Yi7xnaG3a3vNpNfKHJi1D0jikavjEG25khTm+g=; b=wLwya3XTFk0tcwzMCD6JOLyT6OEGVwa1maC3/V+bTP7ds1pasXyPuKtbuoXHlF6sTp6MbHlZ5j3/5RQtaZzTapFm+/dykGstnE0hLAuPYvh/v9zw3dbSf64B6Kpj3IrRE4xP3ekXmWxrH/7jOANxHv00TcruNPIxN/WmccuqlTo= Received: from AM6PR05MB5240.eurprd05.prod.outlook.com (20.177.196.214) by AM6PR05MB4501.eurprd05.prod.outlook.com (52.135.163.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1601.17; Wed, 13 Feb 2019 11:28:44 +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:44 +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 01/12] mlxsw: spectrum: Move QSFP EEPROM definitions to common location Thread-Topic: [PATCH net-next 01/12] mlxsw: spectrum: Move QSFP EEPROM definitions to common location Thread-Index: AQHUw49HlK6pmcOFG0iokmAheoPLUw== Date: Wed, 13 Feb 2019 11:28:44 +0000 Message-ID: <20190213112814.32334-2-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: f61e3f20-4cbf-441f-1d57-08d691a669a2 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:AM6PR05MB4501; x-ms-traffictypediagnostic: AM6PR05MB4501: x-microsoft-exchange-diagnostics: =?iso-8859-1?q?1=3BAM6PR05MB4501=3B23?= =?iso-8859-1?q?=3AEIrmJp0xEOGZSnJY2gMEbAqh14KL0wRjorOsA6qhiJJIpy2K?= =?iso-8859-1?q?2aEBK8jnmIybJLsduXS511fx4o+olX1+XamIaCJEJ4FaWTv0BN5?= =?iso-8859-1?q?6C6PrB1uP0gmjCJU4yObSpX1Fy+a/7PSqJMOUvrhrVbOEHXKkSc?= =?iso-8859-1?q?RIrk5xIsGCeJnIvSijNWMdDaFtRxGmORPmk6rWsHMk0wRPaE6CL?= =?iso-8859-1?q?POrViAEwFC9kHOZjrbAz51w5XxurNLUMgdxjbDuA5v8VMoH+T/l?= =?iso-8859-1?q?A9S4M3jU+/Y3pFIugrgzXacjKP1yVsAGrqhF2qs6VgpIubiMQ2t?= =?iso-8859-1?q?OWi0aJaVC6BBpC556lqDFjpR222GOFUkH9hB+9VTpdHuGTxylt8?= =?iso-8859-1?q?sYWoJPOPvRL2zqTt8w0vMPajtikhVJhTYX+mtGEoG5xAN8IyLcg?= =?iso-8859-1?q?Zv6FXPh0BLEKDAUZVzlQj4yHmvjbJwmTsmwC39+DzmzQBkPZmce?= =?iso-8859-1?q?pOZpDUbr1pDW8NdhvGZ0V55njdKR50WZaeucUvjvOGtMBDRzOpf?= =?iso-8859-1?q?zwQn8QyC28pNGsWTktG74GT6SI3Z0pnJ9pv7mlw4wL6+jm2A3kD?= =?iso-8859-1?q?hOHOarR4AB3+z9+3VtyPIRltlJsTrdJgF3OHKe1HYgj7YVwTdVf?= =?iso-8859-1?q?Q9g3mQw06KdEFXcRt5iF1P4+et8CDTCHTs8vnb0mrbkxOTKTM5v?= =?iso-8859-1?q?9K+rm9qcuXcarVe3/KmmQLx3n7/Sw26Bd03wVRO4CrhJwDLhfRV?= =?iso-8859-1?q?Idnt3pCnNpTY9nwpQB8yivy0+rQZbzk3f4OO63eGzcnXXXz56uq?= =?iso-8859-1?q?K7XAWG6f5qaTjKE8TWFRQ34H6djGqSwtKZVZRbGCecbCNO/8TeS?= =?iso-8859-1?q?+q340OWqdp0ATJcE/w0TEvP+ap+gGpLmxtqrfVLhqwhr0JFWKk/?= =?iso-8859-1?q?q0a3htY+fXYFUNmrHLFXVxiT8nGRKFfEQVtlpyo7e7GSnVgUGZy?= =?iso-8859-1?q?DXJzAzGlbsz+n+SsI2h2ukQY0/WSd3S2kvBJNl/53UKROFsLcHb?= =?iso-8859-1?q?lliTyn//2LOwRfMmx68b0616X1dVV4OyPtxbyZmFpgEaaYMXMMH?= =?iso-8859-1?q?arxFbDaFqs5c8myuIecl8Ewr9oA0z8vI4DpzduPiUe9KGa4CBGj?= =?iso-8859-1?q?//NLLNC/uf9dVEwNQR6KVI/BRyXPQXKJ6t7u/w05ZeNOo49jlO2?= =?iso-8859-1?q?5m7pn6rGXfush5Xdf8LJjbxMmX3cFJGKw6ce+Ju8+1dhdiGpoU4?= =?iso-8859-1?q?lniulaQBBjFrysIiSp6uxsswn626/EZeL+wog+zqoNGGpmFVWRG?= =?iso-8859-1?q?sx+jjAdCUAO9A0Norau5NPBuMKcHGl/+B1eprqW0wHkItp7wXfg?= =?iso-8859-1?q?k6QfbwEKWXVSO6mz8hRKVPbPEwAHU5x+ioJq1LcqS1ZDycSaWVL?= =?iso-8859-1?q?BlomCYAbXWnCvA15z/ggf?= x-microsoft-antispam-prvs: x-forefront-prvs: 094700CA91 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(366004)(396003)(376002)(346002)(39860400002)(189003)(199004)(6116002)(256004)(3846002)(2501003)(76176011)(2906002)(217873002)(14444005)(99286004)(52116002)(97736004)(26005)(186003)(476003)(2616005)(106356001)(446003)(11346002)(105586002)(2351001)(25786009)(4326008)(86362001)(102836004)(71200400001)(8936002)(486006)(478600001)(1730700003)(66066001)(14454004)(71190400001)(53936002)(36756003)(81156014)(6486002)(107886003)(54906003)(68736007)(7736002)(6436002)(5640700003)(81166006)(305945005)(316002)(6506007)(1076003)(386003)(6916009)(8676002)(6512007)(50226002); DIR:OUT; SFP:1101; SCL:1; SRVR:AM6PR05MB4501; 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: B6ZDoadpqIno8Kbkyd4zTcw2Ma3T1yiV3ylljFkCvITWPLy+XX0815UrVAghM4sdhN13cYoV00n6RVUu1B7SUzu7ApQB4dEGShyLwFYtcix2drhraztrcVy9zz7LXpnJkIYhXnS4mjxc8oJ9EBV4s1XmFKMSf9cY9U+QGgQGXtOu9RjE7igC4+PoI1SxAT53G5Qar1iSJ9GkorQ4HJpSa9TTo+zg5obCv7kaZ71NTD7vC042P7tbOB2GfUX86QHZS8Mps69hcjyzR40An30AlEOJ/X6iemlwU+h7W55PMrnKzeUEcRldDTyhlooglJKewfCkgeoKA4vtJZ4RbxUi4DtVgATOa8IVS3vIDvMWiuZ9weVnfsbLIkNFXwYtnN5eX6zDgad8LLMdLR9bQajbwe528aMbpygEz6TieORlX1w= MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: f61e3f20-4cbf-441f-1d57-08d691a669a2 X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Feb 2019 11:28:43.5950 (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: AM6PR05MB4501 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Vadim Pasternak Move QSFP EEPROM definitions to common location from the spectrum driver in order to make them available for other mlxsw modules. They are common for all kind of chips and have relation to SFF specifications 8024, 8436, 8472, 8636, rather than to chip type. Signed-off-by: Vadim Pasternak Reviewed-by: Jiri Pirko Signed-off-by: Ido Schimmel --- drivers/net/ethernet/mellanox/mlxsw/reg.h | 32 +++++++++- .../net/ethernet/mellanox/mlxsw/spectrum.c | 62 +++++++------------ 2 files changed, 52 insertions(+), 42 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlxsw/reg.h b/drivers/net/ethernet/mellanox/mlxsw/reg.h index 227720ce3982..1190a6a501a5 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/reg.h +++ b/drivers/net/ethernet/mellanox/mlxsw/reg.h @@ -8055,13 +8055,41 @@ MLXSW_ITEM32(reg, mcia, device_address, 0x04, 0, 16); */ MLXSW_ITEM32(reg, mcia, size, 0x08, 0, 16); -#define MLXSW_SP_REG_MCIA_EEPROM_SIZE 48 +#define MLXSW_REG_MCIA_EEPROM_PAGE_LENGTH 256 +#define MLXSW_REG_MCIA_EEPROM_SIZE 48 +#define MLXSW_REG_MCIA_I2C_ADDR_LOW 0x50 +#define MLXSW_REG_MCIA_I2C_ADDR_HIGH 0x51 +#define MLXSW_REG_MCIA_PAGE0_LO_OFF 0xa0 +#define MLXSW_REG_MCIA_TH_ITEM_SIZE 2 +#define MLXSW_REG_MCIA_TH_PAGE_NUM 3 +#define MLXSW_REG_MCIA_PAGE0_LO 0 +#define MLXSW_REG_MCIA_TH_PAGE_OFF 0x80 + +enum mlxsw_reg_mcia_eeprom_module_info_rev_id { + MLXSW_REG_MCIA_EEPROM_MODULE_INFO_REV_ID_UNSPC = 0x00, + MLXSW_REG_MCIA_EEPROM_MODULE_INFO_REV_ID_8436 = 0x01, + MLXSW_REG_MCIA_EEPROM_MODULE_INFO_REV_ID_8636 = 0x03, +}; + +enum mlxsw_reg_mcia_eeprom_module_info_id { + MLXSW_REG_MCIA_EEPROM_MODULE_INFO_ID_SFP = 0x03, + MLXSW_REG_MCIA_EEPROM_MODULE_INFO_ID_QSFP = 0x0C, + MLXSW_REG_MCIA_EEPROM_MODULE_INFO_ID_QSFP_PLUS = 0x0D, + MLXSW_REG_MCIA_EEPROM_MODULE_INFO_ID_QSFP28 = 0x11, + MLXSW_REG_MCIA_EEPROM_MODULE_INFO_ID_QSFP_DD = 0x18, +}; + +enum mlxsw_reg_mcia_eeprom_module_info { + MLXSW_REG_MCIA_EEPROM_MODULE_INFO_ID, + MLXSW_REG_MCIA_EEPROM_MODULE_INFO_REV_ID, + MLXSW_REG_MCIA_EEPROM_MODULE_INFO_SIZE, +}; /* reg_mcia_eeprom * Bytes to read/write. * Access: RW */ -MLXSW_ITEM_BUF(reg, mcia, eeprom, 0x10, MLXSW_SP_REG_MCIA_EEPROM_SIZE); +MLXSW_ITEM_BUF(reg, mcia, eeprom, 0x10, MLXSW_REG_MCIA_EEPROM_SIZE); static inline void mlxsw_reg_mcia_pack(char *payload, u8 module, u8 lock, u8 page_number, u16 device_addr, diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c index 9686d3822b92..abac923a8d04 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c @@ -2723,23 +2723,23 @@ static int mlxsw_sp_query_module_eeprom(struct mlxsw_sp_port *mlxsw_sp_port, unsigned int *p_read_size) { struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp; - char eeprom_tmp[MLXSW_SP_REG_MCIA_EEPROM_SIZE]; + char eeprom_tmp[MLXSW_REG_MCIA_EEPROM_SIZE]; char mcia_pl[MLXSW_REG_MCIA_LEN]; u16 i2c_addr; int status; int err; - size = min_t(u16, size, MLXSW_SP_REG_MCIA_EEPROM_SIZE); + size = min_t(u16, size, MLXSW_REG_MCIA_EEPROM_SIZE); - if (offset < MLXSW_SP_EEPROM_PAGE_LENGTH && - offset + size > MLXSW_SP_EEPROM_PAGE_LENGTH) + if (offset < MLXSW_REG_MCIA_EEPROM_PAGE_LENGTH && + offset + size > MLXSW_REG_MCIA_EEPROM_PAGE_LENGTH) /* Cross pages read, read until offset 256 in low page */ - size = MLXSW_SP_EEPROM_PAGE_LENGTH - offset; + size = MLXSW_REG_MCIA_EEPROM_PAGE_LENGTH - offset; - i2c_addr = MLXSW_SP_I2C_ADDR_LOW; - if (offset >= MLXSW_SP_EEPROM_PAGE_LENGTH) { - i2c_addr = MLXSW_SP_I2C_ADDR_HIGH; - offset -= MLXSW_SP_EEPROM_PAGE_LENGTH; + i2c_addr = MLXSW_REG_MCIA_I2C_ADDR_LOW; + if (offset >= MLXSW_REG_MCIA_EEPROM_PAGE_LENGTH) { + i2c_addr = MLXSW_REG_MCIA_I2C_ADDR_HIGH; + offset -= MLXSW_REG_MCIA_EEPROM_PAGE_LENGTH; } mlxsw_reg_mcia_pack(mcia_pl, mlxsw_sp_port->mapping.module, @@ -2760,55 +2760,37 @@ static int mlxsw_sp_query_module_eeprom(struct mlxsw_sp_port *mlxsw_sp_port, return 0; } -enum mlxsw_sp_eeprom_module_info_rev_id { - MLXSW_SP_EEPROM_MODULE_INFO_REV_ID_UNSPC = 0x00, - MLXSW_SP_EEPROM_MODULE_INFO_REV_ID_8436 = 0x01, - MLXSW_SP_EEPROM_MODULE_INFO_REV_ID_8636 = 0x03, -}; - -enum mlxsw_sp_eeprom_module_info_id { - MLXSW_SP_EEPROM_MODULE_INFO_ID_SFP = 0x03, - MLXSW_SP_EEPROM_MODULE_INFO_ID_QSFP = 0x0C, - MLXSW_SP_EEPROM_MODULE_INFO_ID_QSFP_PLUS = 0x0D, - MLXSW_SP_EEPROM_MODULE_INFO_ID_QSFP28 = 0x11, -}; - -enum mlxsw_sp_eeprom_module_info { - MLXSW_SP_EEPROM_MODULE_INFO_ID, - MLXSW_SP_EEPROM_MODULE_INFO_REV_ID, - MLXSW_SP_EEPROM_MODULE_INFO_SIZE, -}; - static int mlxsw_sp_get_module_info(struct net_device *netdev, struct ethtool_modinfo *modinfo) { struct mlxsw_sp_port *mlxsw_sp_port = netdev_priv(netdev); - u8 module_info[MLXSW_SP_EEPROM_MODULE_INFO_SIZE]; + u8 module_info[MLXSW_REG_MCIA_EEPROM_MODULE_INFO_SIZE]; + u16 offset = MLXSW_REG_MCIA_EEPROM_MODULE_INFO_SIZE; u8 module_rev_id, module_id; unsigned int read_size; int err; - err = mlxsw_sp_query_module_eeprom(mlxsw_sp_port, 0, - MLXSW_SP_EEPROM_MODULE_INFO_SIZE, + err = mlxsw_sp_query_module_eeprom(mlxsw_sp_port, 0, offset, module_info, &read_size); if (err) return err; - if (read_size < MLXSW_SP_EEPROM_MODULE_INFO_SIZE) + if (read_size < offset) return -EIO; - module_rev_id = module_info[MLXSW_SP_EEPROM_MODULE_INFO_REV_ID]; - module_id = module_info[MLXSW_SP_EEPROM_MODULE_INFO_ID]; + module_rev_id = module_info[MLXSW_REG_MCIA_EEPROM_MODULE_INFO_REV_ID]; + module_id = module_info[MLXSW_REG_MCIA_EEPROM_MODULE_INFO_ID]; switch (module_id) { - case MLXSW_SP_EEPROM_MODULE_INFO_ID_QSFP: + case MLXSW_REG_MCIA_EEPROM_MODULE_INFO_ID_QSFP: modinfo->type = ETH_MODULE_SFF_8436; modinfo->eeprom_len = ETH_MODULE_SFF_8436_LEN; break; - case MLXSW_SP_EEPROM_MODULE_INFO_ID_QSFP_PLUS: - case MLXSW_SP_EEPROM_MODULE_INFO_ID_QSFP28: - if (module_id == MLXSW_SP_EEPROM_MODULE_INFO_ID_QSFP28 || - module_rev_id >= MLXSW_SP_EEPROM_MODULE_INFO_REV_ID_8636) { + case MLXSW_REG_MCIA_EEPROM_MODULE_INFO_ID_QSFP_PLUS: /* fall-through */ + case MLXSW_REG_MCIA_EEPROM_MODULE_INFO_ID_QSFP28: + if (module_id == MLXSW_REG_MCIA_EEPROM_MODULE_INFO_ID_QSFP28 || + module_rev_id >= + MLXSW_REG_MCIA_EEPROM_MODULE_INFO_REV_ID_8636) { modinfo->type = ETH_MODULE_SFF_8636; modinfo->eeprom_len = ETH_MODULE_SFF_8636_LEN; } else { @@ -2816,7 +2798,7 @@ static int mlxsw_sp_get_module_info(struct net_device *netdev, modinfo->eeprom_len = ETH_MODULE_SFF_8436_LEN; } break; - case MLXSW_SP_EEPROM_MODULE_INFO_ID_SFP: + case MLXSW_REG_MCIA_EEPROM_MODULE_INFO_ID_SFP: modinfo->type = ETH_MODULE_SFF_8472; modinfo->eeprom_len = ETH_MODULE_SFF_8472_LEN; break; From patchwork Wed Feb 13 11:28:45 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 1041193 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="tDpWMnyD"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43zy2y369wz9s7h for ; Wed, 13 Feb 2019 22:28:58 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2403911AbfBML2z (ORCPT ); Wed, 13 Feb 2019 06:28:55 -0500 Received: from mail-eopbgr40047.outbound.protection.outlook.com ([40.107.4.47]:46912 "EHLO EUR03-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2403894AbfBML2x (ORCPT ); Wed, 13 Feb 2019 06:28:53 -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=aJKHTt35b4BCt6HOuqEHjnGYUYlZ3uFU5d2juqaNnUE=; b=tDpWMnyDvPg23nbukl640ZOo+V5IgypFq3Yul8DguKXpGxzWs6VkzIQEuy5L79Kv1Xvde2da8/Wkl+173BdfH0mHH+tgX5ZqrAOw/f/QlDkWHQjewOFU866pa+qfsWAmJM6L84RQkE3XG5mtvO9Fqldx3oA1rQ02DEFl2NmEX08= Received: from AM6PR05MB5240.eurprd05.prod.outlook.com (20.177.196.214) by AM6PR05MB4501.eurprd05.prod.outlook.com (52.135.163.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1601.17; Wed, 13 Feb 2019 11:28:45 +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:45 +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 02/12] mlxsw: reg: Add Management Temperature Bulk Register Thread-Topic: [PATCH net-next 02/12] mlxsw: reg: Add Management Temperature Bulk Register Thread-Index: AQHUw49IWpuE1EpTBUC0HA95AdqyYA== Date: Wed, 13 Feb 2019 11:28:45 +0000 Message-ID: <20190213112814.32334-3-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: 79f77ffc-d689-4728-0897-08d691a66a50 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:AM6PR05MB4501; x-ms-traffictypediagnostic: AM6PR05MB4501: x-microsoft-exchange-diagnostics: =?iso-8859-1?q?1=3BAM6PR05MB4501=3B23?= =?iso-8859-1?q?=3AVhlicfvLc+0Wt/YYAa9CWadqX8ANKQr8UhJgW6noW/WJXK90?= =?iso-8859-1?q?R0ZG0eDJQ79aSgNE5SiUHHvJjGxLzSFkOnhj23e6vdpCwkbZlIu?= =?iso-8859-1?q?xwKyoV2cCG5LMVpeCWx5DxoOJq4Nv044voM/5e6EZ3UguHjgSIA?= =?iso-8859-1?q?Y+CDclBJEsxlPNu3vkZOv7gFySKBWrXrjNyM2RA8RRz18LKZiOf?= =?iso-8859-1?q?1Boa+XsnZT4o+slKyJxIa0BsGOHkNFkRionbIjRfD+QX9bUPuJA?= =?iso-8859-1?q?N6cwObuIn4hmnNEb+Z7rOhaEjoJXtSlo5fa7gEcqiPLYfkhksHI?= =?iso-8859-1?q?9OtLpmk2tdwHF1o4iZ0pASRHF6wjOgs/fUBYKPmzPvNQP4YNGE4?= =?iso-8859-1?q?5slRXybulDoae6xStmHUtmDMNzlSmuy8hBa5AN4xELajqeuepnC?= =?iso-8859-1?q?F2x4poOz0IL+WR8FVenlm4khGiiFQDcuWd+ekmvptVG6nZGQwJ9?= =?iso-8859-1?q?MAQVoaVdA6w6fIbjv/Z40lHYedJpcO3QLVAtsFq2GQaGh7Ro5Nw?= =?iso-8859-1?q?O2razu1btVTUJGRZs4iDpgfUIzHs1/mNEWW/EcxLAGcqDvJm/me?= =?iso-8859-1?q?zYKgdPfCs/9xSlg84e5dOfTKksgb0L5VnTxfU96Ae4JtRXnkM32?= =?iso-8859-1?q?Xwa7XGuk/rpNhJZ6jhc2yDWEzBEK1Q03ahMW+GnuFK7DT5PiGIN?= =?iso-8859-1?q?aPDnL4WFeFVXR9yT6oti2yDY6+T4OyR7da6M+b80KgCMhATfHLw?= =?iso-8859-1?q?0IMAktrDK83mEFsORmvFMbOi0HOtiVcXGezy4CQOW/AtQrXbZ39?= =?iso-8859-1?q?leme1LEEs4vZtArJc91L3XB0kuTNmYfYvpcfLz+x4dAseoG/ab7?= =?iso-8859-1?q?SdO9mseahQ/QV4m1zJJp/UmIEQYfNm7C1pTDZ5iyb05nom6MEf1?= =?iso-8859-1?q?DBb42NECwBMw8Sba4zOPbwCVx+ODmS6YEdnEwVuAblYcnDrW9/M?= =?iso-8859-1?q?DY5YWzCrDGBK3maKoIrhZaICg9ZphNbpxY0ZdUWqBZxYBperFHR?= =?iso-8859-1?q?UZCOA6uCiPt9gWPfIs6E9ydg3Ckv+vAyDmU86tRZloCkLIUdpne?= =?iso-8859-1?q?pk+OX7ZedBDGwADYy5SlP0xJEHIpA7WlaTje/DNqdgvh/q9g6RS?= =?iso-8859-1?q?RUbjZ49iNJ0Pd3vfRzuM/I2bsO973I6ujfs5gx1Q+64pFYf4f4a?= =?iso-8859-1?q?MvnDR8VcLme2G3ZdZHM1JZzxQZ3vcYC+mm6gkGnb40OPvYhW0yW?= =?iso-8859-1?q?jioC6aY8YCCo6T091d+qblpxCWEvgUx8oyoHr5VXKJIWcaOUaKl?= =?iso-8859-1?q?EIeBAVagmm3Ak12wAyL9gyPGt6W8lYkhQOz1KgAlK+ZGvpm+TWk?= =?iso-8859-1?q?YezCtCES5IUiUoC8ao10NNxxMMTlrZ+wPqwqKDjq9Rh/2qg9I1A?= =?iso-8859-1?q?=3D?= x-microsoft-antispam-prvs: x-forefront-prvs: 094700CA91 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(366004)(396003)(376002)(346002)(39860400002)(189003)(199004)(6116002)(256004)(3846002)(2501003)(76176011)(2906002)(14444005)(99286004)(52116002)(97736004)(26005)(186003)(476003)(2616005)(106356001)(446003)(11346002)(105586002)(2351001)(25786009)(4326008)(86362001)(102836004)(71200400001)(8936002)(486006)(478600001)(1730700003)(66066001)(14454004)(71190400001)(53936002)(36756003)(81156014)(6486002)(107886003)(54906003)(68736007)(7736002)(6436002)(5640700003)(81166006)(305945005)(316002)(6506007)(1076003)(386003)(6916009)(8676002)(6512007)(50226002); DIR:OUT; SFP:1101; SCL:1; SRVR:AM6PR05MB4501; 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: 0QOTM1M+2z14W0J3j1RwwWWycfiutf77M1pkkVkPEOXbbMErEyTpkGICg+AdxbLuL5pXD+nSWP7j2JDG/EO8b2+EWoST8hoktM3gvt38hO5EFBhwgtYD0nxpY8Yb155FfChqVFnSVxGVGbsGH24GCc9ogJg9bbkTQdBfQyy/OBCBcQBF+ZViycsy9UtKH3DbMbNeWo+r0gZXSyQB7sgtqrBYn7tPiBZ5vTQgEWrMpBio4aVbzOgHWO7lZ4vp2VQH/3dk80Iu6K8M8N6IMeMBYe9VvGwoqpHkkhH5RCa3cIF4l8W4GCiZsYach7/iLK0GfzyFSxavSXM7r2cnqL1fLDRm736LrqhTiauZDE0dtdohVbhej7wIZSdE9WGcc6AwOh72FYkBx2aeV9cjlC66p2spMKL1VK79FJejPDR9zJI= MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 79f77ffc-d689-4728-0897-08d691a66a50 X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Feb 2019 11:28:44.7378 (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: AM6PR05MB4501 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Vadim Pasternak Add MTBR (Management Temperature Bulk Register), which is used for port temperature reading in a bulk mode. Signed-off-by: Vadim Pasternak Reviewed-by: Jiri Pirko Signed-off-by: Ido Schimmel --- drivers/net/ethernet/mellanox/mlxsw/reg.h | 75 +++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/drivers/net/ethernet/mellanox/mlxsw/reg.h b/drivers/net/ethernet/mellanox/mlxsw/reg.h index 1190a6a501a5..13856f40b8a7 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/reg.h +++ b/drivers/net/ethernet/mellanox/mlxsw/reg.h @@ -8001,6 +8001,80 @@ static inline void mlxsw_reg_mtmp_unpack(char *payload, unsigned int *p_temp, mlxsw_reg_mtmp_sensor_name_memcpy_from(payload, sensor_name); } +/* MTBR - Management Temperature Bulk Register + * ------------------------------------------- + * This register is used for bulk temperature reading. + */ +#define MLXSW_REG_MTBR_ID 0x900F +#define MLXSW_REG_MTBR_BASE_LEN 0x10 /* base length, without records */ +#define MLXSW_REG_MTBR_REC_LEN 0x04 /* record length */ +#define MLXSW_REG_MTBR_REC_MAX_COUNT 47 /* firmware limitation */ +#define MLXSW_REG_MTBR_LEN (MLXSW_REG_MTBR_BASE_LEN + \ + MLXSW_REG_MTBR_REC_LEN * \ + MLXSW_REG_MTBR_REC_MAX_COUNT) + +MLXSW_REG_DEFINE(mtbr, MLXSW_REG_MTBR_ID, MLXSW_REG_MTBR_LEN); + +/* reg_mtbr_base_sensor_index + * Base sensors index to access (0 - ASIC sensor, 1-63 - ambient sensors, + * 64-127 are mapped to the SFP+/QSFP modules sequentially). + * Access: Index + */ +MLXSW_ITEM32(reg, mtbr, base_sensor_index, 0x00, 0, 7); + +/* reg_mtbr_num_rec + * Request: Number of records to read + * Response: Number of records read + * See above description for more details. + * Range 1..255 + * Access: RW + */ +MLXSW_ITEM32(reg, mtbr, num_rec, 0x04, 0, 8); + +/* reg_mtbr_rec_max_temp + * The highest measured temperature from the sensor. + * When the bit mte is cleared, the field max_temperature is reserved. + * Access: RO + */ +MLXSW_ITEM32_INDEXED(reg, mtbr, rec_max_temp, MLXSW_REG_MTBR_BASE_LEN, 16, + 16, MLXSW_REG_MTBR_REC_LEN, 0x00, false); + +/* reg_mtbr_rec_temp + * Temperature reading from the sensor. Reading is in 0..125 Celsius + * degrees units. + * Access: RO + */ +MLXSW_ITEM32_INDEXED(reg, mtbr, rec_temp, MLXSW_REG_MTBR_BASE_LEN, 0, 16, + MLXSW_REG_MTBR_REC_LEN, 0x00, false); + +static inline void mlxsw_reg_mtbr_pack(char *payload, u8 base_sensor_index, + u8 num_rec) +{ + MLXSW_REG_ZERO(mtbr, payload); + mlxsw_reg_mtbr_base_sensor_index_set(payload, base_sensor_index); + mlxsw_reg_mtbr_num_rec_set(payload, num_rec); +} + +/* Error codes from temperatute reading */ +enum mlxsw_reg_mtbr_temp_status { + MLXSW_REG_MTBR_NO_CONN = 0x8000, + MLXSW_REG_MTBR_NO_TEMP_SENS = 0x8001, + MLXSW_REG_MTBR_INDEX_NA = 0x8002, + MLXSW_REG_MTBR_BAD_SENS_INFO = 0x8003, +}; + +/* Base index for reading modules temperature */ +#define MLXSW_REG_MTBR_BASE_MODULE_INDEX 64 + +static inline void mlxsw_reg_mtbr_temp_unpack(char *payload, int rec_ind, + u16 *p_temp, u16 *p_max_temp) +{ + if (p_temp) + *p_temp = mlxsw_reg_mtbr_rec_temp_get(payload, rec_ind); + if (p_max_temp) + *p_max_temp = mlxsw_reg_mtbr_rec_max_temp_get(payload, rec_ind); +} + /* MCIA - Management Cable Info Access * ----------------------------------- * MCIA register is used to access the SFP+ and QSFP connector's EPROM. @@ -9779,6 +9853,7 @@ static const struct mlxsw_reg_info *mlxsw_reg_infos[] = { MLXSW_REG(mfsl), MLXSW_REG(mtcap), MLXSW_REG(mtmp), + MLXSW_REG(mtbr), MLXSW_REG(mcia), MLXSW_REG(mpat), MLXSW_REG(mpar), From patchwork Wed Feb 13 11:28:46 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 1041191 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="PTfWmsh1"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43zy2s60ySz9s7T for ; Wed, 13 Feb 2019 22:28:53 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2403906AbfBML2u (ORCPT ); Wed, 13 Feb 2019 06:28:50 -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 S1728965AbfBML2u (ORCPT ); Wed, 13 Feb 2019 06:28:50 -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=/9DcYCyY0DRS8jfX2XUTxIifc8e8OouqH5vYFOT/Z6Y=; b=PTfWmsh1TaHRzMNpQ5nRAEuOZ9xLZ09GJsMBUQjBlUyqp846ORs5wyZ13APN3oli0d2OVDtXTwOXTA4oob83ekN/G2tOsyRzPsV2Z7R2rQGE7hkZ/4rA8lwNMt8To6dLrnbQUcSgFSytobdU2xNAYA9+fdnmKkYLQ+LwlbQLrh4= 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:47 +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:46 +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 03/12] mlxsw: reg: Add Fan Out of Range Event Register Thread-Topic: [PATCH net-next 03/12] mlxsw: reg: Add Fan Out of Range Event Register Thread-Index: AQHUw49IpFUx+3eoyEm2Uu67z8Spng== Date: Wed, 13 Feb 2019 11:28:46 +0000 Message-ID: <20190213112814.32334-4-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: bc79c992-503e-41f8-b502-08d691a66af5 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=3BAM6PR05MB6230=3B23?= =?iso-8859-1?q?=3ApNG6sOf55fjR7a0RwaobbH+XBixhY7WT3UUavpwW2NnpJT/L?= =?iso-8859-1?q?gm24435/zZxNl9Yxdg7HTUm7dWYRtHVPmhH4EIJ7N86RPwpDvru?= =?iso-8859-1?q?HEwhWMrWIteIksfE1ZOJp2dq7+QobIq/88qw0wJK9tjKvdpIiqb?= =?iso-8859-1?q?gpDLRCnQjV1Oxu2Vdlln+2u3Pj59wXOo63ETo9YFWwFv4CWyx6U?= =?iso-8859-1?q?GcrG300UINEzeOxhelceN/x1T0tzc+gJlzVmAnM0rByRG5BmiwC?= =?iso-8859-1?q?gBwYF0Pq7wiSSUXHSFcHlPa5ToTTStIP5YMJzKnZbwjcWboFs8+?= =?iso-8859-1?q?n3m/0ZxqN1T4RrMhX8+CjaO+Udt8AZAha/u4lLdQ9xqo+xbFhMw?= =?iso-8859-1?q?I7rU9sFIekLEGNjEyYArLNvPJ3SMFRrRREAkpCwy02qceINsNwy?= =?iso-8859-1?q?aw6as7mAv+5CbBj3Ih9Qo1xDopDMgUiqyP79GXq8nhmuIgjShz5?= =?iso-8859-1?q?HC9eRB7xwcJl+L0puQ055C5kSy4eem3anRoVP5tWo5dX0T4gmth?= =?iso-8859-1?q?QKRlcK0RHozcEu5ITxVC/5Y/NDet+NmuwsoxgpVYiinXK1yNWxg?= =?iso-8859-1?q?CM3vh50uadzucmPziXIlg74EFb+tvZ8X5p39k+f+uMd9SjCUyIK?= =?iso-8859-1?q?aaf4GnSN0TUETGQ8cMgOOyHFEjbemYYAybgDAfZA5Lqvc2xHlQY?= =?iso-8859-1?q?I/NmUIxUktF2cg87KfEgqSXboTZNB7wXlzM8nSup1+KCZ1yhEDq?= =?iso-8859-1?q?Nry0iJs02mHrOzrnRtIVXYQ4ZZxfNti3aYekxU8JOmp0q49vE98?= =?iso-8859-1?q?1aETT2uGXwG2dA1q9BfAGQxJb4GGmNsiM9muSSIFRJVQTFu8QDc?= =?iso-8859-1?q?pwk8dd7JXfiY9jAVnOt+h2/12jkE5t2BOFz04vs2vboRyBS7Rm5?= =?iso-8859-1?q?/j6J17KL2e2e29VxMHrQAqFQCg6M7Ih764ORF2r1FvlnopTIKbg?= =?iso-8859-1?q?vMVV48FV/exuzoUyoK4AQL/m8cuv3nrpGHsc/NcCXfNJTihaom8?= =?iso-8859-1?q?GNcACHYsZ7aLNVoWrUQgaXjYmDkeE6IIZBBf7ZYP9rHrqLQX4TP?= =?iso-8859-1?q?lGsIpGQsc7AFBBTLtZ9WpywAh8/B4N2QvSl7XC30urIJcdZe3Qa?= =?iso-8859-1?q?WaWM9dlY8lCEMWvh/MgbB49Sg0hJ9csXTdf7jAEIkPsvKzjcCwa?= =?iso-8859-1?q?EuPngY2dDk9Zvzcu/uQEZatR0Dnltjp2cyjRF8X+dZkm1Vp2khE?= =?iso-8859-1?q?wUk8Duzd1P2RDLcY6+0eFvS+0YHiFN5FzDr5061agTmXkREjBVU?= =?iso-8859-1?q?Pv1xmfPPjxI71sUU1au2KZTSUXeajXCWsqqXG9yvQpJoJ4n6qzW?= =?iso-8859-1?q?LnvkNFpU7R8ZhTE5Y9E6KlRpFnvkD/OdVePJE7CIQpZn4gfWiy0?= =?iso-8859-1?q?=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: w7chdl61GqdNzaOxA0W8S1S5PtSQdL9nkMOUykLR6l7w2NlbX9XwQYRgNTWRe0vN+NHIv/jPYB3fz53oRGKWosHFIqCfuzJy2NnISWKkb+8puBdCTn1Lm/WpFTS93p7O7WKrz2VKv8qHUsG1fDwe3qNOtIk0sh7l4mGxEQhNwyo11Rnr6cr8CCyFjKSP8mitadFN9uTGy9nx7nH5AYt4+i3wn/JDf/CSXkXf8iCcLkFeN7q49HgS8UPGpCGAPD9Mqmno4se+LnhnPq0bcRTITt1D0oD104hsfR+SjYWsvQV760I6ibZ6OdpzN+Ykz5OULbW7ZLWhtDlb3YdNQvWRzYDRnEcVkR1MQMiTa7DJfPHSWu9Kt6aBeIvuIX/DBG9AzQPMCQ1ELrfRb1Ofd6KjXoAayYTSYTJcXfbZKRG+Zdw= MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: bc79c992-503e-41f8-b502-08d691a66af5 X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Feb 2019 11:28:45.8175 (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 FORE (Fan Out of Range Event Register), which is used for fan fault reading. Signed-off-by: Vadim Pasternak Reviewed-by: Jiri Pirko Signed-off-by: Ido Schimmel --- drivers/net/ethernet/mellanox/mlxsw/reg.h | 30 +++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/drivers/net/ethernet/mellanox/mlxsw/reg.h b/drivers/net/ethernet/mellanox/mlxsw/reg.h index 13856f40b8a7..cbd0193ec3f6 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/reg.h +++ b/drivers/net/ethernet/mellanox/mlxsw/reg.h @@ -7875,6 +7875,35 @@ static inline void mlxsw_reg_mfsl_unpack(char *payload, u8 tacho, *p_tach_max = mlxsw_reg_mfsl_tach_max_get(payload); } +/* FORE - Fan Out of Range Event Register + * -------------------------------------- + * This register reports the status of the controlled fans compared to the + * range defined by the MFSL register. + */ +#define MLXSW_REG_FORE_ID 0x9007 +#define MLXSW_REG_FORE_LEN 0x0C + +MLXSW_REG_DEFINE(fore, MLXSW_REG_FORE_ID, MLXSW_REG_FORE_LEN); + +/* fan_under_limit + * Fan speed is below the low limit defined in MFSL register. Each bit relates + * to a single tachometer and indicates the specific tachometer reading is + * below the threshold. + * Access: RO + */ +MLXSW_ITEM32(reg, fore, fan_under_limit, 0x00, 16, 10); + +static inline void mlxsw_reg_fore_unpack(char *payload, u8 tacho, + bool *fault) +{ + u16 limit; + + if (fault) { + limit = mlxsw_reg_fore_fan_under_limit_get(payload); + *fault = limit & BIT(tacho); + } +} + /* MTCAP - Management Temperature Capabilities * ------------------------------------------- * This register exposes the capabilities of the device and @@ -9851,6 +9880,7 @@ static const struct mlxsw_reg_info *mlxsw_reg_infos[] = { MLXSW_REG(mfsc), MLXSW_REG(mfsm), MLXSW_REG(mfsl), + MLXSW_REG(fore), MLXSW_REG(mtcap), MLXSW_REG(mtmp), MLXSW_REG(mtbr), From patchwork Wed Feb 13 11:28:47 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 1041192 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="UZyR3Tny"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43zy2x2Zkdz9s7T for ; Wed, 13 Feb 2019 22:28:57 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2403915AbfBML2z (ORCPT ); Wed, 13 Feb 2019 06:28:55 -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 S1727977AbfBML2w (ORCPT ); Wed, 13 Feb 2019 06:28:52 -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=6fmqHGcOlo2G71vDAPwhET6Qc1YyS9n/0Ub7qL3aprg=; b=UZyR3TnyAHTmVY3Afgvz/LzzkEBwRd1+70Xsi22YcldemFqudB9xYUwYZooFw4zJPuXDBOamKj6WXvvJQpvTcBpX9YfK+It37SvXj4KBtMD7WjG1mQ/wYLN0vlTn+GxqQ70IhyMoCG2Q5nX5ePoYtDiMAzZ5qG3pTLfrV1S0XR8= 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:48 +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:48 +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 04/12] mlxsw: core: Add API for QSFP module temperature thresholds reading Thread-Topic: [PATCH net-next 04/12] mlxsw: core: Add API for QSFP module temperature thresholds reading Thread-Index: AQHUw49JaRl4raEC00OQgpcjYZHIuQ== Date: Wed, 13 Feb 2019 11:28:47 +0000 Message-ID: <20190213112814.32334-5-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: 827c8948-baf3-4ab7-3e1e-08d691a66b99 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=3BAM6PR05MB6230=3B23?= =?iso-8859-1?q?=3AbtonjkHRljLxwOLl2pOX1+FcPC2fgxiRqvCrH17qAWAwazS7?= =?iso-8859-1?q?igNj8DKx3b5SVqPjUhrMpE/GxAZKFKFH9GuRcbE1erEIf1uaJHn?= =?iso-8859-1?q?i7+hI23QtEGSUxE3y1GnVdb80kH3mWxfPwMo1jPhIOdoe2YilEW?= =?iso-8859-1?q?U2TYFEWuH/disP2ohznCzI8r0Gt59lX9B5sikfO91Xo8kuMVRzs?= =?iso-8859-1?q?S6Ere5KQEvN1kpKKgaz/JXllHuyNYSBZqCZA2VeO4RVGin2OhUX?= =?iso-8859-1?q?cgsUMfX59ndLSZ7H8Jl9eGWM9RtyvkDSYKc68/vEjnliA/LBAaK?= =?iso-8859-1?q?7igZoyg11m8AP6eowWmyP4NnMZzuKCkqXCyQcL9aYzxA3t34mJO?= =?iso-8859-1?q?LkF+LJsv8chEf3SIY9X6N8paIQSeY23BiIEqRVoyEBSW+UlnZhA?= =?iso-8859-1?q?r57bFbBV9iKTtm6HY/P+UZYIAszULVmlOPn+uv5xMaagBRM8673?= =?iso-8859-1?q?5X6cg/mbQjP1uqM8B1xez7aUZV/Vm+aPQ/g5nBvzyI/kMyEsxhq?= =?iso-8859-1?q?YJB6N5XvXSBojrqOCrYXL0kM8gSn0dpkr8LyVBZxMEb9cUv3whm?= =?iso-8859-1?q?kBqEz59sNtu8Ggya73o0yQ8SmvNLAkUeMom0gw0UPPvKViLfB4J?= =?iso-8859-1?q?BKsHGa/ibxmYtUyeYvPq8gXqKlbu5BI80k/xM6PUXlWjaRNmT/0?= =?iso-8859-1?q?J4moSNsOTINfrL74qGRjJaAS5hx1LfORtkWeMQVcQr1m2gbVniY?= =?iso-8859-1?q?fNtMQC97oz4hw+rLYiQbbQe7fWXEHjiSU2fzH/SC9KsbcgQfPWu?= =?iso-8859-1?q?D172NqG6iP6onIsn5mIoaPAVZ/YO0cISavXrq+Rg0mwZIMZAJLl?= =?iso-8859-1?q?nDQcWECnYg+IubI5CkrgufYfevk5iVgV7bOxrxCUeKdaH+6kO91?= =?iso-8859-1?q?uu0MBzCEafpcJK0Sb5ZTPqJnxVJMf8WYlUku4W6C2npQD5vO3Bs?= =?iso-8859-1?q?3AVCCUGRW0jRGDE1kDkYvnYVYHfVZQQKw5a4MwnnXaMqD7fjQ9O?= =?iso-8859-1?q?lMtUkYAGKlQfODphbX7r66WamR1zit7uY2wdql5cfWj1LTwyhEZ?= =?iso-8859-1?q?+WdwoAOxRyPKXRZbafmrBBFx+hJy2L3yrk6EQpfxsAKUdhbDJHd?= =?iso-8859-1?q?o2Js0cGEbWSvvLBup4zEYwVsH/Qq/xnmtsWtAZiFM5I0VsoscdY?= =?iso-8859-1?q?uWSx0OjyywLW0fwCJ66XGqTBD4Edc6WsbcnRj/ph8YQmVnQJeEL?= =?iso-8859-1?q?hItBv10YREQVvEk3+xD4QySG0MnvmFM2nH4On1D0s5BzJ7SdNSZ?= =?iso-8859-1?q?1gVqKuIJv5OVNlEknUjiwdOnY9+6pX61dp07US6cW8FzXSc0Kvp?= =?iso-8859-1?q?hFqw3oQkuG0t5ARJI9xSV9XtoifclLwOlg/uhqA7h6FPuKZtcig?= =?iso-8859-1?q?=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: 5FEkqaP79n05KcjzaO2qi3gcTMfizWx+JB68NrV+q4fsVa12SB0O3p84AJhT74ko5FV0zP6d61v55fnmI3RPVidEwVHS3SzXHjD8tW5d0/qXZ9Uyxw3ZFU3RjHPVHXPUo7wSEfzptFw3R2B9kSwFKvZ9QfvQTfsxzjSZ7hEeXrR+syZxEtNVPmRD6JQs7Ku92oqXnsoUx1ez9UdCcwSVawtSNCrfsP6btyNFSDqHokas0UEgwBqBYovzHDUC2C+XAXs3wCsAyX6UxuhMrQZx8oom1GNLN7b/b1Urun1f58NMOIOHr3EOWrba0y5qKFlI8ziiS5DQnd1Ihbzs9kq0adLVOtYND9e/uflBbOm5AC/T94Gcraul0k395zGMPiPOgNtVJ4nLPVyat9oPDdHDdADbpJlFOMxX3qkjpQMYF4w= MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 827c8948-baf3-4ab7-3e1e-08d691a66b99 X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Feb 2019 11:28:46.8893 (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 new API to read QSFP module's temperature thresholds - warning and critical. New internal API reads the temperature thresholds from the modules, which are equipped with the thermal sensor. These thresholds will be exposed via hwmon subsystem. Signed-off-by: Vadim Pasternak Reviewed-by: Jiri Pirko Signed-off-by: Ido Schimmel --- drivers/net/ethernet/mellanox/mlxsw/Makefile | 2 +- .../net/ethernet/mellanox/mlxsw/core_env.c | 117 ++++++++++++++++++ .../net/ethernet/mellanox/mlxsw/core_env.h | 10 ++ 3 files changed, 128 insertions(+), 1 deletion(-) create mode 100644 drivers/net/ethernet/mellanox/mlxsw/core_env.c create mode 100644 drivers/net/ethernet/mellanox/mlxsw/core_env.h diff --git a/drivers/net/ethernet/mellanox/mlxsw/Makefile b/drivers/net/ethernet/mellanox/mlxsw/Makefile index bbf45f10c208..a01d15546e37 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/Makefile +++ b/drivers/net/ethernet/mellanox/mlxsw/Makefile @@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 obj-$(CONFIG_MLXSW_CORE) += mlxsw_core.o mlxsw_core-objs := core.o core_acl_flex_keys.o \ - core_acl_flex_actions.o + core_acl_flex_actions.o core_env.o mlxsw_core-$(CONFIG_MLXSW_CORE_HWMON) += core_hwmon.o mlxsw_core-$(CONFIG_MLXSW_CORE_THERMAL) += core_thermal.o obj-$(CONFIG_MLXSW_PCI) += mlxsw_pci.o diff --git a/drivers/net/ethernet/mellanox/mlxsw/core_env.c b/drivers/net/ethernet/mellanox/mlxsw/core_env.c new file mode 100644 index 000000000000..160d6cd164f4 --- /dev/null +++ b/drivers/net/ethernet/mellanox/mlxsw/core_env.c @@ -0,0 +1,117 @@ +// SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 +/* Copyright (c) 2018 Mellanox Technologies. All rights reserved */ + +#include +#include + +#include "core.h" +#include "core_env.h" +#include "item.h" +#include "reg.h" + +static int mlxsw_env_validate_cable_ident(struct mlxsw_core *core, int id, + bool *qsfp) +{ + char eeprom_tmp[MLXSW_REG_MCIA_EEPROM_SIZE]; + char mcia_pl[MLXSW_REG_MCIA_LEN]; + u8 ident; + int err; + + mlxsw_reg_mcia_pack(mcia_pl, id, 0, MLXSW_REG_MCIA_PAGE0_LO_OFF, 0, 1, + MLXSW_REG_MCIA_I2C_ADDR_LOW); + err = mlxsw_reg_query(core, MLXSW_REG(mcia), mcia_pl); + if (err) + return err; + mlxsw_reg_mcia_eeprom_memcpy_from(mcia_pl, eeprom_tmp); + ident = eeprom_tmp[0]; + switch (ident) { + case MLXSW_REG_MCIA_EEPROM_MODULE_INFO_ID_SFP: + *qsfp = false; + break; + case MLXSW_REG_MCIA_EEPROM_MODULE_INFO_ID_QSFP: /* fall-through */ + case MLXSW_REG_MCIA_EEPROM_MODULE_INFO_ID_QSFP_PLUS: /* fall-through */ + case MLXSW_REG_MCIA_EEPROM_MODULE_INFO_ID_QSFP28: /* fall-through */ + case MLXSW_REG_MCIA_EEPROM_MODULE_INFO_ID_QSFP_DD: + *qsfp = true; + break; + default: + return -EINVAL; + } + + return 0; +} + +int mlxsw_env_module_temp_thresholds_get(struct mlxsw_core *core, int module, + int off, int *temp) +{ + char eeprom_tmp[MLXSW_REG_MCIA_EEPROM_SIZE]; + union { + u8 buf[MLXSW_REG_MCIA_TH_ITEM_SIZE]; + u16 temp; + } temp_thresh; + char mcia_pl[MLXSW_REG_MCIA_LEN] = {0}; + char mtbr_pl[MLXSW_REG_MTBR_LEN] = {0}; + u16 module_temp; + bool qsfp; + int err; + + mlxsw_reg_mtbr_pack(mtbr_pl, MLXSW_REG_MTBR_BASE_MODULE_INDEX + module, + 1); + err = mlxsw_reg_query(core, MLXSW_REG(mtbr), mtbr_pl); + if (err) + return err; + + /* Don't read temperature thresholds for module with no valid info. */ + mlxsw_reg_mtbr_temp_unpack(mtbr_pl, 0, &module_temp, NULL); + switch (module_temp) { + case MLXSW_REG_MTBR_BAD_SENS_INFO: /* fall-through */ + case MLXSW_REG_MTBR_NO_CONN: /* fall-through */ + case MLXSW_REG_MTBR_NO_TEMP_SENS: /* fall-through */ + case MLXSW_REG_MTBR_INDEX_NA: + *temp = 0; + return 0; + default: + /* Do not consider thresholds for zero temperature. */ + if (!MLXSW_REG_MTMP_TEMP_TO_MC(module_temp)) { + *temp = 0; + return 0; + } + break; + } + + /* Read Free Side Device Temperature Thresholds from page 03h + * (MSB at lower byte address). + * Bytes: + * 128-129 - Temp High Alarm (SFP_TEMP_HIGH_ALARM); + * 130-131 - Temp Low Alarm (SFP_TEMP_LOW_ALARM); + * 132-133 - Temp High Warning (SFP_TEMP_HIGH_WARN); + * 134-135 - Temp Low Warning (SFP_TEMP_LOW_WARN); + */ + + /* Validate module identifier value. */ + err = mlxsw_env_validate_cable_ident(core, module, &qsfp); + if (err) + return err; + + if (qsfp) + mlxsw_reg_mcia_pack(mcia_pl, module, 0, + MLXSW_REG_MCIA_TH_PAGE_NUM, + MLXSW_REG_MCIA_TH_PAGE_OFF + off, + MLXSW_REG_MCIA_TH_ITEM_SIZE, + MLXSW_REG_MCIA_I2C_ADDR_LOW); + else + mlxsw_reg_mcia_pack(mcia_pl, module, 0, + MLXSW_REG_MCIA_PAGE0_LO, + off, MLXSW_REG_MCIA_TH_ITEM_SIZE, + MLXSW_REG_MCIA_I2C_ADDR_HIGH); + + err = mlxsw_reg_query(core, MLXSW_REG(mcia), mcia_pl); + if (err) + return err; + + mlxsw_reg_mcia_eeprom_memcpy_from(mcia_pl, eeprom_tmp); + memcpy(temp_thresh.buf, eeprom_tmp, MLXSW_REG_MCIA_TH_ITEM_SIZE); + *temp = temp_thresh.temp * 1000; + + return 0; +} diff --git a/drivers/net/ethernet/mellanox/mlxsw/core_env.h b/drivers/net/ethernet/mellanox/mlxsw/core_env.h new file mode 100644 index 000000000000..6dbdf63f3ee1 --- /dev/null +++ b/drivers/net/ethernet/mellanox/mlxsw/core_env.h @@ -0,0 +1,10 @@ +/* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 */ +/* Copyright (c) 2018 Mellanox Technologies. All rights reserved */ + +#ifndef _MLXSW_CORE_ENV_H +#define _MLXSW_CORE_ENV_H + +int mlxsw_env_module_temp_thresholds_get(struct mlxsw_core *core, int module, + int off, int *temp); + +#endif From patchwork Wed Feb 13 11:28:48 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 1041194 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="PWN5IYak"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43zy2z47y9z9s7T for ; Wed, 13 Feb 2019 22:28:59 +1100 (AEDT) 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=3BAM6PR05MB6230=3B23?= =?iso-8859-1?q?=3A4tNZGm2HMDKyEE+MVmuEuEbrkSnWjFuWUlbCZu3GlzmBKeqO?= =?iso-8859-1?q?h3ECu6a0Gai46/8vyHrUpxpwxQ1I/Xp8Sbd4YqKgVzrsRX80kNT?= =?iso-8859-1?q?znzoqgVPa/2GSfwdglezrEOsK/Q98+CHH/+SpQTIFS0TrPn9NDa?= =?iso-8859-1?q?8wC5My1VvCg8UcEH31emR52OGhAE6Hx2dJC0V+RAs2f1DOvVuju?= =?iso-8859-1?q?5B0hhsXGbfWxWO1pII0xqTzj6BECpd3xQqzqzfc40ocBRhIUTKY?= =?iso-8859-1?q?DvxwlBafe4Mw6gToMjySuBvR0JAtYIj0xc7DYHnVgyjVoLrLPzM?= =?iso-8859-1?q?p8MXC1bLL8pIyKHq/Igcd1uv30wIiLZTSEqGECA2CR2pXnl+BnF?= =?iso-8859-1?q?6vDMDz4lwvhMT9MJqgVcHQEgaZ2pdaSnB0HcB2v3cAaKgd8eyvK?= =?iso-8859-1?q?L1g8VyZ7l41L1ukqYdLHMrz0aEm+72IcO8buhdhQmC2sA+4lOub?= =?iso-8859-1?q?JLq9bEO01JziiK6zKZXFVQ4TDTul4+TYR67I0QlsT5gjZeAGFFj?= =?iso-8859-1?q?lYLBYGTC0Utt9xZJE1NkM2wUiZqGdPm1f2SsqHbhRrLDwk5vMB9?= =?iso-8859-1?q?WKkSYsyyPZCnCOmMThd0jR3gfp8te+kB/JGNBxwshfXhaLD4gLr?= =?iso-8859-1?q?m7R6eZbZ7y+b5Kh0UiUmId8WtrnQ55TIygdBgh22YhQjB/SE68u?= =?iso-8859-1?q?EtqjQn7+9XYzAexiEx06OTD782tNVJzK3/2hvx810hC/fXayzZj?= =?iso-8859-1?q?dZ2ntDLYzL8bt/zzHusNfP802B92jsJUdb6m+ahNrS3/732KllT?= =?iso-8859-1?q?elL/MqGgOgAeXbglt2GkCAVoWbTIBG9BW0xGB7/mhy/TVcVIHEG?= =?iso-8859-1?q?lcGsIJy+7l+E31/Gii5P79Mx9SwMGrjVu2Pq00SenvMxAVfVCf6?= =?iso-8859-1?q?OoEgWmHjG8QPpJzUmqrJR8LTKEJRT7WvEMgWSHJznyV/hxqIwAN?= =?iso-8859-1?q?ur0kKf5IXro513V1H8SffTbsmqWFCL1mX7Jiw5Nhodvgt5spz4R?= =?iso-8859-1?q?zvTGTSt0j8cbdyjTz38Y2iPNMtz2Vzf70TCajnFKh93ISp5PNMx?= =?iso-8859-1?q?iQKKFb4jQYqXQYa7SHXWHZ2zYhxiZyZ+2hGHwUGIgaxoXZCWTT0?= =?iso-8859-1?q?E5cU8tqBp5J8E+ghXGaIgDvxQ//icgFsHKAMX2TGfwUayGxlX6O?= =?iso-8859-1?q?mjFyYiWSzhKJKspKmwbEitDEqN20KvQ/aEAy87lReXYbtvEVNcM?= =?iso-8859-1?q?HGPlvDz40KRQtAZUHO27dasm+2lnh7loafieOojKZJOmxgRoZbA?= =?iso-8859-1?q?N09oPN+4LJhHih5n7rKO+J0sRwdXuFPwO9GsbuIM+Nwus6jlzb/?= =?iso-8859-1?q?hevEbvCM84iBTbupJxpFGGDSYISA3x/MH59SZXCf5p7EICzJHMc?= =?iso-8859-1?q?=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= 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/ethernet/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; }; struct mlxsw_hwmon; diff --git a/drivers/net/ethernet/mellanox/mlxsw/core_thermal.c b/drivers/net/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" #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_device *tzdev, mutex_lock(&tzdev->lock); if (mode == THERMAL_DEVICE_ENABLED) - tzdev->polling_delay = MLXSW_THERMAL_POLL_INT; + tzdev->polling_delay = thermal->polling_delay; else tzdev->polling_delay = 0; @@ -423,13 +425,17 @@ int mlxsw_thermal_init(struct mlxsw_core *core, thermal->cooling_levels[i] = max(MLXSW_THERMAL_SPEED_MIN_LEVEL, i); + thermal->polling_delay = bus_info->low_frequency ? + MLXSW_THERMAL_SLOW_POLL_INT : + MLXSW_THERMAL_POLL_INT; + thermal->tzdev = 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 = 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/ethernet/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 = id->name; mlxsw_i2c->bus_info.device_name = client->name; mlxsw_i2c->bus_info.dev = &client->dev; + mlxsw_i2c->bus_info.low_frequency = true; mlxsw_i2c->dev = &client->dev; err = mlxsw_core_bus_device_register(&mlxsw_i2c->bus_info, From patchwork Wed Feb 13 11:28:50 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 1041195 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="QFJdFuOh"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43zy314FN1z9s7T for ; Wed, 13 Feb 2019 22:29:01 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2403926AbfBML3A (ORCPT ); Wed, 13 Feb 2019 06:29:00 -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 S2403916AbfBML26 (ORCPT ); Wed, 13 Feb 2019 06:28:58 -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=3NYw/mTIuYjzwj/nZgal79JPpmAoIGMTUAnOAXPvfks=; b=QFJdFuOhjvH45XaKlw3tf78iwP7AjYv/4NiOtaXVn4VXhp5rt0M/WIaIuiNC9/AsP80Uk0Cz6QJdRzVsFBgN+2WUWjN/hYndtFNYlNMFCYdHGZinRMUsL/nyjIFe8a+uaXglqW6VUKfeCMeAXrHZkvnyVucAh4R9pe+dja1CGyI= 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:50 +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:50 +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 06/12] mlxsw: core: Modify thermal zone definition Thread-Topic: [PATCH net-next 06/12] mlxsw: core: Modify thermal zone definition Thread-Index: AQHUw49KT1FJxyZhOU2GPKn3o+TZJA== Date: Wed, 13 Feb 2019 11:28:50 +0000 Message-ID: <20190213112814.32334-7-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: 02d5a484-4101-4b97-5689-08d691a66ce7 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=3BAM6PR05MB6230=3B23?= =?iso-8859-1?q?=3AtBsCERSkahm/Z4Y8rZyu3LV2c0AeSs0PfKDGCy5TqkYvO1T5?= =?iso-8859-1?q?5o2Bl0++ZP6EzBKRADx+LoUCjNQIKIroX/TTr7oDpjdPMu/mJYz?= =?iso-8859-1?q?/D9+Wds00FhB5YEbCcpHunuGr3muxfvWTjI/KBGgNB1wIcWJcDv?= =?iso-8859-1?q?ABoJCy3Ndk42ft2Fg+CMe7UQv1i7LkWyUgi5W+A5nW5vikWFxOe?= =?iso-8859-1?q?m9794V1h7jXvx/v0HLkT2xpmdc2ADxgc3XQ4TVYCGB3DTqqdch3?= =?iso-8859-1?q?HrLE1OVkotKmYmJlqU6EC9dRzZ6lDEn6SthjWEM8f0tVpQViNtj?= =?iso-8859-1?q?NkxUQOH8R+PWzRGE1Nq/ShLgp6A0/reOEDOvTaH8yoHl+x+Ktlm?= =?iso-8859-1?q?sLGr53qQnOpgfVgnQnX27iJmqYkNqDgYVtOtHOUK+mgPs6WH7K2?= =?iso-8859-1?q?EIsjOuHx8v6w3PR0iA15toQ7BnfaiS1BBHesRXExv6SiDxP4uv5?= =?iso-8859-1?q?uWjQ4Lkjc5aif9lLowE63ZItQvZmkIFe4jcoC3XnjNmeVhEj9R9?= =?iso-8859-1?q?29eLK9o2MLsGsFWDbbtNxoN0szA1fxwB/0v9JgO7R5t9DGXAMIp?= =?iso-8859-1?q?0KUv5FHeX7A63k7hcWNc8g3Lc8iOrEh4Qh/xAj/GeW0woqJtWZK?= =?iso-8859-1?q?1dmd7REQBQ4qUT5Ooc3hHdoa3zJjppJww6cB9X3p4dlPmPmYApj?= =?iso-8859-1?q?2TuOA95zhPRPdZsy1weYmjdiwh6/Ejd/WqKfPYqle335RUfejzU?= =?iso-8859-1?q?aqix1TZ/GAtSKlHtuXFaKTBvH36YcD+PbOZvwHmPww9EVM4uuEr?= =?iso-8859-1?q?j9A6GTmsSCvpeFoEd5MGd+GnY5cuvmXS4YG48pVCp2nEP+F6Pi9?= =?iso-8859-1?q?UYfKRMezG53eRDOQIpvloNy7QqK2uOiSJJf18Xa2wLeuqseHGBd?= =?iso-8859-1?q?o0E2rD+YhbrlvUbjF2o/LTozJTyL57lL0VvDyB0myWoMZJFLLRX?= =?iso-8859-1?q?GgPpKvBAbgMe/Kt8QtcHI55cnEyi+tchZs0lmAssHfsNri0emrS?= =?iso-8859-1?q?3kptU59PzY34OA9on8Ht2QzUz9/CrVCH/vARipbyPzXdKKH2DaG?= =?iso-8859-1?q?20KAMqGFOVg8Y9/o9mTMw5VAWG4HdP2pdAVA34GXaSJ9XX6hzvJ?= =?iso-8859-1?q?pU1hVkXkdGjAiNERv3CPA35KcJfmG6UgRIVpLK7OIoO23g7GdGM?= =?iso-8859-1?q?Z0gP59wmGw/BL6JdzqObJKEczEbEuppfp3DH4G6zbDvm52XlN8b?= =?iso-8859-1?q?4q+sdHwV2U9d6jcTXllhtop7+ZGO+BMU7tXAepErmsg0ZSkgG1W?= =?iso-8859-1?q?uNk1627AEkNTwyYRQt6b+O0QlJb3Eg7HklmnjsiJyqrh4CbGxBR?= =?iso-8859-1?q?+iICmSU3QLhkegKUphqfe9kHoX91ezHQcwyYht3PmK/gH+ESY/M?= =?iso-8859-1?q?=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: TxUGE6qYJ1F4PTovz4Ope97OyDO3wy1bdFniWRsxDLjkuRCXam7SmkJEu0r3d89kOPxpo0zPnchF1bye0M85O4d793qQ3aO8u+z+pHoxDs4c7ZBi1wdXzHZ+6qoaVx5MtpqSU2nKENfefN3zw/rdwn3SdYqMJ2HMij7iYASXCbO16ck6s6AWt1LQxvoCL7WLdn8NKcE0nMf2c3f6H3myZex+/YKsHfH+xmg/m4l0HEqifvFQrexPuYYeftsTC4VzXghUE6uuLkprSNRPbCTBThN/0+ZA4Y1EYEwIfyGEdLO75UsHFoi8/81LKEc0jdM71M9i/6NAr3Bmln10mJ4elvvmYKJ5ncOAZofssydOBUvYgOVcFDb6rL+ZejXnbpCCW8jWUN+b0R2CtsEqx4X5fypFJVGy7GSuwrzkBePSkqs= MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 02d5a484-4101-4b97-5689-08d691a66ce7 X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Feb 2019 11:28:49.0868 (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 Modify thermal zone trip points setting for better alignment with system thermal requirement. Add hysteresis thresholds for thermal trips in order to avoid throttling around thermal trip point. If hysteresis temperature is not considered, PWM can have side effect of flip up/down on thermal trip point boundary. Signed-off-by: Vadim Pasternak Reviewed-by: Jiri Pirko Signed-off-by: Ido Schimmel --- .../ethernet/mellanox/mlxsw/core_thermal.c | 37 ++++++++++++++----- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlxsw/core_thermal.c b/drivers/net/ethernet/mellanox/mlxsw/core_thermal.c index b1f9b459766c..dbf9a845084a 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/core_thermal.c +++ b/drivers/net/ethernet/mellanox/mlxsw/core_thermal.c @@ -15,6 +15,7 @@ #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_HYSTERESIS_TEMP 5000 /* 5C */ #define MLXSW_THERMAL_MAX_STATE 10 #define MLXSW_THERMAL_MAX_DUTY 255 /* Minimum and maximum fan allowed speed in percent: from 20% to 100%. Values @@ -30,6 +31,7 @@ struct mlxsw_thermal_trip { int type; int temp; + int hyst; int min_state; int max_state; }; @@ -38,25 +40,22 @@ static const struct mlxsw_thermal_trip default_thermal_trips[] = { { /* In range - 0-40% PWM */ .type = THERMAL_TRIP_ACTIVE, .temp = 75000, + .hyst = MLXSW_THERMAL_HYSTERESIS_TEMP, .min_state = 0, .max_state = (4 * MLXSW_THERMAL_MAX_STATE) / 10, }, - { /* High - 40-100% PWM */ + { + /* In range - 40-100% PWM */ .type = THERMAL_TRIP_ACTIVE, .temp = 80000, + .hyst = MLXSW_THERMAL_HYSTERESIS_TEMP, .min_state = (4 * MLXSW_THERMAL_MAX_STATE) / 10, .max_state = MLXSW_THERMAL_MAX_STATE, }, - { - /* Very high - 100% PWM */ - .type = THERMAL_TRIP_ACTIVE, - .temp = 85000, - .min_state = MLXSW_THERMAL_MAX_STATE, - .max_state = MLXSW_THERMAL_MAX_STATE, - }, { /* Warning */ .type = THERMAL_TRIP_HOT, - .temp = 105000, + .temp = 85000, + .hyst = MLXSW_THERMAL_HYSTERESIS_TEMP, .min_state = MLXSW_THERMAL_MAX_STATE, .max_state = MLXSW_THERMAL_MAX_STATE, }, @@ -246,6 +245,24 @@ static int mlxsw_thermal_set_trip_temp(struct thermal_zone_device *tzdev, return 0; } +static int mlxsw_thermal_get_trip_hyst(struct thermal_zone_device *tzdev, + int trip, int *p_hyst) +{ + struct mlxsw_thermal *thermal = tzdev->devdata; + + *p_hyst = thermal->trips[trip].hyst; + return 0; +} + +static int mlxsw_thermal_set_trip_hyst(struct thermal_zone_device *tzdev, + int trip, int hyst) +{ + struct mlxsw_thermal *thermal = tzdev->devdata; + + thermal->trips[trip].hyst = hyst; + return 0; +} + static struct thermal_zone_device_ops mlxsw_thermal_ops = { .bind = mlxsw_thermal_bind, .unbind = mlxsw_thermal_unbind, @@ -255,6 +272,8 @@ static struct thermal_zone_device_ops mlxsw_thermal_ops = { .get_trip_type = mlxsw_thermal_get_trip_type, .get_trip_temp = mlxsw_thermal_get_trip_temp, .set_trip_temp = mlxsw_thermal_set_trip_temp, + .get_trip_hyst = mlxsw_thermal_get_trip_hyst, + .set_trip_hyst = mlxsw_thermal_set_trip_hyst, }; static int mlxsw_thermal_get_max_state(struct thermal_cooling_device *cdev, From patchwork Wed Feb 13 11:28:51 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 1041197 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="DGdKJCvD"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43zy363zdCz9s7T for ; Wed, 13 Feb 2019 22:29:06 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2403935AbfBML3F (ORCPT ); Wed, 13 Feb 2019 06:29:05 -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 S1732733AbfBML3B (ORCPT ); Wed, 13 Feb 2019 06:29:01 -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=Rw/rdzFUEOwf6cmuQJMhVLyQR1nCJbJINMUaEzuSO0k=; b=DGdKJCvDacbT2Ef7w+hlE7oa3jDBnquyditOT+xy9TfwHgwDPI0srXIhyKNVxPcefgY+EEiy7s92ZKXtwyvw6r4XQ9QpJTn0qdYPrl+OKDDlTqoUMbJ/SwVsUPCWv9QCm04qmIAerHNqACtV0E6v/KSu67jfsDZANAmvMXtTwlA= 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:51 +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:51 +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 07/12] mlxsw: core: Replace thermal temperature trips with defines Thread-Topic: [PATCH net-next 07/12] mlxsw: core: Replace thermal temperature trips with defines Thread-Index: AQHUw49Li0fABknbvUSzfInJz9b3QQ== Date: Wed, 13 Feb 2019 11:28:51 +0000 Message-ID: <20190213112814.32334-8-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: b6cb5867-1dad-4f69-1aaf-08d691a66d95 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=3BAM6PR05MB6230=3B23?= =?iso-8859-1?q?=3AVTbGOMr1m1+C8XtRREjanhbek26f43zKjYrIANh20+mfOHEg?= =?iso-8859-1?q?R/qkkC0/fuQWoD+iSh6zeXLNaqoJ1xAqava4ZY59YuFxu1hsatw?= =?iso-8859-1?q?TjniW6HeJrrw5uJILFK7u8g7e5nyekM2pqxE0TptW83jNMuzLIb?= =?iso-8859-1?q?AGTJMZz4k9tZp8PZV9e4+5Kj3+3ppxq4EZyn6nfEhC3uKuS0Lvc?= =?iso-8859-1?q?SVJu7pZqAYubNbKrjqRniY8HOXK3uXzt2oN19X8VCrwzpOVgf7m?= =?iso-8859-1?q?ViJibuuc21dAynCmxt86WQqHQKQs5NcSU13nQdo/e2apyqRLDnu?= =?iso-8859-1?q?LNQZ3LbmJ7SbrQx9u6c8rgQN92eMoTIQKUJbfu6QkLcdi4nU5tk?= =?iso-8859-1?q?o1vJIeq7+57PcLXfC5b/P1vZHSrFiw/U4pJPUMWK6CLOB4KsQAO?= =?iso-8859-1?q?gV7a8Qjn+hzoCPT8+leKs2ZNW/5E70poXCMcLlueFumCyoqvpsl?= =?iso-8859-1?q?aunVvobv+62oG2Ozu45peLMlIdunrOq0R5nda5HbOED57sisAzW?= =?iso-8859-1?q?vs7uBJCiAt7/v7u/0pqIhhL3jhIozsAq7fOsnf+urqliOioB++T?= =?iso-8859-1?q?4p+6dTLvRe9thnPegBMsboxho5uFr18OMFXAN3uTNao2owjn2Lu?= =?iso-8859-1?q?RVJgk7QdC4XnXwuAlTfRl7DxC6BuutWnQ372jZqNrXjJjU3/mR+?= =?iso-8859-1?q?Ue4Nz2KlhW1opnptx/+hWgFHeAtjNlSiLjb4PmxY20/EFnphmoZ?= =?iso-8859-1?q?QM7TX/jircFMjl1p/SNcad/R+lDg2xwqaBvMP1TT1v6zZZmLwv2?= =?iso-8859-1?q?COfcmraMY0TfMg63uyRnV4s+SX+erHjRjlMv2C8gFW+5VPLl4oO?= =?iso-8859-1?q?qtWAJxDp682dMD7Hg/gGc7znIk5tapTGTH1ojqFNZBXigzccjtT?= =?iso-8859-1?q?ChlajH66VIPy2D9SJUNRQfSGcg2VHC6mIL/GgIVsr9NOHfmi8ly?= =?iso-8859-1?q?oMhM4mT0BcPcwAHcaRppQwiISWXGE36DruuKnbDcWADvpA2Zq9H?= =?iso-8859-1?q?u5o6nLm5MX5FU1JyIre7D9mSSrWTEETBGsBjO/odvcJKszmLXrL?= =?iso-8859-1?q?Kb/vbcJuPsYUOce6d7RI6Z+spooIsiX0CoyDFn7jC4Jx9iiMqxb?= =?iso-8859-1?q?LKhncEjHl8N0teWflHT00syjd1RiTWGe4E9d3NstiD5M85g8qM6?= =?iso-8859-1?q?DR3niRqIUkDYOgxfpsvIExgwIMOxVCpLhGYHSJp1cMAxo4G8MbI?= =?iso-8859-1?q?pTs6pGs41HH/lXS9pHlQNejqe9mhv1gRDDsJOLIls6YLpOeytLQ?= =?iso-8859-1?q?wjQDC7fWnCiDwmRftkmlbHTbdHxZ8kyQd4bax8DmY0cJrjSkn0h?= =?iso-8859-1?q?TGwKey0OmxpA0LkHPpuFxQLNbII+G7E2aBILb2UOXsdLUIG2e8o?= =?iso-8859-1?q?=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: eBsdeUXuemZz1lJsGEQSLUoqFoBa0GZF/jV9LiZbsIXqhjEMUGaUx/GoQrlIphiJN5fBObUpxej2JLjFx/MyJRVf0gjs8Q5YZwSOoBZ2V7079rI5/Bp9UxJ4s4SCAuhfzSmfDdxkyvSwmwNMt1n4156LGitbsnBxAb9rpVLjJSk1Yx5pydSeTTg0rjQ5wgjVD6Zt/W1+UFEQqVD57Bloud7aVr6h/n/S71azDpLHRV9CYzNDY6dWrsDrdtnjeiPAnCv7Z5I1/egrRrloz5u7ZCtsP35L/5Ao0tt7+vGSOyx1/R/FNy1S4/ujRgN5ySoRcCj0wJRhY0CKx7QlnPRr+BQPLas5/uoUcGHyDu9kjGs44uruQ9/ooK8a2JuFZyHaoo2us+jnZZ7VUXJ7Xxpuq5uRg1o2oY3zccEhRDeUgYI= MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: b6cb5867-1dad-4f69-1aaf-08d691a66d95 X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Feb 2019 11:28:50.2066 (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 Replace thermal hardcoded temperature trip values with defines. Signed-off-by: Vadim Pasternak Reviewed-by: Jiri Pirko Signed-off-by: Ido Schimmel --- .../net/ethernet/mellanox/mlxsw/core_thermal.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlxsw/core_thermal.c b/drivers/net/ethernet/mellanox/mlxsw/core_thermal.c index dbf9a845084a..b9fb33417a82 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/core_thermal.c +++ b/drivers/net/ethernet/mellanox/mlxsw/core_thermal.c @@ -14,7 +14,10 @@ #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_ASIC_TEMP_NORM 75000 /* 75C */ +#define MLXSW_THERMAL_ASIC_TEMP_HIGH 85000 /* 85C */ +#define MLXSW_THERMAL_ASIC_TEMP_HOT 105000 /* 105C */ +#define MLXSW_THERMAL_ASIC_TEMP_CRIT 110000 /* 110C */ #define MLXSW_THERMAL_HYSTERESIS_TEMP 5000 /* 5C */ #define MLXSW_THERMAL_MAX_STATE 10 #define MLXSW_THERMAL_MAX_DUTY 255 @@ -39,7 +42,7 @@ struct mlxsw_thermal_trip { static const struct mlxsw_thermal_trip default_thermal_trips[] = { { /* In range - 0-40% PWM */ .type = THERMAL_TRIP_ACTIVE, - .temp = 75000, + .temp = MLXSW_THERMAL_ASIC_TEMP_NORM, .hyst = MLXSW_THERMAL_HYSTERESIS_TEMP, .min_state = 0, .max_state = (4 * MLXSW_THERMAL_MAX_STATE) / 10, @@ -47,21 +50,21 @@ static const struct mlxsw_thermal_trip default_thermal_trips[] = { { /* In range - 40-100% PWM */ .type = THERMAL_TRIP_ACTIVE, - .temp = 80000, + .temp = MLXSW_THERMAL_ASIC_TEMP_HIGH, .hyst = MLXSW_THERMAL_HYSTERESIS_TEMP, .min_state = (4 * MLXSW_THERMAL_MAX_STATE) / 10, .max_state = MLXSW_THERMAL_MAX_STATE, }, { /* Warning */ .type = THERMAL_TRIP_HOT, - .temp = 85000, + .temp = MLXSW_THERMAL_ASIC_TEMP_HOT, .hyst = MLXSW_THERMAL_HYSTERESIS_TEMP, .min_state = MLXSW_THERMAL_MAX_STATE, .max_state = MLXSW_THERMAL_MAX_STATE, }, { /* Critical - soft poweroff */ .type = THERMAL_TRIP_CRITICAL, - .temp = MLXSW_THERMAL_MAX_TEMP, + .temp = MLXSW_THERMAL_ASIC_TEMP_CRIT, .min_state = MLXSW_THERMAL_MAX_STATE, .max_state = MLXSW_THERMAL_MAX_STATE, } @@ -238,7 +241,7 @@ static int mlxsw_thermal_set_trip_temp(struct thermal_zone_device *tzdev, struct mlxsw_thermal *thermal = tzdev->devdata; if (trip < 0 || trip >= MLXSW_THERMAL_NUM_TRIPS || - temp > MLXSW_THERMAL_MAX_TEMP) + temp > MLXSW_THERMAL_ASIC_TEMP_CRIT) return -EINVAL; thermal->trips[trip].temp = temp; From patchwork Wed Feb 13 11:28:52 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 1041200 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="ZF/gCCzJ"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43zy3C54Q4z9s7T for ; Wed, 13 Feb 2019 22:29:11 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2403948AbfBML3K (ORCPT ); Wed, 13 Feb 2019 06:29:10 -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 S2403930AbfBML3H (ORCPT ); Wed, 13 Feb 2019 06:29:07 -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=XHVUmJny2g4PKZPUdDF+9IVNMuYgw0IhRtjf2f6U8a8=; b=ZF/gCCzJjjMCumQ7OetcMkockuT4tq8ez2MKgFbu3Q0xkTtywSFkWy4SPm5m+Bk9pMHZsVtfWVrMydcmpcNmz0HOWjPf/DWH/XLv2sU0I7do50TDA/5Xt0Z8DsQZXMEzm8t1gCroQWS14ny3eY3SA+yXS44gMktwyF/4EYSUHlY= 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:52 +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:52 +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 08/12] mlxsw: core: Rename cooling device Thread-Topic: [PATCH net-next 08/12] mlxsw: core: Rename cooling device Thread-Index: AQHUw49LpYbVhNWvLEGyQMqUqxrm6g== Date: Wed, 13 Feb 2019 11:28:52 +0000 Message-ID: <20190213112814.32334-9-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: 811927c2-bf2a-427b-0398-08d691a66e3a 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=3BAM6PR05MB6230=3B23?= =?iso-8859-1?q?=3A7BKMvxlpWNbJa5QArXhhiK7upC6aUJz+fiWwVZvtmnZ3sWiB?= =?iso-8859-1?q?EJXWUFBWi+S7ABatMbSmIEg8rhalZImKuBuLFR7rrylMPZ7F8B2?= =?iso-8859-1?q?uaykd0Lbjmt9ZTvYVkjRixTv5Eu7mOselOTBXN9B4JbDhAK7xpn?= =?iso-8859-1?q?iAhmzcIZU/P7fOsw1i9gGhQ569q2MPvjUgr3SUh9RlBSdmIVNDc?= =?iso-8859-1?q?j8tw3zex8iSn7EBGUyfMFzDL5G2tvXDhNUnOQwGrHioC8HjjLZK?= =?iso-8859-1?q?ikV8UK2fzHwZ8WDoo5rXcGFlCjqN5zQHOwqK/7iFbNhf2gvNHvf?= =?iso-8859-1?q?1h8QQrvMTSoEBMZXHx4EZv+V3VNO81inYNwhSFJXjkdXiKwE/V9?= =?iso-8859-1?q?WBe0n7tdzR3j3WkwFEm/2XYe19Qb6nh8wRI5CdGZAaU7JlHDb/Q?= =?iso-8859-1?q?98uoDGUDAI6tPQj/pyadYDnHDuu56TYV1Sq8Fftkf18Uaq/zwF9?= =?iso-8859-1?q?Ctk0dG67T7tyyrNAV2YAdr4/UfG/HHmOWv9iJOEpXo7gqMAqufl?= =?iso-8859-1?q?ihqHXmvF8Ym1N2NgFG7yQNsy5ZWOkG2kL1YOESLu93UHs0QAQ/p?= =?iso-8859-1?q?mTn3F4RpNB0F9xbKAKq6KdBYXqVcrTYPebMx+QsPm3q7dFMuGbW?= =?iso-8859-1?q?rVOPY5zzhYsFD52hi1ElHdqIc3ud9HKVjQgkQDgMh+U/E2Bfnpd?= =?iso-8859-1?q?maRepxpnEqNtMzjreOXPBUoFqBJFwQwjX0yIffQl1LonpD+j56e?= =?iso-8859-1?q?lgIjKQAvJf9kj9uTIKncX3dhNdXTDAjbsBRVtcWwJ1NaGXo5vOF?= =?iso-8859-1?q?l/hZZ5vM/ALhKsC/YI3m1Aul0at5nFdxy40p9/q+2rlaYwpCxgm?= =?iso-8859-1?q?/+dfqYwKh1RIM8e7UtXwG4MJxdAnbN0JtrjLLHOnYEsAXFnveWO?= =?iso-8859-1?q?mDxxlUtjDTRlirA6OlV1dnfHL1BzwLFOZb2J6lYanCJEMV/zngf?= =?iso-8859-1?q?Z/EBc+A3e65obUHvjUHwoOXAm3luae0TVBQu3avzE+osw6YRKtz?= =?iso-8859-1?q?+VNl1GGGj/PiLX0wbcl6WJ5mblA3vzFaML2mDUQCXJWEEwGCzk5?= =?iso-8859-1?q?xkK6XPcIB8C5NKtNRWUJquk7TfbvOJjOAjaYVZovrg/Xau9KZBQ?= =?iso-8859-1?q?ws1Q2ve65TKSOBuvpkoSDZ1HY0i+J2zvROXZ5bjt7qWHkE7NlXW?= =?iso-8859-1?q?x0Og+trx/QQx+sRTj/i/OQhdfVUjro580CGRuUI/3kFWGvZSK9d?= =?iso-8859-1?q?dXdoD7v2fx3vUDs/Ldkk2q6kh51IrnYfYMexrEKckVyMzy/wN7s?= =?iso-8859-1?q?Jh+eZfnjyoLOZYXlfzmL59YaT0HDiHD4909pht9oBTi5U5J+dEc?= =?iso-8859-1?q?Euf25jAQ2YER0tXc8T7k0uaXzyKaYw=3D=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)(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: Jcnwy1HpYFB9ygTPpw1DQbcS+jr2ib4IkzPi9yT4ty+SDWUjmRwDPM8v845/i8TiSnVf1vgLl7bKwtU/NcQ+qe5i5zgPTJXtDoDPWRBAEIVqDbbqdtirSLSlDUgEYn1b2xjcC/304INif038WJ8oGLX5Aa1VPg3NiNTTLgwjSALdy3D7msWzRb6t5q9HKV2cdZw7FMPb6N8+l5awfqdS4SH1Zx4lPE24Y3pLTskZjpykaZS97fxfpmPyp846aDpGu/Q0MhEyTAfdqjkcF/fOGPVKXP91S8brBZTxWXzU2sxOpFpx5NVK0P26Hg8Xf66FUkCqA+cpLKDzyyXmO4J3Djh32W1Bhv/UjIDCrN9oJr+NH2DJT5EpzoRI2yVPJsyf6KFzXqTGE3BVpvbVU4gAYBVYhJlMPmaxXTASu/5co5o= MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 811927c2-bf2a-427b-0398-08d691a66e3a X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Feb 2019 11:28:51.3053 (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 Rename cooling device from "Fan" to "mlxsw_fan". Name "Fan" is too common name, and such name is misleading, while it's interpreted by user. For example name "Fan" could be used by ACPI. Signed-off-by: Vadim Pasternak Reviewed-by: Jiri Pirko Signed-off-by: Ido Schimmel --- drivers/net/ethernet/mellanox/mlxsw/core_thermal.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlxsw/core_thermal.c b/drivers/net/ethernet/mellanox/mlxsw/core_thermal.c index b9fb33417a82..8b71706f7a27 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/core_thermal.c +++ b/drivers/net/ethernet/mellanox/mlxsw/core_thermal.c @@ -431,8 +431,9 @@ int mlxsw_thermal_init(struct mlxsw_core *core, if (pwm_active & BIT(i)) { struct thermal_cooling_device *cdev; - cdev = thermal_cooling_device_register("Fan", thermal, - &mlxsw_cooling_ops); + cdev = thermal_cooling_device_register("mlxsw_fan", + thermal, + &mlxsw_cooling_ops); if (IS_ERR(cdev)) { err = PTR_ERR(cdev); dev_err(dev, "Failed to register cooling device\n"); From patchwork Wed Feb 13 11:28:53 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 1041201 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="CbQxwdTs"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43zy3S67jvz9s7T for ; Wed, 13 Feb 2019 22:29:24 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2403965AbfBML3X (ORCPT ); Wed, 13 Feb 2019 06:29:23 -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 S1727977AbfBML3W (ORCPT ); Wed, 13 Feb 2019 06:29:22 -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=HsaIJpUDAztrIbaESQRhyddQNuyeVjutebC8leLh2qs=; b=CbQxwdTsd6l/XpXZ/qTjBVz0dvxSGnOga/kQvklIoxEdor5Nq4tYt/sNmhs292Nz4+cTgM7PEvGYSuk/7cTsUjlpl8RKPopdHT5peVz5uuejR3RPl6UGnHyGcpKBbg1w17gIS+jjHg2aiZEbmo+EZQidnUGNJ2HyFyGR5YUJPvY= 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:53 +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:53 +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 09/12] mlxsw: core: Extend hwmon interface with fan fault attribute Thread-Topic: [PATCH net-next 09/12] mlxsw: core: Extend hwmon interface with fan fault attribute Thread-Index: AQHUw49MkrYghazVaUWzi1TmwnLpwQ== Date: Wed, 13 Feb 2019 11:28:53 +0000 Message-ID: <20190213112814.32334-10-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: ec066465-c065-48e6-d340-08d691a66ee1 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=3BAM6PR05MB6230=3B23?= =?iso-8859-1?q?=3AQs60qUGW9G3TiYuAKEjNlxpD510tG36OKzxO893JpufvB190?= =?iso-8859-1?q?Z1Qx2F0vrojVXPj9rNm4xoSHgk+GKIVW/Fu2BJNkHcHN1rgD1nL?= =?iso-8859-1?q?WjvDIsNO4l/Hg+UACBThQaEFjH7PgOeOBP3Fczi/xnqdc1LQWv4?= =?iso-8859-1?q?yfc9pz3B1vL9iMvo1A+lM7Sp56h/dP1jTLBlmLvqDMhJDqnFGfs?= =?iso-8859-1?q?jT/groMhytoRUB1qk68XCQsvj+pHhfYpUpCA3JVLC8RsdlX7WrU?= =?iso-8859-1?q?UNcp88Xm/WlsaAg8AM49TOFTISdBDcTvCb2Ey07s3D2BGK2eh0+?= =?iso-8859-1?q?pu4rCzSoMJeJQpg4hq1Ellg7rc0nFLXm15QYZ4StPJa8f1kosDf?= =?iso-8859-1?q?5QTj0DVUNxsA7Vz+MSC7Or8PwI/pW/OH4L9KDbWmx2Zkha+eA2j?= =?iso-8859-1?q?JWDXkNI5/TKlFOJQK20+JlZ+1OcKWCU+GSrQnfU7MRh7IQmPW6r?= =?iso-8859-1?q?DAf6I4hCLLg97URTU2euXawAa77OXkO62skPkYatSlXoyOCmmdm?= =?iso-8859-1?q?CQwNKu1tQfYE0Eo/p/BWRM3T4X4XLS0ZpCzfVpZUJKAjCE4zY00?= =?iso-8859-1?q?qiVUcWXb2VNHxd/LGtfnIc08VusLtOO/YvifDcMTEKnOWNWQedi?= =?iso-8859-1?q?JhTzF1EEvoUFkGuXP5tQSW/yrLlTiEdy1FaQBNQzmV3jP/eomTA?= =?iso-8859-1?q?3Q7d7cMgjWoUUYscQh59CYCfMV0GwsqVBcSNLJvSwIQu4CQVxr9?= =?iso-8859-1?q?NUzGEyC3q0oNbCciX/rCDfs+JKgSOOp0Ik1VTWl1L1GeOfotIwe?= =?iso-8859-1?q?fadhujP2PxiFzNdM/LNkPKah9rwjy6VDUb/jILLUdyd7lAwZ0fi?= =?iso-8859-1?q?YIlogeWFbTV+W+WWhOPgMHSLIL6k7sm94IIbLK8kJoloUIHIuBR?= =?iso-8859-1?q?cfRwYgV5J4Ck1DsK1ZQErnPnb7+P08iCTq6S0bdbTt2sFMTJ0wq?= =?iso-8859-1?q?qQ6/1wcG8ITAd/SW/jRqDnfye5aFfxZeI3RP4FozVRjk1AoiuGm?= =?iso-8859-1?q?fsq346weByP56g0nKkIhFWpll7m7H6oA60krKyJJoiKspajPJKd?= =?iso-8859-1?q?y3g4iDCUwsNptZVtcoHtgyfy9YBPoGG6W7PboBPwVAe+SRtFRoL?= =?iso-8859-1?q?SmKjenxzcXqBFFbOCYc3ljYuXQM78ZJJRxk1H2oYnaBbKlFSqQ7?= =?iso-8859-1?q?7PHgqBOBSvQXjPOouwrIoTjFs+L8V0Ghr66ruaLZuX2iPVXv+TJ?= =?iso-8859-1?q?rjFnlv5UzrCuLIdsERdu5E7a2H07GWAyQ7gYvf4MNkr9Sp4y+WO?= =?iso-8859-1?q?XjxREk9zgBeEHB/GFlfQw8kQ2b4sdN9BlBIIJ9PBIDMTEOuOttk?= =?iso-8859-1?q?aRGLJrxj6/MR3NKIf2NAMI6o0B/5DpT5r7f5JN2Dec6L2Y48T0k?= =?iso-8859-1?q?=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: DxMQgPbzbi6Qw45kO5D9itLRxoZVv6l22I1pPM85B5Sv+YlDkjdkMhJKEr0ZWBy1ePh+k8z2zhqbKwS3ZP6l0rmh1EyYagueF5v3sUCw/yd6QS29Ge5kfahG0SAQkMr8PSbfFHpHgNmbQMugyi8sPYZW5gRrtB0OWFOHH/LGyQWLOXjJS/NzhV+Srj14Syt7gmePXBfIoI47UyDYp1ky8GJLFhGx9uYCbroj6VcIjHGCh7v+Y/Gka2sNesupaksoKsSVdI2gy5gtRLH8NgKMHdXA+49dDGZ+2tS9ahJb9e7ItTVBSX+PkYkoV+qzF99TK4/CakDJ4jZVl+9Lr0+xy13Xvy4XdxWAC8aIq7Gxx4wxr+r05JWcp06uJtUNAC3FUkHfYDZPd4BXg/yOSTFH6P/rA1CIAZSIZBjsDJSdMjI= MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: ec066465-c065-48e6-d340-08d691a66ee1 X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Feb 2019 11:28:52.4061 (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 new fan hwmon attribute for exposing fan faults (fault indication is read from Fan Out of Range Event Register). Signed-off-by: Vadim Pasternak Reviewed-by: Jiri Pirko Signed-off-by: Ido Schimmel --- .../net/ethernet/mellanox/mlxsw/core_hwmon.c | 34 ++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/mellanox/mlxsw/core_hwmon.c b/drivers/net/ethernet/mellanox/mlxsw/core_hwmon.c index e04e8162aa14..40e13093b62d 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/core_hwmon.c +++ b/drivers/net/ethernet/mellanox/mlxsw/core_hwmon.c @@ -121,6 +121,27 @@ static ssize_t mlxsw_hwmon_fan_rpm_show(struct device *dev, return sprintf(buf, "%u\n", mlxsw_reg_mfsm_rpm_get(mfsm_pl)); } +static ssize_t mlxsw_hwmon_fan_fault_show(struct device *dev, + struct device_attribute *attr, + char *buf) +{ + struct mlxsw_hwmon_attr *mlwsw_hwmon_attr = + container_of(attr, struct mlxsw_hwmon_attr, dev_attr); + struct mlxsw_hwmon *mlxsw_hwmon = mlwsw_hwmon_attr->hwmon; + char fore_pl[MLXSW_REG_FORE_LEN]; + bool fault; + int err; + + err = mlxsw_reg_query(mlxsw_hwmon->core, MLXSW_REG(fore), fore_pl); + if (err) { + dev_err(mlxsw_hwmon->bus_info->dev, "Failed to query fan\n"); + return err; + } + mlxsw_reg_fore_unpack(fore_pl, mlwsw_hwmon_attr->type_index, &fault); + + return sprintf(buf, "%u\n", fault); +} + static ssize_t mlxsw_hwmon_pwm_show(struct device *dev, struct device_attribute *attr, char *buf) @@ -172,6 +193,7 @@ enum mlxsw_hwmon_attr_type { MLXSW_HWMON_ATTR_TYPE_TEMP_MAX, MLXSW_HWMON_ATTR_TYPE_TEMP_RST, MLXSW_HWMON_ATTR_TYPE_FAN_RPM, + MLXSW_HWMON_ATTR_TYPE_FAN_FAULT, MLXSW_HWMON_ATTR_TYPE_PWM, }; @@ -209,6 +231,12 @@ static void mlxsw_hwmon_attr_add(struct mlxsw_hwmon *mlxsw_hwmon, snprintf(mlxsw_hwmon_attr->name, sizeof(mlxsw_hwmon_attr->name), "fan%u_input", num + 1); break; + case MLXSW_HWMON_ATTR_TYPE_FAN_FAULT: + mlxsw_hwmon_attr->dev_attr.show = mlxsw_hwmon_fan_fault_show; + mlxsw_hwmon_attr->dev_attr.attr.mode = 0444; + snprintf(mlxsw_hwmon_attr->name, sizeof(mlxsw_hwmon_attr->name), + "fan%u_fault", num + 1); + break; case MLXSW_HWMON_ATTR_TYPE_PWM: mlxsw_hwmon_attr->dev_attr.show = mlxsw_hwmon_pwm_show; mlxsw_hwmon_attr->dev_attr.store = mlxsw_hwmon_pwm_store; @@ -280,10 +308,14 @@ static int mlxsw_hwmon_fans_init(struct mlxsw_hwmon *mlxsw_hwmon) mlxsw_reg_mfcr_unpack(mfcr_pl, &freq, &tacho_active, &pwm_active); num = 0; for (type_index = 0; type_index < MLXSW_MFCR_TACHOS_MAX; type_index++) { - if (tacho_active & BIT(type_index)) + if (tacho_active & BIT(type_index)) { mlxsw_hwmon_attr_add(mlxsw_hwmon, MLXSW_HWMON_ATTR_TYPE_FAN_RPM, + type_index, num); + mlxsw_hwmon_attr_add(mlxsw_hwmon, + MLXSW_HWMON_ATTR_TYPE_FAN_FAULT, type_index, num++); + } } num = 0; for (type_index = 0; type_index < MLXSW_MFCR_PWMS_MAX; type_index++) { From patchwork Wed Feb 13 11:28:54 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 1041196 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="BAuxVCNf"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43zy336qhpz9s7T for ; Wed, 13 Feb 2019 22:29:03 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2403929AbfBML3C (ORCPT ); Wed, 13 Feb 2019 06:29:02 -0500 Received: from mail-eopbgr40065.outbound.protection.outlook.com ([40.107.4.65]:56992 "EHLO EUR03-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727977AbfBML27 (ORCPT ); Wed, 13 Feb 2019 06:28:59 -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=QdoQKr74qxX7jCmeHf2xvjoGKgV7dulKGr7/GzEFpeA=; b=BAuxVCNfFgmqWEfcKGI6vHP9Rgq+f68vGaYJFAMoQh9f3SbRIkByuFmzvIqyeo69kRLpaEbV2RRG1V7Rvh9USJV1JtLGTUAm9CQO9rm3bZOS4WU2LWOFFXaUVlhKL0duljzFh0t9ayeF7RNI47Sadl8J8esh4Gne1FvC3vIUeto= Received: from AM6PR05MB5240.eurprd05.prod.outlook.com (20.177.196.214) by AM6PR05MB4501.eurprd05.prod.outlook.com (52.135.163.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1601.17; Wed, 13 Feb 2019 11:28:54 +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:54 +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 10/12] mlxsw: core: Extend hwmon interface with QSFP module temperature attributes Thread-Topic: [PATCH net-next 10/12] mlxsw: core: Extend hwmon interface with QSFP module temperature attributes Thread-Index: AQHUw49NgJ4cD05nnEWVD5N78ut0FA== Date: Wed, 13 Feb 2019 11:28:54 +0000 Message-ID: <20190213112814.32334-11-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: f2762cb6-b549-4989-0508-08d691a66f94 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:AM6PR05MB4501; x-ms-traffictypediagnostic: AM6PR05MB4501: x-microsoft-exchange-diagnostics: =?iso-8859-1?q?1=3BAM6PR05MB4501=3B23?= =?iso-8859-1?q?=3AwRoDsPXxxNDe0shtbR7WeB3fjUms2WKTEB7HOUW0a6MM0Dvn?= =?iso-8859-1?q?oy6UIo5QnxU/kyfaCxP0BoDSjoLJojqGKpfexhIthDOwUtqDKv2?= =?iso-8859-1?q?Cye4RGE3zq1otezEnrHr0T3D46h6Fj3yMMm85t/3gnTwF/f9XKB?= =?iso-8859-1?q?HPb7JuqswvU1PX+q42iG9vH8zu+pGxKsS9KgC1i84N/M2epJifj?= =?iso-8859-1?q?G46OeMHHX44d0G8SQqzs81z4CkGKAawZz/kXmbMda6Fhhxsf7Nq?= =?iso-8859-1?q?A6EHWu096SZvXlIc6Ynjj7qqDnci2Y8PHIZMfrdGkUWiCxA+tFJ?= =?iso-8859-1?q?JLr13bbH4OC5Z5jWtK+5f3RClvGg3gRaPewyukGl6qNvQ4nMDcd?= =?iso-8859-1?q?kXjrRDlaqu7+UPhpiaAyOKhaEPHU1KMci+UmH8Q/SUnHznpTcVM?= =?iso-8859-1?q?iZ3V6IFq/1E3yE9donIoSwaNG8sXkM5NjlTKAVil0cLAYIWKSaX?= =?iso-8859-1?q?CBh7cEXdDoKAm2LheIFzxPxuCtYc79oXWaEkrjmNAAbEcDUAAmk?= =?iso-8859-1?q?JpolWGNbvWGzyb8IiexKo65jE4YJN7UbIYB+YBWAxXMX7s6IJ+D?= =?iso-8859-1?q?m85QyBZ+mvFQ5ZRWdr4LD5W/uVB6Rg+TyqlDjsIJ4g9nkBDAoLz?= =?iso-8859-1?q?yU8t5prAz/kTsoTJoIx/J2+niv/3xV72/LE1GaaMyLw7l4orQQT?= =?iso-8859-1?q?jCZXwJih5TejEhpaSfzuNNc+d2/CbPoDpy+hgcmIXtBcjyNTxig?= =?iso-8859-1?q?wyn6x0LkuwPIHczQRbVdw+OgH/L12oublUw30NdAVWLhn50mFPJ?= =?iso-8859-1?q?0gC0iu1dtlvvyinl2bfQcBhkYyEUCsnnCNRJnTEd88XGOQ4HFyz?= =?iso-8859-1?q?ItRi+UGoHHEa65MmJF2itYGUCfhUxHFFH3NrvhCh9+svlUtojwi?= =?iso-8859-1?q?PAoJWVc3ocGz46yJuEtZPRi+pI4gnGJepdS0dO6TPYEb3Tnunhi?= =?iso-8859-1?q?1gmA29vhmK5/t2OTffCqtP5e9YOPsm8/FQwpWYYpxmNhCsWhtI8?= =?iso-8859-1?q?y4wTsXzkgGPwzLehGuGR83bbd+nZoKLuzFoqDl078gNVM8z5DCw?= =?iso-8859-1?q?+6oyq6jKLXDlzac86X9IUKGRkdxKBBa7VwDgRAtsNV/SlvhOkwA?= =?iso-8859-1?q?q7JVW7KIIXvXm/2m55nnxV7i+hlT2aiXwo8pi9foGRFVtqcIoMj?= =?iso-8859-1?q?K3FZQarFIi3rqA7l3gZo8lV220MwPWKZph0dUoa/bTxsy9Bdou6?= =?iso-8859-1?q?ZHcvCO2JbcFwc9t5+mpJWd9d7y7cbL4foGNB3zZ6i6GS+2iZ+by?= =?iso-8859-1?q?Xq4CVE1+0qQpwcbklR3WwdEz4mPtxZv+AqnoE+5PbKgpAcLNRTl?= =?iso-8859-1?q?wuk1sTn3kdBCckUvUUevctLXUbP1PQpmLlrGaacLDfR4FhUpXbI?= =?iso-8859-1?q?=3D?= x-microsoft-antispam-prvs: x-forefront-prvs: 094700CA91 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(366004)(396003)(376002)(346002)(39860400002)(189003)(199004)(6116002)(256004)(3846002)(2501003)(76176011)(2906002)(14444005)(99286004)(52116002)(97736004)(26005)(186003)(476003)(2616005)(106356001)(446003)(11346002)(105586002)(2351001)(25786009)(4326008)(86362001)(102836004)(71200400001)(8936002)(486006)(478600001)(1730700003)(66066001)(14454004)(71190400001)(53936002)(36756003)(81156014)(6486002)(107886003)(54906003)(68736007)(7736002)(6436002)(5640700003)(81166006)(305945005)(316002)(6506007)(1076003)(386003)(6916009)(8676002)(6512007)(50226002); DIR:OUT; SFP:1101; SCL:1; SRVR:AM6PR05MB4501; 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: Sf5lRDgHPhGGr/GxYQtAvZ3tCqnn0jGKZU0zZwTWCYNGL7j9iUfEfnLDD7rTAgCpZQF3DTvu5nZSsTvx0veSWI4mImu+YgABH/P5fOaKn91b+BVQzgubitqJ9klYAVUdE9SAVWyF7SsuhWBywcjoyvkr1pXBN8q03YfAsYS09Z78g6pThRAPutPZxG2KA6v4Axj/SYBDnnTbt1NDo72ztJ5N/VaJCa2yF2l4tCfE8/xgUmXeLVjzRfJwUwzDfjGR5x/nyDLMsoB0cjh2mOdLLJ5QDBcirDdsS5heMNxVye+JqKy+MUqXYe9Dl7evUPdg6Ilc5vnvg145V664scymHd6T7LCrBkaWbQUm6UMGCYSS+vT9ckYVx5WQeewnUoZ3wWLytAIv4xI4LDJx8MlMcYmRRrekpmeuTJNH1+/lafM= MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: f2762cb6-b549-4989-0508-08d691a66f94 X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Feb 2019 11:28:53.5579 (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: AM6PR05MB4501 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Vadim Pasternak Add new attributes to hwmon object for exposing QSFP module temperature input, fault indication, critical and emergency thresholds. Temperature input and fault indication are read from Management Temperature Bulk Register. Temperature thresholds are read from Management Cable Info Access Register. Signed-off-by: Vadim Pasternak Reviewed-by: Jiri Pirko Signed-off-by: Ido Schimmel --- .../net/ethernet/mellanox/mlxsw/core_hwmon.c | 218 +++++++++++++++++- 1 file changed, 215 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlxsw/core_hwmon.c b/drivers/net/ethernet/mellanox/mlxsw/core_hwmon.c index 40e13093b62d..504f6bba8874 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/core_hwmon.c +++ b/drivers/net/ethernet/mellanox/mlxsw/core_hwmon.c @@ -7,8 +7,10 @@ #include #include #include +#include #include "core.h" +#include "core_env.h" #define MLXSW_HWMON_TEMP_SENSOR_MAX_COUNT 127 #define MLXSW_HWMON_ATTR_COUNT (MLXSW_HWMON_TEMP_SENSOR_MAX_COUNT * 4 + \ @@ -30,6 +32,7 @@ struct mlxsw_hwmon { struct attribute *attrs[MLXSW_HWMON_ATTR_COUNT + 1]; struct mlxsw_hwmon_attr hwmon_attrs[MLXSW_HWMON_ATTR_COUNT]; unsigned int attrs_count; + u8 sensor_count; }; static ssize_t mlxsw_hwmon_temp_show(struct device *dev, @@ -188,6 +191,136 @@ static ssize_t mlxsw_hwmon_pwm_store(struct device *dev, return len; } +static ssize_t mlxsw_hwmon_module_temp_show(struct device *dev, + struct device_attribute *attr, + char *buf) +{ + struct mlxsw_hwmon_attr *mlwsw_hwmon_attr = + container_of(attr, struct mlxsw_hwmon_attr, dev_attr); + struct mlxsw_hwmon *mlxsw_hwmon = mlwsw_hwmon_attr->hwmon; + char mtbr_pl[MLXSW_REG_MTBR_LEN] = {0}; + u16 temp; + u8 module; + int err; + + module = mlwsw_hwmon_attr->type_index - mlxsw_hwmon->sensor_count; + mlxsw_reg_mtbr_pack(mtbr_pl, MLXSW_REG_MTBR_BASE_MODULE_INDEX + module, + 1); + err = mlxsw_reg_query(mlxsw_hwmon->core, MLXSW_REG(mtbr), mtbr_pl); + if (err) { + dev_err(dev, "Failed to query module temprature sensor\n"); + return err; + } + + mlxsw_reg_mtbr_temp_unpack(mtbr_pl, 0, &temp, NULL); + /* Update status and temperature cache. */ + switch (temp) { + case MLXSW_REG_MTBR_NO_CONN: /* fall-through */ + case MLXSW_REG_MTBR_NO_TEMP_SENS: /* fall-through */ + case MLXSW_REG_MTBR_INDEX_NA: + temp = 0; + break; + case MLXSW_REG_MTBR_BAD_SENS_INFO: + /* Untrusted cable is connected. Reading temperature from its + * sensor is faulty. + */ + temp = 0; + break; + default: + temp = MLXSW_REG_MTMP_TEMP_TO_MC(temp); + break; + } + + return sprintf(buf, "%u\n", temp); +} + +static ssize_t mlxsw_hwmon_module_temp_fault_show(struct device *dev, + struct device_attribute *attr, + char *buf) +{ + struct mlxsw_hwmon_attr *mlwsw_hwmon_attr = + container_of(attr, struct mlxsw_hwmon_attr, dev_attr); + struct mlxsw_hwmon *mlxsw_hwmon = mlwsw_hwmon_attr->hwmon; + char mtbr_pl[MLXSW_REG_MTBR_LEN] = {0}; + u8 module, fault; + u16 temp; + int err; + + module = mlwsw_hwmon_attr->type_index - mlxsw_hwmon->sensor_count; + mlxsw_reg_mtbr_pack(mtbr_pl, MLXSW_REG_MTBR_BASE_MODULE_INDEX + module, + 1); + err = mlxsw_reg_query(mlxsw_hwmon->core, MLXSW_REG(mtbr), mtbr_pl); + if (err) { + dev_err(dev, "Failed to query module temprature sensor\n"); + return err; + } + + mlxsw_reg_mtbr_temp_unpack(mtbr_pl, 0, &temp, NULL); + + /* Update status and temperature cache. */ + switch (temp) { + case MLXSW_REG_MTBR_BAD_SENS_INFO: + /* Untrusted cable is connected. Reading temperature from its + * sensor is faulty. + */ + fault = 1; + break; + case MLXSW_REG_MTBR_NO_CONN: /* fall-through */ + case MLXSW_REG_MTBR_NO_TEMP_SENS: /* fall-through */ + case MLXSW_REG_MTBR_INDEX_NA: + default: + fault = 0; + break; + } + + return sprintf(buf, "%u\n", fault); +} + +static ssize_t +mlxsw_hwmon_module_temp_critical_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + struct mlxsw_hwmon_attr *mlwsw_hwmon_attr = + container_of(attr, struct mlxsw_hwmon_attr, dev_attr); + struct mlxsw_hwmon *mlxsw_hwmon = mlwsw_hwmon_attr->hwmon; + int temp; + u8 module; + int err; + + module = mlwsw_hwmon_attr->type_index - mlxsw_hwmon->sensor_count; + err = mlxsw_env_module_temp_thresholds_get(mlxsw_hwmon->core, module, + SFP_TEMP_HIGH_WARN, &temp); + if (err) { + dev_err(dev, "Failed to query module temprature thresholds\n"); + return err; + } + + return sprintf(buf, "%u\n", temp); +} + +static ssize_t +mlxsw_hwmon_module_temp_emergency_show(struct device *dev, + struct device_attribute *attr, + char *buf) +{ + struct mlxsw_hwmon_attr *mlwsw_hwmon_attr = + container_of(attr, struct mlxsw_hwmon_attr, dev_attr); + struct mlxsw_hwmon *mlxsw_hwmon = mlwsw_hwmon_attr->hwmon; + u8 module; + int temp; + int err; + + module = mlwsw_hwmon_attr->type_index - mlxsw_hwmon->sensor_count; + err = mlxsw_env_module_temp_thresholds_get(mlxsw_hwmon->core, module, + SFP_TEMP_HIGH_ALARM, &temp); + if (err) { + dev_err(dev, "Failed to query module temprature thresholds\n"); + return err; + } + + return sprintf(buf, "%u\n", temp); +} + enum mlxsw_hwmon_attr_type { MLXSW_HWMON_ATTR_TYPE_TEMP, MLXSW_HWMON_ATTR_TYPE_TEMP_MAX, @@ -195,6 +328,10 @@ enum mlxsw_hwmon_attr_type { MLXSW_HWMON_ATTR_TYPE_FAN_RPM, MLXSW_HWMON_ATTR_TYPE_FAN_FAULT, MLXSW_HWMON_ATTR_TYPE_PWM, + MLXSW_HWMON_ATTR_TYPE_TEMP_MODULE, + MLXSW_HWMON_ATTR_TYPE_TEMP_MODULE_FAULT, + MLXSW_HWMON_ATTR_TYPE_TEMP_MODULE_CRIT, + MLXSW_HWMON_ATTR_TYPE_TEMP_MODULE_EMERG, }; static void mlxsw_hwmon_attr_add(struct mlxsw_hwmon *mlxsw_hwmon, @@ -244,6 +381,33 @@ static void mlxsw_hwmon_attr_add(struct mlxsw_hwmon *mlxsw_hwmon, snprintf(mlxsw_hwmon_attr->name, sizeof(mlxsw_hwmon_attr->name), "pwm%u", num + 1); break; + case MLXSW_HWMON_ATTR_TYPE_TEMP_MODULE: + mlxsw_hwmon_attr->dev_attr.show = mlxsw_hwmon_module_temp_show; + mlxsw_hwmon_attr->dev_attr.attr.mode = 0444; + snprintf(mlxsw_hwmon_attr->name, sizeof(mlxsw_hwmon_attr->name), + "temp%u_input", num + 1); + break; + case MLXSW_HWMON_ATTR_TYPE_TEMP_MODULE_FAULT: + mlxsw_hwmon_attr->dev_attr.show = + mlxsw_hwmon_module_temp_fault_show; + mlxsw_hwmon_attr->dev_attr.attr.mode = 0444; + snprintf(mlxsw_hwmon_attr->name, sizeof(mlxsw_hwmon_attr->name), + "temp%u_fault", num + 1); + break; + case MLXSW_HWMON_ATTR_TYPE_TEMP_MODULE_CRIT: + mlxsw_hwmon_attr->dev_attr.show = + mlxsw_hwmon_module_temp_critical_show; + mlxsw_hwmon_attr->dev_attr.attr.mode = 0444; + snprintf(mlxsw_hwmon_attr->name, sizeof(mlxsw_hwmon_attr->name), + "temp%u_crit", num + 1); + break; + case MLXSW_HWMON_ATTR_TYPE_TEMP_MODULE_EMERG: + mlxsw_hwmon_attr->dev_attr.show = + mlxsw_hwmon_module_temp_emergency_show; + mlxsw_hwmon_attr->dev_attr.attr.mode = 0444; + snprintf(mlxsw_hwmon_attr->name, sizeof(mlxsw_hwmon_attr->name), + "temp%u_emergency", num + 1); + break; default: WARN_ON(1); } @@ -261,7 +425,6 @@ static int mlxsw_hwmon_temp_init(struct mlxsw_hwmon *mlxsw_hwmon) { char mtcap_pl[MLXSW_REG_MTCAP_LEN] = {0}; char mtmp_pl[MLXSW_REG_MTMP_LEN]; - u8 sensor_count; int i; int err; @@ -270,8 +433,8 @@ static int mlxsw_hwmon_temp_init(struct mlxsw_hwmon *mlxsw_hwmon) dev_err(mlxsw_hwmon->bus_info->dev, "Failed to get number of temp sensors\n"); return err; } - sensor_count = mlxsw_reg_mtcap_sensor_count_get(mtcap_pl); - for (i = 0; i < sensor_count; i++) { + mlxsw_hwmon->sensor_count = mlxsw_reg_mtcap_sensor_count_get(mtcap_pl); + for (i = 0; i < mlxsw_hwmon->sensor_count; i++) { mlxsw_reg_mtmp_pack(mtmp_pl, i, true, true); err = mlxsw_reg_write(mlxsw_hwmon->core, MLXSW_REG(mtmp), mtmp_pl); @@ -327,6 +490,50 @@ static int mlxsw_hwmon_fans_init(struct mlxsw_hwmon *mlxsw_hwmon) return 0; } +static int mlxsw_hwmon_module_init(struct mlxsw_hwmon *mlxsw_hwmon) +{ + unsigned int module_count = mlxsw_core_max_ports(mlxsw_hwmon->core); + char pmlp_pl[MLXSW_REG_PMLP_LEN] = {0}; + int i, index; + u8 width; + int err; + + /* Add extra attributes for module temperature. Sensor index is + * assigned to sensor_count value, while all indexed before + * sensor_count are already utilized by the sensors connected through + * mtmp register by mlxsw_hwmon_temp_init(). + */ + index = mlxsw_hwmon->sensor_count; + for (i = 1; i < module_count; i++) { + mlxsw_reg_pmlp_pack(pmlp_pl, i); + err = mlxsw_reg_query(mlxsw_hwmon->core, MLXSW_REG(pmlp), + pmlp_pl); + if (err) { + dev_err(mlxsw_hwmon->bus_info->dev, "Failed to read module index %d\n", + i); + return err; + } + width = mlxsw_reg_pmlp_width_get(pmlp_pl); + if (!width) + continue; + mlxsw_hwmon_attr_add(mlxsw_hwmon, + MLXSW_HWMON_ATTR_TYPE_TEMP_MODULE, index, + index); + mlxsw_hwmon_attr_add(mlxsw_hwmon, + MLXSW_HWMON_ATTR_TYPE_TEMP_MODULE_FAULT, + index, index); + mlxsw_hwmon_attr_add(mlxsw_hwmon, + MLXSW_HWMON_ATTR_TYPE_TEMP_MODULE_CRIT, + index, index); + mlxsw_hwmon_attr_add(mlxsw_hwmon, + MLXSW_HWMON_ATTR_TYPE_TEMP_MODULE_EMERG, + index, index); + index++; + } + + return 0; +} + int mlxsw_hwmon_init(struct mlxsw_core *mlxsw_core, const struct mlxsw_bus_info *mlxsw_bus_info, struct mlxsw_hwmon **p_hwmon) @@ -349,6 +556,10 @@ int mlxsw_hwmon_init(struct mlxsw_core *mlxsw_core, if (err) goto err_fans_init; + err = mlxsw_hwmon_module_init(mlxsw_hwmon); + if (err) + goto err_temp_module_init; + mlxsw_hwmon->groups[0] = &mlxsw_hwmon->group; mlxsw_hwmon->group.attrs = mlxsw_hwmon->attrs; @@ -365,6 +576,7 @@ int mlxsw_hwmon_init(struct mlxsw_core *mlxsw_core, return 0; err_hwmon_register: +err_temp_module_init: err_fans_init: err_temp_init: kfree(mlxsw_hwmon); From patchwork Wed Feb 13 11:28:55 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 1041198 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="XoSOdG4z"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43zy3747wqz9s7h for ; Wed, 13 Feb 2019 22:29:07 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2403939AbfBML3G (ORCPT ); Wed, 13 Feb 2019 06:29:06 -0500 Received: from mail-eopbgr50079.outbound.protection.outlook.com ([40.107.5.79]:24665 "EHLO EUR03-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2403919AbfBML27 (ORCPT ); Wed, 13 Feb 2019 06:28:59 -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=+qxoN9u5WGY718q92Y4asa0aWvOOK7wxSgp8qjXeORg=; b=XoSOdG4zAuyhv6E2ejflhIz5XeAP7c+oIIQc/6duLgw6Q57Vu9tAe2yEy209oQ+dA9GCTLbiu9N9l/OMTy4HXpxkU434ipbAE8WBSaWP/Gn+TfqKCSDOWJT1wB2HBiOUmyLx7n1B4ey9cb6B4x+GbU4sEzcNAVl4Ogn+n6QmsRw= Received: from AM6PR05MB5240.eurprd05.prod.outlook.com (20.177.196.214) by AM6PR05MB5111.eurprd05.prod.outlook.com (20.177.196.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1601.17; Wed, 13 Feb 2019 11:28:55 +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:55 +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 11/12] mlxsw: core: Add QSFP module temperature label attribute to hwmon Thread-Topic: [PATCH net-next 11/12] mlxsw: core: Add QSFP module temperature label attribute to hwmon Thread-Index: AQHUw49NgzEPepyICUSSQWqrln0kRA== Date: Wed, 13 Feb 2019 11:28:55 +0000 Message-ID: <20190213112814.32334-12-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) 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: 23743678-b334-44fe-036b-08d691a67038 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:AM6PR05MB5111; x-ms-traffictypediagnostic: AM6PR05MB5111: x-microsoft-exchange-diagnostics: =?iso-8859-1?q?1=3BAM6PR05MB5111=3B23?= =?iso-8859-1?q?=3AkuDRRuUw6XiWvy5a2XjZfCMMcne3os7xTLJoJbJGFDeqiqJx?= =?iso-8859-1?q?FDhx5Y0sZroJJD49YVnkXtx8Wu1/qQUFFTtj5EQC90QvpNBDgH8?= =?iso-8859-1?q?baWWnSlSGiNfGZ5oRdg2xO/ujuZA9hEkUZ1EF8S4CB3GKEVzOP5?= =?iso-8859-1?q?VjIhvzQrEIACvKXuxanV209k6OwPB5T/AKpurY0woqwOAqaxIiA?= =?iso-8859-1?q?lY2UGitLQESKgEXKKIBHlLJPnWTrA58cBenVKc4mhfDuT0Egzsq?= =?iso-8859-1?q?M5pz0xTQjZRHm4cjtgm7EH0SftWLY3fqxbiEiBfJ9pXEoUFE82d?= =?iso-8859-1?q?rnCoczieqIghTTc9xqVx7ar2uxKD+16kQ7XWpNJ1W8HD/7c/sK4?= =?iso-8859-1?q?fAVFEw7eZM7SwHLna7GS9YJZGlYXdDoIUMHe0acon1DowL4sFKw?= =?iso-8859-1?q?dKw11jkYbQq8fk6N6RcjDpwoDpHDr2tOUG5kuHOU3if3zZVdnrM?= =?iso-8859-1?q?QY/I+L0Hpn7qPMXHskRXTn1DIy7P1RXrHPLPV5CioA31XyhG80o?= =?iso-8859-1?q?eSyIsS3NmXvBIe9SQSFZ1nenlBLMoZrjW+NpsoJW3BuMTnJbQZR?= =?iso-8859-1?q?VumKwMi4QZSWLY2SdY26H+qDYYUHMZO5BoOsPSRMsJg7IW9o70d?= =?iso-8859-1?q?jSZjzGFQaKbx3vHAJ4mDAfdftbuQ0neWu8ENME9L+oRA2tZr+bf?= =?iso-8859-1?q?J06JgYWIGY+4/sKmSbH/QtHqUXEjHcjyC4quI546KFa3/suoW+S?= =?iso-8859-1?q?c6hTPCEBRZExolCDJ58/7ftAKQLCDW34QqmHF1P2d/gSapjKL0v?= =?iso-8859-1?q?0X+GWEL0+WNJJb5VmaqP1P/4h1o79Kw+W/3A0SVjxSBGlaSnzeF?= =?iso-8859-1?q?+lfgAb9mz/lJy/G9nXDkCcOcLq6S2Q2I9kGOax3g6UjnhwqDpg3?= =?iso-8859-1?q?/0vjL963BZGvkF7lOcCLXS7aVwhSJl7B6AUnX6fmS9hNaMUBtH9?= =?iso-8859-1?q?QgNKsrYfRvqKPKBDvPSUYR0RGjvJGh32EeNG4t8JvN9siBi2n7L?= =?iso-8859-1?q?ONpik2XXq2xPCqd6sK69bSPvmanLdBp0pXHt0NEmrf2cTM6Inl2?= =?iso-8859-1?q?XyZcuPURZ8c6XA6AP3I6V4VJFJ45Oj9zVrzDYI4fwCYKm0WFFQL?= =?iso-8859-1?q?RFBZPASJIxZiiSk65bCSy3QijUmnaoDVVc41dG/PlukcOtGwU9R?= =?iso-8859-1?q?058DFzDGLX96I6QHVHRRjYhP5TkPqUz2d8FCiN4F/a0+1YQ8Ilh?= =?iso-8859-1?q?c1WSNo0D8zaJUxVMHEKrmnf6hgGptEKZBfRv9gMPi5cU7vmsgue?= =?iso-8859-1?q?xHUkf4wj+pzC4Bm2wWQh+a1XFOycKdvL7EjpChhzxTr2X39tNs+?= =?iso-8859-1?q?fho9APpwaB/S62RW918ndi31EoH0kKCeGjqAr3c2RPx94QJwh3v?= =?iso-8859-1?q?cVA8NWKEzJuTzI0nBQcsQ?= x-microsoft-antispam-prvs: x-forefront-prvs: 094700CA91 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(376002)(396003)(39860400002)(366004)(346002)(199004)(189003)(68736007)(97736004)(76176011)(52116002)(7736002)(305945005)(102836004)(2351001)(14454004)(50226002)(2501003)(386003)(6506007)(8676002)(105586002)(1730700003)(106356001)(486006)(36756003)(81166006)(2906002)(81156014)(71200400001)(256004)(71190400001)(25786009)(1076003)(26005)(66066001)(6916009)(53936002)(3846002)(446003)(2616005)(6346003)(6436002)(316002)(4326008)(186003)(86362001)(6486002)(6512007)(5640700003)(54906003)(99286004)(6116002)(8936002)(476003)(107886003)(478600001)(11346002)(21314003); DIR:OUT; SFP:1101; SCL:1; SRVR:AM6PR05MB5111; 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) authentication-results: spf=none (sender IP is ) smtp.mailfrom=idosch@mellanox.com; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: lVpjh8kPzaxp8Tm+NA5nr8+gIA8fKtE7OPXEfRBlqeX6Ryhzc1+Cv4jurK60z5GrrRARiDlSHwu+QjFQ5ewaBTN8EYTIltU5RuHwZ2zaCK42V5AszOQmmR/znyQMZxHN8KVRBoN6di036CrSwIzeRCzJW+vqDIW/2g2QaulH05XD6nqMD5YxH6jDyIEo6AGt/64BOCn13fBGeVXqJIDkIQY3EsRskrv2jMcttdQ14AkEJhT3wgMUdxnubJII9vxAne0jz5vZpvEbY6O5FEzA92yREyWC2ZjOkReT+RJCtDeJgJzXDzfNSs79ltqMwAAiLnor2f7vi/UmSeRHyCOgNS4xUa+M0/1R27XSjaKwSUw/aaFGyHvdUX8udpkUTi4k76/TMqg2QAqIuh9T0qPs782/+v9ZA6Ww4iJyFwIMoIo= MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 23743678-b334-44fe-036b-08d691a67038 X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Feb 2019 11:28:54.6457 (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: AM6PR05MB5111 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Vadim Pasternak Add label attribute to hwmon object for exposing QSFP module's temperature sensor name. Modules are labeled as "front panel xxx". The label is used by utilities such as "sensors": front panel 001: +0.0C (crit = +0.0C, emerg = +0.0C) .. front panel 020: +31.0C (crit = +70.0C, emerg = +80.0C) .. front panel 056: +41.0C (crit = +70.0C, emerg = +80.0C) Signed-off-by: Vadim Pasternak Reviewed-by: Jiri Pirko Signed-off-by: Ido Schimmel --- .../net/ethernet/mellanox/mlxsw/core_hwmon.c | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/drivers/net/ethernet/mellanox/mlxsw/core_hwmon.c b/drivers/net/ethernet/mellanox/mlxsw/core_hwmon.c index 504f6bba8874..f1ada4cdbd6b 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/core_hwmon.c +++ b/drivers/net/ethernet/mellanox/mlxsw/core_hwmon.c @@ -321,6 +321,18 @@ mlxsw_hwmon_module_temp_emergency_show(struct device *dev, return sprintf(buf, "%u\n", temp); } +static ssize_t +mlxsw_hwmon_module_temp_label_show(struct device *dev, + struct device_attribute *attr, + char *buf) +{ + struct mlxsw_hwmon_attr *mlwsw_hwmon_attr = + container_of(attr, struct mlxsw_hwmon_attr, dev_attr); + + return sprintf(buf, "front panel %03u\n", + mlwsw_hwmon_attr->type_index); +} + enum mlxsw_hwmon_attr_type { MLXSW_HWMON_ATTR_TYPE_TEMP, MLXSW_HWMON_ATTR_TYPE_TEMP_MAX, @@ -332,6 +344,7 @@ enum mlxsw_hwmon_attr_type { MLXSW_HWMON_ATTR_TYPE_TEMP_MODULE_FAULT, MLXSW_HWMON_ATTR_TYPE_TEMP_MODULE_CRIT, MLXSW_HWMON_ATTR_TYPE_TEMP_MODULE_EMERG, + MLXSW_HWMON_ATTR_TYPE_TEMP_MODULE_LABEL, }; static void mlxsw_hwmon_attr_add(struct mlxsw_hwmon *mlxsw_hwmon, @@ -408,6 +421,13 @@ static void mlxsw_hwmon_attr_add(struct mlxsw_hwmon *mlxsw_hwmon, snprintf(mlxsw_hwmon_attr->name, sizeof(mlxsw_hwmon_attr->name), "temp%u_emergency", num + 1); break; + case MLXSW_HWMON_ATTR_TYPE_TEMP_MODULE_LABEL: + mlxsw_hwmon_attr->dev_attr.show = + mlxsw_hwmon_module_temp_label_show; + mlxsw_hwmon_attr->dev_attr.attr.mode = 0444; + snprintf(mlxsw_hwmon_attr->name, sizeof(mlxsw_hwmon_attr->name), + "temp%u_label", num + 1); + break; default: WARN_ON(1); } @@ -528,6 +548,9 @@ static int mlxsw_hwmon_module_init(struct mlxsw_hwmon *mlxsw_hwmon) mlxsw_hwmon_attr_add(mlxsw_hwmon, MLXSW_HWMON_ATTR_TYPE_TEMP_MODULE_EMERG, index, index); + mlxsw_hwmon_attr_add(mlxsw_hwmon, + MLXSW_HWMON_ATTR_TYPE_TEMP_MODULE_LABEL, + index, index); index++; } From patchwork Wed Feb 13 11:28:56 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 1041199 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="a+6cAW7o"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43zy392dN1z9s7T for ; Wed, 13 Feb 2019 22:29:09 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2403943AbfBML3I (ORCPT ); Wed, 13 Feb 2019 06:29:08 -0500 Received: from mail-eopbgr50079.outbound.protection.outlook.com ([40.107.5.79]:24665 "EHLO EUR03-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727977AbfBML3G (ORCPT ); Wed, 13 Feb 2019 06:29:06 -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=2n87eu1bf1gVdmL7t0ie1KDoAvIdzG1jIPj//zMMLp8=; b=a+6cAW7o3DInaM+EK1VBhBoiT1HEbpC9GkXfXT1VonESOyQO2dGveKeo4LKnnX8D30PNcrpFPyrVtjk4wBNKfNoq+ObvzASx4fZwM3kIaP79MdVJKsgdLUfDUr/0jijJhAk7JW/bY+gFY48N5wAPPtQNMNHjrt6QAdZNL7SZuPw= Received: from AM6PR05MB5240.eurprd05.prod.outlook.com (20.177.196.214) by AM6PR05MB5111.eurprd05.prod.outlook.com (20.177.196.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1601.17; Wed, 13 Feb 2019 11:28:56 +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:56 +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 12/12] mlxsw: core: Allow thermal zone binding to an external cooling device Thread-Topic: [PATCH net-next 12/12] mlxsw: core: Allow thermal zone binding to an external cooling device Thread-Index: AQHUw49ONUGaj06w3UeSW/le0H9m3w== Date: Wed, 13 Feb 2019 11:28:56 +0000 Message-ID: <20190213112814.32334-13-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) 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: 16332c46-c080-40b2-e63b-08d691a670d5 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:AM6PR05MB5111; x-ms-traffictypediagnostic: AM6PR05MB5111: x-microsoft-exchange-diagnostics: =?iso-8859-1?q?1=3BAM6PR05MB5111=3B23?= =?iso-8859-1?q?=3AfP5uusg11VHn+sIHjM9fewewBGe5lGbkGpYghak/mbKDL+hL?= =?iso-8859-1?q?hLGt1J0m96zM5/ApFTX6m979kfvcADzkfQS6R6HbepASox3ilCV?= =?iso-8859-1?q?/hWCfSh94O2JJpXE5SetDKGyaV0mSarK5kEConRCfhI9Emjjc3j?= =?iso-8859-1?q?HnG5uyOm/lnJ8Qn7BBN0wgjTcArnhGHrOhb/lNiNmqSUC/YBHtL?= =?iso-8859-1?q?1vTwXcE63t6vSXpb2UgVVNCEYHVWuPMBeQWFLYSXAje+npJ4GXq?= =?iso-8859-1?q?TftgQ2SY8YrbX40xkWnSWhdUgPcxfVhzA97BVcb5YoNbzSrSZ5t?= =?iso-8859-1?q?JxQXgHR6Y8YpDGcuPiZIF4guEf9/w57KgNjZKivC3Wg84OXW6eX?= =?iso-8859-1?q?H0OtfbDFbi9q0h2pq/tsH8ykaaT8T69aWdOMBIan2opAxSRdlCQ?= =?iso-8859-1?q?CJ3XBf+nXhEbhvvoTJgj1YeL/mJTPRbD1nV+JoKCQns6hr5ej/w?= =?iso-8859-1?q?UvB3LV0bVzATwhrySEdll1a0hHKmWQPztR24HRLJWRsl/BATsdn?= =?iso-8859-1?q?E7QpgTcrApjWBvJ5uSazOfmHGIqc559IC2yzE6nlosRMa/bYUpI?= =?iso-8859-1?q?c9IAQ5Z9aPQ0EgHZF1DVkBKk5wVhc0DKgmVORemNBEYfZwYY4kG?= =?iso-8859-1?q?x7os3ZADxNQp3/bucYzf5sGAIkTgzDKAFJnAvDaHwDDRrb8GYS5?= =?iso-8859-1?q?CElojiV0H5Bx7BTf4ehVaFoZuNox9iLmOJPQHSsjv8N0142rOFy?= =?iso-8859-1?q?+X2NwWgzLITIDqHYm7DjJEhf3zoAmn14ZPplSESLMN3vzDdWcVl?= =?iso-8859-1?q?oYB5ZK4NN0ZFghTnjS/F1BJ2ru2/RLFXjbzKflyO/h0TYDJBBQG?= =?iso-8859-1?q?WVGOoMCiWVwuBTBhN3d+grDYoHmh2RJtigLCqwPt0TH00/9ToIz?= =?iso-8859-1?q?1zPtxvC6sVUM2sBR8cb/gBYSnW9uq3GH4tshcteT5zTNP89GsmV?= =?iso-8859-1?q?/cvWgnbNUFOdtTMs9jSJmO6QxDyzTxM2vWGAAi8j7UHZ4V/7EuD?= =?iso-8859-1?q?UKU7BVhdyoEjUfYWxmNvv4mD5pwCM2WqD3ngb1vNf3YwzbksLgX?= =?iso-8859-1?q?1lwzU7ThVV5H2BkdCkvbg9col8Cp50YYPgJ9zsMJ1wuFKTxGUOf?= =?iso-8859-1?q?/ZTzWcWuuLa8cMm6IKLeBgErTkCs/GPFkVvQrrNBROEeU6hdg7H?= =?iso-8859-1?q?ZUDI654LB06Z7/r3w6s6mNmUEeoNuxPp/98lEE3ozeCU9GLqxaZ?= =?iso-8859-1?q?OjEs+ymx3jTABKYNUc7tbkPhiebimH6/sJGqHZEZ6WhhdWowCcn?= =?iso-8859-1?q?ZatUtPEYm0SsVfXm7kge97mKAUc5DQN7D8nT3ruCLxsH9IqX3Z9?= =?iso-8859-1?q?CQf8dPaV0fVHNObNcIrk5tmImWNksHnQsBND+4yHL5CcMwPR6Y4?= =?iso-8859-1?q?=3D?= x-microsoft-antispam-prvs: x-forefront-prvs: 094700CA91 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(376002)(396003)(39860400002)(366004)(346002)(199004)(189003)(68736007)(97736004)(76176011)(52116002)(7736002)(305945005)(102836004)(2351001)(14454004)(50226002)(2501003)(386003)(6506007)(8676002)(105586002)(1730700003)(106356001)(486006)(36756003)(81166006)(2906002)(81156014)(71200400001)(256004)(71190400001)(25786009)(1076003)(26005)(66066001)(6916009)(53936002)(3846002)(446003)(2616005)(6346003)(6436002)(316002)(4326008)(186003)(86362001)(6486002)(6512007)(5640700003)(54906003)(99286004)(6116002)(8936002)(476003)(107886003)(478600001)(11346002); DIR:OUT; SFP:1101; SCL:1; SRVR:AM6PR05MB5111; 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) authentication-results: spf=none (sender IP is ) smtp.mailfrom=idosch@mellanox.com; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: A7OxxY2O66ODngoZhI3uibZuKUtAXcww52U6KqQtUkjSrS8wzLXKjHauYMDQB02HfXeFRfmxQFsp/xVR6huBBCxtQg9NyTLJ0ot54SRZwaP1idYmnmMUmFDRzS1CupUg0p0VEKQjuq6U2ZbcPVhDbH6SM1dOTff5am1N8Uh0Y4EwcAIL118U6rjVFGnc6QFyZOVLvHL3i3G++f0uoe8SxaW1amk2tbket+xwxJ/i7PnbEOZhxwPfiVWePAD5mBiUqfWdbtXOWAGJNB/FxfYvN6RyAXryRlusZTrGXyXZ/sF0uSY8A05341wU0lgoOf/i3zLv16JND4FTDzuuXcnN3ZPM7bEsfWsR1QIkiAdbvsKCYQDsyxDBtvzB6KIbM56FMEzZ40C2lWvJ6nSUDZjVi6h2Gjve2WC9oeSiTQrbPjo= MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 16332c46-c080-40b2-e63b-08d691a670d5 X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Feb 2019 11:28:55.6844 (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: AM6PR05MB5111 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Vadim Pasternak Allow thermal zone binding to an external cooling device from the cooling devices white list. It provides support for Mellanox next generation systems on which cooling device logic is not controlled through the switch registers. Signed-off-by: Vadim Pasternak Reviewed-by: Jiri Pirko Signed-off-by: Ido Schimmel --- drivers/net/ethernet/mellanox/mlxsw/core_thermal.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/drivers/net/ethernet/mellanox/mlxsw/core_thermal.c b/drivers/net/ethernet/mellanox/mlxsw/core_thermal.c index 8b71706f7a27..821fef2e2230 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/core_thermal.c +++ b/drivers/net/ethernet/mellanox/mlxsw/core_thermal.c @@ -31,6 +31,11 @@ #define MLXSW_THERMAL_SPEED_MAX (MLXSW_THERMAL_MAX_STATE * 2) #define MLXSW_THERMAL_SPEED_MIN_LEVEL 2 /* 20% */ +/* External cooling devices, allowed for binding to mlxsw thermal zones. */ +static char * const mlxsw_thermal_external_allowed_cdev[] = { + "mlxreg_fan", +}; + struct mlxsw_thermal_trip { int type; int temp; @@ -107,6 +112,13 @@ static int mlxsw_get_cooling_device_idx(struct mlxsw_thermal *thermal, if (thermal->cdevs[i] == cdev) return i; + /* Allow mlxsw thermal zone binding to an external cooling device */ + for (i = 0; i < ARRAY_SIZE(mlxsw_thermal_external_allowed_cdev); i++) { + if (strnstr(cdev->type, mlxsw_thermal_external_allowed_cdev[i], + sizeof(cdev->type))) + return 0; + } + return -ENODEV; }