From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id C8D2DC43381 for ; Fri, 22 Feb 2019 13:56:54 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 8D4382075C for ; Fri, 22 Feb 2019 13:56:54 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=Mellanox.com header.i=@Mellanox.com header.b="Ss22WakJ" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726765AbfBVN4x (ORCPT ); Fri, 22 Feb 2019 08:56:53 -0500 Received: from mail-eopbgr150071.outbound.protection.outlook.com ([40.107.15.71]:17186 "EHLO EUR01-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726275AbfBVN4x (ORCPT ); Fri, 22 Feb 2019 08:56: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=Tm923vakuR2e+zMEANL35TGuisis+oLjcU7bkNDg7Ts=; b=Ss22WakJVGVQ/SY4V7aR0xtY7U3oYX57bjhTWLeA+Mvb4VnzW9ay+pFX0qkyJPFqxb8rdhdKUWfyZwqUk/WvfMEWVsZsgJv3pMYv7o6I3Y9Yc4ANc6bM+VfGMIWnNl2drnpfx1voPN/NHJUbFrQ+c3T0A5/m5LEmM0miMNoJ4HY= Received: from AM6PR05MB5240.eurprd05.prod.outlook.com (20.177.196.214) by AM6PR05MB4358.eurprd05.prod.outlook.com (52.135.162.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1622.19; Fri, 22 Feb 2019 13:56:38 +0000 Received: from AM6PR05MB5240.eurprd05.prod.outlook.com ([fe80::3542:889c:3a85:3866]) by AM6PR05MB5240.eurprd05.prod.outlook.com ([fe80::3542:889c:3a85:3866%5]) with mapi id 15.20.1643.014; Fri, 22 Feb 2019 13:56:38 +0000 From: Ido Schimmel To: "netdev@vger.kernel.org" CC: "davem@davemloft.net" , Jiri Pirko , Shalom Toledo , mlxsw , Ido Schimmel Subject: [PATCH net-next 03/10] mlxsw: spectrum: Query port connector type from firmware Thread-Topic: [PATCH net-next 03/10] mlxsw: spectrum: Query port connector type from firmware Thread-Index: AQHUyrZuU1usP80Jp02QZt2wrGC0LQ== Date: Fri, 22 Feb 2019 13:56:38 +0000 Message-ID: <20190222135613.27692-4-idosch@mellanox.com> References: <20190222135613.27692-1-idosch@mellanox.com> In-Reply-To: <20190222135613.27692-1-idosch@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: AM6PR10CA0017.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:209:89::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: [79.176.7.115] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 3c0240a2-274d-4202-1de5-08d698cd9091 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600110)(711020)(4605104)(4618075)(2017052603328)(7153060)(7193020);SRVR:AM6PR05MB4358; x-ms-traffictypediagnostic: AM6PR05MB4358: x-microsoft-exchange-diagnostics: =?iso-8859-1?Q?1;AM6PR05MB4358;23:fnAvX5mzPw/pO7rTEaiJwJeXy2w6630co1XBQ0k?= =?iso-8859-1?Q?OGnR4qInucOC9qcy2ntR9brhH+xQOCGwkBfx7jco3y8ZIOwWsPsoW0IuB4?= =?iso-8859-1?Q?uK/Un5rFpOYF6phKWBXvnKP4iUasbKE5BWfPwVzYiJWitFovN8tXLRQrbA?= =?iso-8859-1?Q?gZ7YhHIwoi8sOyhseByRhgMCjjf73GfSKMWgUDUTMQeqJqULSziBBbboTN?= =?iso-8859-1?Q?UIuRPS2Mr1w835+vxjGkEcMR32DrJS/8bCj8f87mzym5h+/cmWxMHdWWo3?= =?iso-8859-1?Q?k6rj2YZiqDFFUZ80Y50J4U07MVLeRDgyseVbvYJyOzhPyjAbdPHUHNBCB4?= =?iso-8859-1?Q?5Gkv6IJLV8hHbDML8KJC9RnMo4aSJ5saOuqIs/JkCnIjmYJxxsGp54m8h8?= =?iso-8859-1?Q?JH4RlJurJwPsS+XTrx8VrkcvkGIq0tLDv/7kwh6CT5B4H00tvayco3dTqr?= =?iso-8859-1?Q?B1O9xzIktZOXfDmck6LMh2b7hU8ifg1A3vMlYbnyUrsfp+VJePY4KuU8IY?= =?iso-8859-1?Q?wmVUfXqq9BZdGHTkPEK00Q764CaBdSS1s6GDXiUY4CfKM2kYzqy7ccWEWk?= =?iso-8859-1?Q?H+vXdKoY5c9hkUqVTcSeUL0p97WAtkbrZe8aYRywH+Gs+8eOZv67333itu?= =?iso-8859-1?Q?1TwWp5v4MIhZTRmLGZzrUBFj9JoTJH2+4FFfNjdzvRJ6Vsw29NLaTKPOSZ?= =?iso-8859-1?Q?Uexj7dmfNWMIdRve1twZWZGnlqW8tw+7Gyvn5OVPMlI3j2aLmPfnrA7op8?= =?iso-8859-1?Q?cmk9+BvA1cFujAuQCvtlBqvqA1T5TMrdl0iL6GJFg0TRQB3pOuP4upN5ht?= =?iso-8859-1?Q?VYtW+iBsRL77HbHpdizIdNHh+Z8J3FBhxpudjOFZ0ohtmu61t9CXw8gEzu?= =?iso-8859-1?Q?tl0KFa/DHMRSEDt4xkmLivhgVZ5MKOzmXU+56Bnhnc3eDxbyZQ7bDp9PuY?= =?iso-8859-1?Q?CGn2XvA4htpfJdbnJ6mgq5sZ4OLwtTuvO8AZzL2QalNhn7i8J59po2yCJe?= =?iso-8859-1?Q?nEiImQRogPyZBb7aeqQQOQ88LxdHD/kG8OzlkJWR17bcD25KMi31p9bwrc?= =?iso-8859-1?Q?7fmMiYpRxI+XPvG+kiJDwFf8pxxDDdnSLFq8VLu+F5e7Nla14/CE2qn/mU?= =?iso-8859-1?Q?sjVBIS5uNW58b/VZFL4n8w6L+piJkjSyyu++CIFNNvZrY5q9sRWYePRQ30?= =?iso-8859-1?Q?XR+wfJslXzqqmdeqBDImK1WZ9eSal29teiMGxMvywR9+GeA+utFAOsMcKh?= =?iso-8859-1?Q?HzhkkH5bI9BUMzJfWmez5tUzUzQw0p62M/MCeQkU7pBGvggBlvs4kTdvba?= =?iso-8859-1?Q?ehbh2Yg3xB8mh3OVASDzCsSfMPomPl8TSegRswwaSfLZnCdyb7nJdSdHE0?= =?iso-8859-1?Q?wq6f0/U7spX34M1WPac75ZCOrQAI8?= x-microsoft-antispam-prvs: x-forefront-prvs: 09565527D6 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(366004)(39860400002)(346002)(136003)(376002)(396003)(189003)(199004)(81166006)(99286004)(3846002)(66066001)(50226002)(81156014)(11346002)(1730700003)(68736007)(2351001)(26005)(478600001)(8676002)(25786009)(6116002)(14454004)(97736004)(6916009)(6512007)(316002)(8936002)(6486002)(256004)(14444005)(5640700003)(54906003)(6436002)(105586002)(6506007)(186003)(106356001)(386003)(7736002)(5660300002)(76176011)(1076003)(52116002)(476003)(107886003)(86362001)(2906002)(53936002)(71190400001)(2501003)(4326008)(486006)(102836004)(36756003)(446003)(71200400001)(305945005)(2616005);DIR:OUT;SFP:1101;SCL:1;SRVR:AM6PR05MB4358;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: lbEDHpERK3o8PfhLluxEU8+IkyH4RD0bZrhX7NBs/2s7nwMJutRB3XUEOAHWNlBW5Kanw9MYiXCgxSPctTcKNc/oTmeFqDA5sC+uoVJ0u0zqOR33zLxoGcqWO6hBbFC/BgADLfEhmUoThJ09LFfofCiqzM+H1CTTIfgar186bw9h5iyQbgvSlaZGur3dnAmv7k90yGgV3ZtZCh3YNUdx3Ju6duoMx+ao3SuQrDCJyf2cko2taqf/VU/bgt6YAue6KlZ+D7KrKtSEvOrqVbiZEAA6YrrwZbBFQiwpJ7RT2NRIlzTFrmETDrZAEUv2BeMcTMzAoGh1guYPs2NX00zMUpChEsgCNvoyfG+HZzfowZPZQg5ke4j2Ilxe3ZfJ7894YJgVZILDXOV5E9e5TJy8uhWOazJq2cMOVGDRvG7UQbE= Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3c0240a2-274d-4202-1de5-08d698cd9091 X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Feb 2019 13:56:37.3956 (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: AM6PR05MB4358 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Shalom Toledo Instead of deriving the port connector type from port admin state, query it from firmware. Signed-off-by: Shalom Toledo Acked-by: Jiri Pirko Signed-off-by: Ido Schimmel --- drivers/net/ethernet/mellanox/mlxsw/reg.h | 18 +++++++ .../net/ethernet/mellanox/mlxsw/spectrum.c | 54 +++++++++++-------- 2 files changed, 49 insertions(+), 23 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlxsw/reg.h b/drivers/net/ethern= et/mellanox/mlxsw/reg.h index 19d361219693..a781f09b79b9 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/reg.h +++ b/drivers/net/ethernet/mellanox/mlxsw/reg.h @@ -4061,6 +4061,24 @@ MLXSW_ITEM32(reg, ptys, ib_link_width_oper, 0x28, 16= , 16); */ MLXSW_ITEM32(reg, ptys, ib_proto_oper, 0x28, 0, 16); =20 +enum mlxsw_reg_ptys_connector_type { + MLXSW_REG_PTYS_CONNECTOR_TYPE_UNKNOWN_OR_NO_CONNECTOR, + MLXSW_REG_PTYS_CONNECTOR_TYPE_PORT_NONE, + MLXSW_REG_PTYS_CONNECTOR_TYPE_PORT_TP, + MLXSW_REG_PTYS_CONNECTOR_TYPE_PORT_AUI, + MLXSW_REG_PTYS_CONNECTOR_TYPE_PORT_BNC, + MLXSW_REG_PTYS_CONNECTOR_TYPE_PORT_MII, + MLXSW_REG_PTYS_CONNECTOR_TYPE_PORT_FIBRE, + MLXSW_REG_PTYS_CONNECTOR_TYPE_PORT_DA, + MLXSW_REG_PTYS_CONNECTOR_TYPE_PORT_OTHER, +}; + +/* reg_ptys_connector_type + * Connector type indication. + * Access: RO + */ +MLXSW_ITEM32(reg, ptys, connector_type, 0x2C, 0, 4); + static inline void mlxsw_reg_ptys_eth_pack(char *payload, u8 local_port, u32 proto_admin, bool autoneg) { diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c b/drivers/net/e= thernet/mellanox/mlxsw/spectrum.c index b812406850ba..e86b0341b7b0 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c @@ -2525,28 +2525,6 @@ static void mlxsw_sp_from_ptys_speed_duplex(bool car= rier_ok, u32 ptys_eth_proto, cmd->base.duplex =3D duplex; } =20 -static u8 mlxsw_sp_port_connector_port(u32 ptys_eth_proto) -{ - if (ptys_eth_proto & (MLXSW_REG_PTYS_ETH_SPEED_10GBASE_SR | - MLXSW_REG_PTYS_ETH_SPEED_40GBASE_SR4 | - MLXSW_REG_PTYS_ETH_SPEED_100GBASE_SR4 | - MLXSW_REG_PTYS_ETH_SPEED_SGMII)) - return PORT_FIBRE; - - if (ptys_eth_proto & (MLXSW_REG_PTYS_ETH_SPEED_10GBASE_CR | - MLXSW_REG_PTYS_ETH_SPEED_40GBASE_CR4 | - MLXSW_REG_PTYS_ETH_SPEED_100GBASE_CR4)) - return PORT_DA; - - if (ptys_eth_proto & (MLXSW_REG_PTYS_ETH_SPEED_10GBASE_KR | - MLXSW_REG_PTYS_ETH_SPEED_10GBASE_KX4 | - MLXSW_REG_PTYS_ETH_SPEED_40GBASE_KR4 | - MLXSW_REG_PTYS_ETH_SPEED_100GBASE_KR4)) - return PORT_NONE; - - return PORT_OTHER; -} - static u32 mlxsw_sp_to_ptys_advert_link(const struct ethtool_link_ksettings *cmd) { @@ -2606,6 +2584,34 @@ static void mlxsw_sp_port_get_link_advertise(u32 eth= _proto_admin, bool autoneg, mlxsw_sp_from_ptys_link(eth_proto_admin, cmd->link_modes.advertising); } =20 +static u8 +mlxsw_sp_port_connector_port(enum mlxsw_reg_ptys_connector_type connector_= type) +{ + switch (connector_type) { + case MLXSW_REG_PTYS_CONNECTOR_TYPE_UNKNOWN_OR_NO_CONNECTOR: + return PORT_OTHER; + case MLXSW_REG_PTYS_CONNECTOR_TYPE_PORT_NONE: + return PORT_NONE; + case MLXSW_REG_PTYS_CONNECTOR_TYPE_PORT_TP: + return PORT_TP; + case MLXSW_REG_PTYS_CONNECTOR_TYPE_PORT_AUI: + return PORT_AUI; + case MLXSW_REG_PTYS_CONNECTOR_TYPE_PORT_BNC: + return PORT_BNC; + case MLXSW_REG_PTYS_CONNECTOR_TYPE_PORT_MII: + return PORT_MII; + case MLXSW_REG_PTYS_CONNECTOR_TYPE_PORT_FIBRE: + return PORT_FIBRE; + case MLXSW_REG_PTYS_CONNECTOR_TYPE_PORT_DA: + return PORT_DA; + case MLXSW_REG_PTYS_CONNECTOR_TYPE_PORT_OTHER: + return PORT_OTHER; + default: + WARN_ON_ONCE(1); + return PORT_OTHER; + } +} + static int mlxsw_sp_port_get_link_ksettings(struct net_device *dev, struct ethtool_link_ksettings *cmd) { @@ -2613,6 +2619,7 @@ static int mlxsw_sp_port_get_link_ksettings(struct ne= t_device *dev, struct mlxsw_sp_port *mlxsw_sp_port =3D netdev_priv(dev); struct mlxsw_sp *mlxsw_sp =3D mlxsw_sp_port->mlxsw_sp; char ptys_pl[MLXSW_REG_PTYS_LEN]; + u8 connector_type; u8 autoneg_status; bool autoneg; int err; @@ -2632,7 +2639,8 @@ static int mlxsw_sp_port_get_link_ksettings(struct ne= t_device *dev, autoneg_status =3D mlxsw_reg_ptys_an_status_get(ptys_pl); =20 cmd->base.autoneg =3D autoneg ? AUTONEG_ENABLE : AUTONEG_DISABLE; - cmd->base.port =3D mlxsw_sp_port_connector_port(eth_proto_oper); + connector_type =3D mlxsw_reg_ptys_connector_type_get(ptys_pl); + cmd->base.port =3D mlxsw_sp_port_connector_port(connector_type); mlxsw_sp_from_ptys_speed_duplex(netif_carrier_ok(dev), eth_proto_oper, cmd); =20 --=20 2.20.1