From patchwork Mon Apr 23 16:43:08 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Lendacky X-Patchwork-Id: 903019 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="ozY4XHEY"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40VC2G0lj7z9ry1 for ; Tue, 24 Apr 2018 02:43:18 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755510AbeDWQnQ (ORCPT ); Mon, 23 Apr 2018 12:43:16 -0400 Received: from mail-sn1nam01on0052.outbound.protection.outlook.com ([104.47.32.52]:33491 "EHLO NAM01-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754788AbeDWQnO (ORCPT ); Mon, 23 Apr 2018 12:43:14 -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; bh=qkyEz9xjCSiM4C/lErFp1HCmgTnMLjVvL27Pd4yG9So=; b=ozY4XHEYj0fcLRz7xQroP9qDNNzRHRDXhydLm0WVSnEWfSPlkaJQZ5qvz5SAZrNKeiJhYy82DMobfuA2vanS86wTtB43mOe6xAFQyPXVsRc0j8CdN1HOfo19LOhiArbovzvxyrbj7sXXU6+SYFaGVndbakX4mLPTI1othlLeea4= Authentication-Results: vger.kernel.org; dkim=none (message not signed) header.d=none; vger.kernel.org; dmarc=none action=none header.from=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.696.13; Mon, 23 Apr 2018 16:43:11 +0000 From: Tom Lendacky Subject: [PATCH net 1/3] amd-xgbe: Add pre/post auto-negotiation phy hooks To: netdev@vger.kernel.org Cc: David Miller Date: Mon, 23 Apr 2018 11:43:08 -0500 Message-ID: <20180423164307.18740.66109.stgit@tlendack-t1.amdoffice.net> In-Reply-To: <20180423164258.18740.98574.stgit@tlendack-t1.amdoffice.net> References: <20180423164258.18740.98574.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: MWHPR12CA0059.namprd12.prod.outlook.com (2603:10b6:300:103::21) 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:z4m5kITnGEicSSyoJ3uLlPwJI3P6pv1AhFZtJSpR8+YGBSVtD4PCKFXRpT/+OPkCtyCKfmujfmI1kXyx7Y//uVlpliNjDQt16KAh7R0BY5XlxWVXlYd6P7DUAymMSjhKs+D/10B9+ZBPXy/TNFxDCxbBYzBfXF40iEOYSeYi9kwHkgeulST6tqg5Ek3BPMP1Q2WSXGK036wQbD9yTqFORSax85m3MbNznVV9IO9ZDzPWc/NbEwp3nHt159eFJB5M; 25:k6ssozP9nqPI5hT5MFFZxTxZ4+EdxUsGB2KZ8gPj5WUd41V6Ttr3dvSrkJhM8LGXKUkTSMTMZHH5OogHUbK1KGLz5kTfje2VfhW6mB9N1faTUlCDHGFwOhoNeK43pjwtq+TRLPTMdWg6Z9bir4+pccVY62tVCHldo9MPqvKxFXIOf6A9kFO9mK3CCd1ps+M205mrykUQviWvi7UC01q6MfRxOWGZTBxG9XXOhZ8QzYkuOE45vRj/74fojn2OAoM9AWJRKJ2E1LvvpiGuYqoQP3n6mfiLbHRy2mxdTuGxalzBoAJCaHHmVOC/HRCLvh2pOsnugwLhklvcsrhTTaAh3A==; 31:7mrjtXQmiESJm8bCuv1fdENdBjBi3LheEuhYRmwltfD7tjpPFx3CCBFH8wP7454oFZ/5118QAG2VWvGbKZ/syrlrmCMwRcGQCMc9N2bD/WAyo4N2dr/hEf28oPLllC+phXZq869h6PDrTI/0gSJwnImzfLv99ZBpOm46MD33fLg11Br9ddpMhPoapd6xlk/bgnaBoONqAZAAdZaoj/cyRAkYFmn7BIlm1qbctcImHi8= X-MS-TrafficTypeDiagnostic: SN1PR12MB0174: X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB0174; 20:6me5GLxieEtdR0oOnxsfyNC7sfBE6o+HZxCNBc94HFrkrE2X0vHSJ7Xi/KZNAmwL1xB1beBlWCXV2MxCTqFjFnfiUfISqNIHSiRQanKqfaNxXGhhK/xKPvZoAwMHAlhM435ulNCVEen/ttoaQS0r4lss5sKVQIaJuKmzAu0MyeOg1OxJCrGqkpjfnqNCk/rPPWk+Na8qEvssnseRzxRnirRwClpk3+U9EmzyROu08dz8tAAJ/tH1XdH4RoEBW49GI/zWaaE2fdeJa/EGd1mS6VNa1W9H6ECdvnQrAZPrEG3ndOH/xCo73Vq1QY0LA1+kiP4XCb1twcKnXsR9hkZqddfq2fz5bKqNXFmiTRN7JrqRaQAR1jrzISDCD2F2jsIawCSfyzkp3WqYhb7Fn/3WnGTveT4O5nAj/kApkFx90NYfy/h40o/wI9XZoX6zFh11JXCihdKgWVlYum+eAevsX95X0j0zO0zoY8ieeis52/1PZQaTgnnK09CjEswPNcRu; 4:tU4CP/UmyyetM3B1wvqEs2YjaaAUtu88qaDHSVoH7gi/+oOHTjhRNMnoXdnIppfaIddJtTD05Yo7wZ6sI6C72dNy6RBevLAkCCiX1WdqDHnc3rnxtX/atUuRUe6RKshegkco4DzFsIzwscm//Lndf6XYU0e5PHGARfsyG3nO/Li4GXpT40MPnexN5buuk0rSs47vvOkYusk41Xi1jSiZtWd6EKtDLxr/RVsTAC5SPuqcqJ24SxQHWS/wRYyyXBdEvdw662gYTQSVYhS2X1nf+pOeVzcPjrMJN9WDJ+YRP+8CMUhbUBRu4iv/ykGKAsCb X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(93006095)(93001095)(3231232)(944501410)(52105095)(3002001)(10201501046)(6055026)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123558120)(20161123560045)(20161123562045)(6072148)(201708071742011); SRVR:SN1PR12MB0174; BCL:0; PCL:0; RULEID:; SRVR:SN1PR12MB0174; X-Forefront-PRVS: 06515DA04B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(39860400002)(346002)(376002)(366004)(396003)(39380400002)(230700001)(52116002)(6116002)(6666003)(3846002)(9686003)(53936002)(72206003)(2906002)(446003)(476003)(956004)(11346002)(478600001)(1076002)(25786009)(6916009)(55016002)(4326008)(316002)(86362001)(47776003)(7736002)(186003)(16526019)(66066001)(305945005)(5660300001)(50466002)(103116003)(6506007)(8676002)(386003)(8936002)(81166006)(76176011)(53416004)(575784001)(26005)(23676004)(2486003)(7696005)(2361001)(2351001); DIR:OUT; SFP:1101; SCL:1; SRVR:SN1PR12MB0174; H:tlendack-t1.amdoffice.net; FPR:; SPF:None; LANG:en; MLV:sfv; X-Microsoft-Exchange-Diagnostics: =?utf-8?q?1=3BSN1PR12MB0174=3B23=3A6bpk?= =?utf-8?q?sl5j6uOmI6fD3r9UcjIcbV2AdNR5jFsJ/7juhbT4SaOSg35O1ApN1d0P?= =?utf-8?q?4zoeOWKORxFG79jPdfNTRDphrfVt8t2noYxiL2FfI38mohC9RndMWPLa?= =?utf-8?q?hmrMZEgz7bPSngYLmmo7RHt7szuOOG3Zj497gCdCB3fjOtiECWjVtcJL?= =?utf-8?q?O52W+ofZ/75s3wiwKYk4m4nfYjYzWRjbCUBr/3jCz7Rpp/N1B/6W0RlY?= =?utf-8?q?RqIJzB2jUtzHTMXSol/rcbwfO5UbKfsxe25qcGLYIFVBxiHp7GXI6rxk?= =?utf-8?q?48xXIpXKnfAM/GeJu0u3hRp/JkIOGLc8gyoSzp/LmhHn327/yFcDcgnD?= =?utf-8?q?htFVzDfA2hXQMwgoKqP237RYZkjI3WasfAzqOAPYr5yC8/ywZZsWvP+S?= =?utf-8?q?kzdWlSa5Wx4VovTTnaO0GHHEDSyfIVkPXiRV2/Oq50pVpcEjY5AXfWV3?= =?utf-8?q?tbpdLK3SRyhP6AyVmQDfOcmB0U5EDy4zOW0oVS11RBTD/pHNZGsg6Ocf?= =?utf-8?q?s6Boum0XdEJh1yFzcu8UP9D5RALObtbzSwh7i5nFqrHmUTiqqu5PiNQU?= =?utf-8?q?a37tBdvt2rNc/dMCrdDd0QEUXxUA9Av1C90fzP+dJWUVDXi+6OHqy0wG?= =?utf-8?q?c0AINyc3j/4a1d3mNmBVvoqkObU45gROIQgBOeEmKyFXWvPT0sV1pe8t?= =?utf-8?q?qxWaXO2R/P+8dF0Y5wT/2xALAiv2Sp8c4eFqOOreNaYyNtDCa998Gg1R?= =?utf-8?q?iw/h8whyxF2bIoQwr4VH5mSMkD9KIjLflusjHfUWxwceBnD6gv7jOFhc?= =?utf-8?q?eErwmowAg0RKBYzojU8myDxWNIoXms7X8FRIv3jBL0mCDQRMt6TOBHzC?= =?utf-8?q?Xz2NdaCXFMxic8tZ09lopD/FdjN20fhxVnLYYkyDdc79yLzXwRIJ8B7H?= =?utf-8?q?qhh9sBBDM5bM3sU7GEbyLrVGDaPXfr+XgMYLqWwZC3OJC9Wc/utqGLv+?= =?utf-8?q?FqH/KAjUBCD5DFgPyAoEf3VEn8368zjrFQen8Dputc/cFRRMI5Sx1uwo?= =?utf-8?q?NQUui41C3NL4Qhgjc6SvnDNgcbhEaY6JLKZGWrx48qwLO8352zWdisJ9?= =?utf-8?q?s1lLM7+4MaeiNUP+O4ojeT2HYVguVHWMb/jWu+hxzX0X8/oKN0HvL16g?= =?utf-8?q?RO4GQrk=3D?= X-Microsoft-Antispam-Message-Info: 7s0QJB2igF+fHJ739eDqhyIv9JCGMobY0BF7hO+CBDlFmKbQEaz3WfcYDM3GnbY2sF3UIHy8gA8KtvLum7LO0Mb2amOaZZX4+/KJSQgqK/0d6TnCxu/+IGrvGLtAiqeu6c/xRKjFqanYzh0IHB+VRH5PQD3gTgaZ09rEhDzKR4baMWR1DxsjVc3GQPPWPzFn X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB0174; 6:mZG2qQXa2vnyRq1Rqz+dKxAzURNevaOdygG+wEAwPKz44M1iQ5uyAjLh/2i4LEt5QpzEpoMNB0ZIFpelXwpLdqectnA3ictD4jRf37ABeEBrxWcjiNFF9uVD+1o5SVUPF+8Gh7BMK+CaKbcCX7osGfb1ZjEgEgNeqqf15j9chx9+HWlo9eGQhr4ypEk6v8PxoN+U22jY1mtqP6Mx+6m4NgPihmadopjvzdU8xh359pI2D1+CNjPOM/DM7pLwAwwuHJJeUTFzIsyiLHHFkzjEFi2ohECI2wub5dyNkqGkOseL/q6Kb/LpjRzFIgpR7sADzezUNUQL5EBqbcBfTJoCNzFa/oHxnGf/jAZWDvXZ18Vi/JedwExGmYniOFMpBWXe8UG4b4C/sbq1BuQg3NiaDRcjRROFn+IG889xZfx2Jk9EkA4AQhI3eGiETm3YnuXFJipdi1WF7KDWUGxt9gNSUA==; 5:npCU3k3vB5oSwBeqKoQPnviI6Lf7bsogY7+Ym8iat40NuFW9hMMfK4MSWOLXlSBZB/5kWN65e7cDejuc7+glK1qgiZLxJ/8BUHtI/a3oUjTq5ht3JiHAvBppIJyz+mO469R5pENMCiLlBGi36gLXDezSK5pU/r1pzFZWPzb0fHU=; 24:bVgoggm9n6Ro0oQFYZAw2lkNQpzSX+NsdGG58dmTTqljnh314chz4gv4ihtv6Cpj9KyauFwfJVOE1kqwybB1DKjy/K8t9UkyQ4tJxl2cv4g= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB0174; 7:gUUYdiWoMfLefrxsW+0tpTvY07nbonyLnjEU61Y6MQThq062zle6cgY1lbb34i/4HKfiXzq0hyJIJM1M+YaeR9ZufGm6FcNLCMRoGP7jdyoXtsRX2eBHE0kFbW8es8VtOMQ2qKRvoIzYV4n+x+0J2YQHf6v7vm2KLWe281XiJZHGXb8DAJWtUjBkiSmsUt9QjgD27TlHLY6dz0wpy9tf9FLhMG+GNPwIb5jbik4XKRzyRxA2dEyNqAJlcOztYtLK; 20:zJ8HnBItZJX2q/NUFQWHyuipJwxZxoiCTy44BBAALBwzNwRhIWpi/0w3GIx5NRM0HUvMy7LpeMAshYcv5DAo8D8I9t/oNFzKXqghP6xPs7RC+a5RiwlMcLGcFu5hOK679KfxJgOkeVPNN4dKadIA9mwJHeE7hecBHEaJ4Ge1UtZBqTKASrwR0CHhvibJBi29BbQA/NNqtJR1OBWRXCGGYAYz9jnXAl7YHA1MPrq3PBQBUpV36oRRfQcLoulR0eLp X-MS-Office365-Filtering-Correlation-Id: eb759ed0-60cd-4b03-8dff-08d5a9394d97 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Apr 2018 16:43:11.7801 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: eb759ed0-60cd-4b03-8dff-08d5a9394d97 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 hooks to the driver auto-negotiation (AN) flow to allow the different phy implementations to perform any steps necessary to improve AN. Signed-off-by: Tom Lendacky --- drivers/net/ethernet/amd/xgbe/xgbe-mdio.c | 16 ++++++++++++++-- drivers/net/ethernet/amd/xgbe/xgbe.h | 5 +++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-mdio.c b/drivers/net/ethernet/amd/xgbe/xgbe-mdio.c index 072b9f6..e3d361e 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe-mdio.c +++ b/drivers/net/ethernet/amd/xgbe/xgbe-mdio.c @@ -437,6 +437,9 @@ static void xgbe_an73_disable(struct xgbe_prv_data *pdata) static void xgbe_an_restart(struct xgbe_prv_data *pdata) { + if (pdata->phy_if.phy_impl.an_pre) + pdata->phy_if.phy_impl.an_pre(pdata); + switch (pdata->an_mode) { case XGBE_AN_MODE_CL73: case XGBE_AN_MODE_CL73_REDRV: @@ -453,6 +456,9 @@ static void xgbe_an_restart(struct xgbe_prv_data *pdata) static void xgbe_an_disable(struct xgbe_prv_data *pdata) { + if (pdata->phy_if.phy_impl.an_post) + pdata->phy_if.phy_impl.an_post(pdata); + switch (pdata->an_mode) { case XGBE_AN_MODE_CL73: case XGBE_AN_MODE_CL73_REDRV: @@ -637,11 +643,11 @@ static enum xgbe_an xgbe_an73_incompat_link(struct xgbe_prv_data *pdata) return XGBE_AN_NO_LINK; } - xgbe_an73_disable(pdata); + xgbe_an_disable(pdata); xgbe_switch_mode(pdata); - xgbe_an73_restart(pdata); + xgbe_an_restart(pdata); return XGBE_AN_INCOMPAT_LINK; } @@ -820,6 +826,9 @@ static void xgbe_an37_state_machine(struct xgbe_prv_data *pdata) pdata->an_result = pdata->an_state; pdata->an_state = XGBE_AN_READY; + if (pdata->phy_if.phy_impl.an_post) + pdata->phy_if.phy_impl.an_post(pdata); + netif_dbg(pdata, link, pdata->netdev, "CL37 AN result: %s\n", xgbe_state_as_string(pdata->an_result)); } @@ -903,6 +912,9 @@ static void xgbe_an73_state_machine(struct xgbe_prv_data *pdata) pdata->kx_state = XGBE_RX_BPA; pdata->an_start = 0; + if (pdata->phy_if.phy_impl.an_post) + pdata->phy_if.phy_impl.an_post(pdata); + netif_dbg(pdata, link, pdata->netdev, "CL73 AN result: %s\n", xgbe_state_as_string(pdata->an_result)); } diff --git a/drivers/net/ethernet/amd/xgbe/xgbe.h b/drivers/net/ethernet/amd/xgbe/xgbe.h index ad102c8..fa0b51e 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe.h +++ b/drivers/net/ethernet/amd/xgbe/xgbe.h @@ -833,6 +833,7 @@ struct xgbe_hw_if { /* This structure represents implementation specific routines for an * implementation of a PHY. All routines are required unless noted below. * Optional routines: + * an_pre, an_post * kr_training_pre, kr_training_post */ struct xgbe_phy_impl_if { @@ -875,6 +876,10 @@ struct xgbe_phy_impl_if { /* Process results of auto-negotiation */ enum xgbe_mode (*an_outcome)(struct xgbe_prv_data *); + /* Pre/Post auto-negotiation support */ + void (*an_pre)(struct xgbe_prv_data *); + void (*an_post)(struct xgbe_prv_data *); + /* Pre/Post KR training enablement support */ void (*kr_training_pre)(struct xgbe_prv_data *); void (*kr_training_post)(struct xgbe_prv_data *);