From patchwork Mon May 21 21:58:26 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Lendacky X-Patchwork-Id: 917886 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=none (p=none dis=none) header.from=amd.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="5CuGFkEU"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40qXjK1QC9z9s16 for ; Tue, 22 May 2018 07:58:45 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754347AbeEUV6n (ORCPT ); Mon, 21 May 2018 17:58:43 -0400 Received: from mail-bn3nam01on0047.outbound.protection.outlook.com ([104.47.33.47]:22693 "EHLO NAM01-BN3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754130AbeEUV6c (ORCPT ); Mon, 21 May 2018 17:58:32 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=eZ3Jt+25IlrbxhsFxXsV6scr+/18YyiZhbMU3clcY6M=; b=5CuGFkEUHkeqa1FVzUtUPoj05DbWp9Cy+4ePSzQuSfe81yktaNhmGQnf8zmw4W40TRlLvM4YZ2zsZMLuCwPzWAcFJlPo0IN71D2XOLOL6gobvPR+g8Bw3b9WiV1JVpy5WRZrHMXrrwEC3ihFeSaq945XGvziy+v5XSYYVINeoPw= Received: from tlendack-t1.amdoffice.net (165.204.77.1) by BY2PR12MB0162.namprd12.prod.outlook.com (2a01:111:e400:585a::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.776.11; Mon, 21 May 2018 21:58:30 +0000 From: Tom Lendacky Subject: [PATCH net-next 01/12] amd-xgbe: Fix debug output of max channel counts To: netdev@vger.kernel.org Cc: David Miller Date: Mon, 21 May 2018 16:58:26 -0500 Message-ID: <20180521215826.8135.79048.stgit@tlendack-t1.amdoffice.net> In-Reply-To: <20180521215818.8135.83100.stgit@tlendack-t1.amdoffice.net> References: <20180521215818.8135.83100.stgit@tlendack-t1.amdoffice.net> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: SN1PR12CA0061.namprd12.prod.outlook.com (2603:10b6:802:20::32) To BY2PR12MB0162.namprd12.prod.outlook.com (2a01:111:e400:585a::23) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(48565401081)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:BY2PR12MB0162; X-Microsoft-Exchange-Diagnostics: 1; BY2PR12MB0162; 3:EWWGkzbmqNnRePYEe1f/UwJDtgmhMPpgVQ9XyeQYgqBzB9VeR8689vhhcRbLWmt916JQoO7emHOgjmj8ngiDqUc98lSZ7gUye5NfWUDinotOG/JqPiCeWHfnY+fdec2cZzBf6ey3elhgKxZzWNNZN+YfLs/5yvTOYrjRC/yoTvEjhFmK/W85CXi3qNlgoBkKpwHCCSEZpaf7gmSpahtLfssgE4CsuHtT11DYegZ7aAR55DKy9teIXxHs49N0XJGD; 25:oRXY8TNwGTCzNXElKBRvPTuABLeU2ErJl/UHkT/JoEEq+kO2udXOL3iwsFlf4+wLdj2BHJPgnrkTTXDAy2M5STv74zRDbtX4A2Rz70Hoy3sVb9rQ40rjTnvur1U6O1oy5H8M5JTRJzbD+w5kyw1kxhs0RbZuI/O9jM83YKP68JPWRVsOuqCOmPUOerBZxJnW7U0SI9xqQbjfiQj4+KwH2cAVHbB09yCpC1nz90uCL/rbQCcnZAsgLxdPlVYQtoF1ssS5dkV3QLw393pxMZatDOT8+b5GcaMmUyuoeIXQs0JI27po2mXSbG0/IZ9Lo6/6Y+rpVrEfYJrWIQua6FAuhg==; 31:NG4nCJiqNpZyw0YEPWLyUd3NQ/MAfbG0Zt1+MkJosKGVzh5VsSYnw5mgmD51clxE5UJM+1xuGD79OXYI5koUXll3eZo4JAMlhVt+xQ+6BTYBtqd1G/yr5oKbEp5I2jG41/hE4rqskJ82ImO/DN9xMMoHugQwcllUz9HpFuJXwtz1zjNzwC6xJY4VACFzIPL8rQ0qalojgpRwoccvr09oF5fNmWp7E6tdHBfW6ile8x0= X-MS-TrafficTypeDiagnostic: BY2PR12MB0162: Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Thomas.Lendacky@amd.com; X-Microsoft-Exchange-Diagnostics: 1; BY2PR12MB0162; 20:HdGyLtctmupF6KJdlLaO4N/rUsfN5+2tVsDdDeidosD5AhTMNvjHAQgvS0W9NkLdQhMulJg4QXEhAesUl/54MCpMpIZ6yaZW79DfawlbGEjozONYF0GvevZKxvzKPoMYDW3GCQNtJLrpT5w93N6rhfPuaAVwMAZ+C2OyRqIhmYekwYT3Ad9iPp2nKyfS5dGMTEqnGnkP7xAYwRKkFQSFQDudkkzRefXW81ezTTHnPaAZ0mfQo9y01NxF3OSyaDetxp8jMIfi5sO44QxJqI4sDMKwQCj/5CWdCGOvLQddHV+kkE4NYbvtyNbmFdjNfUfbvknANU4p+FKOew6zOyDZx0FGeK5uxbyR2uPbGCsNL34BEViKKAIyv/aldYHGYTxE88v0m2MOQHqCa8vamXbJ43kPZajO+aEtA1FMKYEXkILC6/yOBb5daUu55977Gx2X1THHTMYGnKzOCKjLt1JaElLtJP4L/lLaitPRJrFuANahOu5EdS7qh+wRXIcaIydd; 4:klXjzOngg09/6jP6MKelrV/pLHyMk8K7IFSKPtfB5dPu2ei2Ge9h4L3IGLDKTA41Gcl2NgDnXHRf7V5K6Yk4o2ehaU6ffjYtTMQlbls7+bpywH0K1zJ+Z+wTFMda0o6VWeZPg+9zGDLTxdzECpWEcTyeptuwERaoV5S9DFJc2Rmx54D+u0RHfoMfX+CGTnbheEwocScKT1yh/lXNiQTzvAXH1EgCRXW+j5XgQwGof/pDrhya2YPyM3PTMi0LD1dtHs7saEUZOCFT7mx7JQWO4+XYDOM7NiP9tBdEaGjD1FY= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3002001)(93006095)(93001095)(3231254)(944501410)(52105095)(10201501046)(6055026)(149027)(150027)(6041310)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123558120)(20161123564045)(6072148)(201708071742011)(7699016); SRVR:BY2PR12MB0162; BCL:0; PCL:0; RULEID:; SRVR:BY2PR12MB0162; X-Forefront-PRVS: 06793E740F X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(366004)(39860400002)(376002)(39380400002)(346002)(189003)(199004)(476003)(58126008)(11346002)(5660300001)(86362001)(53416004)(2361001)(103116003)(72206003)(486006)(6916009)(50466002)(478600001)(446003)(2351001)(97746001)(6666003)(69596002)(956004)(76176011)(4326008)(7736002)(26005)(106356001)(16526019)(186003)(1076002)(305945005)(53936002)(7696005)(8936002)(2906002)(47776003)(105586002)(8676002)(68736007)(316002)(59450400001)(3846002)(81156014)(230700001)(6116002)(97736004)(66066001)(9686003)(6506007)(386003)(25786009)(23676004)(81166006)(55016002)(2486003)(52116002); DIR:OUT; SFP:1101; SCL:1; SRVR:BY2PR12MB0162; H:tlendack-t1.amdoffice.net; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?q?1=3BBY2PR12MB0162=3B23=3A/MCd?= =?utf-8?q?dCf1aJ1SbQJqEnwCSASZ+Ae2vygtGXtwGOgsnxpWbELBRjmme78H2ZkH?= =?utf-8?q?FQ2KIKJrnHTXlGb7Ve0hmVdtFC2uteUb/hYawE+V5sKYqcxHamnHLKRo?= =?utf-8?q?VPjGuG01Gujr8Z38SJE9gNxOKHh0AkYABq5PUo9l5eb386GEhMVdRoSI?= =?utf-8?q?4O3f+fFl+D0PSl0Qc4cP3LmVjcNDnPb0VU3YiYZnnfAm5cAqt5sz2Mkm?= =?utf-8?q?Aw+ZUOt69RcLoqE9h+PN4m1PD4OqZzp74myQS4Xph3K5RPCglNCDZxs9?= =?utf-8?q?Fj6ShZoBnOhMu9yoIGqgca/RmcKuLITWMajBngEcIUe/S7gjz7MWXd6w?= =?utf-8?q?xWxejRlMcOVmQZ2j+nuavknMebgpCqIX/4/7mQfK4LFVBJwvH4jHoj1d?= =?utf-8?q?bDnh2lAn0JbM4rLAzvBrxl3JcdRIsH+oaVRIz/hudRIos4eCcETGHXJN?= =?utf-8?q?CqiuL21zbwpIKiyaBbc4hM+yM2lX0B50GJrLmdOomcn01cq0Z10p0wf+?= =?utf-8?q?iXa0H3QsL9BWtRK6ILwYYC97nvVITsXomiQMqsZrCfEmV37LjLu5hZXX?= =?utf-8?q?PScV7UVJ0b8dIhdYnPMPnNS086v57cKASat5hbCsjOGNU4j1+GM0cy3T?= =?utf-8?q?y2LoZ4kLMrfCCiT67hvLq+3pANBMyXDzK+CJjaS7G0vykUEwPDPcdsfY?= =?utf-8?q?s5FhjXN9RKQoY4RZ09DPprZgbZsBikU7J2A3Hb+NuLvRrvObRo/8UuY/?= =?utf-8?q?mc3zJ1OcMsuo+r1ern6HWMnyk/Y2pQH4vne6F4MDmTNJIGTm3WUoQPzk?= =?utf-8?q?FhOYsJDg3Uuq1nOpJRqMdUGXPEO3uW5hF8oE/VZOjThqG81zACpJhbVR?= =?utf-8?q?KnsT8nY8gsMfJAOvNyzt+xIQsuuVAzIlsrPwDwXKzAt+Htf9YSJ4xsBC?= =?utf-8?q?MzAf1tX8fPDPSEP6GVEPSpZz9o8Exbxg7VGeq3FWP56wMGjjacvO3HXr?= =?utf-8?q?gaFkzIikZ5dX4AG9aW0v/HsOsY2h3tYYQfjYkk3BPJmi3ukIjjKv1zvD?= =?utf-8?q?1C7eTDtkijSp83lmyvpxGp0FRS0YF70htrATWIXe3layypdo660DAFpM?= =?utf-8?q?XQm/0kEqp4rdjH882QmA7LwQWY/soKXNd4tOSgEgH+CkWAKl8AEEQX/m?= =?utf-8?q?eydwNojp71YVZeg1yqHUm4cv+0LuvnEcMjghBJ/vbs3iY7sJf/1WTaEt?= =?utf-8?q?V8BAcOFZCI0Lh4+0MiH/iM9iSDgBcH/rJLixds6aoOYD5WaKQwTtJAoV?= =?utf-8?q?Gr6DPsk5D9ElybgLM7xvrpvUEQPNgeIY9phxgeRn7bnvC5rIR3ChtnHf?= =?utf-8?q?J3S3HFVngEVHN8+2tunoTN73mhLtSK1S1f9mn5sO1YZmvubXE99jWBH/?= =?utf-8?q?59pd9GOzJJXo5XwEwg=3D=3D?= X-Microsoft-Antispam-Message-Info: rRJ4qO6VOhE6QwTVmpug/MFA5ksqVQ5VgbMlvUSKQtas/Bp6BlP85ZD4mc/PhLGZ8kielV0yLPLZUJhJ3gFJVuIJeXkDciPWwih/AnjPfjtPL6kOMZBTHK0sCKV2KcNQS2KTNriuCRTpF8bl8PJ/oszkkXMlXVTusZ2iclH2puuQELOoZJhAPmtuHq1KhM42 X-Microsoft-Exchange-Diagnostics: 1; BY2PR12MB0162; 6:mtYUug3wsXes43bCADgRsv5vs0yJ8MjdEdfIMd+gijve8u2BEntvVM+nGWFS3PCzOxQMdYgLfYh+lJM9VZUocftVSWsW6eUqHivJtN9c3ewA3LWMn1QjBjh1U61KAeZbmCOOup1lgIyN2GwCU4HYG9d4kw5cF6VNCtnXrb5zOAYxiMJLb1madFu4qt2o8jKbmGWXA1MbnJwXuBwVTf0YQTK/AUVD5S9g0gPprukuG//Ife/SFySkftUMo6u9TcU0D5shLvYFWd3xQ91nMZZWYtW/apWbuxtyPAjZdoJp3nkDgmXhI06DKJ6LjeT+tN0Qed68NKwCBWSYr3ossTW0Rt/Ud59QhcgpLC0ZxTseb3aJQQGzZbH0Acrfj2nsF1wjV27ukusxJx5h+2Buk3WRI39wAewCbj0qajigCrtHg+XJTIBfju5zYm7C6bPbIXKBbxhmErGoxujvJgIYd4O8IA==; 5:BFKsREB7Qk7frsuhvpc3/cVXiwnt/ysRHMVp8U/keshIvJlUyansrMqS2rBIW59lxoSKDsA8HLt6b6mKDwsVMB5Pv/CWW3qmJn5uA09jkesOw4JaUiDGGUa0Fi7Bu9aUtIowi/IYn9Y8wEuu5P+Cp8P2FK5WvC97AtK14mKxFgQ=; 24:nMe1iseKtUF4iRozKeU0OImqD+0lyG68stfkaeJt66LURTpmpsu/ZbG5PDB1M6zJyE2wvOPezkaoqHfM4JnkXMCAhgsKxE6c5nQLZ5y5w88= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BY2PR12MB0162; 7:iYHcI3STft5X9IZwxLdKfwX5NLT7Af9iJRZ8WHROq91rev+hPf4dkoSgOdFet3HxqZzMeaJnVUftyihq14HWoF2JfuDTpxMcUt7v+HaVXzi96b+LPPmjSs4idUH7CXbdHhDjdjcKWLFvY+T1JvRRiCst21hCgcbJeOpJmc0KYSe5Tm0yDKWZL0F3/A/idGlwCx5RgUFV8ImLQ9o5HF4kkSbhHo/LNf+mxw2ovNR+CmXHgfq0n3ftcQfg6wbPZzsK; 20:vWnjuxliU5DN1ebdVGFmLXpZyaz4C6XDVoJS/WYwsOYvMRU+BQStsesM+9IdugkgCcF0+kmNwklAbnXc6Ai+ilRRJW9vzpxRBALQ+2nAM4k3+6JzRHOpsczTHO/Tvf871vL+SYfyZqFZvk8ROuKDIiZW/B6sl01IeaHvOxhFmC67hrUhfWXNPBlfpR3S5MOgCr0/lokYMzQryxiwEbx77aMsaByqKjwosF5DdUWgHarG8ewKH3ozoSQAxFSEYfQj X-MS-Office365-Filtering-Correlation-Id: edd85dc7-fe6b-4fd6-d175-08d5bf65fd2c X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 May 2018 21:58:30.0055 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: edd85dc7-fe6b-4fd6-d175-08d5bf65fd2c X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR12MB0162 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org A debug output print statement uses the wrong variable to output the maximum Rx channel count (cut and paste error, basically). Fix the statement to use the proper variable. Signed-off-by: Tom Lendacky --- drivers/net/ethernet/amd/xgbe/xgbe-pci.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-pci.c b/drivers/net/ethernet/amd/xgbe/xgbe-pci.c index 82d1f41..7b63521 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe-pci.c +++ b/drivers/net/ethernet/amd/xgbe/xgbe-pci.c @@ -344,7 +344,7 @@ static int xgbe_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id) if (netif_msg_probe(pdata)) { dev_dbg(dev, "max tx/rx channel count = %u/%u\n", pdata->tx_max_channel_count, - pdata->tx_max_channel_count); + pdata->rx_max_channel_count); dev_dbg(dev, "max tx/rx hw queue count = %u/%u\n", pdata->tx_max_q_count, pdata->rx_max_q_count); } From patchwork Mon May 21 21:58:35 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Lendacky X-Patchwork-Id: 917887 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=none (p=none dis=none) header.from=amd.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="VRru74iH"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40qXjT1PxYz9s16 for ; Tue, 22 May 2018 07:58:53 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754491AbeEUV6v (ORCPT ); Mon, 21 May 2018 17:58:51 -0400 Received: from mail-bl2nam02on0087.outbound.protection.outlook.com ([104.47.38.87]:38754 "EHLO NAM02-BL2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754132AbeEUV6m (ORCPT ); Mon, 21 May 2018 17:58:42 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8DkRZfd7QUoFamJ2u7aSFk6bjUY+zxX8Cj3Xi64RruE=; b=VRru74iHpf8tB25NoInICjkx56sshjM9RsZqf6Qja8zymgLdj7fGH46CAyGBwgxGtu09voUBdwJLUK4mohCSjIqbSRil+xtHZNqjXFo3Vdavm+ieWs5/0ZZa4mWRCBTgXjfJgJFOS9VUYqxKmPm3kepUcEBnvuVawK9jiRCCmX0= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Thomas.Lendacky@amd.com; Received: from tlendack-t1.amdoffice.net (165.204.77.1) by DM2PR12MB0171.namprd12.prod.outlook.com (2a01:111:e400:50ce::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.776.16; Mon, 21 May 2018 21:58:39 +0000 From: Tom Lendacky Subject: [PATCH net-next 02/12] amd-xgbe: Read and save the port property registers during probe To: netdev@vger.kernel.org Cc: David Miller Date: Mon, 21 May 2018 16:58:35 -0500 Message-ID: <20180521215835.8135.35530.stgit@tlendack-t1.amdoffice.net> In-Reply-To: <20180521215818.8135.83100.stgit@tlendack-t1.amdoffice.net> References: <20180521215818.8135.83100.stgit@tlendack-t1.amdoffice.net> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: SN6PR04CA0038.namprd04.prod.outlook.com (2603:10b6:805:2a::15) To DM2PR12MB0171.namprd12.prod.outlook.com (2a01:111:e400:50ce::22) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(2017052603328)(7153060)(7193020); SRVR:DM2PR12MB0171; X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0171; 3:3NOW+Y6cIB0gtuxryeUCdeamWMTe28sF2TwNjbGcPfmHJysXTI5CWdDmPWD7L1ttjrmTwYbjar23w1Rr1LFkR/6nflJeQWnFnT067epgOxI6k3Bihn3Yb4ioUKwAbfWBV4/gM5+EW/8XqQVo3werUu28KuN2pDxIa7v1ejrPxKrkICJNjRFLRwuXJG1HE8ew61LaRW0lethknz0pKfmvoWaXqncNDcWmYWlAIq3EJbNdCFNvhKu2okFwMdGzez/L; 25:Mcfx8AKNxPgUxefE/5URQequ9PY4ZqNpYAhcHHxc0awmalo7NmLmOe8Q24bxL9aXbElTlXGpDCyzOP2y5z1xlLBPryAzLhlxFWFtl5KAYPdalsVmcLPjMFeLjUm1HyJ22bRKOsx7oB6K2NFsXv6ofp6EhjCfcfjiRUYffJRiTy867lrNU5eHa2U9beYQWiOaKvLPjRbOicwzsuol42Rz6uneuLAI/Otino9NhDm9HbWYfPFe/tRvmrQaN1KWc3xF+ih2edF51DL4dQuyTAGSRbVnTbqisTMutK2xe1BEWyzESepV4o4x6OSzvdyLVk1KfNF5D8x3yCuK67yXhXBRXA==; 31:AvGbyfMqMr1WUw/9JkDtM6pUOyh6QXGOnDVa+vZSotQjXUjd56mli8LMT7XtWCEOOlgcpBA2ljPEOC6I9fyt1Jbs0kf5EtDLd+aM0ClQYtE2zj6pC6I/+BQ5dSnoCYxjZNuvZ/Q0C53Knh0+D9vERaDXs3Phds9E62kiZKRD54S/8I7RELWtZzReSS3Q3Dq4xaDrO2R99OqHWEzLd8dLB1x5U8EtRVPFdIbRcJeHUqU= X-MS-TrafficTypeDiagnostic: DM2PR12MB0171: X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0171; 20:zZqIFEmUJTUD7NfNOu4NRVc3q2wbUSaF3ST2gtPyPkIj4S9yo9E3JUp4E3r4kwnozUx+7BMXuVwY0MsADgALy97m9zsODW9wxKPtB/tXu0HtxXp+YonXMxM/bRlDy4eeePvJ9lB3qEgXKJ5P5eyZ00hHGVi7cbdt0hKICihkhd/V03OTw4cqiz9WJ1OeT0Cmlbi/GTCprbHgJ5P3VABNSqzsq7oX2SOLmX6+KPrsrEDmZOoAUSsgQkaWaHfPFnIzUDjSo2TuCKzOod6E2t8GW1DZ/2YHYpkSX0u2k0kE9UlAYW3tJ/8G8li+zaAIsKyUX2MmqusaE0nu/MwtPOGddVm346rFg4zVf4BvXh5UOwfInCt1FZPu5tAAgbHgXG6ySSzGcPhpnGlxs+V+V6qh6rwc5NW7Cr5bGVTT1rLyIoYBNrSiNP5+ZXDOzKoLvXCdp0UxlZ05QqvDZur4nY1raXBmgX/ZPjtUTT+klXbo8OG8FK46OBMXlDYg5Da/FCfr; 4:wAAHose42cWVBacLzJUuncAmafrriQJsJ0ESmBvI+Tn9e2DbOSyqjdGsznFJHvIie9VCOEivRdKsh1Zo0rKMvZlVLppYVmt5LovZIrq9uPZosRbSmFNYlQ8uINkJiQI3pKmS+NXFwYAkLRWn1PUwlI/KZv8BHv+RTWZHCxb+xT8ArP3iDHPa0WVzSvbjIsOhVyN8ANmaS9sPwudRioXFymKLJvI9sAJe13uFQ4hDtFuyKasdTqvQ6knl6qGcFtPybBcIWQQVqAxZFQSuthtfEvCxGJGIfOWpsXDZ+eW2Yx01k3qAHH+SZCu7PwldxXfv X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3231254)(944501410)(52105095)(3002001)(93006095)(93001095)(10201501046)(6055026)(149027)(150027)(6041310)(20161123564045)(20161123558120)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(6072148)(201708071742011)(7699016); SRVR:DM2PR12MB0171; BCL:0; PCL:0; RULEID:; SRVR:DM2PR12MB0171; X-Forefront-PRVS: 06793E740F X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(366004)(39380400002)(346002)(39860400002)(376002)(199004)(189003)(230700001)(53936002)(53416004)(386003)(50466002)(16526019)(7736002)(103116003)(2906002)(97746001)(5660300001)(72206003)(26005)(66066001)(476003)(478600001)(11346002)(186003)(956004)(8676002)(486006)(97736004)(446003)(76176011)(6506007)(2351001)(6916009)(4326008)(59450400001)(7696005)(23676004)(52116002)(2486003)(81156014)(6666003)(2361001)(316002)(58126008)(68736007)(106356001)(9686003)(105586002)(6116002)(69596002)(55016002)(25786009)(8936002)(86362001)(305945005)(81166006)(1076002)(3846002)(47776003); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR12MB0171; H:tlendack-t1.amdoffice.net; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?q?1=3BDM2PR12MB0171=3B23=3ARTzC?= =?utf-8?q?IjcKhAXN82iKduHw2lUdzggdosTtiWndCyO11DySnEjdTKAz3KryzLDU?= =?utf-8?q?xGOjioPrRxzmWqaTQ5EI4s3dC1hN+i5aqHrmeumN4y3k8j3G6YkYKFht?= =?utf-8?q?I12z3jeTUZq1TnbweM/Q7JoAop5s5MmtaA9zrWevbwPswVXBoNsLBd3B?= =?utf-8?q?G4VKugMbNb8JO0Rqd1v0FzURtQ4TrCb6n3MAU87H9ApJKFuHBM+7TgN8?= =?utf-8?q?oUiAMGGheZWok967UawtcrtjbjaRbT2xYghHT1HCZ5YiRJfWzl8rLs9M?= =?utf-8?q?sAVyo9bmUrcVpE7Eo+KrbnFzxgfS4NTJ2Tpeanj2KzzOvJ9S7eRMFdfT?= =?utf-8?q?oqbTvgnZ2u77Z/M7CFVa9PO9d92P8Z6nhEJ/QazDvgk5vMPASQAsTnp8?= =?utf-8?q?EACAdtk5wa6dxtLi4ROAvkFFz2CGhGthRN5ybavu0XILMlxV11t6dOB0?= =?utf-8?q?9HS8OnK52CscgQgBsuw8fD4sPAJrjk9GqY5RKqpNqDgVoDyiPjAP3j9U?= =?utf-8?q?eOaZLalLhLVv2vmgguAquXhw+deNkxUb4Mc6Gp3rOXnJek1EbO3wgTK2?= =?utf-8?q?4tJEzXdLOVHSBnPwWgIDSWYynO0QmjFzGMps+Z8lFU/8tVNfQuFjW/9K?= =?utf-8?q?roFFJ0eySoOys/RQNqOawkx75KeEpaZhJxrRk1HJ5alw1gQ6BE0GIeHr?= =?utf-8?q?0PJhkT9aaZOz8PYvdMdQuXNi1KycFv9A2XK5FuUJ1ESBdjRMAiqydVkP?= =?utf-8?q?cScgvJ8/3G6mdcYWCpi3hywVc/PCEMbFvPuhlQaauiFn1ZEkr0s8jetH?= =?utf-8?q?I7ZFD20u3vcokh9NxR/OkNen07Jz+eJ4IZuNa1r1uu7EzhdpPHfvlQro?= =?utf-8?q?5mciIW5/XZuxXIQsDkPv8owKzSdHcWhXAY0SyM4Aj3HIRYp41v1rCHBA?= =?utf-8?q?biv5hhS0iMYnHzk+5/wWlDPL0sCKX9cePIzdZxwrRXHEGXY13VknCrtB?= =?utf-8?q?HLruAgvyf9ZJi/lEH1ls8tB5X/14DczmrkGma7OO34AzLRJ+X0fH6QI1?= =?utf-8?q?8XG1hcdtB5LbPHE7q9qLx6A6BoZwkmNxTiCs28oFrjJoqYig9I0xcnKB?= =?utf-8?q?KxdzHEKp4P8M4KWrTbg5B2XIKdnxfGLKZInS4TNrN5R0ELOY1eYObnPl?= =?utf-8?q?K+2VTDJFR/003Gng0zLhzBrccuHaljAhr5Fr2zS3u0t/QpA59yZOIUCd?= =?utf-8?q?GrxDXxWJ4WPdEyISM2VTTVPJaESvIBQCLDBweZVMCgGjzsBre8fBEDmF?= =?utf-8?q?WQYkjNfdqAVSwcVCjLRjl+6x7LZYQgVmEf9YToRM3LZF29jArSqVmPc+?= =?utf-8?q?3WrqxjfmfUQtbzNMd+icTHt3KTuEGrDqUhqnhbfsvPeAr1iUnsh6ttGZ?= =?utf-8?q?bsgnLYCCWFuB0EpMkg=3D=3D?= X-Microsoft-Antispam-Message-Info: t9z03HSG7a5tzvJqMy5CGMaM8FIb2djuWH3umYsTv0MceZnCGgXcvWdu1MC5aUvxQ9xYTuibajqjCBEJX1YtY3duarOzHspxCJXQHAzlYcoXgYq4gPjCzv4UlgDxgA+dyS9oIecjb09cvnvX+nBaErLLvKz2z5U3k0I1FQDIgPInPAJl/82Yci2zXiOEdIsQ X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0171; 6:K+KlFh8OxlSDxX+tCRdHYT8nHKZ5/LUc9SM2Lnsv1629mKgWdceNesLdhk7vL3iYL/cn1T9MM6+ytIyEJVCXK7jWIpn2XRWC48bivKFeLccxVtreQ29bFQXJctiZ6a4u6xe7RNdcTvw4j48XuFmZLfAqzOeworAPRr3nvJAHfjbXKsTwVLVPKZ2RTEoT8BkyNbuvOLx62UnySEj0I9Ic61kRTMBkR+9Is/N8JDF46GakWgOqxEsFp7syL0UJ0epxP0LzYlIfthe/bG/Q24DN+bKQnXX2kP6WtJUNFBytafWSfsBWInWfQd4/FMo+dQLM50dEsPKsQSDgUK1PzaKerDCTuEL10xwhqhH/yxaaaLcs792jdfDGlsIC+8VVCyNebUSJKSPcGfKHmbxoEC9WEG9NOlEMzrd3jgFSWcOshmwgRxjGPBWD5tquzZnpfs4GOPHW+qC0KaM54F5ho7Wq4g==; 5:nO52UwWgQ9qJEIW4NTWWYtTlxmNwGesxxYeFwT0zq4CuFBbtA9C3p/1ubMp2ukDjUgO1RHGojUt8JKvj8mLReva3vS3OjZLZ89EQnpg1+DSDGL9ZQdgoygdA+zuDX5RGGSSR6DU3WFy7hPtvVUgT1onMbeUR1T8pPxzA1iGodfE=; 24:jtw0RHtisEHG/HmCI48V8y2h4f4NPobScpsE6Fjq5dnc1brAuQZLTnTPyczx//8/peWjRD7BVcjCZnZAenLhI9+98U1iUP5GqYA3PTrvZFM= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0171; 7:5x6jleeseBJJ0AaNxtNoaS/VcFPcBnDsfCBerC9Ndgza56RlvQY6UpjPXOQZDuut6OVP22/3iEkL4FxVMLSmU/eXx3wELU7G6zaIyJJkiDZ5BluucBGBU+Z3J5ro2V/uRZJi821xExj53Gzndp3210Rl73C9TQRn4Bizuv4mfjU3kJVixNZ98RjxIHqmco1w5XzsFXFqvdCzgMvFCyOOUVHrqHH9HZ0kdMnTvu1dKHcXHenQuR4+V3bPsqK0ic7h; 20:CXNT6VKp7DsfZRW1NjPKnAfjQJN/dcUkmGSfl7h85D9xH7Hx37uBe5dj38n4yIqYlXKHIyDAo/BMB0W3MqA8cEWL4dxt0LbyTz9IhpjWEr4jA6CPUrnpihX2XL9qSvNg+9dad8mUdEgxNtsamnnxIpbP/Kbih1JrJisGlg/Io+1Uc3/REcm3du8mhtbIW/PyVWti1PNqMejBn6xZGL1w/7zroHxhfE8YeZ/nLpovuXEiqOUKCxTDGN1af8/Rvqe5 X-MS-Office365-Filtering-Correlation-Id: 7ca3f962-2012-411b-d18c-08d5bf66028c X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 May 2018 21:58:39.0489 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7ca3f962-2012-411b-d18c-08d5bf66028c X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR12MB0171 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Read and save the port property registers once during the device probe and then use the saved values as they are needed. Signed-off-by: Tom Lendacky --- drivers/net/ethernet/amd/xgbe/xgbe-pci.c | 34 ++++++++++---- drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c | 68 ++++++++++++--------------- drivers/net/ethernet/amd/xgbe/xgbe.h | 7 +++ 3 files changed, 62 insertions(+), 47 deletions(-) diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-pci.c b/drivers/net/ethernet/amd/xgbe/xgbe-pci.c index 7b63521..7b86240 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe-pci.c +++ b/drivers/net/ethernet/amd/xgbe/xgbe-pci.c @@ -335,12 +335,29 @@ static int xgbe_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id) pdata->awcr = XGBE_DMA_PCI_AWCR; pdata->awarcr = XGBE_DMA_PCI_AWARCR; + /* Read the port property registers */ + pdata->pp0 = XP_IOREAD(pdata, XP_PROP_0); + pdata->pp1 = XP_IOREAD(pdata, XP_PROP_1); + pdata->pp2 = XP_IOREAD(pdata, XP_PROP_2); + pdata->pp3 = XP_IOREAD(pdata, XP_PROP_3); + pdata->pp4 = XP_IOREAD(pdata, XP_PROP_4); + if (netif_msg_probe(pdata)) { + dev_dbg(dev, "port property 0 = %#010x\n", pdata->pp0); + dev_dbg(dev, "port property 1 = %#010x\n", pdata->pp1); + dev_dbg(dev, "port property 2 = %#010x\n", pdata->pp2); + dev_dbg(dev, "port property 3 = %#010x\n", pdata->pp3); + dev_dbg(dev, "port property 4 = %#010x\n", pdata->pp4); + } + /* Set the maximum channels and queues */ - reg = XP_IOREAD(pdata, XP_PROP_1); - pdata->tx_max_channel_count = XP_GET_BITS(reg, XP_PROP_1, MAX_TX_DMA); - pdata->rx_max_channel_count = XP_GET_BITS(reg, XP_PROP_1, MAX_RX_DMA); - pdata->tx_max_q_count = XP_GET_BITS(reg, XP_PROP_1, MAX_TX_QUEUES); - pdata->rx_max_q_count = XP_GET_BITS(reg, XP_PROP_1, MAX_RX_QUEUES); + pdata->tx_max_channel_count = XP_GET_BITS(pdata->pp1, XP_PROP_1, + MAX_TX_DMA); + pdata->rx_max_channel_count = XP_GET_BITS(pdata->pp1, XP_PROP_1, + MAX_RX_DMA); + pdata->tx_max_q_count = XP_GET_BITS(pdata->pp1, XP_PROP_1, + MAX_TX_QUEUES); + pdata->rx_max_q_count = XP_GET_BITS(pdata->pp1, XP_PROP_1, + MAX_RX_QUEUES); if (netif_msg_probe(pdata)) { dev_dbg(dev, "max tx/rx channel count = %u/%u\n", pdata->tx_max_channel_count, @@ -353,12 +370,13 @@ static int xgbe_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id) xgbe_set_counts(pdata); /* Set the maximum fifo amounts */ - reg = XP_IOREAD(pdata, XP_PROP_2); - pdata->tx_max_fifo_size = XP_GET_BITS(reg, XP_PROP_2, TX_FIFO_SIZE); + pdata->tx_max_fifo_size = XP_GET_BITS(pdata->pp2, XP_PROP_2, + TX_FIFO_SIZE); pdata->tx_max_fifo_size *= 16384; pdata->tx_max_fifo_size = min(pdata->tx_max_fifo_size, pdata->vdata->tx_max_fifo_size); - pdata->rx_max_fifo_size = XP_GET_BITS(reg, XP_PROP_2, RX_FIFO_SIZE); + pdata->rx_max_fifo_size = XP_GET_BITS(pdata->pp2, XP_PROP_2, + RX_FIFO_SIZE); pdata->rx_max_fifo_size *= 16384; pdata->rx_max_fifo_size = min(pdata->rx_max_fifo_size, pdata->vdata->rx_max_fifo_size); diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c b/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c index aac8843..123ceb0 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c +++ b/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c @@ -2421,22 +2421,21 @@ static int xgbe_phy_link_status(struct xgbe_prv_data *pdata, int *an_restart) static void xgbe_phy_sfp_gpio_setup(struct xgbe_prv_data *pdata) { struct xgbe_phy_data *phy_data = pdata->phy_data; - unsigned int reg; - - reg = XP_IOREAD(pdata, XP_PROP_3); phy_data->sfp_gpio_address = XGBE_GPIO_ADDRESS_PCA9555 + - XP_GET_BITS(reg, XP_PROP_3, GPIO_ADDR); + XP_GET_BITS(pdata->pp3, XP_PROP_3, + GPIO_ADDR); - phy_data->sfp_gpio_mask = XP_GET_BITS(reg, XP_PROP_3, GPIO_MASK); + phy_data->sfp_gpio_mask = XP_GET_BITS(pdata->pp3, XP_PROP_3, + GPIO_MASK); - phy_data->sfp_gpio_rx_los = XP_GET_BITS(reg, XP_PROP_3, + phy_data->sfp_gpio_rx_los = XP_GET_BITS(pdata->pp3, XP_PROP_3, GPIO_RX_LOS); - phy_data->sfp_gpio_tx_fault = XP_GET_BITS(reg, XP_PROP_3, + phy_data->sfp_gpio_tx_fault = XP_GET_BITS(pdata->pp3, XP_PROP_3, GPIO_TX_FAULT); - phy_data->sfp_gpio_mod_absent = XP_GET_BITS(reg, XP_PROP_3, + phy_data->sfp_gpio_mod_absent = XP_GET_BITS(pdata->pp3, XP_PROP_3, GPIO_MOD_ABS); - phy_data->sfp_gpio_rate_select = XP_GET_BITS(reg, XP_PROP_3, + phy_data->sfp_gpio_rate_select = XP_GET_BITS(pdata->pp3, XP_PROP_3, GPIO_RATE_SELECT); if (netif_msg_probe(pdata)) { @@ -2458,18 +2457,17 @@ static void xgbe_phy_sfp_gpio_setup(struct xgbe_prv_data *pdata) static void xgbe_phy_sfp_comm_setup(struct xgbe_prv_data *pdata) { struct xgbe_phy_data *phy_data = pdata->phy_data; - unsigned int reg, mux_addr_hi, mux_addr_lo; + unsigned int mux_addr_hi, mux_addr_lo; - reg = XP_IOREAD(pdata, XP_PROP_4); - - mux_addr_hi = XP_GET_BITS(reg, XP_PROP_4, MUX_ADDR_HI); - mux_addr_lo = XP_GET_BITS(reg, XP_PROP_4, MUX_ADDR_LO); + mux_addr_hi = XP_GET_BITS(pdata->pp4, XP_PROP_4, MUX_ADDR_HI); + mux_addr_lo = XP_GET_BITS(pdata->pp4, XP_PROP_4, MUX_ADDR_LO); if (mux_addr_lo == XGBE_SFP_DIRECT) return; phy_data->sfp_comm = XGBE_SFP_COMM_PCA9545; phy_data->sfp_mux_address = (mux_addr_hi << 2) + mux_addr_lo; - phy_data->sfp_mux_channel = XP_GET_BITS(reg, XP_PROP_4, MUX_CHAN); + phy_data->sfp_mux_channel = XP_GET_BITS(pdata->pp4, XP_PROP_4, + MUX_CHAN); if (netif_msg_probe(pdata)) { dev_dbg(pdata->dev, "SFP: mux_address=%#x\n", @@ -2592,13 +2590,11 @@ static bool xgbe_phy_redrv_error(struct xgbe_phy_data *phy_data) static int xgbe_phy_mdio_reset_setup(struct xgbe_prv_data *pdata) { struct xgbe_phy_data *phy_data = pdata->phy_data; - unsigned int reg; if (phy_data->conn_type != XGBE_CONN_TYPE_MDIO) return 0; - reg = XP_IOREAD(pdata, XP_PROP_3); - phy_data->mdio_reset = XP_GET_BITS(reg, XP_PROP_3, MDIO_RESET); + phy_data->mdio_reset = XP_GET_BITS(pdata->pp3, XP_PROP_3, MDIO_RESET); switch (phy_data->mdio_reset) { case XGBE_MDIO_RESET_NONE: case XGBE_MDIO_RESET_I2C_GPIO: @@ -2612,12 +2608,12 @@ static int xgbe_phy_mdio_reset_setup(struct xgbe_prv_data *pdata) if (phy_data->mdio_reset == XGBE_MDIO_RESET_I2C_GPIO) { phy_data->mdio_reset_addr = XGBE_GPIO_ADDRESS_PCA9555 + - XP_GET_BITS(reg, XP_PROP_3, + XP_GET_BITS(pdata->pp3, XP_PROP_3, MDIO_RESET_I2C_ADDR); - phy_data->mdio_reset_gpio = XP_GET_BITS(reg, XP_PROP_3, + phy_data->mdio_reset_gpio = XP_GET_BITS(pdata->pp3, XP_PROP_3, MDIO_RESET_I2C_GPIO); } else if (phy_data->mdio_reset == XGBE_MDIO_RESET_INT_GPIO) { - phy_data->mdio_reset_gpio = XP_GET_BITS(reg, XP_PROP_3, + phy_data->mdio_reset_gpio = XP_GET_BITS(pdata->pp3, XP_PROP_3, MDIO_RESET_INT_GPIO); } @@ -2707,12 +2703,9 @@ static bool xgbe_phy_conn_type_mismatch(struct xgbe_prv_data *pdata) static bool xgbe_phy_port_enabled(struct xgbe_prv_data *pdata) { - unsigned int reg; - - reg = XP_IOREAD(pdata, XP_PROP_0); - if (!XP_GET_BITS(reg, XP_PROP_0, PORT_SPEEDS)) + if (!XP_GET_BITS(pdata->pp0, XP_PROP_0, PORT_SPEEDS)) return false; - if (!XP_GET_BITS(reg, XP_PROP_0, CONN_TYPE)) + if (!XP_GET_BITS(pdata->pp0, XP_PROP_0, CONN_TYPE)) return false; return true; @@ -2921,7 +2914,6 @@ static int xgbe_phy_init(struct xgbe_prv_data *pdata) struct ethtool_link_ksettings *lks = &pdata->phy.lks; struct xgbe_phy_data *phy_data; struct mii_bus *mii; - unsigned int reg; int ret; /* Check if enabled */ @@ -2940,12 +2932,11 @@ static int xgbe_phy_init(struct xgbe_prv_data *pdata) return -ENOMEM; pdata->phy_data = phy_data; - reg = XP_IOREAD(pdata, XP_PROP_0); - phy_data->port_mode = XP_GET_BITS(reg, XP_PROP_0, PORT_MODE); - phy_data->port_id = XP_GET_BITS(reg, XP_PROP_0, PORT_ID); - phy_data->port_speeds = XP_GET_BITS(reg, XP_PROP_0, PORT_SPEEDS); - phy_data->conn_type = XP_GET_BITS(reg, XP_PROP_0, CONN_TYPE); - phy_data->mdio_addr = XP_GET_BITS(reg, XP_PROP_0, MDIO_ADDR); + phy_data->port_mode = XP_GET_BITS(pdata->pp0, XP_PROP_0, PORT_MODE); + phy_data->port_id = XP_GET_BITS(pdata->pp0, XP_PROP_0, PORT_ID); + phy_data->port_speeds = XP_GET_BITS(pdata->pp0, XP_PROP_0, PORT_SPEEDS); + phy_data->conn_type = XP_GET_BITS(pdata->pp0, XP_PROP_0, CONN_TYPE); + phy_data->mdio_addr = XP_GET_BITS(pdata->pp0, XP_PROP_0, MDIO_ADDR); if (netif_msg_probe(pdata)) { dev_dbg(pdata->dev, "port mode=%u\n", phy_data->port_mode); dev_dbg(pdata->dev, "port id=%u\n", phy_data->port_id); @@ -2954,12 +2945,11 @@ static int xgbe_phy_init(struct xgbe_prv_data *pdata) dev_dbg(pdata->dev, "mdio addr=%u\n", phy_data->mdio_addr); } - reg = XP_IOREAD(pdata, XP_PROP_4); - phy_data->redrv = XP_GET_BITS(reg, XP_PROP_4, REDRV_PRESENT); - phy_data->redrv_if = XP_GET_BITS(reg, XP_PROP_4, REDRV_IF); - phy_data->redrv_addr = XP_GET_BITS(reg, XP_PROP_4, REDRV_ADDR); - phy_data->redrv_lane = XP_GET_BITS(reg, XP_PROP_4, REDRV_LANE); - phy_data->redrv_model = XP_GET_BITS(reg, XP_PROP_4, REDRV_MODEL); + phy_data->redrv = XP_GET_BITS(pdata->pp4, XP_PROP_4, REDRV_PRESENT); + phy_data->redrv_if = XP_GET_BITS(pdata->pp4, XP_PROP_4, REDRV_IF); + phy_data->redrv_addr = XP_GET_BITS(pdata->pp4, XP_PROP_4, REDRV_ADDR); + phy_data->redrv_lane = XP_GET_BITS(pdata->pp4, XP_PROP_4, REDRV_LANE); + phy_data->redrv_model = XP_GET_BITS(pdata->pp4, XP_PROP_4, REDRV_MODEL); if (phy_data->redrv && netif_msg_probe(pdata)) { dev_dbg(pdata->dev, "redrv present\n"); dev_dbg(pdata->dev, "redrv i/f=%u\n", phy_data->redrv_if); diff --git a/drivers/net/ethernet/amd/xgbe/xgbe.h b/drivers/net/ethernet/amd/xgbe/xgbe.h index 95d4b56..54e43ad3 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe.h +++ b/drivers/net/ethernet/amd/xgbe/xgbe.h @@ -1027,6 +1027,13 @@ struct xgbe_prv_data { void __iomem *xprop_regs; /* XGBE property registers */ void __iomem *xi2c_regs; /* XGBE I2C CSRs */ + /* Port property registers */ + unsigned int pp0; + unsigned int pp1; + unsigned int pp2; + unsigned int pp3; + unsigned int pp4; + /* Overall device lock */ spinlock_t lock; From patchwork Mon May 21 21:58:44 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Lendacky X-Patchwork-Id: 917888 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=none (p=none dis=none) header.from=amd.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="1bw+GHRq"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40qXjf3Y2Wz9s16 for ; Tue, 22 May 2018 07:59:02 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754258AbeEUV7A (ORCPT ); Mon, 21 May 2018 17:59:00 -0400 Received: from mail-by2nam01on0063.outbound.protection.outlook.com ([104.47.34.63]:18368 "EHLO NAM01-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754479AbeEUV6v (ORCPT ); Mon, 21 May 2018 17:58:51 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=lxnS8h0PBMq4th/JCZsF2CQLlG6AGMTZPigFnNUg/gg=; b=1bw+GHRqQ80QgoeOJ66PGS4j9nmX1E+DREb6DHCNsqCWsac7QYjPtG1Dmzcl1bGxKQQpmgSt5EJyQJHw4s1EVfpNdw5B+V2QZBEFnP2TxHXdEST5NU1T66PwpiS0ZjPsm2Ataz9B7DwZcBt8Ony+gUgaeikPJ9bx7cBod50I4dA= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Thomas.Lendacky@amd.com; Received: from tlendack-t1.amdoffice.net (165.204.77.1) by BY2PR12MB0163.namprd12.prod.outlook.com (2a01:111:e400:585a::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.776.11; Mon, 21 May 2018 21:58:48 +0000 From: Tom Lendacky Subject: [PATCH net-next 03/12] amd-xgbe: Remove use of comm_owned field To: netdev@vger.kernel.org Cc: David Miller Date: Mon, 21 May 2018 16:58:44 -0500 Message-ID: <20180521215844.8135.3739.stgit@tlendack-t1.amdoffice.net> In-Reply-To: <20180521215818.8135.83100.stgit@tlendack-t1.amdoffice.net> References: <20180521215818.8135.83100.stgit@tlendack-t1.amdoffice.net> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: SN4PR0201CA0034.namprd02.prod.outlook.com (2603:10b6:803:2e::20) To BY2PR12MB0163.namprd12.prod.outlook.com (2a01:111:e400:585a::24) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(48565401081)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:BY2PR12MB0163; X-Microsoft-Exchange-Diagnostics: 1; BY2PR12MB0163; 3:SSIIuTuoviPfBmL/dO7oE7HXApxlPsOj0K2fs8kXaPAN8iI/f+YUtBD8QRiWThuq6PiIWpomk9doXEBdOCLd+kJxde2nNNSvEPbYo+5hqgvlStIc3/9ZsDqHCy26SwHng9Q63PGv1jdcTr+mAaWSWcL0z9X+h9yyZduAwT3Ifxi+lE7lV63cIHUGHq81amKB712HK7tmQSOFrktKP+b5H5Z9zt+fy2b0FaLdyy11rekJvDZzfvEdskpZ4oHmncjR; 25:H7D1ivYF7X4iIv1Vsa6fh3A3/KcMRxZwbWg6pTpHm261CVjmJiWEqAM2w0G1vKq2dxdWcW5FkI1BgCo4KQrwgyBAbv3FbGbOGk23boSuodGhEY/q0vlTbc9P3nO+gR9jaEYQzOkt5Q7/YFpBna0T02KZh7lOcYecUUJ+tbb6WWHqWPS3miQy17t6XRymvcY8I7qJOdmiitKNlJf/vH+Cu67sZJuAdyGBGGvQYCnBoI6qron/RFbtGqoZ3MDrdI4hZpBpOBN1ljoVpgJ4ey+Smh1jrweEMOC0PsSJq1oCGLEnR8rlMGcJ0VlDm2dvcLdRutBDDymffK2jQ7JjTTipMQ==; 31:dviuJkvMCgfSEb6CFG3q+EJ8fnRNB2PH7B/Wzhq7s4aw9gQvNxnFR9X8nstOrcg0Pt6kOe8QzmgDXfdFhpptQF657WRVSgdaBlw9hh45POH0ily8nEno4X6G7m/iavCLEIAGMJFKK1eE149sEOXGj7mL216Gj1Q9DbXoiONVcOtBfJIT9PzofT3Vcxqfyw2LX3yKcL3sG5uV280QhTDPkH/FZL1xiPFW+xWkvOSba7k= X-MS-TrafficTypeDiagnostic: BY2PR12MB0163: X-Microsoft-Exchange-Diagnostics: 1; BY2PR12MB0163; 20:sg+a7Fa9tAbUkRnm0jfgpCE9s5kqj6PGAhRHDVJx3uUGayFVG98n8tvYWmOWFyBi4uP2smmK9glPkFC2rrytaak8vgnKMYovG0ISM5nLPh3rxkAhtoufR364HzjU9fTbwSWol//R4YmCAN8281m9ipQfhdYdl1oFpvA6VJLJYlfG20mXsfo/rRyWVq0V/jFOdXtsI4OF9NmVeaFrXoL+URPXS6XolfKje0WX23CceZx16233/WT4KhH8zpcOmmpwGzZWjwmflM0dsiz7u25pT+s0SmTBomiSkw4hs89AgS/PBQUYSvnM3r2NHTua3H+Lk1MQGSbYN3avwcYhTfP21OLuPhQZGde1hm51Fxz/EL6x/pBwW1eYthwGmZNRbFOMjpuSVorsz9WFQnJOWab2+LN7zmi/ApZOsPX9dMP/6/MSwk2fmECTEytgi2qq03jVXGt+88Rj6GOya3Hc2qb/X5iqZR7M0xew1WYPN0nLccVYjTWXDtU8rNk5PPNk4KxK; 4:3mI02NS+zWtgVDfETcemO+kBOzI5oNHOztBVmkoToPeRLjBpJ8Uaxnljq7fNMo77aWtWQgyndEpnW+Jup7AEAPHx6QaMLdjMKBAVlvrfd2Xldr8skXSxb5UqWQ1GFTBDXWpfXZT+Wdlxv6g90hYdiWgbjiV9evn+056ex3C5Z5LtVKmljEfgvJ9zad5PTzu1/mBiFpuoM/qgzh+kUJQg7v3Au7aAJFPg54rhLoiD8lEmEhzt4FnVCXDtH7xfzbt65xIVJxJtDhYc3mzUKdNhYH0P0EJvkMCQaEiy3bWhMJRMAfdqpUxkZg8FbB+MF6iwWlNYYqQJDQdva5A+xnGMzg== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(60795455431006)(767451399110); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3231254)(944501410)(52105095)(93006095)(93001095)(10201501046)(3002001)(6055026)(149027)(150027)(6041310)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123560045)(6072148)(201708071742011)(7699016); SRVR:BY2PR12MB0163; BCL:0; PCL:0; RULEID:; SRVR:BY2PR12MB0163; X-Forefront-PRVS: 06793E740F X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(346002)(39860400002)(376002)(366004)(396003)(39380400002)(199004)(189003)(5660300001)(68736007)(55016002)(305945005)(4326008)(69596002)(16526019)(386003)(2906002)(81166006)(59450400001)(86362001)(23676004)(25786009)(81156014)(478600001)(6916009)(8676002)(9686003)(6666003)(8936002)(53936002)(97746001)(2486003)(230700001)(6116002)(1076002)(52116002)(7696005)(3846002)(7736002)(316002)(105586002)(486006)(476003)(76176011)(11346002)(97736004)(66066001)(53416004)(47776003)(2351001)(58126008)(26005)(106356001)(446003)(50466002)(103116003)(186003)(2361001)(6506007)(956004)(72206003); DIR:OUT; SFP:1101; SCL:1; SRVR:BY2PR12MB0163; H:tlendack-t1.amdoffice.net; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?q?1=3BBY2PR12MB0163=3B23=3AkpiY?= =?utf-8?q?HTO47LcHw30QupcCvPXhJRxDGNHygr3+yrx4RNByYGH2SxXI7SZMSrTn?= =?utf-8?q?hLywy1RdaJGZOHPytxrXdaFgizvpe0hXyhlei9o93RrIPdmHOREIu75E?= =?utf-8?q?WPahypZioNkHd4fJVQ5jmleBWRfpPax5ethPPd8+OUTZ3XkeGQ6Y5XQg?= =?utf-8?q?hmh0a3KEU0gK3dAuIsfYoxjoJNYT83wSzaCrhYHLe7jHqrIv+/Tb94pw?= =?utf-8?q?20Xay+s1j3vKOkVlSFKNNJiHaQ4iP8bJxOtZBWA5jstCOrS07ptnFq16?= =?utf-8?q?sjzxcBArvyIgX/4DKkfdmk2wFIQvPwx09b8NlAaoRLgleotyXELBCMTJ?= =?utf-8?q?HvBZj1JlVEhJpsMuZhKcXd9u6w56+HnSKsFtRI1kT4/uAMiInr7rtrPr?= =?utf-8?q?sAYKw4mOx3+3Rqp7xBz8u2QrSnlSWM5E1LzvBuiIO/UYRI4CskOP/DNG?= =?utf-8?q?91LT0ef0Yor55xeTVj1CRlO/4NkgvGjbMye8NH20TjYzgsznLvmS+yDY?= =?utf-8?q?DegWCS8bn0h3g/GsywSSUR+o6vPEBBREHEoj6ZE3fmpdTOMlXmGbTIao?= =?utf-8?q?ZMV86a5wB7TIIjkzOf8nnuS5vEUdq7pq8oZK8LNQsY9Suoxngm/Z9fkm?= =?utf-8?q?9FeNtV4XAOt530lOreCPnlFsTTf4T/PdJm6gfkPbrQTrPmQc3ZCR4gdP?= =?utf-8?q?yFT2BigBjn6xUUxlSGp+WAd8IAPsNv8tZzJkpDJ0cbdHThBsNwovE37R?= =?utf-8?q?urB1yjKt7BRfYmQS28J7VIDPxiA74Gjd6paKRXQAXjYbVIvpQyWiAz6S?= =?utf-8?q?MDqbN1Rcn0FGGDo1q/lXyy+qEMIUanl9S3V8gjam+/xBsRlJN40UCn3x?= =?utf-8?q?5EIyP2XFMBRKaWS2JfJqYPC58vb7m99+yxXFZ5aNxDXxX83ksmdhOgcq?= =?utf-8?q?/Onk5w5ul5x3Rnh6XyvRnG6owAe0Q+CXi6wQn4EMnyasUbj0zEczEMVz?= =?utf-8?q?MLp5xgAYpYSYUZ0IxKbqsjwWLwE6OCg0+Ry7bL/XH+4tMrseE+rMEij7?= =?utf-8?q?y2sy/VI0485/JHQXfc7qkiaGgY+lHum93Qo42eBWhhLCJazTX8lf9dG9?= =?utf-8?q?Yr+8HYi7W0/F9Q9XSH+D69o75oZhPkDn9gaQHzioUBNzDjg+wiC+nRAq?= =?utf-8?q?RvY1KGQtke1Oq8iFqO8Iozzz8qW0HtbWeTBP4ITjYLMVSo3qBVT0Icgd?= =?utf-8?q?I5mwuycefCvm6dHpxd5hMoGw34MzGN5LcmT1hz1HkNFGx9M8GF7q4CR0?= =?utf-8?q?cVFNhRota5r+2ygOoNEjdBk9OUbB4VIdYQfHNJj4tAIlji6ptMX8i9Sn?= =?utf-8?q?sH7AM93Bc1svpR0dhaGbJusZHhw8dzQ9XI1VnmEe0Kt64Lx/lpOlv/v6?= =?utf-8?q?O8jK91njWakyGgT9Zw=3D=3D?= X-Microsoft-Antispam-Message-Info: 7RlMQVB4IRCQz8IMuh3Up+j+J2H87LBavNalP23z5C/2e9gVG74vc+zB7bKNWL+T5kz/vdtz2Ow3HxEEgZH3vwslF9/txCJ3UXz4kSXY2a49dUyEytbb9FRfgSeuROOwomhbS10ZamoQaNlGwvrfHDnLi58kNCzjsxBaboBA2xqlAh3KOXC99P83sKRPuTj8 X-Microsoft-Exchange-Diagnostics: 1; BY2PR12MB0163; 6:C6cfqwirV4ifo/gq9Icilbdwag8+6PzfwXxle6xsDfbrt7re+GsJ8JREDdmLrZw4kBudmvzj74zt0/X0tSlw9hjfQl/1Ey0z2Eaq+aLd8cSpdOdHrsN/DLGCEzB6OcWSAbCkt7elNkpbBQ/dQ19svwbiuacLPap+StV1seGpmwJiEaYgGMrgZnx3m8pZjQFSypfEMGr5rbbYg/Bsq8Bd545C2DgVXacrSfAnnP/lDVyFmnK+1omIgqTsMLnc13E4BG59lS+AWXiQCkFdsukuK6gqsPvzD8/dtQJNuvL6uZUhi87CiwRyffJMYy5QQQAKXgvBDAGGdAatrSr+++K/YK8Obp0CA3cXb7w8ilUkByPdQLsw52pToSIGF0pbOyXCZOKuobxH9G7xB0Ne0NeCl/SzBKYwQtZrWUOvMQifWrIGGGBxxlRqXJJSgA3FQLvVJjHVUOcJ5yCeD5+Qhgj+Mw==; 5:Ue6VYo/d/UrDsoiarVlcrUmYx+aDKN2235vLC/Ba6QkUux0h77kFIt/nZVq8r8nkGCruOZbB5YSBvkA46vdP7/tawq3Mr8g019SbxkwM53CPE8cJEh+GraG0Y32mK5TKa+HkW5Kqbthtodp7DtJCs1yzyjXNi164Wf1U0bhtZvo=; 24:IczXHL8K4OhYkZGTfIuI1Oz2uxzA9JhXUFyMZecfhU4t99c4fJLYf891ghMSNyD/it6+c0GhV3jFnENdnJaiGgm8ulMANbyqCjLR2ULpy5E= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BY2PR12MB0163; 7:DkE6eEWTkXzVuy4FVS4WLFIyfHvKkXbVg0xhd5Ipcqe1n3vaygor9RVjTd6TBdSq2mCtxyc4k1MKqbx/VSEV8ozolhTCMiGFPZj5xwDQootzL6/gjgCmtARYyBrzvYV10CQNe2+E1lZxpAHHCNBR6v66Yyme016S+Rm3dbMKrWkEeDDggjRGvmD54ukNirrkHINJhTKJRBY6QCu2C8u/J297lHICj4b+FonfEbEhVYrj6W+0ivBcPGQh6Jdob73/; 20:ED76+swt3uPBm70UqB7qPSbiBwDb8FLcPL6JDPTL7tu7AIEgWwSF6p79FnotJtvxMZjAnkxMOJDBCRGlMZW0sq4M6wp8khjs1bSwc+8baDwM5fVzmoBBHoVviNSXuhkbccgsTPEbaxxXBaLWA6euXWUG4M/WuDn8LCOpitcw5UE3vh2xcrvQPBEt1kAUEZ7H5ZA6lVif9Bmgzwqrv1Zd/iKpbrLsC+hm4l5NVQXjAkZwrl2d/uaJyn0yMxCbb5HQ X-MS-Office365-Filtering-Correlation-Id: 1f2b9ba7-63ec-493e-4093-08d5bf660813 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 May 2018 21:58:48.2873 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1f2b9ba7-63ec-493e-4093-08d5bf660813 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR12MB0163 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org The comm_owned field can hide logic where double locking is attempted and prevent multiple threads for the same device from accessing the mutex properly. Remove the comm_owned field and use the mutex API exclusively for gaining ownership. The current driver has been audited and is obtaining communications ownership properly. Signed-off-by: Tom Lendacky --- drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c b/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c index 123ceb0..05003be 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c +++ b/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c @@ -327,8 +327,6 @@ struct xgbe_phy_data { unsigned int mdio_addr; - unsigned int comm_owned; - /* SFP Support */ enum xgbe_sfp_comm sfp_comm; unsigned int sfp_mux_address; @@ -382,12 +380,6 @@ struct xgbe_phy_data { static int xgbe_phy_i2c_xfer(struct xgbe_prv_data *pdata, struct xgbe_i2c_op *i2c_op) { - struct xgbe_phy_data *phy_data = pdata->phy_data; - - /* Be sure we own the bus */ - if (WARN_ON(!phy_data->comm_owned)) - return -EIO; - return pdata->i2c_if.i2c_xfer(pdata, i2c_op); } @@ -549,10 +541,6 @@ static int xgbe_phy_sfp_get_mux(struct xgbe_prv_data *pdata) static void xgbe_phy_put_comm_ownership(struct xgbe_prv_data *pdata) { - struct xgbe_phy_data *phy_data = pdata->phy_data; - - phy_data->comm_owned = 0; - mutex_unlock(&xgbe_phy_comm_lock); } @@ -562,9 +550,6 @@ static int xgbe_phy_get_comm_ownership(struct xgbe_prv_data *pdata) unsigned long timeout; unsigned int mutex_id; - if (phy_data->comm_owned) - return 0; - /* The I2C and MDIO/GPIO bus is multiplexed between multiple devices, * the driver needs to take the software mutex and then the hardware * mutexes before being able to use the busses. @@ -593,7 +578,6 @@ static int xgbe_phy_get_comm_ownership(struct xgbe_prv_data *pdata) XP_IOWRITE(pdata, XP_I2C_MUTEX, mutex_id); XP_IOWRITE(pdata, XP_MDIO_MUTEX, mutex_id); - phy_data->comm_owned = 1; return 0; } From patchwork Mon May 21 21:58:54 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Lendacky X-Patchwork-Id: 917890 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=none (p=none dis=none) header.from=amd.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="WKCqXgBu"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40qXk42ZPtz9s1w for ; Tue, 22 May 2018 07:59:24 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754623AbeEUV7I (ORCPT ); Mon, 21 May 2018 17:59:08 -0400 Received: from mail-by2nam01on0041.outbound.protection.outlook.com ([104.47.34.41]:63979 "EHLO NAM01-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754384AbeEUV7B (ORCPT ); Mon, 21 May 2018 17:59:01 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KQiL6dui/xUr7tVZKkgPp+Q7fKRb9/lIJ0GfrHY93s0=; b=WKCqXgBud4rbTOGe1GY8flylfdkA2nkYgzzbkopv3HTgRJIgxFmEeEbYD0/AfLUxOsFb1lWVIYw+UCRLDQcG1JTRzOvHKrjL0JRLHDXGj5BDzU0YoqdE839qrd37kuRwSzwN3UZbWNP3XXsSJlqofr5pnOdysc9x69jM2VD3B9Q= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Thomas.Lendacky@amd.com; Received: from tlendack-t1.amdoffice.net (165.204.77.1) by SN1PR12MB0175.namprd12.prod.outlook.com (2a01:111:e400:5143::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.776.11; Mon, 21 May 2018 21:58:57 +0000 From: Tom Lendacky Subject: [PATCH net-next 04/12] amd-xgbe: Remove field that indicates SFP diagnostic support To: netdev@vger.kernel.org Cc: David Miller Date: Mon, 21 May 2018 16:58:54 -0500 Message-ID: <20180521215853.8135.67266.stgit@tlendack-t1.amdoffice.net> In-Reply-To: <20180521215818.8135.83100.stgit@tlendack-t1.amdoffice.net> References: <20180521215818.8135.83100.stgit@tlendack-t1.amdoffice.net> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: SN4PR0601CA0007.namprd06.prod.outlook.com (2603:10b6:803:2f::17) To SN1PR12MB0175.namprd12.prod.outlook.com (2a01:111:e400:5143::15) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(48565401081)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:SN1PR12MB0175; X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB0175; 3:UZ0XgxCad2jXMQ6CZ4KiM6dlurQt4ZbPki+hHr5tJMgFsoNQRoN/t3v+9NzMwx0fQDTW0GziCMPdvezvWV8xaXuyJ/MgWwMi38wkr1UAwb2VdKmNd/CBExtPa3JB/tgQyeQp62/LsZ+GXOLYpogyBay2nho2//llwT9WgYSrts1ixz3gQwDLblAgUV8Fs9HFrT8BW4fUSdnZHH+mgkbx/3jXmW/z7vwtPuS7UKh0czvyR0ouheQoPPWpNVCutuBr; 25:a3qGG+rjQHpLp5u/nfKRFFIVTFKFu9+10xD157FCjp3OW2u/ce43UT2OXBoOvO80dtp7JqwD732iWhvExoNGaZua2dK/zg5GQblo0S+V/6P0PcNCLY5baXWnbekP4bB/AUriZVITQuWY3Qyc73PPem7AsuN2+7QKFL2hC5Qag0LHoTtWh3Xooc2Rm43WRT6xGTz1D1UCOVljqHR2IIQWoRd6RxjfpvePlmFfEVh1AsoQIuZ/k/zq1rLVn8IANWqDb80Hs+2H5Hy+cypw69Kht1Ezc57+k8fcwvjZjngQTV8oftWCiCG8FEgVFFXE30Ng3FeED16R+YZJxPmyUkOdCQ==; 31:l7/mXkSx7v6LyXLpna1G6Rgu2Eybn5BnptnkrOcVeEIeGoM7PZ34kQ206+S4xQZ/aY0TE4+RUmYSJSVR5cOp6AsJi9u7jtNHi+Vq5ge/r46Kf48ncd9H2O3LPAcWsZZm6qZyT0bvBONVItZaQPESOjyDecF2I/qv6qtzUbn98K9RnA19wCCNbbepsdywqjtVIANyPvUCmMnGUC0JBq1g3Z9pgj7h7XrrsfOlSmXHLTw= X-MS-TrafficTypeDiagnostic: SN1PR12MB0175: X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB0175; 20:sLbZNrHaHNCAH2A8hper960SbID4lmYKcAijcp/kny1qE5zX9l7/jZAbDxq77bPuO2XJIGTt/uW8Gwk+de86ZxJKs4GWypR99b3FX4ur4mUiwZ8jioScX7mNkrUS+Oed33bPI+93msdchmWTaKZ0v6RfkIGeUyFMQr3++VSNx7v/3p1NesgeGIj9HxmYjJTvgVXPqPXCHxhY9xRdqeAY5VplOMeOG9gYmQQ2N3LK9z8hm3F5zu1qZNX6U1eM/HUmfDySHWiGjl+Ti7Xovq7Vj6gKP9yjD4fW+rw4jo8L5BkvXZpygPo3jfMToSrU/K9ahiobYOjHoDOlPSV+5uRYbrIbe3jqzSmoEAyAJes1zVsD5CYH8LdynmNZz6xRuAKhVzTvwbJ7ebYY2SiUXZIUrWzjAwtHyJQdgTsBTegwZn58K3MmbniLFwFMckKXSy2SPAwEzU6l7X0YyDTv1BcCRBPp5zF+N7+mYtaj/mjL7ZmzAAbeulRT8+jhTnzyTZCJ; 4:2+p01WRFI5wZX91KIVieMqYvnGsw49dQBih2ZOLE9jpMMqGkyp88SpIpYcozUsEiAvzdRB5bW4C/hwgAF0v5DQNR87Mv0hKwDZ/ZP/mO8UUbJsp+fVb54q69N3QsqG5l0a8jMd7HkRISXBuTTZ97XBdTTIrFSNqSvRyjC+yO3NtlykajIj3vMyGt1rELr62P3rvPrd2GBY2sTv3afLXJrZ13YbPzWXQgB9O8VObMkh8qgX0poN7fm6Ev1OtsdpnMzl+IFNd4Xdy1ddpdpUKF/SkaIuLn4SWaEnDQiAlwjYgkV/a8hDry13wyze1FjmoG X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3002001)(10201501046)(93006095)(93001095)(3231254)(944501410)(52105095)(6055026)(149027)(150027)(6041310)(20161123558120)(20161123564045)(20161123560045)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011)(7699016); SRVR:SN1PR12MB0175; BCL:0; PCL:0; RULEID:; SRVR:SN1PR12MB0175; X-Forefront-PRVS: 06793E740F X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(346002)(396003)(376002)(39380400002)(39860400002)(366004)(189003)(199004)(16526019)(186003)(476003)(11346002)(55016002)(486006)(68736007)(76176011)(2486003)(53416004)(7696005)(23676004)(52116002)(26005)(386003)(6506007)(105586002)(8936002)(86362001)(58126008)(230700001)(2906002)(106356001)(8676002)(81166006)(316002)(956004)(69596002)(446003)(81156014)(9686003)(50466002)(97746001)(4326008)(97736004)(305945005)(478600001)(72206003)(3846002)(6116002)(1076002)(103116003)(2351001)(66066001)(2361001)(6916009)(47776003)(53936002)(5660300001)(6666003)(7736002)(25786009); DIR:OUT; SFP:1101; SCL:1; SRVR:SN1PR12MB0175; H:tlendack-t1.amdoffice.net; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?q?1=3BSN1PR12MB0175=3B23=3Atkes?= =?utf-8?q?sSpMmPILI3G8bPiBdwXrd0xYbhp7Mu2VF/5Uowuf9sU+P1RMZnsuWWnp?= =?utf-8?q?9T1SzZ3lctDppDZosVEICsga8ITidMpk1eWaG7a9PSfcY1W4k5nhfMlk?= =?utf-8?q?yn73u6QYlQpZeZGaqIjhd5IyOGj59Bcyx7oroGJ9iXHQsUSwGSN+QUbT?= =?utf-8?q?ZUovV2kHNpwizYzYTyqUkscNAVSTDJloGoTOujnUJWWoFBit3cnBv3Tf?= =?utf-8?q?Pwipeq769YZdAmtopuSkrArtYD5EFD6LZKNK6da1a34iFcroc8Ka3fLl?= =?utf-8?q?9AcCzyKsuk29QIi9v0g+zWxzZCb23+MKgRo1i1Lt+EAhXEOOkW8f2ERw?= =?utf-8?q?51y0pUkwRmxjNuCWjq/FUUxKb7GXPAVXES8CD1P4R7Yc1kzyUSETGH9T?= =?utf-8?q?Vjq4sotEmECNa8Qp5J3ZRdq/0RZVadQhGg/U9dj077SlbXbLU6zYI5e6?= =?utf-8?q?eHJG4x3yAOcFR3LYRoS7e2W20nP1YkmTqF6AQQdl7Xx24DGO5KUMgGJI?= =?utf-8?q?8TNtF5jIXV1S4kxBWakD4EIVhuuRZdiZhVx8nCEJVK1HqyfuTdHStdH0?= =?utf-8?q?Etg7IxSWIdwChXTxtMi7v0SoKB47TcTUfdzfzcJKM8b8ZlMJ/+z7n7H/?= =?utf-8?q?FM6z7iMRukMCOzoHIPxopAENtXFrhS2G4WyGaGO+/Wibu/qHEMl+gFiB?= =?utf-8?q?aD9I4Cg3bwzgshw7pXr9YcHyGttaieMzqPvzQ+9qfCtFqDrou+BqnHxi?= =?utf-8?q?xBDLsv0YPcHQ/sqj5bL6xeGKBz/ey1MQadtjKol3ay/wAK403sunxyLc?= =?utf-8?q?oqbCkZMsOMl3bhIG8sXAXXy88qDYNrMtQGNf9WUKI3gp1ESOqgZq/dY3?= =?utf-8?q?Ir1HNlbSYfvKP7ibUFGLA7OI5BHcQqMaK46/27lRAOKyXceoMLinPMVz?= =?utf-8?q?QXr0pmSpHd+o5rICziTPfHZriEQnQOFt/7Pgqxv07BoqLKRtGL3rRpUG?= =?utf-8?q?NQ+a87deRj0PNFP9v6ZbPJ59qOJz1OE+st41H8eB17tq9NiWv8Xworod?= =?utf-8?q?6ORgy9ztXHn/NXYVD18aTFmjx91wsyNWTd9Wy//ErGW4ODMS5lfw9yCy?= =?utf-8?q?jwvEPUFx4bS2ozNxYPjcZDpULQNU/RvecBD+riwX7ZzWyKXIkUHyl+zC?= =?utf-8?q?03gr7xZybk/169mUcv3eysuaV4TgGWp8aNzA71wvCmlxlyQ8GYtMqAOE?= =?utf-8?q?XikiwGXNMSCpQp+ZH6PBBVtIpS0m1C2kdLt7iz+eZ/j5WyBoCIIRAF1R?= =?utf-8?q?jQfxUwcvqNrPh3El3sb5TpLdWn9b1D52sZ7z5D1y00RYGO9DQGcHz6i1?= =?utf-8?q?Z0OQrH9BFL4hAxDl5bu0HZTutskiOgQ=3D?= X-Microsoft-Antispam-Message-Info: zVEnADz4uo2NSbmeKe5FvXyV399mRY/Wk63qJWw9Q68efLOcE74ZFGYM/jR4jmSakyEU4k4LB/yZjt2KRMqOyMvKEDDWBCu1UTuELXiqtF7VAhGGLUHjUepVKFrnnCtC9mlj1DuKHvkSDZ3M8YDVkpVv0DV9CZIB3wVIHB6s9Q94WCfMgJLe8cd6RWU6cScL X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB0175; 6:VWFgjkHITTfbOsjAYtXbUAkJ6UXMFeNzhwzp4X6YKqhgRfSmYvYZKELL/7NVsnwXX+Iy/PWgBsAtUvXGBEeeYxv+Umujb3EaSIjeGuesu+XHkjLqS7Ml0xvSJH0ZhWPj3vCvZDIhLEAdJ/jno66VzKT1Ols+RFxCtBwbhEfT2s4nLtPUN+EaqQr22XlnoHe91wKyiynSY8r3QBOkfwhasvFP8r9jcUrhYit81Lnu1SAMnkfqOiANGEBniNGjZwtUG6yFAl6brnEfqlK2ao1btWaI9uAcniE9TP0mYukX3vlLH+0Q2tX692k6hnAdkVw46wF2+2nnAcqMsEnfD3HtAov0Ie9oGaxta9C3mCXC/Qdh66BGJkmc7DZodrNAXfmb4bPKjxtQnOLuuQ2Q/MIlGpzvoYOL0rEmwSQ2JwY9ZRpxe00cnqopfzV0p3JBktzsFNfW4PuRIeL6ycgx0p9RVQ==; 5:CBnVLb8tIOxPNd1YlV56tsOTLW/gvMyIAxukk3+iCzDBe3XfDGiDJOeZwdiM/x1km+cmJSBKo/ynWrZEP39kIAHeK2VTOnb/NlE/9F7CsITK1LB9Nr/IKfEDH9O7bURmCOk64WDzrePEBnwP6grjYjY1NUeWGveORsS+rRykqBo=; 24:6954bM8+hTo0OKjXsEJO3WlcfF8CxP1XthXbddsPl+ZQOoSoHiPNls+lhdg9IhYlKJiyvjpqFJ0/Ny6UHwjsmbCwAxSzkGpaA1BuF9mb1sQ= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB0175; 7:GWx4MecF5kIehlY6DjcCGP3N953lSIbkKcY8z74mTeMhOcBMoWDptL17sCuYqoZjas1tm76jeW8JFpl9ApQFRoj9ghdPkUrlxXrkuZPMmPoGT2jekUu6j3E+SFqnfPW7GQml89GfhmF0ODwpNo9wu6vF2GkVGw0+AkLJukCP2kX32MGr5N7i6upVS8scS1DdJNyZ3d0xSDDlkW0+Fh4cErOl6fM4EGPhLbv3OFHao92og4r2t126B2gRFkH0BWvu; 20:DTmjmyp1v0yTjh+43BwtPBwjuyPJRGnW7scl0T30UtddxprMu34q3Fnzio703ZDUcbxlQuvenKsIgK//vAx7cJqgUFENpwt3dlcQOomGcdDLz7RZ+t8S0HOZoWpGm1cemdVWyoqvtlZ8PVCuF4wEvZoIZoJ9QA47YGQheZGlQU0jd2LrM4z5trWTgVXNFAdXvMMu9U2Zws9U88YTI+MqxkqK/Sfwvu9pA2bi5OI9zMPmfrwfNNdHey6uzhQ4RILX X-MS-Office365-Filtering-Correlation-Id: 2e223704-4a1f-458f-fc24-08d5bf660d49 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 May 2018 21:58:57.2065 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2e223704-4a1f-458f-fc24-08d5bf660d49 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR12MB0175 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org The driver currently sets an indication of whether the SFP supports, and that the driver can obtain, diagnostics data. This isn't currently used by the driver and the logic to set this indicator is flawed because the field is cleared each time the SFP is checked and only set when a new SFP is detected. Remove this field and the logic supporting it. Signed-off-by: Tom Lendacky --- drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c | 9 --------- 1 file changed, 9 deletions(-) diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c b/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c index 05003be..cb15caf 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c +++ b/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c @@ -343,7 +343,6 @@ struct xgbe_phy_data { unsigned int sfp_rx_los; unsigned int sfp_tx_fault; unsigned int sfp_mod_absent; - unsigned int sfp_diags; unsigned int sfp_changed; unsigned int sfp_phy_avail; unsigned int sfp_cable_len; @@ -1211,13 +1210,6 @@ static int xgbe_phy_sfp_read_eeprom(struct xgbe_prv_data *pdata) memcpy(&phy_data->sfp_eeprom, &sfp_eeprom, sizeof(sfp_eeprom)); - if (sfp_eeprom.extd[XGBE_SFP_EXTD_SFF_8472]) { - u8 diag_type = sfp_eeprom.extd[XGBE_SFP_EXTD_DIAG]; - - if (!(diag_type & XGBE_SFP_EXTD_DIAG_ADDR_CHANGE)) - phy_data->sfp_diags = 1; - } - xgbe_phy_free_phy_device(pdata); } else { phy_data->sfp_changed = 0; @@ -1267,7 +1259,6 @@ static void xgbe_phy_sfp_reset(struct xgbe_phy_data *phy_data) phy_data->sfp_rx_los = 0; phy_data->sfp_tx_fault = 0; phy_data->sfp_mod_absent = 1; - phy_data->sfp_diags = 0; phy_data->sfp_base = XGBE_SFP_BASE_UNKNOWN; phy_data->sfp_cable = XGBE_SFP_CABLE_UNKNOWN; phy_data->sfp_speed = XGBE_SFP_SPEED_UNKNOWN; From patchwork Mon May 21 21:59:02 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Lendacky X-Patchwork-Id: 917889 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=none (p=none dis=none) header.from=amd.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="p8958XVv"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40qXjz4lnkz9s16 for ; Tue, 22 May 2018 07:59:19 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754639AbeEUV7R (ORCPT ); Mon, 21 May 2018 17:59:17 -0400 Received: from mail-cys01nam02on0073.outbound.protection.outlook.com ([104.47.37.73]:55968 "EHLO NAM02-CY1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754075AbeEUV7L (ORCPT ); Mon, 21 May 2018 17:59:11 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=wvMaGSpyvPTeShhws+zhNio2x6mUT+LIiyZxcPXDPYI=; b=p8958XVvGDBlyPZt9/k27BndOoUCO1El3l/ZVOYk6cSkIdycxCYh6Ghu47S0e/6EfppokwKkPla2VvEGz7Tt54scPjwk2idobXNOfsCqkmRjM5ZcPwlVhNiFpBS2/nyUMyJtZ4aWZ4mdn9JPkxlAY3C/CROJQoA9uU+ZdVY3Aio= Received: from tlendack-t1.amdoffice.net (165.204.77.1) by DM2PR12MB0170.namprd12.prod.outlook.com (2a01:111:e400:50ce::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.776.16; Mon, 21 May 2018 21:59:05 +0000 From: Tom Lendacky Subject: [PATCH net-next 05/12] amd-xgbe: Add ethtool support to retrieve SFP module info To: netdev@vger.kernel.org Cc: David Miller Date: Mon, 21 May 2018 16:59:02 -0500 Message-ID: <20180521215902.8135.25029.stgit@tlendack-t1.amdoffice.net> In-Reply-To: <20180521215818.8135.83100.stgit@tlendack-t1.amdoffice.net> References: <20180521215818.8135.83100.stgit@tlendack-t1.amdoffice.net> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: SN4PR0201CA0020.namprd02.prod.outlook.com (2603:10b6:803:2b::30) To DM2PR12MB0170.namprd12.prod.outlook.com (2a01:111:e400:50ce::21) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(48565401081)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:DM2PR12MB0170; X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0170; 3:YhiMSR2dA9kRfVyB7xflMILi71W5II8ZaoLPkbl2FqWUkB2f0AcSymW70HUUEam20eDTmSvLdO7l3ZREf/oKyXmSCsh0BqqJeIZs1wLzfnHvRp02hcffn+c1pRood8iSjJy8gjdpvJwg0YPvnnqVkKeGSLJChU46kJFOXI/J9BgTG2oJzU13+ZT+C18PxcwQd/tyNwUiWc6mzLOTLl25RESA0o9ga4CQWGVhhVMMWI8otPJe4rtmLgUY3xUb6XA1; 25:pZiPuCsCKzv4RnFVYG4cJpCB2QE2IbSA6DNwuxVen1/BP5X85AoJRTmh5xItZLlaI6j7Fd7eXTWAgbREYpNuIlrb5R9UXatZ//JLdXDrvv4nFTYVSLe+A15r7r/B7U2WGygsHLV95eOkLG9Vi9BBm8cVEjuZXlNttvyLNa0q6oXufVr7J5DGC3MDVyqorbvm0loLBWxEtYA2mJP9nGjMi6dCdwfEGYp1TanfwQRxluh3o8WdXwqtM2JD/D19ZEjCfq1EPdaBhU4VTRbmqHb+NDDdX4yHkCxELBvGOrJBagLzDcB06jXynfmbhwpzQKUNrhiqs1WPpfo0dsBV+MCAhg==; 31:dp8dZyp2x4ItWeDMyL4d/BaBjZzxlZYVQGvqp5Pc0vfvEzDcnRw9FP4P/gYERuTwmvBrtlPJOaxzVjYBgEsk3x1pVt6+oYXG7EVL+FRXKfMCI8H22LmKSk2FIuqoxKOlyQdsb4ANEktTZSsURbP0ZgC54tgUAnrupjhsVkXEWgwYE+xYkod5Vd+jFml1/L1xXNs239AV0lEwxT3QpUFnvyaAfpLS59gKxXlX6p8dMic= X-MS-TrafficTypeDiagnostic: DM2PR12MB0170: Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Thomas.Lendacky@amd.com; X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0170; 20:39HjA5kgC7nnLUshv3HEVQVaeFGZPkUf5sJhVLT0wgMKWTBmFFWz2HwUgZ7FQ2eOgTQfRndGQ81I8gImHRxrETNdbpcU24EBLL54GB2kW3tSh+f0NHUcIHe1OQUl6xElIbxwWSCuvO8w8yz3a4abfSMNMfiwNB0CtQ1XOIEcPOyAZ/rjR0jy1bwZHURx9WHf8+1p28YKndN9yGVHb/0crpSHixBt4gk6RHFdcFDnR9v1DeytKv1/KYjty6aXg6lXbTbNDcNA8dAGli7k56icD+l1NI/oNrTnL9u5IQ7BEhLz6sjCZyrNkeqNfgiZKlUruNc8ayihpxmia0uN/LPX6SBeqrWiTRdk9xJaI5pc8pZ2B2JkF4WAgQE05DDRKhLRGPsjWekB5iIdRdNRfoGSqYXcgqMvqnK9PZezdoA/7XMmYKXdln78apB9TkmN7cYgmg44QzNeNWiPYG9/93hzHk9DIsnFvRxD12zz2PwwMl1TzApit8jwiKaQGQLwro2V; 4:l4FkuLy8IWMDLkmvFWQCTxgs7OfyeYZTldqBORuwloelKw+jrsigwSrsX9ei+6Lkiv26jUeogmYu0fwa94IjAKxWz+6C9WKDuB/Yh+q7/ylJ9jzoahKH/9cS8q6tJ3kbzB+oe30IAYRX3GZdOOzQzbQttesZRwW6nubqDPgoiQ+TaaHiHLyhF2aF710f60TZNdnAgfb2vfmL2sXXhVFqIYfHez9Ef+hG9lbOstdaYqwnZNF5PUn5RpI4B0+xZYkX7Keu8kz1O6ZUbGNMlz/Xca4e95xPVXIKV1HhGrJHQvfThqRpRbqFcM59BX5i35CI X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3002001)(10201501046)(93006095)(93001095)(3231254)(944501410)(52105095)(6055026)(149027)(150027)(6041310)(20161123560045)(20161123558120)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(6072148)(201708071742011)(7699016); SRVR:DM2PR12MB0170; BCL:0; PCL:0; RULEID:; SRVR:DM2PR12MB0170; X-Forefront-PRVS: 06793E740F X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(39380400002)(39860400002)(346002)(376002)(366004)(199004)(189003)(486006)(81156014)(55016002)(26005)(1076002)(5660300001)(186003)(16526019)(53416004)(66066001)(7696005)(23676004)(47776003)(2486003)(81166006)(8676002)(52116002)(2906002)(386003)(6506007)(59450400001)(76176011)(97736004)(4326008)(476003)(50466002)(6916009)(6666003)(2361001)(2351001)(956004)(69596002)(105586002)(97746001)(106356001)(58126008)(72206003)(478600001)(575784001)(9686003)(86362001)(53936002)(8936002)(446003)(7736002)(6116002)(103116003)(3846002)(25786009)(68736007)(316002)(11346002)(305945005)(230700001); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR12MB0170; H:tlendack-t1.amdoffice.net; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?q?1=3BDM2PR12MB0170=3B23=3A14Pl?= =?utf-8?q?F8uSWTEiFnQ0Bl7JXh5cs7DR+O2viwE8Kdkup0Vnk3r1I9+68e8/IagV?= =?utf-8?q?MgOzQKtRQJ0RCm+S8wjriHBNhcysql2U5cfOWJ4SEg3FmtDV4/R53Hxr?= =?utf-8?q?c05P9AEoji2v67nZXEUzcVh3qyyPKbqkfpL9zfX/TikCH9PxbSNLvaoE?= =?utf-8?q?6NcljvK1l9tUgnIDeblMjJmYw3H3NvMxsjAl7TqLuKJNECFfF8xOYMlb?= =?utf-8?q?Iec7JbW52rHHecCUVhMk97ynEtN69KU9ZFb3CtH2/XIEfCILRd4g3jvJ?= =?utf-8?q?40fHEi1bmTOzBufIL1jZMz48Vn2nY5b2iVdY9WysvYFsA+TE6T37pz56?= =?utf-8?q?pVB/XSfo2lwEgKPmtBKX1AmsA0x0uGMHbFA0TRilB8S9U5EdQcETizjb?= =?utf-8?q?7R3+9QtF6hbCkKb3dT/Ov4M+r9AG1uK47FRSWqVT39Nqk0TvcgYg6Brq?= =?utf-8?q?Zbd/9bUA0f1k6KP064inWwe8JUUA3C664rWaN15gH1QSryY7Z6Owcv0u?= =?utf-8?q?HtwGmAWcfNZPNhMWhAis3B6+9k/sEzPjc6Aml3IMVLReTfqCp4uy3OhY?= =?utf-8?q?mXL+SccFztVlDZzVzG3vzzxMz6t+xosDoQzkPfXbcA8cztrjzxHPSKzO?= =?utf-8?q?KCs5ap33v966eZLkFBsww6EVpZ3WYTf/IMhU/tCqefQC8iOsMNKFbXuH?= =?utf-8?q?/UTpkDFlzq0GrMD1IMc4PrjSLPtpATUQt6QtVQMhdqAk5ZGMHlHFGCR2?= =?utf-8?q?VXDZAxdz4VPuQRb0w0bVx/JasAjNDM3O84AA0z9xpXpkWs8sN3qfWu/i?= =?utf-8?q?uwHDGwpaFHJ3UrGvLtmZy1alC06y0tDzdV/Rp40noc4w2wGRH8Oqec0X?= =?utf-8?q?lV9re69fe2MFoJiywJzCBslIdCEj+C+hBm9G5wWSwERhFHIaDb+bd5P7?= =?utf-8?q?hKZQGbLY22qNgNi63JICLTi5INkj5nHOHOywypID2k+FQy34Uzl9iqHl?= =?utf-8?q?orQVR5QoHtx8R72qtal9VGPMlJu6U8njfRUHUqICS/v2PvFS2oqv+fVY?= =?utf-8?q?1C5sA1IBHxxlK0T+kaA/Ac040M5ELAOvfJtVdMUV7d69yXEDXOKY3n5e?= =?utf-8?q?V65CSq1Vn54o9B7iHzJnGPtn59wRIHl80eifgJH5ufJeR/XlxKMUWXMC?= =?utf-8?q?/8jnEuB7uatoGFQEJDT9WKIMiMyELx+fldIBsFJVPM9R4PwLirdVLknq?= =?utf-8?q?AyPibuRHTVKenRVuL7Rv4poXHwzbSCuehCLYZ3Ebg8Bk41fOKU6K/c7T?= =?utf-8?q?KHGcIzJYBDQ2PFlZhTdMZVwiiBVXr2R/gTs5k0LZHNtf42CUgeR7UD2u?= =?utf-8?q?Zy6qUzYSvBxe9r5ZBtYMzqdywp6aDGEkbtMxV4YZR0tKIOhmlIhXmuEl?= =?utf-8?q?BqLWztzyKZGtJDIB7oiMzCWxFlnO69PsEOE8d90=3D?= X-Microsoft-Antispam-Message-Info: CRxezn99iDKwYlfju0WAehwkAds/GdsgFF8P3mHoSZt9DzO6KWZo4h6g5L0StvM2qNuSBC7rNwF1yaGHaPhPK/nmBN4UcuD0Sya9/fnBfY3BYKs7oeUbXwpdHY0dPtQOl5LkbVFCfRqeweuzHbWALT77aEMgFaElxt4WlZ51VsQxKwwM5xagyaKDHf1ZJIi5 X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0170; 6:lrktO0gUa+4pFjkCv2apfSL+hsr/OVJPgNdiqzHFNdTMGGVmnwDT+6We8RmmBpCnkitxEvk5BP3B0q4vjHHwON8t73h7a6Bw2aY0fm6PER+WqU/TYxGv42KFm/khDa+I+RhPkXnxeslVAGAvTUyBQF4LrnSz3yJ+FTZogYcuIgeAojSoOFgw6i5SBagtz9eIvQw7okWLg5uio+Q3tNSQJAfQyXofMSnuAzE+x1Wn5GXf+kF8NC60lIvJcNDUK0y+31t6snoD6/ymxdTqOXQyzpYrU28LeTwl2jLJKmSbvDyLVfJgolIBkZG2kQV6FOtUktdtBUMzqJ/pZKJzNNeBE5IaNEQW/wBYbYZx0WvMcrqknlHNHdQNBUWB8P67xmSz9ZT4TsuOOMcz7UTCj8gDZk7BbhAbOARjnNDusL/97Qmcp4bw/l6XZrynzjohCpEU/uFE0ZxhCUJlvKrC/YfqeQ==; 5:ZiSg7eoYVAr1EY6bOvxn2AWsR8Jz84yi5v02jfa6MdtvM4OfbH8CH9PhvrNJtOBwhMsquUuy5saI6ZxotvMFIONZeY82jeLscCPuVyKUhTtLtvPAfTWy0WAQGkZc71TNctwXQChnYYQwwT273mvrJovE0BO6aiWllg08AFMtrO8=; 24:Yo2zAk/js0gDEB5N76dtt1/hd8Shx5EtdXyMNYYerRK0ucM9A62JtifrkxZbnOrlR8vTWDYOqc7rwwvub1ZkGgJyky9a/IHGpzBm4/Ewk+8= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0170; 7:YO7bo5Vw9sgv3BtCRyPJxa7IiX6Crhm0o2zL2txbZCkYOVN5uCouQwdXdaCYelKLRqaa1K2IUb53BSDVmbNB5OBNZWQrOwjiSDxxFZ5ejVeT66t8TiWWgG+pFhKeTkQBnXbpWlK2LVVuPLkbNoQJ08GsLekeGBfWo6j8EpsBTaO+ceMh+k1D+AjcFpTqJy/FTno0eJumHcB6ASDN6GrnROg0jGRGOcG6FPl+oXT++GAdaVAD6lAmcliry7IH4Mlu; 20:uDNcKBD6PznZzVM8Gh5WBr0wcYh0ruY7+lrWQqa4j314rOijRQ5l/jQlfD40fkyEkOgjIIeqo0xISugQFTVG9jcyoWw933MWQwDkxuqL+YczawS5KTK9TMZrPtlV2bJpIbxbwVjBsvw4WxNXDsyLIY+UJFHKjcVVj4W7dMOVFzo+tn/3M8WLcdeiWyxfwK0inF6IVR1CPE3Yvg39ars587waYVMC8s5crhSo5BfzE2FG9mlVeviyTq+SXF/Zc/rk X-MS-Office365-Filtering-Correlation-Id: 894e9a3d-8255-42d9-cc7b-08d5bf66128c X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 May 2018 21:59:05.9236 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 894e9a3d-8255-42d9-cc7b-08d5bf66128c X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR12MB0170 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Add support to get SFP module information using ethtool. Signed-off-by: Tom Lendacky --- drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c | 18 +++ drivers/net/ethernet/amd/xgbe/xgbe-mdio.c | 21 ++++ drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c | 137 ++++++++++++++++++++++++++ drivers/net/ethernet/amd/xgbe/xgbe.h | 13 ++ 4 files changed, 189 insertions(+) diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c b/drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c index ff397bb..57394b77 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c +++ b/drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c @@ -626,6 +626,22 @@ static int xgbe_get_ts_info(struct net_device *netdev, return 0; } +static int xgbe_get_module_info(struct net_device *netdev, + struct ethtool_modinfo *modinfo) +{ + struct xgbe_prv_data *pdata = netdev_priv(netdev); + + return pdata->phy_if.module_info(pdata, modinfo); +} + +static int xgbe_get_module_eeprom(struct net_device *netdev, + struct ethtool_eeprom *eeprom, u8 *data) +{ + struct xgbe_prv_data *pdata = netdev_priv(netdev); + + return pdata->phy_if.module_eeprom(pdata, eeprom, data); +} + static const struct ethtool_ops xgbe_ethtool_ops = { .get_drvinfo = xgbe_get_drvinfo, .get_msglevel = xgbe_get_msglevel, @@ -646,6 +662,8 @@ static int xgbe_get_ts_info(struct net_device *netdev, .get_ts_info = xgbe_get_ts_info, .get_link_ksettings = xgbe_get_link_ksettings, .set_link_ksettings = xgbe_set_link_ksettings, + .get_module_info = xgbe_get_module_info, + .get_module_eeprom = xgbe_get_module_eeprom, }; const struct ethtool_ops *xgbe_get_ethtool_ops(void) diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-mdio.c b/drivers/net/ethernet/amd/xgbe/xgbe-mdio.c index 1b45cd7..9c39c72 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe-mdio.c +++ b/drivers/net/ethernet/amd/xgbe/xgbe-mdio.c @@ -126,6 +126,24 @@ #include "xgbe.h" #include "xgbe-common.h" +static int xgbe_phy_module_eeprom(struct xgbe_prv_data *pdata, + struct ethtool_eeprom *eeprom, u8 *data) +{ + if (!pdata->phy_if.phy_impl.module_eeprom) + return -ENXIO; + + return pdata->phy_if.phy_impl.module_eeprom(pdata, eeprom, data); +} + +static int xgbe_phy_module_info(struct xgbe_prv_data *pdata, + struct ethtool_modinfo *modinfo) +{ + if (!pdata->phy_if.phy_impl.module_info) + return -ENXIO; + + return pdata->phy_if.phy_impl.module_info(pdata, modinfo); +} + static void xgbe_an37_clear_interrupts(struct xgbe_prv_data *pdata) { int reg; @@ -1639,4 +1657,7 @@ void xgbe_init_function_ptrs_phy(struct xgbe_phy_if *phy_if) phy_if->phy_valid_speed = xgbe_phy_valid_speed; phy_if->an_isr = xgbe_an_combined_isr; + + phy_if->module_info = xgbe_phy_module_info; + phy_if->module_eeprom = xgbe_phy_module_eeprom; } diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c b/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c index cb15caf..141bb13 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c +++ b/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c @@ -119,6 +119,7 @@ #include #include #include +#include #include "xgbe.h" #include "xgbe-common.h" @@ -270,6 +271,15 @@ struct xgbe_sfp_eeprom { u8 vendor[32]; }; +#define XGBE_SFP_DIAGS_SUPPORTED(_x) \ + ((_x)->extd[XGBE_SFP_EXTD_SFF_8472] && \ + !((_x)->extd[XGBE_SFP_EXTD_DIAG] & XGBE_SFP_EXTD_DIAG_ADDR_CHANGE)) + +#define XGBE_SFP_EEPROM_BASE_LEN 256 +#define XGBE_SFP_EEPROM_DIAG_LEN 256 +#define XGBE_SFP_EEPROM_MAX (XGBE_SFP_EEPROM_BASE_LEN + \ + XGBE_SFP_EEPROM_DIAG_LEN) + #define XGBE_BEL_FUSE_VENDOR "BEL-FUSE " #define XGBE_BEL_FUSE_PARTNO "1GBT-SFP06 " @@ -1301,6 +1311,130 @@ static void xgbe_phy_sfp_detect(struct xgbe_prv_data *pdata) xgbe_phy_put_comm_ownership(pdata); } +static int xgbe_phy_module_eeprom(struct xgbe_prv_data *pdata, + struct ethtool_eeprom *eeprom, u8 *data) +{ + struct xgbe_phy_data *phy_data = pdata->phy_data; + u8 eeprom_addr, eeprom_data[XGBE_SFP_EEPROM_MAX]; + struct xgbe_sfp_eeprom *sfp_eeprom; + unsigned int i, j, rem; + int ret; + + rem = eeprom->len; + + if (!eeprom->len) { + ret = -EINVAL; + goto done; + } + + if ((eeprom->offset + eeprom->len) > XGBE_SFP_EEPROM_MAX) { + ret = -EINVAL; + goto done; + } + + if (phy_data->port_mode != XGBE_PORT_MODE_SFP) { + ret = -ENXIO; + goto done; + } + + if (!netif_running(pdata->netdev)) { + ret = -EIO; + goto done; + } + + if (phy_data->sfp_mod_absent) { + ret = -EIO; + goto done; + } + + ret = xgbe_phy_get_comm_ownership(pdata); + if (ret) { + ret = -EIO; + goto done; + } + + ret = xgbe_phy_sfp_get_mux(pdata); + if (ret) { + netdev_err(pdata->netdev, "I2C error setting SFP MUX\n"); + ret = -EIO; + goto put_own; + } + + /* Read the SFP serial ID eeprom */ + eeprom_addr = 0; + ret = xgbe_phy_i2c_read(pdata, XGBE_SFP_SERIAL_ID_ADDRESS, + &eeprom_addr, sizeof(eeprom_addr), + eeprom_data, XGBE_SFP_EEPROM_BASE_LEN); + if (ret) { + netdev_err(pdata->netdev, + "I2C error reading SFP EEPROM\n"); + ret = -EIO; + goto put_mux; + } + + sfp_eeprom = (struct xgbe_sfp_eeprom *)eeprom_data; + + if (XGBE_SFP_DIAGS_SUPPORTED(sfp_eeprom)) { + /* Read the SFP diagnostic eeprom */ + eeprom_addr = 0; + ret = xgbe_phy_i2c_read(pdata, XGBE_SFP_DIAG_INFO_ADDRESS, + &eeprom_addr, sizeof(eeprom_addr), + eeprom_data + XGBE_SFP_EEPROM_BASE_LEN, + XGBE_SFP_EEPROM_DIAG_LEN); + if (ret) { + netdev_err(pdata->netdev, + "I2C error reading SFP DIAGS\n"); + ret = -EIO; + goto put_mux; + } + } + + for (i = 0, j = eeprom->offset; i < eeprom->len; i++, j++) { + if ((j >= XGBE_SFP_EEPROM_BASE_LEN) && + !XGBE_SFP_DIAGS_SUPPORTED(sfp_eeprom)) + break; + + data[i] = eeprom_data[j]; + rem--; + } + +put_mux: + xgbe_phy_sfp_put_mux(pdata); + +put_own: + xgbe_phy_put_comm_ownership(pdata); + +done: + eeprom->len -= rem; + + return ret; +} + +static int xgbe_phy_module_info(struct xgbe_prv_data *pdata, + struct ethtool_modinfo *modinfo) +{ + struct xgbe_phy_data *phy_data = pdata->phy_data; + + if (phy_data->port_mode != XGBE_PORT_MODE_SFP) + return -ENXIO; + + if (!netif_running(pdata->netdev)) + return -EIO; + + if (phy_data->sfp_mod_absent) + return -EIO; + + if (XGBE_SFP_DIAGS_SUPPORTED(&phy_data->sfp_eeprom)) { + modinfo->type = ETH_MODULE_SFF_8472; + modinfo->eeprom_len = ETH_MODULE_SFF_8472_LEN; + } else { + modinfo->type = ETH_MODULE_SFF_8079; + modinfo->eeprom_len = ETH_MODULE_SFF_8079_LEN; + } + + return 0; +} + static void xgbe_phy_phydev_flowctrl(struct xgbe_prv_data *pdata) { struct ethtool_link_ksettings *lks = &pdata->phy.lks; @@ -3196,4 +3330,7 @@ void xgbe_init_function_ptrs_phy_v2(struct xgbe_phy_if *phy_if) phy_impl->kr_training_pre = xgbe_phy_kr_training_pre; phy_impl->kr_training_post = xgbe_phy_kr_training_post; + + phy_impl->module_info = xgbe_phy_module_info; + phy_impl->module_eeprom = xgbe_phy_module_eeprom; } diff --git a/drivers/net/ethernet/amd/xgbe/xgbe.h b/drivers/net/ethernet/amd/xgbe/xgbe.h index 54e43ad3..f0f455b 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe.h +++ b/drivers/net/ethernet/amd/xgbe/xgbe.h @@ -835,6 +835,7 @@ struct xgbe_hw_if { * Optional routines: * an_pre, an_post * kr_training_pre, kr_training_post + * module_info, module_eeprom */ struct xgbe_phy_impl_if { /* Perform Setup/teardown actions */ @@ -883,6 +884,12 @@ struct xgbe_phy_impl_if { /* Pre/Post KR training enablement support */ void (*kr_training_pre)(struct xgbe_prv_data *); void (*kr_training_post)(struct xgbe_prv_data *); + + /* SFP module related info */ + int (*module_info)(struct xgbe_prv_data *pdata, + struct ethtool_modinfo *modinfo); + int (*module_eeprom)(struct xgbe_prv_data *pdata, + struct ethtool_eeprom *eeprom, u8 *data); }; struct xgbe_phy_if { @@ -905,6 +912,12 @@ struct xgbe_phy_if { /* For single interrupt support */ irqreturn_t (*an_isr)(struct xgbe_prv_data *); + /* For ethtool PHY support */ + int (*module_info)(struct xgbe_prv_data *pdata, + struct ethtool_modinfo *modinfo); + int (*module_eeprom)(struct xgbe_prv_data *pdata, + struct ethtool_eeprom *eeprom, u8 *data); + /* PHY implementation specific services */ struct xgbe_phy_impl_if phy_impl; }; From patchwork Mon May 21 21:59:11 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Lendacky X-Patchwork-Id: 917891 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=none (p=none dis=none) header.from=amd.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="ytiMWTN4"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40qXk81t3zz9s16 for ; Tue, 22 May 2018 07:59:28 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754154AbeEUV70 (ORCPT ); Mon, 21 May 2018 17:59:26 -0400 Received: from mail-sn1nam01on0081.outbound.protection.outlook.com ([104.47.32.81]:31424 "EHLO NAM01-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754116AbeEUV7V (ORCPT ); Mon, 21 May 2018 17:59:21 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ld+9R49/IvgULCyBKBz7sFOeUAUfXc5DysYNZ2hzjIs=; b=ytiMWTN4Vy4mjnI9cR5ihV/C0tOH/0B8rK3pbQqxYVpZ7tP0vqV+B23nRorluHANocB81wn8Rcwf6fqcVp0SIpx84MipobRsOVcMwOTlTl0lutZ7hHdajoXqCk6Vpfe0pPdn0tVhRH1aYFl4fiU5R0z77ckyBF3+Cz/6DimmUxQ= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Thomas.Lendacky@amd.com; Received: from tlendack-t1.amdoffice.net (165.204.77.1) by SN1PR12MB0174.namprd12.prod.outlook.com (2a01:111:e400:5144::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.776.16; Mon, 21 May 2018 21:59:19 +0000 From: Tom Lendacky Subject: [PATCH net-next 06/12] amd-xgbe: Add ethtool show/set ring parameter support To: netdev@vger.kernel.org Cc: David Miller Date: Mon, 21 May 2018 16:59:11 -0500 Message-ID: <20180521215911.8135.89875.stgit@tlendack-t1.amdoffice.net> In-Reply-To: <20180521215818.8135.83100.stgit@tlendack-t1.amdoffice.net> References: <20180521215818.8135.83100.stgit@tlendack-t1.amdoffice.net> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: SN4PR0201CA0019.namprd02.prod.outlook.com (2603:10b6:803:2b::29) To SN1PR12MB0174.namprd12.prod.outlook.com (2a01:111:e400:5144::21) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(2017052603328)(7153060)(7193020); SRVR:SN1PR12MB0174; X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB0174; 3:ltr7Cg7sX4fq/lAxrBizztnrGF2vx8om6dIrk/x4/vyS0xIrXvPtZZL+b9TF7ZvSBzhwpFSKjO90hTN8MgLCFH/HFs38HQDDqi7wogXwsWx58YNjtdYX03iwvJ4stMtWhi5XKUwGq+WCCaiWttcJe61qWbcAj2HS9ipm8YvA5LHFzEKh2eCAllsFykwOR1i2W2knaI+o5nMBMxXSdRgbjS23TUcp5T+JfHkoPtlnzlM/4UxrX1MWLGqeAeT4Q5at; 25:Fp6UK3wNhlHJ2gncz5FSt2FFNJjNdL0QaZm3sSsjh6OU8n9FkDga9w66Sy5CIhCyqsXyaqsU5s0eknvebCqxo21s8cFPpS+QhEMtSFYgl5/JsK5cMB/HAUpG8hNfh8OBo/j1dlLtmYMDddS/sGwSn+Mc845erw3JnwOFFq+s52pNpcQvX6S6s3Wo7Y5ZJRssj2Vyuq4bhlwfh57f9cO6Ptj9dVy1G/+ADeN0RlLgX7IvJmNEV7AluLyb7jm4DCInObxzWCmwgzqOxwptcGQxO3ul9VKKT0SSd7x1hBFkCX42c+fc1MMEprTP3ck60cKCftP/a4nvJOLrTCwEDkplHA==; 31:hoGtkjQVebekbePuMF4vf3ljefX2Qt7EuP+n2d7Fi1wotv6tF4ESRBvIUQyiZurMvDMyuFE/zjR06xlPerUl85cQV1TF/4GiK+aVTWqmih63wP5muhd5e6scuoG7C/VUKqAUZ+ZMF0FTdXwnnoTutMHXIWqaJsOttHGz0YC7WIJVBd3tMZUA1hnDY4wZOAEB56fJEV4GVLanMjSQumcxN/BTdkL6t15A0Lp9kI54Bmk= X-MS-TrafficTypeDiagnostic: SN1PR12MB0174: X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB0174; 20:nVdHmO0fdaE+lXKNlE2zP6zzsEf0/RMw8oYKDDBkldSYm04koqMI8nWyoX1PWHFPGZzFl+WHjz2okXJFV3G+YNCPEIukco4FQDDz8+3d6DU2T8C3tzc7D4lWx3SePAWdbg8/J40fDmLFDRuiIDwvjW8YvK6HFuWWZqJhDsaAS9/NV3QRPN3hAIm6D0Yu/Y5qrM0F/ulf9NK6P5h0qROwMKQ+gSjGGvoLz0CMdc6+MHZ2R/Ahaa+gEDYo5u7qnwHhP7jtBo4GWxyhW4VcbyZ3rBkbHzbv8SmKeTUzrlfg6l0VcTf0DI6Li0OAG8lJ1ANb/7dMfLzMghFZVWnj+vgLnEtgzKUUk6hH+3NkGh/0HgUFXVDiLV4WZeigSP4Oc7rjdL38Wq8ktbB0d+fJjJ6M1tMw9p3pBneRXUrOYD32bK6xJyAfWFvVuVY1T3QR98iWnQlGyZdx74N4ay9n7lCdy+26g4AXyoqwzQigMU8Ycwmd5YjIE8n16Tc+1h09Jxh2; 4:0Asf15K8HBJ6iylXivZm1gB6/OgHZ5HNYLhsO85Rbqr/H5fGj2dX/1Balt1E00dTGI89gIELvy6yr9ZAi1fnLiqGGUGxEPppUsqUiKMqVYc57a0HsyrZcT6fi9KubBRN4xtJp4vn6SnamAo4hz3ZPzHrZ7dkucuXCFYJnNvYYYewt2N+Dq4M5BPtfJJpaneXuyWVcI9UAQvD7UkdXBdkWOoGE1u/E5Kvpt5VJ7fl9/5IUzeH5OXsmEPSdu+Rph0C/TZ1hVIPw1TdIiFUzqm164COExzzgs7fEJATUrFhwzcKM7cQao/NiS8bJUyHwlfq X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3002001)(93006095)(93001095)(10201501046)(3231254)(944501410)(52105095)(6055026)(149027)(150027)(6041310)(20161123562045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123564045)(6072148)(201708071742011)(7699016); SRVR:SN1PR12MB0174; BCL:0; PCL:0; RULEID:; SRVR:SN1PR12MB0174; X-Forefront-PRVS: 06793E740F X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(376002)(39380400002)(39860400002)(366004)(346002)(199004)(189003)(26005)(72206003)(7736002)(486006)(386003)(55016002)(6916009)(69596002)(6666003)(476003)(8936002)(6506007)(186003)(16526019)(59450400001)(230700001)(47776003)(53416004)(956004)(97736004)(2906002)(11346002)(478600001)(5660300001)(106356001)(305945005)(446003)(575784001)(86362001)(50466002)(76176011)(4326008)(58126008)(53936002)(103116003)(66066001)(9686003)(316002)(2361001)(97746001)(8676002)(1076002)(81166006)(81156014)(6116002)(68736007)(3846002)(105586002)(7696005)(52116002)(2351001)(23676004)(2486003)(25786009); DIR:OUT; SFP:1101; SCL:1; SRVR:SN1PR12MB0174; H:tlendack-t1.amdoffice.net; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?q?1=3BSN1PR12MB0174=3B23=3AOiJu?= =?utf-8?q?Z+otlZsV9nB83jJjrrdJnCCVvacL6h7sNSCkl9cDK+wsLUjawDXGtQNP?= =?utf-8?q?iMHDSNntuR52Q2oknpe8ImkcszbX+5xDt9Gg0rIPRoJSrLiRTAv6IIi+?= =?utf-8?q?/m8z0yXwR9LAd3IRFyTCH0KnEzfUF/FsBpQr9JVj51fB1Msx0H4LvdFO?= =?utf-8?q?qAW1KF4OhEkTCY6jB3M/UW1l60EqecATRuc/m36DOPQnaC3lZaidkO6a?= =?utf-8?q?DNVCiYiarmaMy38wdm/NZ7WYPbg0blZZ/6lSvbroKNgOJ/WOdv51cZFb?= =?utf-8?q?BJ6CrCAeKXioT0cJ7ucnJ1kuJ7lOXSoun96twLtFScfyiBNgDVmMRlpQ?= =?utf-8?q?8jH3STSNeB7aEWGQ/4LlYSnqBgY43K9w+0hBqtQ63qaJPPqJDdGNJOWM?= =?utf-8?q?OSJtWyqPRzuy5xRrXqwfaf4A4t4rzRr/7YlekXsn+BaPEDJQnWY/HWPt?= =?utf-8?q?+KvntAkbo1OnvhCgiAt+fmCzf1zf3j+XzlcYpDVaRx/8BoRZb8zyScbw?= =?utf-8?q?DzUSgTvOklQYNLUUQxLNLy8HAsq6Y0VQVU8GaQbR1C8LSyRFYviL5O9W?= =?utf-8?q?AlO84ndAJllmgz1u8NQbnKBh53NH0Tx0UY216La3n/DucnadOMyR4DEh?= =?utf-8?q?dPNgMzxhc+sdrymKZHwMCglE4F2giK2+7LPriAulfYIbEg6hJxwQ+WUZ?= =?utf-8?q?PC9QhI7eH5VqJovk14AymLNF29mRGFrBDctiDgF7gMcwyjYaDESrm6YU?= =?utf-8?q?byi6aeznfckL/uJ06lrBXbdUXt3wMwehfZPT5zfD0iAgAhXManjj9rX7?= =?utf-8?q?luEPT/PQYlpDD0TmAsCT6kt+zSUuB9zG9SsTnoFEqzTaPPMCMfFRQhti?= =?utf-8?q?af3dMPH2xsanIkjCUNUO7hl8pshnxiKgNIXY41+2jupMeq/jksH9NBOb?= =?utf-8?q?8NweN7nyIY5jwu+1q6fD4WOkPGbyKw8a8ZG02SDsy4uqRWHf7BMmQwWa?= =?utf-8?q?UlblFAHqP7+i6CFCw80e6PyH/9NcS07aQY36XmzWueScbuFKIP0U8BvF?= =?utf-8?q?5w8Hp7Bs6Sstt8WzcDsH/nDlIpKNSbkpmsbEOWG5HgQk1pbdLRZkNuPC?= =?utf-8?q?R5tXBgf4/O2aOYcZcB5C5V9y+rr2qGh5A1bNRds2EY4b6/AAjgn/BmNY?= =?utf-8?q?vWF8TyXskX6mDogL/UwSWphKylX8YX98Mc+V0Frtva1lblLjSVtmpZzx?= =?utf-8?q?g/s4ZO8DvYgNYJPWDvcosyvv30q8Xcbvp166fsoJNiXG7MAzD6pETWdr?= =?utf-8?q?marUwwmCmpRloenhiw3J8q8IAqcG94W1MeOjbZ6FYUQb+JtFjqe9QLvo?= =?utf-8?q?vn5StBZVPtBS5FwVQWLj5mkHvPZTsnTQJvEntMa1yVMi3IwjjKD2ICVe?= =?utf-8?q?NsDLTUeg6Ssv8UDr7JwTpn/tUPp5TMmmDN33fks=3D?= X-Microsoft-Antispam-Message-Info: hSW7bvKJ/ZChPVgPlXPKVLZmpj9dTZs0980tkuO8ItPFWuibQG6XDtaoyGhPF7Y21140waVGHS2zYJXvA4yTlXVFQgq5Lo5xEXcp0YQpkByrMa+7WvRcRlNP2P02vOEGh2mVGBwHsM4M+iitGCM7+E0oSYFlZtUNkdkVEP4HCysP2fPOjrlsEyq4nv/yT93C X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB0174; 6:I9jieaKTK/eQKCIMn1mt+Sq/bejJ9Ikn6JAoy7oWHff909Bi2BANlLKCDKZUa3CbUEtFiUgbjQzJmXgjKHjrye9/bb04lvP/pbTWVk4dxTqZfe1jqDpT0/uwAUM5kS5hfBV7OvZsYT/wML5fZsI3L49Zg31PMX+Z7yUXTYpkznKHaA2R4pn2MliK/69FnCXQskVqfPSqCvbJNdtmuse45qJYiCM5Wuv4Z0rEE8XTLC/wPXZo5oIX4PqaJ4Yucr8rdplSNFbmuxmd7/E5yLb3nbMKlGYcXOty9CQi9fjMD/xuidvGShcEwxcveafwaUKVCVhJ0S0U8DsELl57CxFuBWJ8Fk6zIPDMJcPEn5qsSHt30g3xCf7CIEwGxKEwTNq63gqq26dyAJcPyGFHubCNAFCUXLY0sAGwpBeWb28rlXmgjfPTGYgdzXwY/jvzrTaj3j+mfohZ4L7R3ejQsu1UAw==; 5:4gWyXIagBoHCo11MvYbzxiv6eI9gnLgtZ1L6d5Qeh+SATt1+c1+Y8RSPCd2xGtYsx6xqQqK50bXmiFVG0a9WKSg9ne+pk+dIGs/AZSpi3TOTOF17uAKJNEqnUYBM3QdUGRtARagZqho0v+5UpPZzG6x3bX6JftYmKPeNeI6EFd0=; 24:nBho05kd2cSt2OfG1Xyxn3QHd7WLubmT71MuKfkDjcfFlVaz1c0pzDosooyCDbWje5hrnaee8k61zrvm5QMBdlgvH+uH5Vn6s4oRZ2BU+iE= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB0174; 7:o4O3G+O7Ix3Eo7Dr8JRtG0HIsFh6uI/6G9If/+FpGFkFLe1yAKz46pJRykJInzknZtTAT04VRmeR0gg3v+JVr1NJ8JASeTTkNsodQ/8345HlJX6mfglRjBHvnJog/8DlveFD14j2jZ6HSY2asN4Z6DSd873fv2Xb0ITpJO1ku/mH2e11kj6nnF53sdyCunei3ryxZ+RCaF/S5AGwhO7mmHkSKod92f1EghcLc4855qE3N7fpPeWt6R02dj1kgC4H; 20:vi/REityv5GXU3Swcpyo1kiyf4Whp1orCvI1HnfSSXmkBMlFuVH/pjIwPCjsCIDtqUSuynEeRCp9YjiQ9Fip38FjXSnAUR17eFbeS+fSjTlP3/YITPOihg+9MwM1jDdp3JBNUFFsOLRmmAsX13hD8pZt0WkR6Q5zvtshdeLAji+vxOpcCqZ1GpBkPfpfpKbRfws3HLTY4BkRkQC9QC4I0soK/QXYAy8OoLpvzAmtg9/DruPeOpdIhhxrj6DEnr7l X-MS-Office365-Filtering-Correlation-Id: 1eea7bc2-d00b-4261-1d37-08d5bf661a70 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 May 2018 21:59:19.2667 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1eea7bc2-d00b-4261-1d37-08d5bf661a70 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR12MB0174 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Add ethtool support to show and set the number of the Rx and Tx ring descriptors. Changing the ring configuration will result in a device restart. Signed-off-by: Tom Lendacky --- drivers/net/ethernet/amd/xgbe/xgbe-drv.c | 6 -- drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c | 65 ++++++++++++++++++++++++++ drivers/net/ethernet/amd/xgbe/xgbe.h | 6 ++ 3 files changed, 72 insertions(+), 5 deletions(-) diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-drv.c b/drivers/net/ethernet/amd/xgbe/xgbe-drv.c index 7c204f0..2646c08 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe-drv.c +++ b/drivers/net/ethernet/amd/xgbe/xgbe-drv.c @@ -1426,10 +1426,8 @@ static void xgbe_stopdev(struct work_struct *work) netdev_alert(pdata->netdev, "device stopped\n"); } -static void xgbe_restart_dev(struct xgbe_prv_data *pdata) +void xgbe_restart_dev(struct xgbe_prv_data *pdata) { - DBGPR("-->xgbe_restart_dev\n"); - /* If not running, "restart" will happen on open */ if (!netif_running(pdata->netdev)) return; @@ -1440,8 +1438,6 @@ static void xgbe_restart_dev(struct xgbe_prv_data *pdata) xgbe_free_rx_data(pdata); xgbe_start(pdata); - - DBGPR("<--xgbe_restart_dev\n"); } static void xgbe_restart(struct work_struct *work) diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c b/drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c index 57394b77..d12f982 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c +++ b/drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c @@ -642,6 +642,69 @@ static int xgbe_get_module_eeprom(struct net_device *netdev, return pdata->phy_if.module_eeprom(pdata, eeprom, data); } +static void xgbe_get_ringparam(struct net_device *netdev, + struct ethtool_ringparam *ringparam) +{ + struct xgbe_prv_data *pdata = netdev_priv(netdev); + + ringparam->rx_max_pending = XGBE_RX_DESC_CNT_MAX; + ringparam->tx_max_pending = XGBE_TX_DESC_CNT_MAX; + ringparam->rx_pending = pdata->rx_desc_count; + ringparam->tx_pending = pdata->tx_desc_count; +} + +static int xgbe_set_ringparam(struct net_device *netdev, + struct ethtool_ringparam *ringparam) +{ + struct xgbe_prv_data *pdata = netdev_priv(netdev); + unsigned int rx, tx; + + if (ringparam->rx_mini_pending || ringparam->rx_jumbo_pending) { + netdev_err(netdev, "unsupported ring parameter\n"); + return -EINVAL; + } + + if ((ringparam->rx_pending < XGBE_RX_DESC_CNT_MIN) || + (ringparam->rx_pending > XGBE_RX_DESC_CNT_MAX)) { + netdev_err(netdev, + "rx ring parameter must be between %u and %u\n", + XGBE_RX_DESC_CNT_MIN, XGBE_RX_DESC_CNT_MAX); + return -EINVAL; + } + + if ((ringparam->tx_pending < XGBE_TX_DESC_CNT_MIN) || + (ringparam->tx_pending > XGBE_TX_DESC_CNT_MAX)) { + netdev_err(netdev, + "tx ring parameter must be between %u and %u\n", + XGBE_TX_DESC_CNT_MIN, XGBE_TX_DESC_CNT_MAX); + return -EINVAL; + } + + rx = __rounddown_pow_of_two(ringparam->rx_pending); + if (rx != ringparam->rx_pending) + netdev_notice(netdev, + "rx ring parameter rounded to power of two: %u\n", + rx); + + tx = __rounddown_pow_of_two(ringparam->tx_pending); + if (tx != ringparam->tx_pending) + netdev_notice(netdev, + "tx ring parameter rounded to power of two: %u\n", + tx); + + if ((rx == pdata->rx_desc_count) && + (tx == pdata->tx_desc_count)) + goto out; + + pdata->rx_desc_count = rx; + pdata->tx_desc_count = tx; + + xgbe_restart_dev(pdata); + +out: + return 0; +} + static const struct ethtool_ops xgbe_ethtool_ops = { .get_drvinfo = xgbe_get_drvinfo, .get_msglevel = xgbe_get_msglevel, @@ -664,6 +727,8 @@ static int xgbe_get_module_eeprom(struct net_device *netdev, .set_link_ksettings = xgbe_set_link_ksettings, .get_module_info = xgbe_get_module_info, .get_module_eeprom = xgbe_get_module_eeprom, + .get_ringparam = xgbe_get_ringparam, + .set_ringparam = xgbe_set_ringparam, }; const struct ethtool_ops *xgbe_get_ethtool_ops(void) diff --git a/drivers/net/ethernet/amd/xgbe/xgbe.h b/drivers/net/ethernet/amd/xgbe/xgbe.h index f0f455b..7dc0fac 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe.h +++ b/drivers/net/ethernet/amd/xgbe/xgbe.h @@ -144,6 +144,11 @@ #define XGBE_TX_DESC_MAX_PROC (XGBE_TX_DESC_CNT >> 1) #define XGBE_RX_DESC_CNT 512 +#define XGBE_TX_DESC_CNT_MIN 64 +#define XGBE_TX_DESC_CNT_MAX 4096 +#define XGBE_RX_DESC_CNT_MIN 64 +#define XGBE_RX_DESC_CNT_MAX 4096 + #define XGBE_TX_MAX_BUF_SIZE (0x3fff & ~(64 - 1)) /* Descriptors required for maximum contiguous TSO/GSO packet */ @@ -1330,6 +1335,7 @@ void xgbe_dump_rx_desc(struct xgbe_prv_data *, struct xgbe_ring *, int xgbe_powerdown(struct net_device *, unsigned int); void xgbe_init_rx_coalesce(struct xgbe_prv_data *); void xgbe_init_tx_coalesce(struct xgbe_prv_data *); +void xgbe_restart_dev(struct xgbe_prv_data *pdata); #ifdef CONFIG_DEBUG_FS void xgbe_debugfs_init(struct xgbe_prv_data *); From patchwork Mon May 21 21:59:24 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Lendacky X-Patchwork-Id: 917892 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=none (p=none dis=none) header.from=amd.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="h8pKueFc"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40qXkR1typz9s16 for ; Tue, 22 May 2018 07:59:43 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754132AbeEUV7k (ORCPT ); Mon, 21 May 2018 17:59:40 -0400 Received: from mail-cys01nam02on0088.outbound.protection.outlook.com ([104.47.37.88]:37856 "EHLO NAM02-CY1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753951AbeEUV7e (ORCPT ); Mon, 21 May 2018 17:59:34 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=laS1+DGAytDOr21nBk9zqBt2DNO/zGWdDb5KITMkswo=; b=h8pKueFcYS+89O9fJENqtOFaPUKYC6WpctplO8Q0BPzkWrCd/r4kdZMyUVBPAMLjQio9b+wMe0erzxlZOgMu49JYfXnScnLHAq2UFl4NQmTeqibg7FPWwhFgfFtOEKmD39nxXryfvSDa14nHohGy4iRLj/XNkuPS/a6nsCCw1Xg= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Thomas.Lendacky@amd.com; Received: from tlendack-t1.amdoffice.net (165.204.77.1) by CY1PR12MB0167.namprd12.prod.outlook.com (2a01:111:e400:50f6::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.776.11; Mon, 21 May 2018 21:59:31 +0000 From: Tom Lendacky Subject: [PATCH net-next 07/12] amd-xgbe: Prepare for ethtool set-channel support To: netdev@vger.kernel.org Cc: David Miller Date: Mon, 21 May 2018 16:59:24 -0500 Message-ID: <20180521215924.8135.12033.stgit@tlendack-t1.amdoffice.net> In-Reply-To: <20180521215818.8135.83100.stgit@tlendack-t1.amdoffice.net> References: <20180521215818.8135.83100.stgit@tlendack-t1.amdoffice.net> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: SN4PR0401CA0046.namprd04.prod.outlook.com (2603:10b6:803:2a::32) To CY1PR12MB0167.namprd12.prod.outlook.com (2a01:111:e400:50f6::25) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(2017052603328)(7153060)(7193020); SRVR:CY1PR12MB0167; X-Microsoft-Exchange-Diagnostics: 1; CY1PR12MB0167; 3:GDF/aIImzfGcdl6XTjYZqDBhZYy9HJQkStDRpwaqdkkB5mYItrtf1sx3l/FPHaxrbLKU3GsZ8N/o/YA+YtHQ2IaDieLOsh245TB+7x2ucVEqDxGyb49jR+38dCI7OVFB4f2GWfbx1gZpjR8d9a8Ee2Z7ZLFBGnh53bqBlX3p0fWXWJjMTUgyGZtNvDOL0h/Dv6RTT/glOYB2Q2PdplWoRyn96tLw8pXW4LVQlU5CQlmMGNHOQ02CaWrS61+MaWvt; 25:NqhNeC5+9BGMeGGY6dFVKOyzmEBiKRCuFwv++099egtwIPh3w+eJVtg956vOE5TWO+tkebAQF89lbsrPc0SkTGatfdp0NCU3bhCg9Aj1XSzTyZbSQ4rNh4MkKTWdBfczLax1rZo/VVLrB1A4Pbyv4C+aDRe+I51MdmUiKNDl79nwUKgb88o4xQUPWWOZ40/fyosjbJTQ96nc9akb/X9cscfqU3gbbKISAUUPOKuJCU3HUicBbCVpgLl4z0hs8buBflCYJBYCghb+8BlA77XPR3ZXjJAd2XhifaPYRgViE8KYxB0nVh/Suf3GZn+T55A6lJ6CuOkUc7HV0a0nleObYA==; 31:zVCzOJvkTpChE6EggwldxPkzKLeIMGQ1YnmcMGjjpHcJLECs+rGjaPvwxLwW5XLd3BlIRbjR4NAD5Cow4jprvUkeNmoVjsAY7TkPFPlLezBXvYUEhOpwoygz3i9B+agYbVTDqy+LLPuAy8lArsO96k1rIgn8QDdjoVwjL9GMWedcQi9oEyOAIoaKL+y8BOh54e8pr35bQy+mVJUd4p258w3ofEYooXi7+8DGxZiaKbE= X-MS-TrafficTypeDiagnostic: CY1PR12MB0167: X-Microsoft-Exchange-Diagnostics: 1; CY1PR12MB0167; 20:gVLk1Hucbm8/HBOJubViFmfIVPZAfTK5I9+UH9MItkc/JeUmqsrKWt6Bf17ifGbwqD4kOyFE7mUIGOBr2KKB1aRZsqPG6tcTrtH794Y0U5pWDTkmIjGE57W/nLnTB7JrHFFbHKhg7vk0IedZOvZG4lx8ctuH3F+2XpIeV28yNt/dCuYBlm2SkzXQGFHFXiYl5v1jLRe7JSH56mbSRTNGlhljaMB4+go4INGdpDcRKlEvPp+oxL15iR/Ys7jmQI5A6bPmtyMDkhxWFhFuRTDArvfJqYVID7mw3ffFk9yYuGxhizKEmf5bSRYHT6j0BEUOLQ0Ot3UfnuDuK816zeNSthpknC57VLVJ78XbbCFSH1IH1O9YHBrMghLY98liZ+6mN5bwa9v7yFN3InNXmmj1sDT55995XNQMDSG7FrbCjPazhUyQQsCgMcWWRpw7fGIsaIgEBb3irkHuXT82p++DsxQxm6w+BXguSR/r6EsmnqyakWVKaYSCdCMs4uUv8Gji; 4:C+cN//yAP1Usiq8qRbw+JKE9YrQTpLnFp6CM90CdJU8FSra7jmlTAWf/cuuOYKayjfYlYW+jyS/gwfwOca2/VFKnwndCIMoIzRv1E1Ry18jBOYo4vuAQko8FHMfuf5ExqOwOW3MQcbO/2RFteOiEPKyRWtiBLrQhBKIqaw5sOaJLsarQYmTFyhGcGUWy8KlA6JpW6fRTS/cPkItAzvZjNzeAsYuU17GbILJ3SvQfub/V5WapGaoTbOYOxmOQtHPCNrLfVYfmHIkCtePN9Ze0iwzjnbG33zXUhoSggVq4HMN0uEBUmc6oQ7X8GZv17YvI X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3231254)(944501410)(52105095)(93006095)(93001095)(3002001)(10201501046)(6055026)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123560045)(20161123564045)(20161123558120)(6072148)(201708071742011)(7699016); SRVR:CY1PR12MB0167; BCL:0; PCL:0; RULEID:; SRVR:CY1PR12MB0167; X-Forefront-PRVS: 06793E740F X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(376002)(396003)(366004)(39860400002)(346002)(39380400002)(199004)(189003)(446003)(53416004)(186003)(58126008)(6506007)(72206003)(386003)(16526019)(478600001)(97736004)(2906002)(68736007)(26005)(316002)(59450400001)(103116003)(25786009)(105586002)(76176011)(52116002)(7696005)(11346002)(956004)(476003)(6666003)(6916009)(23676004)(50466002)(106356001)(2486003)(486006)(7736002)(5660300001)(305945005)(3846002)(9686003)(6116002)(53936002)(66066001)(8936002)(2351001)(47776003)(2361001)(86362001)(1076002)(97746001)(81156014)(69596002)(8676002)(81166006)(4326008)(230700001)(55016002); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR12MB0167; H:tlendack-t1.amdoffice.net; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?q?1=3BCY1PR12MB0167=3B23=3Akb13?= =?utf-8?q?tw+JU14s6EgwLZxV+lf3/mL2/5qGY0D6zhoKYD1Ds6pTtOfqYppcPr/9?= =?utf-8?q?+jlL4sN3QM564Hm8Ius/DlbhD5du+K8fnsqcoirsHFJeykekfgvv1bPn?= =?utf-8?q?EPnyOWbhMy0s+uQDyh6DDvAnp1NYeNfXfsHKhx4CHSiCou4LNTysBB2y?= =?utf-8?q?cHwjUw9UA1UMJkRNVnBtibAMZ9d1lmA5ODCeroQdoAANv6BV5OTPXSqm?= =?utf-8?q?o3PMaBIF9qZobSa/ek/vhdlVSpgLUjP+VNl4GTLdXK00rn9FXNnkj7QG?= =?utf-8?q?Mm48Ic889I230c1tW1cjkjnkzre24UqaKz681uV49snAnfcob05CZKBE?= =?utf-8?q?fiFeJehZt2xVvZYE3qIYMs5SpFcGa2UEqT66YTlx8tlwwbCcap4oF9Zs?= =?utf-8?q?s6t22wg5LtAH5CftDQuO1EL/4NNYQBJYisArghP7E8CehXFuRmTkQfSO?= =?utf-8?q?WSPJTcErLWl2OCKPb1xh9CcLkL+meFvSPkEIXDDt3gkhM4QFPqwEB9kR?= =?utf-8?q?T9C/eLJ30r8p9ivGAIverTysXgvm8FmjRuHL8ShCHTRhdhFqag3Engbm?= =?utf-8?q?NG/lOLe4mL5C1dMX8yFDTUljAoGZb6Eq2azVjLFc41iVj6V/VACwkvXb?= =?utf-8?q?hRLdojeUOmOw55UXI8cjz+Fndg1CmOSQZFNry6ihT3TzVILA/ecLeJR9?= =?utf-8?q?TmpLsE+oHOAJpzsu3yQPsjY4ZvH9eziumNN1Tnp62moL21m2CPtFZ13/?= =?utf-8?q?qk+ez3oHsFGBeq0/IeXmE7HW2Wlng0Jdq9rj2dRdbAzDWfJbdgL3SDx6?= =?utf-8?q?Vlbd5qf3uULwAuM/p/Uat974a50JHVuMQIKJ86yLjX1LKiidYHJHv0ey?= =?utf-8?q?4ZVvl2sdZ8afT3ELch3XsXzVclV+3cr7EKYT3ufz9JwbG22dz1BUhVJY?= =?utf-8?q?oBRCkFCUobzKTn5StiPBtgqsDNYqo94144cEeqRcr35syyeX9MiYABv1?= =?utf-8?q?NGYE7iYnZOiM8VZK+S3bezeqkUm9/ssDQuEHqi1Qdj/YrYRy0H/J6/C1?= =?utf-8?q?aAg4O4YG2h8p6L5pjuiZex/vn8+5aWUTi63oJc9l+ZeBuLyjImKSn2Ob?= =?utf-8?q?IiRDpY0sNWm20aZkMULGZfKYTncdWyvdQpSU+MLpT4IczgdHao59J7vZ?= =?utf-8?q?18W/SX4wgLLFNw0j02mYkxbeeyZ9d2HPp1y7SnebMU8OYFHV9p2sIfvI?= =?utf-8?q?3YbhflCwtKZXgj2vYH/5qhbOOcf4CXnG5kT2KyUWXawYFB1pnG1Pp8Gb?= =?utf-8?q?hU1kg/PhkoiWVdolqxCPeVk5mHJKICfbouxAQ5b3Jo3hVKDCEH2LL9+T?= =?utf-8?q?c84MlCjjGrrtv2uonNVEhD1Azc/C1ODqoPsC9oOjToWoX1mGR156WASY?= =?utf-8?q?ZJzPjQEez/TDij1y8Q=3D=3D?= X-Microsoft-Antispam-Message-Info: y0dO44+Z854cHIaHPX6WZo1Zx0JZbZ+DfdJVoObJ+3wXsxyFwJDyrOjWu3v9Zt0rhiQmrHgJyI0si2OwOqoAiAUoix916txwna+LSvRsotmWWneUA3KubkSyzHj6BKG/oLlPHHtZfR5kLHDCQkHisfLtSQtyv4VEU0WV3whGASe02t81mpNURV0xwsfR0kYF X-Microsoft-Exchange-Diagnostics: 1; CY1PR12MB0167; 6:HuhbEumfnHoHt/+9yhmbelzheI6HT/DK688c7VkOZndTWspCNx5vO40mkXwYh17USxTp+5u+lPxPEL2GdxcnzfcM6Ep6ved4M70dHKcA9Yi60uk2BYZ2FwfiiqctNsHasVp1/gvBCSabSeWj5/Avr8SWmjlfUOtBsIMvZOJtxoolVSdXQhR6zqAJBYUEQU7cxQuTKfUmcZvnvNY20uACOsIdtwxuTP4C1JbhLFogKBSxEKzJyiouIT+vRgk4z+BMP1Aj1qaRV+Y63LSx8Hgub3pVgQ5Yj5wDni2j/MKDPpcCDdf6je4UFyuY/+8isnFn2eIy/6hHOQxJPelUZ/i7RpL5j3YSnxzmm8/CZFu+MiSyAWSgNShItJRc3oV8nHZQw2MQMXfcDLVOj3UucxrPOTgi7jigiUvkHqRvks4CY7aFTT/CuKHzs9/8H1lheUFFgxGC71toBmWI403H5KOfZQ==; 5:hw2OISa6jr8TmDNUwA0NEH3oIBvc5ROJ7jBcfch+iUmYhkCED6jXsDysFv/TQ/CqhcuIGjQFCLWFuzu3PJqpKxxZvR5T7HHQqUlw+gkcAkA+igMcHWoE92GCypFvNCD/Ecx+Y8lmx9MH5LBMI4qdvF5itCZFEGL6ca9IrIB0f4M=; 24:8QyYi+3FhaQeftd2jCfKi+lbFhA5jY47kKSbS8S4bAqXFbPYHztjU4WEGKz9Wl73Re4CxKcYnxrceZw1QsmwGR/4l+c3IclYNkU310wl+QU= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY1PR12MB0167; 7:rrw1AaW8YFrhxieM0GfiWuN2o+MhHTzT1AiO14SF66J4Noue0joL88R/joAxpiiat1M6gjEd5GQ1pV1jnQZhC/sOG/Y1kyyeqrWhur4VFkWjiXkU/J5ujfFaIC6CTW8NaisCZFIB0RWAbDR74O3Wrxm5PtLS9rouyT5FQsyva8TUT7daRObD78noN3Tm/CSsDDBWwlU930mhJd+LX+Jk4TFf+1zYcLoNarKGB5HjZHLz2f6c4/GeUaub5xV6fkXV; 20:ZSjQkJtpzwwce3EKovoRsbY7IgT2lS1GjsOcgxGzQFbaUAsZ/OdqTnaoN5ZkgIG5IwsfgvBjRl5UeaJRCt/8tOWVqLQ/V4m3ws//dhkSjkLMpMJZy4I0Vg5d2ziko8ajQKLwP0ZjhB8aiPQWt3Qrzpz2HbOwwE72SEtONwwLHdCHUJiUabTG2qdkja5x99ltQP/ZQNXYd1XwR34yAPw+2cPcwmA5CG4Fxr5MCWifRMnhejXkgpGVq8kGU231Eitl X-MS-Office365-Filtering-Correlation-Id: 7ca0c33b-dfc0-4de9-d8be-08d5bf662204 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 May 2018 21:59:31.8605 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7ca0c33b-dfc0-4de9-d8be-08d5bf662204 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR12MB0167 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org In order to support being able to dynamically set/change the number of Rx and Tx channels, update the code to: - Move alloc and free of device memory into callable functions - Move setting of the real number of Rx and Tx channels to device startup - Move mapping of the RSS channels to device startup Signed-off-by: Tom Lendacky --- drivers/net/ethernet/amd/xgbe/xgbe-drv.c | 108 ++++++++++++++++++----------- drivers/net/ethernet/amd/xgbe/xgbe-main.c | 20 ----- 2 files changed, 68 insertions(+), 60 deletions(-) diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-drv.c b/drivers/net/ethernet/amd/xgbe/xgbe-drv.c index 2646c08..397e3a0 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe-drv.c +++ b/drivers/net/ethernet/amd/xgbe/xgbe-drv.c @@ -1312,14 +1312,72 @@ int xgbe_powerup(struct net_device *netdev, unsigned int caller) return 0; } +static void xgbe_free_memory(struct xgbe_prv_data *pdata) +{ + struct xgbe_desc_if *desc_if = &pdata->desc_if; + + /* Free the ring descriptors and buffers */ + desc_if->free_ring_resources(pdata); + + /* Free the channel and ring structures */ + xgbe_free_channels(pdata); +} + +static int xgbe_alloc_memory(struct xgbe_prv_data *pdata) +{ + struct xgbe_desc_if *desc_if = &pdata->desc_if; + struct net_device *netdev = pdata->netdev; + int ret; + + /* Calculate the Rx buffer size before allocating rings */ + pdata->rx_buf_size = xgbe_calc_rx_buf_size(netdev, netdev->mtu); + + /* Allocate the channel and ring structures */ + ret = xgbe_alloc_channels(pdata); + if (ret) + return ret; + + /* Allocate the ring descriptors and buffers */ + ret = desc_if->alloc_ring_resources(pdata); + if (ret) + goto err_channels; + + /* Initialize the service and Tx timers */ + xgbe_init_timers(pdata); + + return 0; + +err_channels: + xgbe_free_memory(pdata); + + return ret; +} + static int xgbe_start(struct xgbe_prv_data *pdata) { struct xgbe_hw_if *hw_if = &pdata->hw_if; struct xgbe_phy_if *phy_if = &pdata->phy_if; struct net_device *netdev = pdata->netdev; + unsigned int i; int ret; - DBGPR("-->xgbe_start\n"); + /* Set the number of queues */ + ret = netif_set_real_num_tx_queues(netdev, pdata->tx_ring_count); + if (ret) { + netdev_err(netdev, "error setting real tx queue count\n"); + return ret; + } + + ret = netif_set_real_num_rx_queues(netdev, pdata->rx_ring_count); + if (ret) { + netdev_err(netdev, "error setting real rx queue count\n"); + return ret; + } + + /* Set RSS lookup table data for programming */ + for (i = 0; i < XGBE_RSS_MAX_TABLE_SIZE; i++) + XGMAC_SET_BITS(pdata->rss_table[i], MAC_RSSDR, DMCH, + i % pdata->rx_ring_count); ret = hw_if->init(pdata); if (ret) @@ -1347,8 +1405,6 @@ static int xgbe_start(struct xgbe_prv_data *pdata) clear_bit(XGBE_STOPPED, &pdata->dev_state); - DBGPR("<--xgbe_start\n"); - return 0; err_irqs: @@ -1823,11 +1879,8 @@ static void xgbe_packet_info(struct xgbe_prv_data *pdata, static int xgbe_open(struct net_device *netdev) { struct xgbe_prv_data *pdata = netdev_priv(netdev); - struct xgbe_desc_if *desc_if = &pdata->desc_if; int ret; - DBGPR("-->xgbe_open\n"); - /* Create the various names based on netdev name */ snprintf(pdata->an_name, sizeof(pdata->an_name) - 1, "%s-pcs", netdev_name(netdev)); @@ -1872,43 +1925,25 @@ static int xgbe_open(struct net_device *netdev) goto err_sysclk; } - /* Calculate the Rx buffer size before allocating rings */ - ret = xgbe_calc_rx_buf_size(netdev, netdev->mtu); - if (ret < 0) - goto err_ptpclk; - pdata->rx_buf_size = ret; - - /* Allocate the channel and ring structures */ - ret = xgbe_alloc_channels(pdata); - if (ret) - goto err_ptpclk; - - /* Allocate the ring descriptors and buffers */ - ret = desc_if->alloc_ring_resources(pdata); - if (ret) - goto err_channels; - INIT_WORK(&pdata->service_work, xgbe_service); INIT_WORK(&pdata->restart_work, xgbe_restart); INIT_WORK(&pdata->stopdev_work, xgbe_stopdev); INIT_WORK(&pdata->tx_tstamp_work, xgbe_tx_tstamp); - xgbe_init_timers(pdata); + + ret = xgbe_alloc_memory(pdata); + if (ret) + goto err_ptpclk; ret = xgbe_start(pdata); if (ret) - goto err_rings; + goto err_mem; clear_bit(XGBE_DOWN, &pdata->dev_state); - DBGPR("<--xgbe_open\n"); - return 0; -err_rings: - desc_if->free_ring_resources(pdata); - -err_channels: - xgbe_free_channels(pdata); +err_mem: + xgbe_free_memory(pdata); err_ptpclk: clk_disable_unprepare(pdata->ptpclk); @@ -1928,18 +1963,11 @@ static int xgbe_open(struct net_device *netdev) static int xgbe_close(struct net_device *netdev) { struct xgbe_prv_data *pdata = netdev_priv(netdev); - struct xgbe_desc_if *desc_if = &pdata->desc_if; - - DBGPR("-->xgbe_close\n"); /* Stop the device */ xgbe_stop(pdata); - /* Free the ring descriptors and buffers */ - desc_if->free_ring_resources(pdata); - - /* Free the channel and ring structures */ - xgbe_free_channels(pdata); + xgbe_free_memory(pdata); /* Disable the clocks */ clk_disable_unprepare(pdata->ptpclk); @@ -1953,8 +1981,6 @@ static int xgbe_close(struct net_device *netdev) set_bit(XGBE_DOWN, &pdata->dev_state); - DBGPR("<--xgbe_close\n"); - return 0; } diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-main.c b/drivers/net/ethernet/amd/xgbe/xgbe-main.c index 441d0973..b41f236 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe-main.c +++ b/drivers/net/ethernet/amd/xgbe/xgbe-main.c @@ -265,7 +265,6 @@ int xgbe_config_netdev(struct xgbe_prv_data *pdata) { struct net_device *netdev = pdata->netdev; struct device *dev = pdata->dev; - unsigned int i; int ret; netdev->irq = pdata->dev_irq; @@ -324,26 +323,9 @@ int xgbe_config_netdev(struct xgbe_prv_data *pdata) pdata->tx_ring_count, pdata->rx_ring_count); } - /* Set the number of queues */ - ret = netif_set_real_num_tx_queues(netdev, pdata->tx_ring_count); - if (ret) { - dev_err(dev, "error setting real tx queue count\n"); - return ret; - } - - ret = netif_set_real_num_rx_queues(netdev, pdata->rx_ring_count); - if (ret) { - dev_err(dev, "error setting real rx queue count\n"); - return ret; - } - - /* Initialize RSS hash key and lookup table */ + /* Initialize RSS hash key */ netdev_rss_key_fill(pdata->rss_key, sizeof(pdata->rss_key)); - for (i = 0; i < XGBE_RSS_MAX_TABLE_SIZE; i++) - XGMAC_SET_BITS(pdata->rss_table[i], MAC_RSSDR, DMCH, - i % pdata->rx_ring_count); - XGMAC_SET_BITS(pdata->rss_options, MAC_RSSCR, IP2TE, 1); XGMAC_SET_BITS(pdata->rss_options, MAC_RSSCR, TCP4TE, 1); XGMAC_SET_BITS(pdata->rss_options, MAC_RSSCR, UDP4TE, 1); From patchwork Mon May 21 21:59:37 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Lendacky X-Patchwork-Id: 917896 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=none (p=none dis=none) header.from=amd.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="5JdvbJyc"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40qXm10vdxz9s16 for ; Tue, 22 May 2018 08:01:05 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754169AbeEUV7x (ORCPT ); Mon, 21 May 2018 17:59:53 -0400 Received: from mail-cys01nam02on0044.outbound.protection.outlook.com ([104.47.37.44]:9492 "EHLO NAM02-CY1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753951AbeEUV7r (ORCPT ); Mon, 21 May 2018 17:59:47 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IPcOojSlJyx2BzlMUVnZQ/OZ41krP5SdbwTAMKmNGoA=; b=5JdvbJycbpaAXWW5It7RpF3o2bAgTHA/KAhF0pPh0kdlhfiZuz6pTW7WX0KYXE3Ig8/Dbrh3cOElf909qGudHSXqKugdtgKmbYmfexsC36+450mITNIHEW/2MvI9/t0EwgIyBT5FGboJR7OryOf19Agw8bVh40PKieXRe2KORko= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Thomas.Lendacky@amd.com; Received: from tlendack-t1.amdoffice.net (165.204.77.1) by CY1PR12MB0165.namprd12.prod.outlook.com (2a01:111:e400:50f6::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.776.11; Mon, 21 May 2018 21:59:41 +0000 From: Tom Lendacky Subject: [PATCH net-next 08/12] amd-xgbe: Add ethtool show/set channels support To: netdev@vger.kernel.org Cc: David Miller Date: Mon, 21 May 2018 16:59:37 -0500 Message-ID: <20180521215937.8135.63942.stgit@tlendack-t1.amdoffice.net> In-Reply-To: <20180521215818.8135.83100.stgit@tlendack-t1.amdoffice.net> References: <20180521215818.8135.83100.stgit@tlendack-t1.amdoffice.net> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: SN4PR0201CA0010.namprd02.prod.outlook.com (2603:10b6:803:2b::20) To CY1PR12MB0165.namprd12.prod.outlook.com (2a01:111:e400:50f6::23) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(48565401081)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:CY1PR12MB0165; X-Microsoft-Exchange-Diagnostics: 1; CY1PR12MB0165; 3:qr1kC0XhpoZfsCztlYkew3o4yWPZDXrJWFEm/cNwu3TZQZZIweINPZvZjvBr8waKoYp0M3izeaqzffg+DzjwBv4SGOXDO5lHmBscPw2wpLiFHoH05W8r/TUjB9+R7QeAkoqOGEw/fAhxIny/fqNJ1WUaUlbu6XQViQESRC57YAbe70JbqM5VcHcEf+ZFdI82F2nXRH9sR1Xmu9l7ArCPOIoFiZ5iR3wLbt49EQfQrvTRiR0P0AsH42+HceAlzsn7; 25:bl9IGRgcbHrT6Kizi3CrF/6/GMtx4h1c+oc5ZaYDGokuYqpNfX/WJ8s0swWB2XNPvP78q4y8rHKSxGpAmo3BNQRzaQb+Sz3WtDybD+AHFXlo114btHKn3wghyhoZ/951ZK7I5AknR9JqAZ6O2sBjENSSxNU59SXg2ef4cVHh5dJX5S2Ul9VjPew3oHort6KhJ7ACF1J/gATTNSb9N5Den/aEM13hlUO7HuFJ+hK5OmA4GCLl+j7JAQuZIIdtlfS+RIQHy8UTbAh68DbIz8V/z4kycErwfyL+e8r81sk8vait9OrHMxYUg1vIXCg/lLkIbzMIxsoBsYjcUQGGuynqyQ==; 31:wRdy3iGdiLEoOTman9gEN8aYUJCxiAuKAjV4QU6X2ol+edxRXUL7Bdh7UovtIoR6/NIjtsUAZpkG+nDW9PeUBrwPm4V7LQRLOOJXAa6MFaVzQb2sVX4ZlX14WOfAvybHwAdFFnDW5Ixbo4HM9eDGx7IWSdQxKqHb5T7fXjEw++xrXJJ/GEc5oFMBzM+yfW5gK9F5NyfoT0QEGbDHsUZu411hfLwe58un3ohoOUCMPZg= X-MS-TrafficTypeDiagnostic: CY1PR12MB0165: X-Microsoft-Exchange-Diagnostics: 1; CY1PR12MB0165; 20:a8fXGz/STEIxUYbpmsiKeoCq0JIfbkWafy/2Prk4rEBtJFOt9aqzt5/EQ0BiNirCV5KN+QG1GMFDHGzo37/urry6r4DiJ2jqoNqS8RLPN+94uZS5VexdzmoaYat9Ljg2BiaXqiVQ4mZZtWRsuVt7JZ4xidPq338QJ36A01Z5vYSIOsZ9W9ynPX0bsp1YsjB4Atwp31A62fwbIY2RAVdSPAL2jDeTw/DFqeMPoNmfXqwCFE6tWp/83tzrMuGbjw9uY0x2F1hr6nu6Y123nQaerc4jjS8u2ls3KDmWLw7LsIy8gLNwz1A2yddnKldm5yLGcWReQ5YU/xNW0S+9+Dbpcg3VLzYN9t8RaAD+yAFTJRO5zNCCxBNS/lNvnYzNChPWDQHmY39HboNxNVpzfOd0yWehWJrKEdP7kGKKzat2uaVAbOGNRs0/7qw/rVU5nohvEO1b68E3bzlvpHHt2QHSSxBV875D+lEg/Rg63gBeXqmYxdDS8D4ZiXVdyXYgBK4h; 4:IM5CuEZuQmppesUrJFtym2E2/lIxiIFYc7oJPoF4EPVbEAAbozrMikI0WXek1JsGGSzkFcVS0WUrINvkHB5nHAsp0JPAGKwIjfmJOaTjdZL7Dwgbdgr/X8t86r4fACAUpU9MFQtJNtaVWJ0Rw5mnDU9N4oI1xXdKFhsw4hcTmIs4Rw9WCFPexJLdBiLdvD1ACpAUbLoze/T2+rAhDF5BrOEPnqT3LcZmosUnGrPRVl0podzkId36RQSMFZpwrQTF0poTXrYRl6dvDOaT4g/GuBqhX8fUFD1HCNzjCRpCMm+1qugGDeXd6/R0KGuBeLNWUlxP9noqFSMKvJ7FIIs3dw== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(209352067349851)(767451399110); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3231254)(944501410)(52105095)(93006095)(93001095)(3002001)(10201501046)(6055026)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123560045)(20161123564045)(20161123562045)(6072148)(201708071742011)(7699016); SRVR:CY1PR12MB0165; BCL:0; PCL:0; RULEID:; SRVR:CY1PR12MB0165; X-Forefront-PRVS: 06793E740F X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(346002)(39860400002)(376002)(39380400002)(366004)(396003)(199004)(189003)(6666003)(1076002)(68736007)(66066001)(106356001)(11346002)(58126008)(55016002)(4326008)(97746001)(52116002)(47776003)(53416004)(50466002)(2361001)(2351001)(53936002)(3846002)(7696005)(6116002)(486006)(86362001)(97736004)(476003)(446003)(6916009)(956004)(2486003)(316002)(25786009)(23676004)(105586002)(478600001)(575784001)(103116003)(72206003)(81166006)(230700001)(59450400001)(8936002)(7736002)(69596002)(2906002)(16526019)(81156014)(8676002)(76176011)(26005)(5660300001)(6506007)(186003)(305945005)(9686003)(386003); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR12MB0165; H:tlendack-t1.amdoffice.net; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?q?1=3BCY1PR12MB0165=3B23=3Ar0O9?= =?utf-8?q?FboNl+E1mbVD+adXO+/73w8CHx2aXHrQbcxZVQ2mrvD72AJz0lSgFtGK?= =?utf-8?q?wXsQOmN312lnLzpVLZz8uYhMIKaZuAO1l9R0pxhQYFd2+Rbtn5p5jaar?= =?utf-8?q?PkaN5Y+oIHmRX6D72dYM9XgxD6a7KSEJArb2VdvG+YeXKHr1MD5yanxz?= =?utf-8?q?5BQnl7hSYOm3bnABqNac1wmg1cl095KaDRR2ffwmqRZYA99ql6VYVdlU?= =?utf-8?q?PogJwbAdy9z2aAd+eC00/ofwK0ozMmsVpPfzmftsdgpDyYpYArRKEuMe?= =?utf-8?q?KWP9aFZyVvSHrXy4C6BRW03HqaAcMJNfPCVwywZ+6Gfis1P6ZphpEurP?= =?utf-8?q?2dD955Ea0MKESPLEJmjryBEWxZgfWQD7eSgvxeObWrrLpiaismXpfG0x?= =?utf-8?q?bZ6hP1GQzYEB24mjKaFix4i1M4k2GIuf0zScHUU/sH6Z098AywMCJlHJ?= =?utf-8?q?C6ryVjMyKl2IZyeQsrI+BueEYNGAN+OPTYjEN/oouOrSsWgWticTDM+a?= =?utf-8?q?dvHOmNrROVMPU/U+UoqhmrPbG8DFoKSBqpR0mqAJ4OnQxEk+TONzwDHC?= =?utf-8?q?NoS5EqRGJoBbRDN9cPShkd2S53A++3oD+TvAHcMZsDhTCsjCifr3uHI6?= =?utf-8?q?6rnM4AApW6MlbREG0BcNwN7e2XomoQtJRnVgWAdWz13thYISR3ueqLVM?= =?utf-8?q?fAbtVnxqaVMwUzCopIcR/8dHaV9jkABIhLUeQUM+rG6B8CDAq/xEGGiR?= =?utf-8?q?LnUKCUg/xuUHyJ92fBVaJIClXKUnU3uSBEp+zxEvBtrY9tWf0rV97FOS?= =?utf-8?q?+6WeEQbO1BLbLkEYfW4qhuWhqQG1aOWz6uT5wUzoLUI58qbiWNKKcK11?= =?utf-8?q?rorSKiIqU1NZ0hqBQQZV6wqUL4MwomDp/uGe2VJtO5bWzwThVGfivuDi?= =?utf-8?q?G7KNZF63wixHDrPuoOpJxpbSWsQ89TJKvj/9oh9MIjd5ouP2ZSvBjYDv?= =?utf-8?q?upYRAgywsxb0CyA6AqtGRQaGlCsP+Hqrp6LxS7BsQ2+OrpEe+zKRNdjD?= =?utf-8?q?xPp83JbAAZwDPMjf5hFTtgF4oUmjb1PIYLdnBNGlXpObGNAI6UPP1cdP?= =?utf-8?q?htRAbLohrEGYNHrcJMcRg5t8VpTD4xtrUdoRmTRq+JuubqPpkZIvUDZ5?= =?utf-8?q?wDl/ptwv9cZb3lfR1+uFj24P7Rr7qDTQUt8v8fspBaikQkmqXlUMyh/J?= =?utf-8?q?r8EY47epjT5scrWedaN2uXhfEILU+ebumAnu9A/nQSJjQC744tlGyu5I?= =?utf-8?q?qFH6Ccw/bB/xhalpHly1DWL3ZzNHRiOnEXXZQSEkb/JUef10Uxc6YTVU?= =?utf-8?q?2wHyCVJGt/CrQRt/K5iREfdLdHxStuTguvv1eyBg3Jb0C7ZuhVSXZeGG?= =?utf-8?q?7vDXZ4GIo8zHOvyG5V392pk+gsdb7X73f1aID+s=3D?= X-Microsoft-Antispam-Message-Info: uoWMSnzMYXt54pmTnA3471yHUEQkz9DesWbd9StEN4Yhte7xj7qJPg+urkyKqlqAFefhONlEBZcVSt343L2weethA+rTJsQwfdXCxsGTEKgcs786LaedRE16wqDyKoNlBXj1mNaD5namEDqEK1VJLP5Wk/+Z3V46oDs2SCJqJz690/w6ObJ7t5Tb7dFUMQ61 X-Microsoft-Exchange-Diagnostics: 1; CY1PR12MB0165; 6:Q5PuoThJBhNeF7V8YQ0g3DV7x987i2dO2sBdcnq4uwMaQzspTyBAp+MWJCXUr2UBJOkMwm3COeSWHsup81zgyFmVZETS/0rZI3n3msw6maglD1vVAu83upXvgKJrfJovcp82/Lo/6qJG9HPbLxyuygxnKOjFUKpnU/s7vk+wls06UpUVxmSXKvNhGNW0YPAVxsW6MAotpve98/gG6zK0O5P2/r/2kiaDVPhRDEeQIC0Vztr34MH1TRpIcKZPAm6csL5HTpg7SXC1F7nDtuYjqb9v7SYOPcgEyL58c+z1Xh8896CT7JA29NII9FWA6Q9+VTCoS3+Fc+wUMbCC8nOGmsnMADbcNjqWy/Fcbabm60kcUhkiauOzSKywZoGeJH4uTD8Bb8UCQPfi9W5Eaq198joYYTqVhF4TzUeC/WQNz8sTMX8FVr5oeu8BlI3Of2LFfSfaeKef+X2VKOig7JJJGQ==; 5:KQAwRsMZeuh2iHeITcMZsSbkhm6XUAIkqQjmFXCDtBEKPAwDp/KAf8ZNbseq6G8J1sL4PqBpcz8ngE8WRixk33bq5pDcp46h1M3fBYboBSogrw6loM9niw5Ac3XmAHNgKi0Xlc6YlxQGiD16zx7F6brzBFp9i85hOaggpMtXqQI=; 24:FHRFe1WJiGah0dBlYZo4JX8SRkuZ8GnS5pLB3JDd8HbmXYYRmWszaOL9QSgsRJf5IiN/3itCe4Gtt6IZ2glDLcHUS5gKmz9VrdYpI08RTNg= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY1PR12MB0165; 7:plFK8nfachbNhGpWuWp2uz34duhMxZTkz7LB1FzcqoLULlaRoNQpSxAXsNuwe8tU6xzM7AnLTUCK+FX9WvUXBxF4ee6WIpNNZjubagIL3PUrR7A/fbEVMl6lARGe4Wwdy9AZb0VVR29/CtDZ5D4oV0g8iKiNEWJnJ6cY17BU/FMpr0I0f+B1fdS66VFmJ3IWmjo7WqXWB7jj3IdDTsU6ZBiyHd4Z9qe3EvMLtOaWBjM7/qaE/fCmc1rxi85OAFcB; 20:/3GkgADfdJje2rlmhi2OafFpqA1s/xh7jiOgXOsopI7XFetmzFLDREPqjxBgkf24lx3sFkTFxWn0cvMmaN4F/fm9sBBhdBlRdAbhS3ONmqUX87IdAd4HqUP/RAGvuijiFcmi07WsI17r4UFE6YbGm7js6B5cFF5ayYGIGG976rTRJiX20vC19DeC74OwFt7ohaipYm25Vi2EgIJC9ao1BCYpboaViX7XdLFqhcIxTqCZ7LmVe9MS136Fv4ScYMDP X-MS-Office365-Filtering-Correlation-Id: 65918da1-9c7a-4706-81bb-08d5bf662795 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 May 2018 21:59:41.1815 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 65918da1-9c7a-4706-81bb-08d5bf662795 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR12MB0165 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Add ethtool support to show and set the device channel configuration. Changing the channel configuration will result in a device restart. Signed-off-by: Tom Lendacky --- drivers/net/ethernet/amd/xgbe/xgbe-drv.c | 25 +++++ drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c | 131 ++++++++++++++++++++++++++ drivers/net/ethernet/amd/xgbe/xgbe.h | 4 + 3 files changed, 160 insertions(+) diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-drv.c b/drivers/net/ethernet/amd/xgbe/xgbe-drv.c index 397e3a0..24f1053 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe-drv.c +++ b/drivers/net/ethernet/amd/xgbe/xgbe-drv.c @@ -1329,6 +1329,17 @@ static int xgbe_alloc_memory(struct xgbe_prv_data *pdata) struct net_device *netdev = pdata->netdev; int ret; + if (pdata->new_tx_ring_count) { + pdata->tx_ring_count = pdata->new_tx_ring_count; + pdata->tx_q_count = pdata->tx_ring_count; + pdata->new_tx_ring_count = 0; + } + + if (pdata->new_rx_ring_count) { + pdata->rx_ring_count = pdata->new_rx_ring_count; + pdata->new_rx_ring_count = 0; + } + /* Calculate the Rx buffer size before allocating rings */ pdata->rx_buf_size = xgbe_calc_rx_buf_size(netdev, netdev->mtu); @@ -1482,6 +1493,20 @@ static void xgbe_stopdev(struct work_struct *work) netdev_alert(pdata->netdev, "device stopped\n"); } +void xgbe_full_restart_dev(struct xgbe_prv_data *pdata) +{ + /* If not running, "restart" will happen on open */ + if (!netif_running(pdata->netdev)) + return; + + xgbe_stop(pdata); + + xgbe_free_memory(pdata); + xgbe_alloc_memory(pdata); + + xgbe_start(pdata); +} + void xgbe_restart_dev(struct xgbe_prv_data *pdata) { /* If not running, "restart" will happen on open */ diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c b/drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c index d12f982..d26fd95 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c +++ b/drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c @@ -705,6 +705,135 @@ static int xgbe_set_ringparam(struct net_device *netdev, return 0; } +static void xgbe_get_channels(struct net_device *netdev, + struct ethtool_channels *channels) +{ + struct xgbe_prv_data *pdata = netdev_priv(netdev); + unsigned int rx, tx, combined; + + /* Calculate maximums allowed: + * - Take into account the number of available IRQs + * - Do not take into account the number of online CPUs so that + * the user can over-subscribe if desired + * - Tx is additionally limited by the number of hardware queues + */ + rx = min(pdata->hw_feat.rx_ch_cnt, pdata->rx_max_channel_count); + rx = min(rx, pdata->channel_irq_count); + tx = min(pdata->hw_feat.tx_ch_cnt, pdata->tx_max_channel_count); + tx = min(tx, pdata->channel_irq_count); + tx = min(tx, pdata->tx_max_q_count); + + combined = min(rx, tx); + + channels->max_combined = combined; + channels->max_rx = rx; + channels->max_tx = tx; + + /* Current running settings */ + rx = pdata->rx_ring_count; + tx = pdata->tx_ring_count; + + combined = min(rx, tx); + rx -= combined; + tx -= combined; + + channels->combined_count = combined; + channels->rx_count = rx; + channels->tx_count = tx; +} + +static void xgbe_print_set_channels_input(struct net_device *netdev, + struct ethtool_channels *channels) +{ + netdev_err(netdev, "channel inputs: combined=%u, rx-only=%u, tx-only=%u\n", + channels->combined_count, channels->rx_count, + channels->tx_count); +} + +static int xgbe_set_channels(struct net_device *netdev, + struct ethtool_channels *channels) +{ + struct xgbe_prv_data *pdata = netdev_priv(netdev); + unsigned int rx, tx, combined; + + /* Calculate maximums allowed: + * - Take into account the number of available IRQs + * - Do not take into account the number of online CPUs so that + * the user can over-subscribe if desired + * - Tx is additionally limited by the number of hardware queues + */ + rx = min(pdata->hw_feat.rx_ch_cnt, pdata->rx_max_channel_count); + rx = min(rx, pdata->channel_irq_count); + tx = min(pdata->hw_feat.tx_ch_cnt, pdata->tx_max_channel_count); + tx = min(tx, pdata->tx_max_q_count); + tx = min(tx, pdata->channel_irq_count); + + combined = min(rx, tx); + + /* Should not be setting other count */ + if (channels->other_count) { + netdev_err(netdev, + "other channel count must be zero\n"); + return -EINVAL; + } + + /* Require at least one Rx and Tx channel */ + if (!channels->combined_count) { + if (!channels->rx_count || !channels->tx_count) { + netdev_err(netdev, + "at least one Rx and one Tx channel is required\n"); + xgbe_print_set_channels_input(netdev, channels); + return -EINVAL; + } + } + + /* Check combined channels */ + if (channels->combined_count > combined) { + netdev_err(netdev, + "combined channel count cannot exceed %u\n", + combined); + xgbe_print_set_channels_input(netdev, channels); + return -EINVAL; + } + + /* Check for Rx/Tx specific channels */ + combined = channels->combined_count; + tx -= combined; + rx -= combined; + if (channels->rx_count > rx) { + netdev_err(netdev, + "Rx channel count cannot exceed %u when combined channel count is %u\n", + rx, combined); + xgbe_print_set_channels_input(netdev, channels); + return -EINVAL; + } + + if (channels->tx_count > tx) { + netdev_err(netdev, + "Tx channel count cannot exceed %u when combined channel count is %u\n", + tx, combined); + xgbe_print_set_channels_input(netdev, channels); + return -EINVAL; + } + + rx = combined + channels->rx_count; + tx = combined + channels->tx_count; + netdev_notice(netdev, "final channel count assignment: combined=%u, rx-only=%u, tx-only=%u\n", + min(rx, tx), rx - min(rx, tx), tx - min(rx, tx)); + + if ((rx == pdata->rx_ring_count) && + (tx == pdata->tx_ring_count)) + goto out; + + pdata->new_rx_ring_count = rx; + pdata->new_tx_ring_count = tx; + + xgbe_full_restart_dev(pdata); + +out: + return 0; +} + static const struct ethtool_ops xgbe_ethtool_ops = { .get_drvinfo = xgbe_get_drvinfo, .get_msglevel = xgbe_get_msglevel, @@ -729,6 +858,8 @@ static int xgbe_set_ringparam(struct net_device *netdev, .get_module_eeprom = xgbe_get_module_eeprom, .get_ringparam = xgbe_get_ringparam, .set_ringparam = xgbe_set_ringparam, + .get_channels = xgbe_get_channels, + .set_channels = xgbe_set_channels, }; const struct ethtool_ops *xgbe_get_ethtool_ops(void) diff --git a/drivers/net/ethernet/amd/xgbe/xgbe.h b/drivers/net/ethernet/amd/xgbe/xgbe.h index 7dc0fac..7a412cf 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe.h +++ b/drivers/net/ethernet/amd/xgbe/xgbe.h @@ -1122,6 +1122,9 @@ struct xgbe_prv_data { unsigned int rx_ring_count; unsigned int rx_desc_count; + unsigned int new_tx_ring_count; + unsigned int new_rx_ring_count; + unsigned int tx_max_q_count; unsigned int rx_max_q_count; unsigned int tx_q_count; @@ -1336,6 +1339,7 @@ void xgbe_dump_rx_desc(struct xgbe_prv_data *, struct xgbe_ring *, void xgbe_init_rx_coalesce(struct xgbe_prv_data *); void xgbe_init_tx_coalesce(struct xgbe_prv_data *); void xgbe_restart_dev(struct xgbe_prv_data *pdata); +void xgbe_full_restart_dev(struct xgbe_prv_data *pdata); #ifdef CONFIG_DEBUG_FS void xgbe_debugfs_init(struct xgbe_prv_data *); From patchwork Mon May 21 21:59:46 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Lendacky X-Patchwork-Id: 917898 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=none (p=none dis=none) header.from=amd.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="ulAsI9dY"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40qXm90CWzz9s16 for ; Tue, 22 May 2018 08:01:13 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754089AbeEUWBL (ORCPT ); Mon, 21 May 2018 18:01:11 -0400 Received: from mail-by2nam01on0063.outbound.protection.outlook.com ([104.47.34.63]:59825 "EHLO NAM01-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754125AbeEUV7v (ORCPT ); Mon, 21 May 2018 17:59:51 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=gaxiUdT4O7VuNho2XoBxPanVv0R/TmbS9A2Z+ARP76g=; b=ulAsI9dY+JLMXKCsNoZ6jznrrtPRGlhTebSRChBE8UyHxixOY9MqEg2NwwtQzSI2b+VzRMptxXKvCxgpy3i5AJMpEtPKvolzANul3VeOGUrDyV9zCI2TN6+iwx2IaETfFbAtAgfmJE7eSk6SvO4es0jLA59Se1e25e+8v6ISa84= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Thomas.Lendacky@amd.com; Received: from tlendack-t1.amdoffice.net (165.204.77.1) by SN1PR12MB0175.namprd12.prod.outlook.com (2a01:111:e400:5143::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.776.11; Mon, 21 May 2018 21:59:49 +0000 From: Tom Lendacky Subject: [PATCH net-next 09/12] amd-xgbe: Always attempt link training in KR mode To: netdev@vger.kernel.org Cc: David Miller Date: Mon, 21 May 2018 16:59:46 -0500 Message-ID: <20180521215946.8135.2887.stgit@tlendack-t1.amdoffice.net> In-Reply-To: <20180521215818.8135.83100.stgit@tlendack-t1.amdoffice.net> References: <20180521215818.8135.83100.stgit@tlendack-t1.amdoffice.net> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: SN4PR0501CA0108.namprd05.prod.outlook.com (2603:10b6:803:42::25) To SN1PR12MB0175.namprd12.prod.outlook.com (2a01:111:e400:5143::15) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(48565401081)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:SN1PR12MB0175; X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB0175; 3:a/96Z97RKhURky0H2axSs+O+2VM2ORZr9XsYSGvX/pL6HTjyrBKKuw5FQb0vCiEMaP+ijKNjCNWA53c1VTtDnWHtLq4LewOQRTGZN2HlgQ7O+iKKLwf+a1VVwXN9BgbxFvJ9PkBjoxjebmyFTOVv0WIkJT9mOy+uSKtTA/SmhV8E++TS2rsiyYV2FZkrXp9H/c70G+SBIB7DFaa8XhjWNvaDvYI2UBkuOWCCQwsykj5NKLbQghaQGoA22Rtcb4gN; 25:aszIC/8mIymL/uFdpYdcV6KYKalmlaTT/KP4Ecx1iv/4V5Uz0Olvl21WBIxrKVur5Be2WGz+3ldU3RAuYohZrYahPLYswVPvk+fKeRqeGEBzU07AgTCzzw2/Mx1lV6hLh9LUPaaW2rqsj5+Cdr/gUjRq9ZPHxaiT7HIe0RWkPjNXX8wEupNnkbHqtw1nAR+B+Hmevqfvc8uLKVEzmqQR8k26ZDRhrKKFTtUyyLomMaWjDg9yhgayrchPq1sG3NUrZKNPDfjYypiPcwYPaeuf2/yVt4i5pIN/dHF7LC2AdcT2I5Oxvk+d2z4lcUV4JC1WgUrToYgj0l+vM/gFeFbBUQ==; 31:n5xCgv3jUw3Fi90jlJk7hWEjzf6wyKG7Xs6xQO/AiJ9hFGQ4RbkIaD6XZI+bvuG2mN+uo0Scz/f1qFHKLaHWQTpGM23L30b2OOrEeE0ltIa7+joL74kbCPp7we05Y9v2llV0PBycl5AwslQGTapzXqAkITYaQ3+YjI2D44JZUI9oAoJEcNDrxn2YiWIZZZklGIUte9nkdZYhyhhLMuq4P1b9fyBqxpV4LRs34nnSwu0= X-MS-TrafficTypeDiagnostic: SN1PR12MB0175: X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB0175; 20:nXMkIf3uYWD7k7KVco2XRC5/Jrq1A8yGjsIyrBMsm9A64eIB6GX+EQLegye3wedRLgYJ+Jy82C311Ud4jbRUO5lCGPeRkJFabkqAKPyRDMwjvWtwy6VtXenvaqPvFUZq+GrdRXSO/KwRcQsZkPbBwycOr1Y+1oARpp2L7x367FdL6vYDDRIlT8DDXlMtcmhL+9MICF1UgNdxhm5MWXDr3Mhgws2VHjpaqMdw0N7+FmKtNAO3cPkHdGXDbSqSTYzHUzNJ/KWHNgiTSgG8Ckw71PErV8DFd89jogRjuOyqZbf957NKzwhFxzWsnZmYba284T/U3U/olCtdu/lHjMXLWcW8piZTWi8KHO8MSm2Nt2VItD5ZrlTyjmztQoMcdpelBdAVq9lVyEqUrNj+aqG9RL6nlzTf40Q0IziWDSMl0yb/PUCCU7F9xLB2QQV+JpjjTtsJbQTVKubBmQ2zUEw+eZKa6+hCktzMcwy9Nske9Q3Wy/au5Gop3k0S5i1IHhLG; 4:Qf2eCnMHmOmEvlqUkxCCHCL1kH392oCcRCRe6v4toDL+RPDM72rFk1R7cOHrxA6eTzoKsQECKyQ10qEPUo8hQOiczFHzCyv/TVQ47ZfOP8W4QFy2fGA0wMxTaV3KgJl+ZnBTp0RMx9sykcfPMQKVDTasXGteyNxlHQbFYI1bPS7qcwMnAh0WuaZapPGatYuEGH2RpWNxLeGuHzzbZN6sEAnJGTm2murSbEnwxIVSPBzVV6SksD6EIFSIZcWb75uxnUCmswqRuzCJT3Z0rTUlcUukHeC9hZ4BT8uweDcKH2XlRjV0+YwyRrwZTKNJg1/j X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3002001)(10201501046)(93006095)(93001095)(3231254)(944501410)(52105095)(6055026)(149027)(150027)(6041310)(20161123558120)(20161123564045)(20161123560045)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011)(7699016); SRVR:SN1PR12MB0175; BCL:0; PCL:0; RULEID:; SRVR:SN1PR12MB0175; X-Forefront-PRVS: 06793E740F X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(346002)(396003)(376002)(39380400002)(39860400002)(366004)(189003)(199004)(16526019)(186003)(476003)(11346002)(55016002)(486006)(68736007)(76176011)(2486003)(53416004)(7696005)(23676004)(52116002)(59450400001)(26005)(386003)(6506007)(105586002)(8936002)(86362001)(58126008)(230700001)(2906002)(106356001)(8676002)(81166006)(316002)(956004)(69596002)(446003)(81156014)(9686003)(50466002)(97746001)(4326008)(97736004)(305945005)(478600001)(72206003)(3846002)(6116002)(1076002)(103116003)(2351001)(66066001)(2361001)(6916009)(47776003)(53936002)(5660300001)(6666003)(7736002)(25786009); DIR:OUT; SFP:1101; SCL:1; SRVR:SN1PR12MB0175; H:tlendack-t1.amdoffice.net; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?q?1=3BSN1PR12MB0175=3B23=3A6X8w?= =?utf-8?q?9JrgIy/Mgx4rDaIy1GpcuZn/kV18v3H585PV+haXag7xD16qFxvhLSEC?= =?utf-8?q?nrnRzCcNOQzK7aoFQCpq9VvGorBUy31WM+VIKZYDQHy8LVxDSt09QhMu?= =?utf-8?q?deqqlDYNHGFZ2P0wWIrwF4C+O8ozWtFsdX4FHv0uomzc8II2ylg25Lp2?= =?utf-8?q?0nBic5cT/uNdM+X6Lin9TSSLAMt4IQWjvVypZYtgEV35hdw8ce7yMdQo?= =?utf-8?q?qXz8VpvGvB0O+4JiKYUTZ9IBPsn8n8UGayAAPxOp3VgfdqQp33F505XD?= =?utf-8?q?4lHUlBTp7Qsp76qvFXI0+9s//rYnK5RkZKx8JaVSzaI0MFN8q6Eehtxh?= =?utf-8?q?fb9qLmCdZbUd9ySaBtcvbKXEArw74X8BKCUOwVebRkNK+6KM0gMq5NB7?= =?utf-8?q?EvNOQiSheaZJqEXaDiqzDdqugt6SNLxQG6gWqd7UrrntYUBhLtKM8oR3?= =?utf-8?q?cbqUpr85zseFb6zhKO/91adssLucDdfEIEgEiFn5+2ZlNyRefy+t2WMJ?= =?utf-8?q?YjDcW5EiVrFx5eXzwaXxx3KlLaULvQoCiXbBHZwomuS9EjYQAW4K39MH?= =?utf-8?q?E5F3NEVwGp1Fd/czTKAKQyRRdGrTGRxYcjDPIWDcMPd70s0/KBvIuwSc?= =?utf-8?q?uNegHJ5L8joRJyVu3kJpXenIK0AwbfaO7oqJr0KocuqtzKgad3kbPw8y?= =?utf-8?q?eKGMJeD5ShCJ9ql2XEIaYhm7NO7NI5evvsvm33NkhmlgazvWrbdaWSoW?= =?utf-8?q?Iirs9L3bJazQ0DjyzDyrmgy9k4S9HO8J/7I4hzAWzU/OFhLIV+gflUpj?= =?utf-8?q?rJl550EjGInBufE/JjF7DaQ9w8x91KnnmdFwKuILJK3RkABAj7R058MZ?= =?utf-8?q?I79kktrre3nsW5meSB9AYswmMCGhb5g+DMUL9Ej8T5pWUSXi2BWmhY7I?= =?utf-8?q?lJi+nSyIFMCMqI3+UdlnMk0ohX9ivRwDfuCcnf1R9nEX8vtbCVxfNNKe?= =?utf-8?q?krHyk7PjQb3i84DCDUA6IrUkvei9Xmbihl8bBu3gnAUhEQTlUcZc7s6e?= =?utf-8?q?rPK2E6s02J/BLej2g7rfw3qeyv4xuJgvIdgqKlwUNkXgJGNc95MBMx+f?= =?utf-8?q?4gtoG5ytuzptZUFLL3Ab+VEcR1/SHUOXrFhzBt3/psIS2hmClL/+PKwk?= =?utf-8?q?MvVu/Z6/VQBoZIKx/L3LrCEGcrspVXX29p8dcLMXCaBMv2OgNW82wZCI?= =?utf-8?q?O2BZWdkVLwydpbs89Vjo9/PMimokV8JoXPEFeg41X9QL4mrk88V4KN5H?= =?utf-8?q?4Y7Vyp7kXdfmmawhT4gschOynuojx6N0lBnyJ3HfaacmO+b0vCuLKMSl?= =?utf-8?q?HLkxaCD6ag+nMdvawfzJfAp7G9dAmfNzdLzJITjX0kIUsjDt7e0WmBAE?= =?utf-8?q?TPBvrIN2+i1v7oTe4w=3D=3D?= X-Microsoft-Antispam-Message-Info: dyUke6YexjnjlU/0GLybpPLRWlnhZbXinRjJI/SCm/6G8l2mcI1QpqrvpI9pfT5e84tF08iSY3bJLeEwfbn4L0hmKhgevvp1y+pYBhGbjiJoXD4dpxosf1gKW7iAMh8vy4TkHwe7tDlDn1ttYVlooy3kCKvDshagG6p6NhUWaQM6I6cE8clTUz+ySBbRmX9H X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB0175; 6:oSuu4T4EFSB9qaV3P8ipEJPzwJP99mCIvd2ijBIO10Iepktm/ucMKsi++jbTRDLamZImiugaweCdLgDQHfCQT5G6ERzYZGirXMCln17qtzwA/MIW2FQEY7hi1Kpic2x3WoK1di3MN9fWuUMXJrKhluf4OgxT8cUk+7OmmqgeZbyK1dobW3NKANHN4BLLzwizq5nirj1DlEblKiWnVJnUgNsWQztkxc6YnFC/AcIZLkKo5wZftM7A5eH30k8IxUCoN0L38SmUo5HyZhxfw2NMv0LtIe1enkOlofPuMIDLr68SRv5bjEs2JY+PtUj4HhaL5H5CfMMYAi4BtPBn8aLlNMhg6L/3zLJSw5q5Oqpgm6Z3HV0YcQnL0QPry63ENdcnKKxvq9zCoXc7Bm7+BNYlOHSD7s0b+fjV1ODxip86sxaXmaUhSNudoY7aip9oYusDHuIsjnmNaIanKyyKcvnMvw==; 5:9izTcfDdIcQ1nqRYRv+1b68KI8/0vsBzuEknmUcEHFakWvwZatF44HoxBns77gOxdmvcSdQsVCykRiGK/LPxB98G7ubzT9pE6iGa3ftMZeCaVo7LuOggzSf70fi12eAV6WqcRCl4MuKOlPjcLiSL1i00bUr8DCTdXtszs3Om7MA=; 24:MvIl2m+He/5sCDONGb7t8vv+eg5kWPFoFsjlL6Q2F3UioaC/MDX0ehO7ZSD8DVh7UKopa5nan2LOyXPmQRatMgpalHbY8kjcGp9RTs9png0= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB0175; 7:iRlvNjS+Z7ld8TCdROdcU6mDmOO3cR0/eSgaBK4Ogih3QB+lttybKI9gBrpY0gXBu9+DHTEbRjAErANueKwF4QmFpT67MePhjNfOSdZLDGaLHq53J/th1bg1exPuAwtNkB+MCVKggIRyrfEs2E3qLbBqsg/mKGSewmx7+z6Uej+8WLXdc7pr9cP2YaAV0ZT+s7xu0DCNrtnZfWqL0P/Ox1V8Ird5CTT6cRQx+6WfSwuC87c+GFEQmFOwQZ7uMQXf; 20:2Ak8I7dtG9nlIK+DIV+a3WxL/GvcFIWZaybtp0i4M1HwMabm9GV0xxvbhY7fTSe4JhJdQy0KLasgtfDtSOh2+NJDtEryQcTQYZqbVmP2mgJYyh9yW4SAWBPD/lWtvIxrRe8RiO3WT9u3xpVHWBNMpCdNnLYx/e+BOjCxmNROqGUYDjlxUI3jQfdEL6ubFFQhEjEVaoJQw440rzne6QRz3PvQ+8bIP8/G8y0tc0LmysdIscK8Ok9+BzCe8pCv29S6 X-MS-Office365-Filtering-Correlation-Id: 55216180-fae8-493e-b1b5-08d5bf662ca5 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 May 2018 21:59:49.8012 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 55216180-fae8-493e-b1b5-08d5bf662ca5 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR12MB0175 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Link training is always attempted when in KR mode, but the code is structured to check if link training has been enabled before attempting to perform it. Since that check will always be true, simplify the code to always enable and start link training during KR auto-negotiation. Signed-off-by: Tom Lendacky --- drivers/net/ethernet/amd/xgbe/xgbe-mdio.c | 69 +++++++---------------------- 1 file changed, 16 insertions(+), 53 deletions(-) diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-mdio.c b/drivers/net/ethernet/amd/xgbe/xgbe-mdio.c index 9c39c72..450b89c 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe-mdio.c +++ b/drivers/net/ethernet/amd/xgbe/xgbe-mdio.c @@ -216,31 +216,8 @@ static void xgbe_an_clear_interrupts_all(struct xgbe_prv_data *pdata) xgbe_an37_clear_interrupts(pdata); } -static void xgbe_an73_enable_kr_training(struct xgbe_prv_data *pdata) -{ - unsigned int reg; - - reg = XMDIO_READ(pdata, MDIO_MMD_PMAPMD, MDIO_PMA_10GBR_PMD_CTRL); - - reg |= XGBE_KR_TRAINING_ENABLE; - XMDIO_WRITE(pdata, MDIO_MMD_PMAPMD, MDIO_PMA_10GBR_PMD_CTRL, reg); -} - -static void xgbe_an73_disable_kr_training(struct xgbe_prv_data *pdata) -{ - unsigned int reg; - - reg = XMDIO_READ(pdata, MDIO_MMD_PMAPMD, MDIO_PMA_10GBR_PMD_CTRL); - - reg &= ~XGBE_KR_TRAINING_ENABLE; - XMDIO_WRITE(pdata, MDIO_MMD_PMAPMD, MDIO_PMA_10GBR_PMD_CTRL, reg); -} - static void xgbe_kr_mode(struct xgbe_prv_data *pdata) { - /* Enable KR training */ - xgbe_an73_enable_kr_training(pdata); - /* Set MAC to 10G speed */ pdata->hw_if.set_speed(pdata, SPEED_10000); @@ -250,9 +227,6 @@ static void xgbe_kr_mode(struct xgbe_prv_data *pdata) static void xgbe_kx_2500_mode(struct xgbe_prv_data *pdata) { - /* Disable KR training */ - xgbe_an73_disable_kr_training(pdata); - /* Set MAC to 2.5G speed */ pdata->hw_if.set_speed(pdata, SPEED_2500); @@ -262,9 +236,6 @@ static void xgbe_kx_2500_mode(struct xgbe_prv_data *pdata) static void xgbe_kx_1000_mode(struct xgbe_prv_data *pdata) { - /* Disable KR training */ - xgbe_an73_disable_kr_training(pdata); - /* Set MAC to 1G speed */ pdata->hw_if.set_speed(pdata, SPEED_1000); @@ -278,9 +249,6 @@ static void xgbe_sfi_mode(struct xgbe_prv_data *pdata) if (pdata->kr_redrv) return xgbe_kr_mode(pdata); - /* Disable KR training */ - xgbe_an73_disable_kr_training(pdata); - /* Set MAC to 10G speed */ pdata->hw_if.set_speed(pdata, SPEED_10000); @@ -290,9 +258,6 @@ static void xgbe_sfi_mode(struct xgbe_prv_data *pdata) static void xgbe_x_mode(struct xgbe_prv_data *pdata) { - /* Disable KR training */ - xgbe_an73_disable_kr_training(pdata); - /* Set MAC to 1G speed */ pdata->hw_if.set_speed(pdata, SPEED_1000); @@ -302,9 +267,6 @@ static void xgbe_x_mode(struct xgbe_prv_data *pdata) static void xgbe_sgmii_1000_mode(struct xgbe_prv_data *pdata) { - /* Disable KR training */ - xgbe_an73_disable_kr_training(pdata); - /* Set MAC to 1G speed */ pdata->hw_if.set_speed(pdata, SPEED_1000); @@ -314,9 +276,6 @@ static void xgbe_sgmii_1000_mode(struct xgbe_prv_data *pdata) static void xgbe_sgmii_100_mode(struct xgbe_prv_data *pdata) { - /* Disable KR training */ - xgbe_an73_disable_kr_training(pdata); - /* Set MAC to 1G speed */ pdata->hw_if.set_speed(pdata, SPEED_1000); @@ -425,6 +384,12 @@ static void xgbe_an73_set(struct xgbe_prv_data *pdata, bool enable, { unsigned int reg; + /* Disable KR training for now */ + reg = XMDIO_READ(pdata, MDIO_MMD_PMAPMD, MDIO_PMA_10GBR_PMD_CTRL); + reg &= ~XGBE_KR_TRAINING_ENABLE; + XMDIO_WRITE(pdata, MDIO_MMD_PMAPMD, MDIO_PMA_10GBR_PMD_CTRL, reg); + + /* Update AN settings */ reg = XMDIO_READ(pdata, MDIO_MMD_AN, MDIO_CTRL1); reg &= ~MDIO_AN_CTRL1_ENABLE; @@ -522,21 +487,19 @@ static enum xgbe_an xgbe_an73_tx_training(struct xgbe_prv_data *pdata, XMDIO_WRITE(pdata, MDIO_MMD_PMAPMD, MDIO_PMA_10GBR_FECCTRL, reg); /* Start KR training */ - reg = XMDIO_READ(pdata, MDIO_MMD_PMAPMD, MDIO_PMA_10GBR_PMD_CTRL); - if (reg & XGBE_KR_TRAINING_ENABLE) { - if (pdata->phy_if.phy_impl.kr_training_pre) - pdata->phy_if.phy_impl.kr_training_pre(pdata); + if (pdata->phy_if.phy_impl.kr_training_pre) + pdata->phy_if.phy_impl.kr_training_pre(pdata); - reg |= XGBE_KR_TRAINING_START; - XMDIO_WRITE(pdata, MDIO_MMD_PMAPMD, MDIO_PMA_10GBR_PMD_CTRL, - reg); + reg = XMDIO_READ(pdata, MDIO_MMD_PMAPMD, MDIO_PMA_10GBR_PMD_CTRL); + reg |= XGBE_KR_TRAINING_ENABLE; + reg |= XGBE_KR_TRAINING_START; + XMDIO_WRITE(pdata, MDIO_MMD_PMAPMD, MDIO_PMA_10GBR_PMD_CTRL, reg); - netif_dbg(pdata, link, pdata->netdev, - "KR training initiated\n"); + netif_dbg(pdata, link, pdata->netdev, + "KR training initiated\n"); - if (pdata->phy_if.phy_impl.kr_training_post) - pdata->phy_if.phy_impl.kr_training_post(pdata); - } + if (pdata->phy_if.phy_impl.kr_training_post) + pdata->phy_if.phy_impl.kr_training_post(pdata); return XGBE_AN_PAGE_RECEIVED; } From patchwork Mon May 21 21:59:55 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Lendacky X-Patchwork-Id: 917893 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=none (p=none dis=none) header.from=amd.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="Unu6YRKj"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40qXkw1zYxz9s4n for ; Tue, 22 May 2018 08:00:08 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932118AbeEUWAG (ORCPT ); Mon, 21 May 2018 18:00:06 -0400 Received: from mail-bn3nam01on0041.outbound.protection.outlook.com ([104.47.33.41]:26989 "EHLO NAM01-BN3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754083AbeEUWAB (ORCPT ); Mon, 21 May 2018 18:00:01 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=VbycIoG5eYcyvsz9oe3pV+FKzrJelK8VnmCXEbxWjFU=; b=Unu6YRKjGhIKatSrzO38EbZh/eJvO4zPX3H72EmQ3P0T8ih1UN3qpqr74chSXtN+1//1tyxtgKVbVzYbaa7TWPQK/IY3iD+6cpNa7spSr4iSfa1G2Rc18cye0F4OJr8VLFF+CJb9hPZ1/UaIkk10+gUAbmv6zS17/up23QUufC0= Received: from tlendack-t1.amdoffice.net (165.204.77.1) by BY2PR12MB0162.namprd12.prod.outlook.com (2a01:111:e400:585a::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.776.11; Mon, 21 May 2018 21:59:59 +0000 From: Tom Lendacky Subject: [PATCH net-next 10/12] amd-xgbe: Advertise FEC support with the KR re-driver To: netdev@vger.kernel.org Cc: David Miller Date: Mon, 21 May 2018 16:59:55 -0500 Message-ID: <20180521215955.8135.29827.stgit@tlendack-t1.amdoffice.net> In-Reply-To: <20180521215818.8135.83100.stgit@tlendack-t1.amdoffice.net> References: <20180521215818.8135.83100.stgit@tlendack-t1.amdoffice.net> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: SN4PR0501CA0137.namprd05.prod.outlook.com (2603:10b6:803:2c::15) To BY2PR12MB0162.namprd12.prod.outlook.com (2a01:111:e400:585a::23) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(48565401081)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:BY2PR12MB0162; X-Microsoft-Exchange-Diagnostics: 1; BY2PR12MB0162; 3:Q+cI24UjNCrbPEhU0SuDISX1CXaEaj6NYRcmRZrh8chhJstAtVGJzN/mFUKTZ1/oVfdBP3ouwViLdTUQeOlM4uaLZtIEYl1lectXaKxjE9BpfjBnEsbTkqQjrMGnszerHtEs0TAdA8zv+iYWjsc2EzRfpKi9ICRpLh7/O+HLFCP0p3q62E6VZHZM29BHIYCQ9ZDQ0sA1eh5JsxWi9e/WskLMiGVVg3JyzGf+3cVsaO86Pdug76psuLm/t4GFEw4M; 25:UVjcoAn/T6j7HGrGemcm2GuXgVyiTPo/h31RgudGELITp07iN8voeyJigzNpZ/JnK/GrBoyry1BnS4w8OTExH+3qkMIc6i0NB+3OTe1wjdiVivkgx0g1Im1ZDL41jdAvewqEwdyQI5fFu6fh6qpDqFwC3TZrN+wruMfCG1tmpP3/thCfGhuSmcdKlJNP3nBAVyDqn7D1Pl94/kcJak5e5N0cQGuzvJ27uUYVp4bdzejq+vEwTbLFi2Jguxt6W4CC0H0begpWa/SuVg0OI5yVlHSd+hBam6bNffuPBurbtLDmk8GKyzWDyfwWp7MRZafIBSpTmbUfA69bG+FpuuTW3w==; 31:rdmUjJy0Z/VWAbimwisFY95xDkAPfEA1heuM75S+YWDjiqV5JDG3yqpC6Ex6OSdBKIoV+SNj3p5QXIXFoaLtuYF3oFpqxRk+xJHAOGA7gTzVXJgj8sUARn0z0UCPEAyZVEj1PGf7Qnfz2AyL/ZK6QIkAectZMhZQ42/soN6Qke5BxbbSHOPQkYZPbGWA+M9X/IaRuqx74Qt0HdWVIM2fZt/H2zHUZ3Zazy3Hz/WHuVg= X-MS-TrafficTypeDiagnostic: BY2PR12MB0162: Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Thomas.Lendacky@amd.com; X-Microsoft-Exchange-Diagnostics: 1; BY2PR12MB0162; 20:DfJsh0g2GIhL1geuEu87zyxcGxdO/0PCiP6T24JBeVp5WxK5OcxjpXYI4Noicx8pvXPjhyeBo7SnLC64mndb0bRaPp3hXvi72dlbDl9kXaVo04qtqUEx73pyHUYGRgaNnFKo+S/xKjYCXX0DiO5ukrVfQqmuzQy0+iCJrioFU319kpspSP6R08Rv6YeTnPNQLIyD7R6cKP8NMVMh8U6glb+ADGdL46Mp5Ho7FyjjYZ6UWReEeV/WpVjHYd0ap+O7xzjV42oyLsGN4W5qutx+uQRCB0osOR5EDmY6Qvm8ICDY5a3HJKK7I8QXWYL5+VBvfaw5Maen3IWsnyjH+rctmg7Yk+N6BQas21WASa6OWRYWhK/AYZ3HKOSyXgYvAe0cCh7fll8xjuhuqXta9+Normczy2/60/SDLs0NT1nPG9GR1Hy+g/mlYbUtw2q+zNU/qzaLXYTUxdAge9OD/gC0QaqNP2n9x7afVuEoye3FJuHfu9f0YXS/fEeL/T3ITy1D; 4:H+wVuh03/qTRdCkj9F5U58bzs/h/i5Zo8n4HJywfXN+8hsKJjSMr9L0ExBonA0jkRW5IggjAb5qFxdrwKJzjVy8C5aEQqECVDxfOfmvRLnWrR4mkV4wyPALiWliDwtYguhhxp6b6u6rLnXyvXkD7C0Ln6vk2fclOabMku1dnRVFpM/jOVbU1vSBuQhXlBo3GBOXs/c/FySTAXXCGPlcYS+stu9o+eSnpOOAhKv1ZhlJwQORCtA68+qh4ePHQhtXjjy0k0+zdftgKpYjJV0fPeWzEUibepJruHccI53i7Y6CQdnevQKTrVNyV/tYNQjjD X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3002001)(93006095)(93001095)(3231254)(944501410)(52105095)(10201501046)(6055026)(149027)(150027)(6041310)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123558120)(20161123564045)(6072148)(201708071742011)(7699016); SRVR:BY2PR12MB0162; BCL:0; PCL:0; RULEID:; SRVR:BY2PR12MB0162; X-Forefront-PRVS: 06793E740F X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(346002)(39380400002)(396003)(366004)(39860400002)(376002)(199004)(189003)(8936002)(2906002)(47776003)(53936002)(7696005)(68736007)(316002)(8676002)(105586002)(7736002)(26005)(76176011)(4326008)(16526019)(186003)(1076002)(305945005)(106356001)(23676004)(25786009)(52116002)(81166006)(2486003)(55016002)(230700001)(6116002)(97736004)(66066001)(3846002)(81156014)(6506007)(386003)(9686003)(53416004)(86362001)(72206003)(2361001)(103116003)(476003)(58126008)(11346002)(5660300001)(97746001)(69596002)(6666003)(478600001)(446003)(2351001)(956004)(486006)(50466002)(6916009); DIR:OUT; SFP:1101; SCL:1; SRVR:BY2PR12MB0162; H:tlendack-t1.amdoffice.net; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?q?1=3BBY2PR12MB0162=3B23=3AuDFy?= =?utf-8?q?AxxN/LsgixBuFarNQ/8ZTTtq505gAWO3/MKF5C2cepZoK8iwZljEHptP?= =?utf-8?q?P2SjV5C28T00mF0NqMARk1tQ6bYPX6qSBB1jWmFWnMe3c+UAE8+J1ie6?= =?utf-8?q?ajA7LFKtyVcAyy6aNMqWb1VrMP1pEcflIvADstS3iy2Li83kpKXC4g2u?= =?utf-8?q?rDqiAUHeZD0craoXa7ekBQHDwalffV64vWeEQ53Qve/NrWZKOVBBG/AZ?= =?utf-8?q?LDE6gK0axbYKECmkugCpfW2df10pfnvote3u4fxDctD98mRAVsVxnsMD?= =?utf-8?q?zLepJhzvPY7jBw/1sNpJCxdzh7l5geO5tftsplSIh/E17nH9Hiqv4pLX?= =?utf-8?q?/eIsFG0imKf/TcWwtChJpQxR/H09F23F/kIaKxZQN35NBL9ObynQrJuE?= =?utf-8?q?ZpDaJCAwcZonGPX5I3Dap/9jAw6mEtLjhe3j72o4wFiE4cqaPpridoUl?= =?utf-8?q?9s+89w73GTLpB4nxYgrzIk7Wm/QuNXHp7g7vOr52sTL0IciSWJGTfehm?= =?utf-8?q?7aHtn0QGTq7Rt/swKxdGxDut/cfnwwzMAi6X3/1kQLQHhvO0brb52W1P?= =?utf-8?q?iqJRXdzG4Gpua/bpM6kx5TaRi9wC13YJ+rNmIOA+QvCIxuDhJ7O0mawg?= =?utf-8?q?r1gHDDHBYM/kXFvHjq+UEWgr79b0/dnpbNtqQ+CcItbD/+MwDZPnekOj?= =?utf-8?q?kboVnYQlOetOoiwjMXqh5kgX8WnBMzyExEe2VV356Rix53z6+AlmJugP?= =?utf-8?q?tNVG8sBnOFaKGv2Cu4PVrl99Tag0qGl4KaIYDXREqYA+3OvwVHGFAue3?= =?utf-8?q?3Jz/HT1vg1J/ei2H8ceIcmOsiuIqzJ4VU40e4FVpYdLC5VCZX5fQY/I0?= =?utf-8?q?wXMbq+8IrY6bBBzNdvcne+7IbW8RSCe/be28C5FDo6tPtxSRyhOTjJTu?= =?utf-8?q?rYWfLKLDMFod5Z+Q1CerOAZOQGKiyH1wDfc40u7dLrA2S8WLLKCNtMEP?= =?utf-8?q?LARyeD3ELKgl7Mjf9TTGdY2GlGP0vPKW6XT+vpzD7vxQMWZcG0M37dQw?= =?utf-8?q?Ro1wu/MSGCtO57GX77FmjBb9oIAHvZga0wdx5sFc6dr3N2OyS8rw3mPD?= =?utf-8?q?jZuvEmu3x/YuVWAV7pVi5gkcv1fI6T1qIxmgliqUK+U8z9qBnQhA0YoY?= =?utf-8?q?i8OlUsnal08pkNFUzYoRmb5q20Z3XkpLaVgPQPJlqyexLyB0P+L2I2Jd?= =?utf-8?q?UW5waGFRj4UHUcCv952BKtDvpCj+kF8U9RdlHQv8SRwc5JHadutyrxkM?= =?utf-8?q?MulS2mIO7FMS3yfv4OPXlSPVwReyYU5wlL+pZYCb/06n2XqIafpPFMji?= =?utf-8?q?CjwF3Fj00giyD4B/q417UEHHrpUfyWo=3D?= X-Microsoft-Antispam-Message-Info: nyWf9UaSjrsRSfIheyC4gRaD73ZXZpqj4srs7gzwEzKHjrYPSPsc7WoEegNkEKu1mBkFpiHr5PaqDzFg8xFrGHbEx+H2AxJ6ANuDW8dxyr3uahpchSkVx+FOMGB0op633fPX4bukXXsTykvTr1MVh/3PG8sXj5waxzTEgO9nnVTbwpo23I9whuAYinT4BkUh X-Microsoft-Exchange-Diagnostics: 1; BY2PR12MB0162; 6:i9O5KAttN9ngNYD/j75YOYvrJxcyeiaOtPlG+ioWjjkdIM3nqi0jJJ+4sk+DXYGaVKyeSIX9N3z8Hua5zdXTwg7VxM+Mmvwgwx2PBh/mGcq9W+VTlR2X80snb786019V3KztLD79pUIvTTY0A6J+YjR9jDHWS1NfsXgYD7wJ9rDsZKgOgqDrDEdiiuW6SljA9q7L0RnT3JnZSKTQgRuxIxBOD8lFlXRd+3KEi2IQFkQKmgvKrodRYRDKKj9k0P/Kv9CwvHwI8XP0283ufOUHLln6ZGSa6xbV8/P8dVDWUShE2VE3DcWti/+uapj65QNeYxVEIgUus9bg5JmbAR4pFd+/1XOZgrL43FwakoPBIcLWWyavxQErAJOvxtWZp3qa8ecUHmXknIN9JzfJH1Z1bQUFWgXV4ADWYIMDEMDH7w9mhulNj/S9wdIPIwDorQEXIZ7fwgbfBUt2HQNQCsXriw==; 5:uHFW7s90qFvjxE/FpVqj7fJsrWbuXJgvL/2dX4FYbPqyZy7JiFIPMhHpaNCGf+0qQxdUiFQM0mPw166V8r3+7UJR00b5/mc1xUjYxiKa2SlIlty7TbMnvqY1Q8vJFwRBrKhKuCcMRo+rGVXYL4jH/CW0Fj0HDp3DCwM+6Dmkn/c=; 24:/nFLyYnqJ6H+ej/Y2Hm7JvzqWMokpWlUrfi331D2U+56f9KQj64+gVgUaBWmWACPHrqXgCmnYtdCUeeIbi0SjzA0x8mf71aLYWYUGkhNEXU= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BY2PR12MB0162; 7:n0Of7nCHtsuVSDTUoP3MlgBJDMUemsxtEqYC6dJuFn1MMLzXOggPwo1i6SQtGzUvZxJH2tmXHkgKyDccrXi/0oQmVu04MoAtz+jrTOad+qc4OKPNpLF2LFo6zW34TGSwxYM9l4TrBsNYXoa1cwVSbSswPyGUK2lq+e1AeJt6NkeBQ/ISERv99Ytj8+2JPwXY9ChyiDAygUQoxWJ/jEz+NtpLM7R5OqbAddlARtaWnjjpphNr7VYR4lYvN+YhCcNw; 20:xuQGyTkpggZWzUz6lcuCVByxScIp9EaxTC8D7pwTaYlQfqXQXemVpokSGY6Jh3X8OnaI4iE2B1rJP2imzOe2RboqfJK66Na0qXQZgz9AyK48uuCpcV9B3zkfKSMkvbLW6xeXdGyMomaynljlg977r/hLVIesrz6aZI9Ltav+1gRCnIOY8ndzy+hIyr+iGWLGhIzZHlmRvzNbdFumVo6HUTcz9z5y2xKU+6c2EuV1bEG6zhsz5zny+fNSDLzakyMm X-MS-Office365-Filtering-Correlation-Id: abc76f51-68e7-4e72-5f83-08d5bf6632b4 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 May 2018 21:59:59.8152 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: abc76f51-68e7-4e72-5f83-08d5bf6632b4 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR12MB0162 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org When a KR re-driver is present, indicate the FEC support is available during auto-negotiation. Signed-off-by: Tom Lendacky --- drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c b/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c index 141bb13..dd747f6 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c +++ b/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c @@ -1720,6 +1720,10 @@ static void xgbe_phy_an_advertising(struct xgbe_prv_data *pdata, XGBE_CLR_ADV(dlks, 1000baseKX_Full); XGBE_CLR_ADV(dlks, 10000baseKR_Full); + /* Advertise FEC support is present */ + if (pdata->fec_ability & MDIO_PMA_10GBR_FECABLE_ABLE) + XGBE_SET_ADV(dlks, 10000baseR_FEC); + switch (phy_data->port_mode) { case XGBE_PORT_MODE_BACKPLANE: XGBE_SET_ADV(dlks, 10000baseKR_Full); From patchwork Mon May 21 22:00:05 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Lendacky X-Patchwork-Id: 917895 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=none (p=none dis=none) header.from=amd.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="Zh6nctr4"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40qXlt1VB8z9s16 for ; Tue, 22 May 2018 08:00:58 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754103AbeEUWAy (ORCPT ); Mon, 21 May 2018 18:00:54 -0400 Received: from mail-cys01nam02on0075.outbound.protection.outlook.com ([104.47.37.75]:28875 "EHLO NAM02-CY1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751234AbeEUWAL (ORCPT ); Mon, 21 May 2018 18:00:11 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=UN8iKlB+ZnFEoWtKV/NCFronUiTiYeA6E1v0FWrgjqY=; b=Zh6nctr42efxA6WKpdrBZDpH4fkA9W3ZHNxTMHEKKrm/GoXPGC8nBhTrkKMY2IIzPdfJpDqIwNo4Cn/Klrd7onWNv51pJixhxUdCiVh2ipmiLLlJXOXPu8ZYAblqr6eEWF/k6+uu0w9jHArjGxd17+I7WCZKfB+V6GHyEeqVAbU= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Thomas.Lendacky@amd.com; Received: from tlendack-t1.amdoffice.net (165.204.77.1) by CY1PR12MB0167.namprd12.prod.outlook.com (2a01:111:e400:50f6::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.776.11; Mon, 21 May 2018 22:00:09 +0000 From: Tom Lendacky Subject: [PATCH net-next 11/12] amd-xgbe: Update the BelFuse quirk to support SGMII To: netdev@vger.kernel.org Cc: David Miller Date: Mon, 21 May 2018 17:00:05 -0500 Message-ID: <20180521220005.8135.23128.stgit@tlendack-t1.amdoffice.net> In-Reply-To: <20180521215818.8135.83100.stgit@tlendack-t1.amdoffice.net> References: <20180521215818.8135.83100.stgit@tlendack-t1.amdoffice.net> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: SN4PR0501CA0133.namprd05.prod.outlook.com (2603:10b6:803:2c::11) To CY1PR12MB0167.namprd12.prod.outlook.com (2a01:111:e400:50f6::25) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(2017052603328)(7153060)(7193020); SRVR:CY1PR12MB0167; X-Microsoft-Exchange-Diagnostics: 1; CY1PR12MB0167; 3:u6FaP0j1dvOj5m/I/rzN4CZCpFMULkgNWcmmZDuQLgo8lIfglR+L0g5BOmN75JDVdY60FNM4tU/73lFuxlivGWnaSu2UNTyKW6+V6VbGWcUhifBzErWzNSpBPrPZ68iOnnwf88Ucq0wBSC6xQzy9EbzSzRxPIwlTcwrIOBTaMm0njEUoECa6Kj4Kip+6h2j505Fsb4Q1nk5W9uJKTczdmRb4IssxvMi+PSGCkMk6CbNsSry5DP9VQupuqvfgjLVJ; 25:vmgzr5CCJkq34VyYikBV3f94/PUJlVL7O3GD7IgyuhW/E8DoNnAhvsKmpEvlVd0XXPbVEzKQ0ZCLN2DakpoZ3FTP/VxrxltCa/6q7hxDeh04F0U1OY/xEGRo6E6o+420FNonA3BdGJmiIf5duav3n7RoDT0f2wgF0HMuTo53iBHlXLWTsJQ+mcR09Z8TU/IWvDkHnd+BU8q9Fy6zVZiubSBGHt9JXDYcCnjptQ1KNWbLZKjCBgCNQRNf9KkDGIQ4xnPLJ1cuPUiA9CphENTA6La7U19Duak2vWDT0r0PCSevgY24415muucKsfV855fTlYMJQdFaEwWdZsPVWdear5978fCrQBF6LYsZ/JkSQRQ=; 31:tdIuqaccuUps3UeSeg1GuT3BaMtcVEMEeLpE73usl3CY9+XQLiM74aqCoP/M21uHnbu00HJ3LEBaOorE7LabL5+8tnH9VOFwzVaAQW8LM3XbIlevhbGqI9UQDAaCeKI+gfOBwh3yFxdY5TxSjH3IHz18KLaJJAlm5s8B4tDLAMUR6RA7Wcv4BZvo3aVj+p34I2UY7ae5n/hIcUxq2ZFQ/Z0U2mbl56aJrv+qvv5nCfE= X-MS-TrafficTypeDiagnostic: CY1PR12MB0167: X-Microsoft-Exchange-Diagnostics: 1; CY1PR12MB0167; 20:M2pkhn9iIUIQffcx7XxEudnhygtqwqAOJmTJSGwnEwePh9RFuRD2v6HiigVU/g133ujPPch51B1MgWuv1Kd8iWbdfplAxlUQ4LgrRlv1wRoWClN+cRyW58+3DI7WK7YDG50XvmYxhyFk9vcmIhXYkUAf05ECmqrQpIFD6XS34CklMEueQKOuWeD7jdln2qvXPde3Fw9pfGKfmazYJycZzuQL/mlTczC3gM/+S7nY0Lp3KdLZPyHIyCQIFjHoe/25GsOMaUlsSQsrcQ6c55LDh3acnAdbeIsFwdNwhDA1HUFQ3uyP+ohmtXqpGpilzCEQR2HAm7a0ROmMGHgLx9Dl6YNBBSW4CUOW5alH2X9AQiISE1GBciFne6Te91USY6TwZhIGKlsDxa6U5us7etC2bxyHtvZa9QvV13OP+xeklh40txnF5A6QlWqEWln5PnVkuzCRgLOURlAUOdBb1ejiu6JWPIUTr057fuGetK1s6mMiuEK092Cw0yHiTXxRb6EZ; 4:X/y+wNE5LOSeH/vasbMw7YSwmjGHRpD58TSzuyGln37dbi63GYJajK31tOzLF024Cdd9QZvC3QeuPsD200JvTdJHsV/7l4KQDX3L6LyIiZG8Pb1ECSRdfQVaoA74ymMpDv7/SxQFLBoCMoumtGSzE7zy4XB0TqMBs+LSSaK46ulPy2no+kfA2xFKgVUPCkzp6K2cJSKjFlQrLpptmZALqgXOP4oov+EyztG2tpkDCWD9g9FTdM/ryjTa6FLeXcgKL9ucg+kWuHCdqdY2bjOMeCoJNL5+jI5XqIFl1WvYPA/h+v+zu47U4IAWUT01syqK X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3231254)(944501410)(52105095)(93006095)(93001095)(3002001)(10201501046)(6055026)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123560045)(20161123564045)(20161123558120)(6072148)(201708071742011)(7699016); SRVR:CY1PR12MB0167; BCL:0; PCL:0; RULEID:; SRVR:CY1PR12MB0167; X-Forefront-PRVS: 06793E740F X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(39380400002)(376002)(366004)(39860400002)(346002)(396003)(189003)(199004)(9686003)(6116002)(53936002)(3846002)(2361001)(575784001)(86362001)(8936002)(2351001)(47776003)(66066001)(486006)(2486003)(23676004)(106356001)(50466002)(305945005)(5660300001)(7736002)(4326008)(55016002)(230700001)(81156014)(69596002)(1076002)(97746001)(8676002)(81166006)(2906002)(68736007)(97736004)(26005)(316002)(53416004)(446003)(386003)(478600001)(16526019)(186003)(58126008)(6506007)(72206003)(7696005)(52116002)(76176011)(476003)(6916009)(6666003)(11346002)(956004)(25786009)(103116003)(15650500001)(105586002); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR12MB0167; H:tlendack-t1.amdoffice.net; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?q?1=3BCY1PR12MB0167=3B23=3AZI43?= =?utf-8?q?rNzzEA9IlaThatte0N6c1hAYghl3YK+NCPmBWEbolyZ2CkB8f+QJiSC4?= =?utf-8?q?Y4SahtH6PTWQVWJM7i9QAmMTwtsgd27TVr5EOao5X4Na2asG/WQyHGMh?= =?utf-8?q?b3ZhCjMNof9WZTDyS0mJR5IJumsilPUYd9oxZDqgEeg/5zUs3Ld3knzf?= =?utf-8?q?vP1yzS8QC/ZIQvXQ8EOCFJoIXDj2lvMwnYKX2akYgLSuinRUD6c1ovwg?= =?utf-8?q?1LwiwnBZh+dbyATNJvNRsEeWGr43FCQPUtFTld10HFVcRbn9iE7wJ4Ri?= =?utf-8?q?iPMc20PG7jYSh7t4qCralvm8HTVgMN6ajqUpEW5jAhfqAWwGeVGJYDeI?= =?utf-8?q?zIeXi8w6gfR9Ajcn1hJPuTWuOdxlev0CJFPHGp5hysA2tdSoJCR9vDZ7?= =?utf-8?q?7uqkc4aVxV50pi3zzdqHzsA2HZLVRqELzGRZ4PsQC31lWZkJI9nPbMoL?= =?utf-8?q?VotU2xB1i9HksTC5DyuTcjr4va0PUwpSOkcf/KrPYuT6k3gYqf4hmnm/?= =?utf-8?q?M3OkzW1qXSYu00R9rzPJsBU2RN1nxNc0QayA5Su7QXNoodNgobr0EqKz?= =?utf-8?q?+cPaLzMlk3ZEt+i89dLdbaI5VJMDS1dmv5zs1u6j227z9N8bG9ppqw+H?= =?utf-8?q?JlBWeWWY4YVm9MKHsUVbLJyrsM5kENmPVofX2TY9lyxxbfk4kFYesC4A?= =?utf-8?q?xmqNnQrDu0tBv+8831cDYd6Sntrcjj0Vj5iP0qZ8DbA3VhRXRuUUZtzx?= =?utf-8?q?n+Q2m+WA2EY89K9NVeHsK7UGK0zqi7cxqmTDi3mBiv6Zt76/bcDzzco1?= =?utf-8?q?YKOg8cjlh+4pFgP641BauiC756fJUOYa2KXpxU+8O5pxZ8Zas7008jh+?= =?utf-8?q?/ezYL4jsHvlbGCYGqDJ8ZvfTjHzSXkgS3hOUxipN1A94L22jISBVujsL?= =?utf-8?q?/F8S8x4FTgwYbsKS+4rn1bgc4L5WR4U50C15anu5/Qa/sNoKT3Opt24l?= =?utf-8?q?y9KcokR6+UeKRjeR2x3krnEuZb/fWwqQclh9SwCg+2+6rIc6TSFTomnk?= =?utf-8?q?skZxMcL/szOhaUEp9h/WgGelKhJidwJaWD5yNE5pyXlzlufxzFP+74hS?= =?utf-8?q?lYJ+LwWBPDe/Al9vjPi8DF6abeV66yVNygce4+4Ji84e6RYH/qHMRtKj?= =?utf-8?q?IWTT/ZLSWDwA2VBiuPwzdltgcn8a4tmbOq61lIsl0umifJSrNiSmQ69t?= =?utf-8?q?0FOXukdedTgpc5hJuNVAKfid3G9cYlounz1jMu07b0znNczRue06MpAK?= =?utf-8?q?aB5+Bzz4ZPvpKN6kgBCntXZ4YClHgYKmwMblPHq0vGIEoV18dkoR/DyP?= =?utf-8?q?jrAMfPf6gjj47aPJHISXJd/nRBbPj9YUTJOOigYGoKVYA/gkn2Twmvk5?= =?utf-8?q?ZniY3GlnRXcAwcw+jxv+rqB+AlR0KcbpePq/EC8=3D?= X-Microsoft-Antispam-Message-Info: Iojqw9UNCAijXUZ7vO2WCc6/qYZEjCxj0f9Hxa5YuYT/RBlvzU1IuN9T9wVqW4Z881S9loJ4Ck9rC5KyXGqJnbpmqIDnGFZ0mV8WGg5lOMba2C1RYRVcKgvXXjOSZlauJAGDpxT8uJJJQISKo4k+mymJDmVJwv7p4vtF35X0b/3sbwBzjxt2rKkU4kGebivJ X-Microsoft-Exchange-Diagnostics: 1; CY1PR12MB0167; 6:A3h0SuLOCDXI8DRaNs0gg+95l//zV3S21zOIihX1JVGukVauvPobmsFTgdgdT75ylW1Uu0NErIObN6RdVoRrxOtEtCOI1clRy/Dxv5mJl+sVmA5kfEm8IDsz/O/D+p9ahFAlxIyQCr6TASix8GzcRslLgBokbde59EZNTUzDC2YnzklNIAJJnF8sBb4TjgryU1/075gGEVfwixBDQyS8jcMb9ZKFiPgtE1XSJEtmMhWUAqMbHgz0JPH2u7Lg1RwOh9c4jm8CM4m9QAsRiG8o/ZW2owRqVsnQ/E+0mr2m4upGCUyNaCslaiwRRdoMeIyozKTyON4CDPiZ1Y2O5XQtJmKQwbfh0IEYE2fmCFgcNKFs1xuuDZeTgGIRgmul9qVxUOvtESAwo9RpLtO9SlP1UTzw2p+eGnfIdJhIQFSuyDhyyxHnNtY5LFvtWYrdjcb6HAjv2yGZrLNGAc6qn/MG9w==; 5:5KTZ+Wyo4s1YqULlU6Ky2DglYlo1tXx6U1dLhGcp8DHKOKTw6o7O3DfWYJqwB62Rcc33mptaFGhazCtdZCtSzMmc/1z6si/kASHY5H8xBpekPX5XNjk0bZQaN3I9vIlxarLPNwSNov/whWnyY4p1xARSQNFnSmWNdCGfkDJpdIc=; 24:kyzQT71x9KZe01L7RbJgConRNFgUuqCyhObCXPC75mBncd/zy659/y0C2yQsqvT8i1Q5XIfqPbaFD/zcBTN+ozboZYGsy2t18ErL3IhTmnM= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY1PR12MB0167; 7:3sMC+iWNGNJoe6B6wKbtFcY/w2Qmc++q6VIhSKu6WVZ3Di9Rk/P99Fz872KXKosB0SjQdz9VGa9X/Fu9P7lY2w4zr0qDFVwzNVzpxrprDiUqpvj0nI/ckg89T5GYuOTrCUbgTg2+AV6G1YXvMyvz4dsZjifrP84GcwM+9Ot2XaRWLdoK5pVt72Fydt3PPauTwAxgOwZItx6J6L6gzZ8gcNWYngUm2ghL69VXdzzfUbt+KO/OGDaW4vxs3KePw/e3; 20:ClYkzZt1xvBOOn8OvaxD1jbzhTu7a2v4yjy+R72vmYzUmIDOUFVlWjpoR4ybNDDc8CK9vA5OLfe0Y0z447WVdf8DcCMRn4OJEqh744GrzNd8t9i7HRHnHjdUWzNXu08cwMDr+D4ohD68qWJi7wfwEwzzrDS0JvoApWJz3m1UqtHyRVas/DQPrhLlXCu8JlGEgmkJ/XYbQT6bwd5Leyi4fQhn5L3LVxHGhhusvMLQOpY5n9mx9R4pJtLoDcPVqkLo X-MS-Office365-Filtering-Correlation-Id: a53fdb0d-b0b5-41ab-08c7-08d5bf6638b0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 May 2018 22:00:09.8923 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a53fdb0d-b0b5-41ab-08c7-08d5bf6638b0 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR12MB0167 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Instead of using a quirk to make the BelFuse 1GBT-SFP06 part look like a 1000baseX part, program the SFP PHY to support SGMII and 10/100/1000 baseT. Signed-off-by: Tom Lendacky --- drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c | 109 +++++++++++++++++++-------- 1 file changed, 75 insertions(+), 34 deletions(-) diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c b/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c index dd747f6..194a569 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c +++ b/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c @@ -860,6 +860,9 @@ static bool xgbe_phy_finisar_phy_quirks(struct xgbe_prv_data *pdata) struct xgbe_phy_data *phy_data = pdata->phy_data; unsigned int phy_id = phy_data->phydev->phy_id; + if (phy_data->port_mode != XGBE_PORT_MODE_SFP) + return false; + if ((phy_id & 0xfffffff0) != 0x01ff0cc0) return false; @@ -885,8 +888,80 @@ static bool xgbe_phy_finisar_phy_quirks(struct xgbe_prv_data *pdata) return true; } +static bool xgbe_phy_belfuse_phy_quirks(struct xgbe_prv_data *pdata) +{ + struct xgbe_phy_data *phy_data = pdata->phy_data; + struct xgbe_sfp_eeprom *sfp_eeprom = &phy_data->sfp_eeprom; + unsigned int phy_id = phy_data->phydev->phy_id; + int reg; + + if (phy_data->port_mode != XGBE_PORT_MODE_SFP) + return false; + + if (memcmp(&sfp_eeprom->base[XGBE_SFP_BASE_VENDOR_NAME], + XGBE_BEL_FUSE_VENDOR, XGBE_SFP_BASE_VENDOR_NAME_LEN)) + return false; + + if (memcmp(&sfp_eeprom->base[XGBE_SFP_BASE_VENDOR_PN], + XGBE_BEL_FUSE_PARTNO, XGBE_SFP_BASE_VENDOR_PN_LEN)) + return false; + + if ((phy_id & 0xfffffff0) != 0x03625d10) + return false; + + /* Disable RGMII mode */ + phy_write(phy_data->phydev, 0x18, 0x7007); + reg = phy_read(phy_data->phydev, 0x18); + phy_write(phy_data->phydev, 0x18, reg & ~0x0080); + + /* Enable fiber register bank */ + phy_write(phy_data->phydev, 0x1c, 0x7c00); + reg = phy_read(phy_data->phydev, 0x1c); + reg &= 0x03ff; + reg &= ~0x0001; + phy_write(phy_data->phydev, 0x1c, 0x8000 | 0x7c00 | reg | 0x0001); + + /* Power down SerDes */ + reg = phy_read(phy_data->phydev, 0x00); + phy_write(phy_data->phydev, 0x00, reg | 0x00800); + + /* Configure SGMII-to-Copper mode */ + phy_write(phy_data->phydev, 0x1c, 0x7c00); + reg = phy_read(phy_data->phydev, 0x1c); + reg &= 0x03ff; + reg &= ~0x0006; + phy_write(phy_data->phydev, 0x1c, 0x8000 | 0x7c00 | reg | 0x0004); + + /* Power up SerDes */ + reg = phy_read(phy_data->phydev, 0x00); + phy_write(phy_data->phydev, 0x00, reg & ~0x00800); + + /* Enable copper register bank */ + phy_write(phy_data->phydev, 0x1c, 0x7c00); + reg = phy_read(phy_data->phydev, 0x1c); + reg &= 0x03ff; + reg &= ~0x0001; + phy_write(phy_data->phydev, 0x1c, 0x8000 | 0x7c00 | reg); + + /* Power up SerDes */ + reg = phy_read(phy_data->phydev, 0x00); + phy_write(phy_data->phydev, 0x00, reg & ~0x00800); + + phy_data->phydev->supported = PHY_GBIT_FEATURES; + phy_data->phydev->supported |= SUPPORTED_Pause | SUPPORTED_Asym_Pause; + phy_data->phydev->advertising = phy_data->phydev->supported; + + netif_dbg(pdata, drv, pdata->netdev, + "BelFuse PHY quirk in place\n"); + + return true; +} + static void xgbe_phy_external_phy_quirks(struct xgbe_prv_data *pdata) { + if (xgbe_phy_belfuse_phy_quirks(pdata)) + return; + if (xgbe_phy_finisar_phy_quirks(pdata)) return; } @@ -1027,37 +1102,6 @@ static bool xgbe_phy_check_sfp_mod_absent(struct xgbe_phy_data *phy_data) return false; } -static bool xgbe_phy_belfuse_parse_quirks(struct xgbe_prv_data *pdata) -{ - struct xgbe_phy_data *phy_data = pdata->phy_data; - struct xgbe_sfp_eeprom *sfp_eeprom = &phy_data->sfp_eeprom; - - if (memcmp(&sfp_eeprom->base[XGBE_SFP_BASE_VENDOR_NAME], - XGBE_BEL_FUSE_VENDOR, XGBE_SFP_BASE_VENDOR_NAME_LEN)) - return false; - - if (!memcmp(&sfp_eeprom->base[XGBE_SFP_BASE_VENDOR_PN], - XGBE_BEL_FUSE_PARTNO, XGBE_SFP_BASE_VENDOR_PN_LEN)) { - phy_data->sfp_base = XGBE_SFP_BASE_1000_SX; - phy_data->sfp_cable = XGBE_SFP_CABLE_ACTIVE; - phy_data->sfp_speed = XGBE_SFP_SPEED_1000; - if (phy_data->sfp_changed) - netif_dbg(pdata, drv, pdata->netdev, - "Bel-Fuse SFP quirk in place\n"); - return true; - } - - return false; -} - -static bool xgbe_phy_sfp_parse_quirks(struct xgbe_prv_data *pdata) -{ - if (xgbe_phy_belfuse_parse_quirks(pdata)) - return true; - - return false; -} - static void xgbe_phy_sfp_parse_eeprom(struct xgbe_prv_data *pdata) { struct xgbe_phy_data *phy_data = pdata->phy_data; @@ -1076,9 +1120,6 @@ static void xgbe_phy_sfp_parse_eeprom(struct xgbe_prv_data *pdata) phy_data->sfp_tx_fault = xgbe_phy_check_sfp_tx_fault(phy_data); phy_data->sfp_rx_los = xgbe_phy_check_sfp_rx_los(phy_data); - if (xgbe_phy_sfp_parse_quirks(pdata)) - return; - /* Assume ACTIVE cable unless told it is PASSIVE */ if (sfp_base[XGBE_SFP_BASE_CABLE] & XGBE_SFP_BASE_CABLE_PASSIVE) { phy_data->sfp_cable = XGBE_SFP_CABLE_PASSIVE; From patchwork Mon May 21 22:00:15 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Lendacky X-Patchwork-Id: 917894 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=none (p=none dis=none) header.from=amd.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="5ZZdNfn4"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40qXlK4TPtz9s16 for ; Tue, 22 May 2018 08:00:29 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754083AbeEUWA1 (ORCPT ); Mon, 21 May 2018 18:00:27 -0400 Received: from mail-cys01nam02on0086.outbound.protection.outlook.com ([104.47.37.86]:39264 "EHLO NAM02-CY1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751050AbeEUWAU (ORCPT ); Mon, 21 May 2018 18:00:20 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=J72rf28v9CitbDr9j3vZTQolgvDMttXwI7jxGeCmICQ=; b=5ZZdNfn4oCvUHjpo+3Jv6oav2lgZFhAhFDHFwmMy/ogNOCkGDt7YkB7dZnk4yV4qhWYHNNgVtEbX/gq5lEOXsDPB9UyhbQdtMBRyocc1nQxiikxhE/bu/oufUDr93E9ub4MkFF+YUbxhHmxiKqLGGXzB4PYFZBFTrKG3bZaIPKY= Received: from tlendack-t1.amdoffice.net (165.204.77.1) by DM2PR12MB0170.namprd12.prod.outlook.com (2a01:111:e400:50ce::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.776.16; Mon, 21 May 2018 22:00:18 +0000 From: Tom Lendacky Subject: [PATCH net-next 12/12] amd-xgbe: Improve SFP 100Mbps auto-negotiation To: netdev@vger.kernel.org Cc: David Miller Date: Mon, 21 May 2018 17:00:15 -0500 Message-ID: <20180521220015.8135.42302.stgit@tlendack-t1.amdoffice.net> In-Reply-To: <20180521215818.8135.83100.stgit@tlendack-t1.amdoffice.net> References: <20180521215818.8135.83100.stgit@tlendack-t1.amdoffice.net> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: SN4PR0401CA0034.namprd04.prod.outlook.com (2603:10b6:803:2a::20) To DM2PR12MB0170.namprd12.prod.outlook.com (2a01:111:e400:50ce::21) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(48565401081)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:DM2PR12MB0170; X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0170; 3:uFgpsnekVw+dzze1BvDXQO2Pi/VTL7XGAGvwjYua4V1EMwGKSLeq+1zc2EpHyngwvwE+e/DfNPEjQejpJQwE0+WFblu7Qfm6h+0UdR7CfCf4g0doRBSxfClzsMrsoZn8ij3uZGuHqJ9DkMjmcJR2BAPseTAQJO8GKjihEZNh+zK9wVPYyLWwcywTZ2meDdPEQBUWy/Ytj5nR7ZAIqyjK0hpOXK7b6qIYh+I5Cq3RF1EY7IT3ImzkcKyrBE8NlG8p; 25:Zrf/hn07sfeVAKplqPNza7XleiFzKCAJGkZn4r1+rACN3M4pH2lmH68BvvuLGpDZOC4z7YIw3LfabroqPW6I++Wz+GEiFELFtIHbeiiYkJBIc1N47YDyXnFULdVBWXUZNABxJQXcvKLVj2NabKTjOPuJhVf3zon5cXjo6crsuytdCaG/1k3HRayff4ErVl8hIyc74TFsuY7Ee5+vL40G/Fe8qv7DjAvp+akjTX71F+oQcPGAmlfu3tTOB1XanKNbFwDFi0PgqwYCaln5MVFn+9FIduXB058cGZLV9X0kFjsCArqIe3YJtSSp6cT93e1WlCn/aIiQu8uC/tEPCnrPjQU8L2yl1YP7Rcyogll1Ja4=; 31:SphQy4tyVQeZLnLba0628/79tvx06OaGKMrfBNYfTOwrLXGbRg/wLy5noIhlFYA+ydpFNBFNHftVjadcLoF55OPnTVNzwoGSiLmq1RH3se1hCzHitC9VfjXtIx3MDhtVwQYGjQQRfwWqEKWM5AwFkWoeXWFMComB27M92OwNV6Fv5LNJOk7JLTcaA0uVy+L6qTR1uBG3WS3NMAZQsB0yn+lFh07VdTPW8bojlOYHp6w= X-MS-TrafficTypeDiagnostic: DM2PR12MB0170: Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Thomas.Lendacky@amd.com; X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0170; 20:Xc7snqSku+Uj3jLi0g8KpHNISZHzqHZW4gjhQgTXlU7BBJ+6Z2ubeBldM68O/hiO44EtRYKWD9s3ar5PqHDU47deixblj6iA4cAw2jzC1ezRDbgi2FpJcr6wt3uq0D4dBop1gO4TQiqcbc2hfAOTl2tmocaMF9oV7ohpeHLsJmDpiqJCCJcul0BzQEozpfyfmKC5Y6XXa5eRc+aEBX+rgaLXM6EtUC1hixSBoybtNeXxxEtD/TlDxMG5KSYJAbLPRHY4ZYEJquiDinzn0j3VfkOTgLa6ZFRJ4uroAhLT4h2NaEReSJbS3ejFB3j6foGK6uGfsyAXkPGIskGltVesmIroe+Cu7EQ2APejHf6uTriDCzR3CocoqTM2m0Iz7pOv65MBxc8/Lxd+PxUDhYKp4bFgBHn2dE55yc8Onz4ds3eQcAzMO0/VFFG2YJmE8DOcEiwZ4dpOf9zBxp/yqu6Okhaf8oc2fq8aJoMOJoGQNN5osqautG/ImxKgRyfA5nzJ; 4:UZ0ChLvydDRilIkg5VS+X3jlazRWUr49VGrjH/MS9Sj1zl2sqihZASPtYVjHgLY+RyXS5bZU268BZQmFMmmvy4bhiaUUQM3QzdY16+a1G3ewUPf7bK5145ACloXlxyiiBAWOYhpx10JCHpRiP4xMQdYdo50mJ6xUR8GDaAQZetA1+qNhHQWNjTTr2gZ5lxHo2taC3IuOKIPJfiBnnzSCkyOceBTMmZLE+0SdN2LBkPPxGIcPfHDvb6AVahAEPobcbvoeemgU50gNYC+UzTxi0AWWXt8Oag52zw3Kdgn34HmQEWCHAVuX/OVcvULqMXCE X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3002001)(10201501046)(93006095)(93001095)(3231254)(944501410)(52105095)(6055026)(149027)(150027)(6041310)(20161123560045)(20161123558120)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(6072148)(201708071742011)(7699016); SRVR:DM2PR12MB0170; BCL:0; PCL:0; RULEID:; SRVR:DM2PR12MB0170; X-Forefront-PRVS: 06793E740F X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(39380400002)(39860400002)(346002)(376002)(366004)(199004)(189003)(486006)(81156014)(55016002)(26005)(1076002)(5660300001)(186003)(16526019)(53416004)(66066001)(7696005)(23676004)(47776003)(2486003)(81166006)(8676002)(52116002)(2906002)(386003)(6506007)(59450400001)(76176011)(97736004)(4326008)(476003)(50466002)(6916009)(6666003)(2361001)(2351001)(956004)(69596002)(105586002)(97746001)(106356001)(58126008)(72206003)(478600001)(9686003)(86362001)(53936002)(8936002)(446003)(7736002)(6116002)(103116003)(3846002)(25786009)(68736007)(316002)(11346002)(305945005)(230700001); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR12MB0170; H:tlendack-t1.amdoffice.net; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?q?1=3BDM2PR12MB0170=3B23=3AdYta?= =?utf-8?q?3a6Jtq/iIHCFD+1CJZNnerMI4G6FYr1WQs/plRuk4NirxX4JfsYB95ga?= =?utf-8?q?3IMAEWTz7ePunRoxEYJqOpTVjxtZkbMiJd9pdfDMk4pFQMt+9GTkX6AH?= =?utf-8?q?kdLBSK55uQWP+MubXqRz2Qir2l+rWzkq7tQhlySPM8AnW2J1hWqknpkM?= =?utf-8?q?PjT/MQJ3QlB0ZcqVkiuHg2EeKO+1kFBTbk7oe01QzRpGq2vNFVLWHK0T?= =?utf-8?q?+zw/z2RzzhW3a5MKUfK2XsWjdp+4yXL8yKZrm+/uw6HWGfEZ+5A9JRLp?= =?utf-8?q?mtseBPO6SvjJl0RgUI7dbtcpWnb6WbiJbHzoovSknCUF77zFiTGqIqQc?= =?utf-8?q?IdJrmWqHwM3l4pNsvy8Phre4nrRTzBiFNJFoVXto8L4uS8H2SMKzoyPz?= =?utf-8?q?pMnDf06rwOuAi50qBOKlEcxPhPqHTJeGlkryTZYSAZitJ/8PC+pJbmEL?= =?utf-8?q?4fzrXz1WPvw475yYoUcuNUw92TlJ1oerpEv+4dnRGrOBqx6tIOIRfWMM?= =?utf-8?q?tAN8WTkPZcKuqSDy/+m6Royju6m0aPuXXfKYLxKluVAds/nIsxfcqiyD?= =?utf-8?q?QKkn2JDn4iTrCWmYOUAfsmfQ2gG9tRfu67ladXGzBDBL+O15ITd9EH8K?= =?utf-8?q?ZgDdzeznUpCD8gh2SbE/3nR9m8GQMPgKEr0zfEE5zmpXYIk8lQVGcDo8?= =?utf-8?q?T8HOC/VAWXj9lD6xmNWf8rG0cJ+i/H3v3A/AbvN5Zwa+TwLE/QQXNw/s?= =?utf-8?q?qXKadlg4DJVZwsTmcDHYf1N/oC0os1SVcxqE/Wdnpoep7z6mKjnGNDP0?= =?utf-8?q?aOnDPdXh0OaLxoT+xFru6LJHvk7r57csqEmc6OdiN+jG96Nn/X3dPiA3?= =?utf-8?q?SzSStpHFk4U3OrXrOTZvOqWrjR6V8pCQjl8FefGKOelGJHMC973k11mb?= =?utf-8?q?dwvEKKKdVplrSx+I014IPzH3xBh1cdpkGCmaw2yukQAc5TFDNVL8cwYS?= =?utf-8?q?dHgBfPj6FuFTxTFflBPVNrZWgmgtxSfhjrqJetZwpbW6dnENuzZGNygq?= =?utf-8?q?/Q46neOZkaMmTb5TyaX59fuLG6hDe98/KEXoumF+lrP1CvW6B5EbvgdI?= =?utf-8?q?ufLdB/YjYl6sgzInqiyX4GtGemXco197ak+jN0nSzqWllYI18ppI0ZkN?= =?utf-8?q?DRmlz9wIHfvaGXlCsHT55iWvZB4M0AG3jTqwNcTTAwcTO1KI4C+LJ96R?= =?utf-8?q?aoIHtauJyXWoiIatKq5mjUd/3NNddY7MCZV4PkYpNN4qM5Pt01Lr0Bl4?= =?utf-8?q?BH/GmDnJSOEJ/34Siw6q5LkDeCQ0ypZ5lA9uqEKhYdB0oqhJlAfivMLx?= =?utf-8?q?gU/sjJOkWw7QXqg5ztq/J9DfR1h6ojwb7/QhPN3Y6zkdbMZS/bHjwbi0?= =?utf-8?q?oA9Mqwns2L7Zvsb/RA=3D=3D?= X-Microsoft-Antispam-Message-Info: mwMPANuZNtBqvRtxWH8erAdjgbTJM2GxYTPPlOadXhB6Hp7n6gva+lDMFpWYC2lUVNw3qBEHshCEaHSOdR9ELhaiPqhvJfudfArE0cIlLXrmEpbZCSii3OHPcKO7cQ/Qi20Xb+2AyTnNvqbgYX2H54GpIuZNXwVhphtZQn3tQHe8Zp2SI5PXoNADMLrAcKaq X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0170; 6:rPHqCHwQ6xs5CPgY6FtSSlvCNCX9RpVPFlVliCqmJhvk8N7JbYlk2qJoZC0Fr+Oeb3W+kENEPsZxS6KBXxU2CsdW5je7WgeJRPJpVOMQzdFOXBBbTJFI6zkgEIBS+Yye276oLEVZ2vl0e1nNQdrrcKBIB+vGhw1uVqoIxDqwq6k8pFfY43+JQpRxyzXnKxOnjP4G3Ev9kOJ5BrhSf00GpQDBnOb5b2mkP2nJIGe3eZFNn2wSFgVdNmfu2tozvPsk/AT38xy5/gfup/1j8p2xzuqVQDGrQKY5uBwW56CbIR02ztncEnb+t6+qu/zWxFq2efTRCbvsI1S+SNkZX0SCMIbsUTiYQWYkCwN4JOESRluIsZVskf10ojlXRx+A0Z65Zv6nwcgTFPMo3cj7tiFezDu52JgAJm0I6XFpojBrnEkqA1sT/jitZdo23H4r8qg/ZyVg4UlaeGqpEv9T4SybkQ==; 5:/1yEhpsLTrPjy2rFGRRg5MRjXkctK8oEvaUgbaEskNoGR0LatX98qiC/OSec6PYj0TJO9d80oP9/MhH5MrqImiyUGTNtJOjEL4nI7+TlHgotY7nMO3LWoTfEFFF5GsQleEEY2Avd9AjxIO/FosYHK+H2Ay01ut7zacFHurixFXw=; 24:gHrDOEtr9ffAA9o1NZP4Ri5M3O/Bcho+ZlRlQUMGvQWmx26AlGpsF6QYMI3K5PYP6vZDp3SvFx7INys/eGNyAXlKzrB9LGDNaiodn64p+74= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0170; 7:EGRU0NkONA51gthMO+erMvW+FEBPFJZMtfzeBrazpQdH6Tw8Si4jUFmKBNyDwiYnV4fEH4LFpIgsDOTBf6cxQ2ewQAGINIDRH/A6ALdtfhuh952w8PaDOD1t1DqmHhmLJZbtt+aRsQhkCPsBXjync192KeYh+Ku5LbSy3Jshg9Ya6VE3D5YDxcIUWb2BzUtQfeLS+OV3YGImF9lcHLCeyVrokc5hWRzK8hfEw5EFK18Uo6/P920+trOfkiE1ZTWD; 20:dgT8E7gwIKxHpJy9UG7lwEAfEYC/0hrHI95hpbIn+bDYqSBk+dQ3gfJix+XCcxQQFW3MIhzOXDhuqkVPZWDG+bLKK4UI3fwpVYgCXdDycysslgMYtT26kJrRC5FdLvq5SNIyoK0E+QUqjYGBEEO4ojk7TdTtul78COQ2ozv3rqqaPzMyh2wqyCyrszQOwFnO/CsUUQZDtabC5Nkg/37PYWQsWL5VvX6EHgshyvz8zF+SnwzW1wNFRo/vuhyIuFdC X-MS-Office365-Filtering-Correlation-Id: 0061445b-010a-47bc-a0af-08d5bf663da4 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 May 2018 22:00:18.2061 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0061445b-010a-47bc-a0af-08d5bf663da4 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR12MB0170 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org After changing speed to 100Mbps as a result of auto-negotiation (AN), some 10/100/1000Mbps SFPs indicate a successful link (no faults or loss of signal), but cannot successfully transmit or receive data. These SFPs required an extra auto-negotiation (AN) after the speed change in order to operate properly. Add a quirk for these SFPs so that if the outcome of the AN actually results in changing to a new speed, re-initiate AN at that new speed. Signed-off-by: Tom Lendacky --- drivers/net/ethernet/amd/xgbe/xgbe-mdio.c | 77 +++++++++++++++------------ drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c | 6 ++ drivers/net/ethernet/amd/xgbe/xgbe.h | 1 3 files changed, 50 insertions(+), 34 deletions(-) diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-mdio.c b/drivers/net/ethernet/amd/xgbe/xgbe-mdio.c index 450b89c..4b5d625 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe-mdio.c +++ b/drivers/net/ethernet/amd/xgbe/xgbe-mdio.c @@ -331,13 +331,15 @@ static void xgbe_switch_mode(struct xgbe_prv_data *pdata) xgbe_change_mode(pdata, pdata->phy_if.phy_impl.switch_mode(pdata)); } -static void xgbe_set_mode(struct xgbe_prv_data *pdata, +static bool xgbe_set_mode(struct xgbe_prv_data *pdata, enum xgbe_mode mode) { if (mode == xgbe_cur_mode(pdata)) - return; + return false; xgbe_change_mode(pdata, mode); + + return true; } static bool xgbe_use_mode(struct xgbe_prv_data *pdata, @@ -1178,21 +1180,23 @@ static int xgbe_phy_config_fixed(struct xgbe_prv_data *pdata) return 0; } -static int __xgbe_phy_config_aneg(struct xgbe_prv_data *pdata) +static int __xgbe_phy_config_aneg(struct xgbe_prv_data *pdata, bool set_mode) { int ret; + mutex_lock(&pdata->an_mutex); + set_bit(XGBE_LINK_INIT, &pdata->dev_state); pdata->link_check = jiffies; ret = pdata->phy_if.phy_impl.an_config(pdata); if (ret) - return ret; + goto out; if (pdata->phy.autoneg != AUTONEG_ENABLE) { ret = xgbe_phy_config_fixed(pdata); if (ret || !pdata->kr_redrv) - return ret; + goto out; netif_dbg(pdata, link, pdata->netdev, "AN redriver support\n"); } else { @@ -1202,24 +1206,27 @@ static int __xgbe_phy_config_aneg(struct xgbe_prv_data *pdata) /* Disable auto-negotiation interrupt */ disable_irq(pdata->an_irq); - /* Start auto-negotiation in a supported mode */ - if (xgbe_use_mode(pdata, XGBE_MODE_KR)) { - xgbe_set_mode(pdata, XGBE_MODE_KR); - } else if (xgbe_use_mode(pdata, XGBE_MODE_KX_2500)) { - xgbe_set_mode(pdata, XGBE_MODE_KX_2500); - } else if (xgbe_use_mode(pdata, XGBE_MODE_KX_1000)) { - xgbe_set_mode(pdata, XGBE_MODE_KX_1000); - } else if (xgbe_use_mode(pdata, XGBE_MODE_SFI)) { - xgbe_set_mode(pdata, XGBE_MODE_SFI); - } else if (xgbe_use_mode(pdata, XGBE_MODE_X)) { - xgbe_set_mode(pdata, XGBE_MODE_X); - } else if (xgbe_use_mode(pdata, XGBE_MODE_SGMII_1000)) { - xgbe_set_mode(pdata, XGBE_MODE_SGMII_1000); - } else if (xgbe_use_mode(pdata, XGBE_MODE_SGMII_100)) { - xgbe_set_mode(pdata, XGBE_MODE_SGMII_100); - } else { - enable_irq(pdata->an_irq); - return -EINVAL; + if (set_mode) { + /* Start auto-negotiation in a supported mode */ + if (xgbe_use_mode(pdata, XGBE_MODE_KR)) { + xgbe_set_mode(pdata, XGBE_MODE_KR); + } else if (xgbe_use_mode(pdata, XGBE_MODE_KX_2500)) { + xgbe_set_mode(pdata, XGBE_MODE_KX_2500); + } else if (xgbe_use_mode(pdata, XGBE_MODE_KX_1000)) { + xgbe_set_mode(pdata, XGBE_MODE_KX_1000); + } else if (xgbe_use_mode(pdata, XGBE_MODE_SFI)) { + xgbe_set_mode(pdata, XGBE_MODE_SFI); + } else if (xgbe_use_mode(pdata, XGBE_MODE_X)) { + xgbe_set_mode(pdata, XGBE_MODE_X); + } else if (xgbe_use_mode(pdata, XGBE_MODE_SGMII_1000)) { + xgbe_set_mode(pdata, XGBE_MODE_SGMII_1000); + } else if (xgbe_use_mode(pdata, XGBE_MODE_SGMII_100)) { + xgbe_set_mode(pdata, XGBE_MODE_SGMII_100); + } else { + enable_irq(pdata->an_irq); + ret = -EINVAL; + goto out; + } } /* Disable and stop any in progress auto-negotiation */ @@ -1239,16 +1246,7 @@ static int __xgbe_phy_config_aneg(struct xgbe_prv_data *pdata) xgbe_an_init(pdata); xgbe_an_restart(pdata); - return 0; -} - -static int xgbe_phy_config_aneg(struct xgbe_prv_data *pdata) -{ - int ret; - - mutex_lock(&pdata->an_mutex); - - ret = __xgbe_phy_config_aneg(pdata); +out: if (ret) set_bit(XGBE_LINK_ERR, &pdata->dev_state); else @@ -1259,6 +1257,16 @@ static int xgbe_phy_config_aneg(struct xgbe_prv_data *pdata) return ret; } +static int xgbe_phy_config_aneg(struct xgbe_prv_data *pdata) +{ + return __xgbe_phy_config_aneg(pdata, true); +} + +static int xgbe_phy_reconfig_aneg(struct xgbe_prv_data *pdata) +{ + return __xgbe_phy_config_aneg(pdata, false); +} + static bool xgbe_phy_aneg_done(struct xgbe_prv_data *pdata) { return (pdata->an_result == XGBE_AN_COMPLETE); @@ -1315,7 +1323,8 @@ static void xgbe_phy_status_result(struct xgbe_prv_data *pdata) pdata->phy.duplex = DUPLEX_FULL; - xgbe_set_mode(pdata, mode); + if (xgbe_set_mode(pdata, mode) && pdata->an_again) + xgbe_phy_reconfig_aneg(pdata); } static void xgbe_phy_status(struct xgbe_prv_data *pdata) diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c b/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c index 194a569..3ceb4f9 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c +++ b/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c @@ -902,6 +902,9 @@ static bool xgbe_phy_belfuse_phy_quirks(struct xgbe_prv_data *pdata) XGBE_BEL_FUSE_VENDOR, XGBE_SFP_BASE_VENDOR_NAME_LEN)) return false; + /* For Bel-Fuse, use the extra AN flag */ + pdata->an_again = 1; + if (memcmp(&sfp_eeprom->base[XGBE_SFP_BASE_VENDOR_PN], XGBE_BEL_FUSE_PARTNO, XGBE_SFP_BASE_VENDOR_PN_LEN)) return false; @@ -978,6 +981,9 @@ static int xgbe_phy_find_phy_device(struct xgbe_prv_data *pdata) if (phy_data->phydev) return 0; + /* Clear the extra AN flag */ + pdata->an_again = 0; + /* Check for the use of an external PHY */ if (phy_data->phydev_mode == XGBE_MDIO_MODE_NONE) return 0; diff --git a/drivers/net/ethernet/amd/xgbe/xgbe.h b/drivers/net/ethernet/amd/xgbe/xgbe.h index 7a412cf..47bcbcf 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe.h +++ b/drivers/net/ethernet/amd/xgbe/xgbe.h @@ -1261,6 +1261,7 @@ struct xgbe_prv_data { enum xgbe_rx kr_state; enum xgbe_rx kx_state; struct work_struct an_work; + unsigned int an_again; unsigned int an_supported; unsigned int parallel_detect; unsigned int fec_ability;