From patchwork Thu Nov 10 23:09:45 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Lendacky X-Patchwork-Id: 693496 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3tFJfb2G3Cz9t1b for ; Fri, 11 Nov 2016 10:09:59 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="RsF7seND"; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S935896AbcKJXJz (ORCPT ); Thu, 10 Nov 2016 18:09:55 -0500 Received: from mail-by2nam03on0081.outbound.protection.outlook.com ([104.47.42.81]:57024 "EHLO NAM03-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S933993AbcKJXJx (ORCPT ); Thu, 10 Nov 2016 18:09:53 -0500 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=PuX8lkUn6sU/MDGyo107QNIoTxq1iMAP63s98oniwXw=; b=RsF7seND/FTARMSl39vlY3oZ0uYWstZ/HBR7yxfDp0o18GsuSACqBi53/MhKKDMWdz+uA+V2wscgLBHIJ70nCF+wPN1ye0czHiH599Zius8CHk2GuVUjxfhaUFj+OYYjtIMyegXvcVzZrvWWtG1ySHAsqtSv/4TWuDLyHD/lT6s= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Thomas.Lendacky@amd.com; Received: from tlendack-t1.amdoffice.net (165.204.77.1) by MWHPR12MB1152.namprd12.prod.outlook.com (10.169.204.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.707.6; Thu, 10 Nov 2016 23:09:49 +0000 From: Tom Lendacky Subject: [PATCH net-next v1 02/11] amd-xgbe: Add a workaround for Tx timestamp issue To: CC: Florian Fainelli , David Miller Date: Thu, 10 Nov 2016 17:09:45 -0600 Message-ID: <20161110230945.20704.27939.stgit@tlendack-t1.amdoffice.net> In-Reply-To: <20161110230916.20704.34081.stgit@tlendack-t1.amdoffice.net> References: <20161110230916.20704.34081.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: MWHPR14CA0008.namprd14.prod.outlook.com (10.173.227.18) To MWHPR12MB1152.namprd12.prod.outlook.com (10.169.204.16) X-Microsoft-Exchange-Diagnostics: 1; MWHPR12MB1152; 2:dAX8B68szkpGa2qu+m+YFQC+jmiyIhvGvuUhWnVp3ZlfeH644St7Ou7qmunE2J65WZHrQUTHRlsx7m8Jrcc570KXtVkmtEVMx1DFOx8KV+izf1+BdgtX9IZ3Xg372N7Ty8omqGL18HcZi4DvHzIrACi99sO7omdDSAsbEZtXg80=; 3:AVoMgjN6zS+Yt3sjgEYYm9iBj4PSW/1ucu2324PaQ8PqV0PQCVykA8J542ICksgYcew0r9/blwE5IA4zLnVXXxFFbbqCca4S8jJZJq2G0uHpiBy+6aRwB3kyxigsLYTZpoZli9tzT5HR3dDj5qEFNRyneEaM4iiddSHuOcAlgCc=; 25:my82fLskiLHGd58oFpmLDIF/rG227Eykf9nKFYtfx6ZTdTB7pwxD4xo7F4629giInCnKYpFgjZXMB3tsGrF2PEb87SZsnDErFNYWWTN28zEVjGFLEb/6SyHabx14R5E6KtUhCQY8gK5p+Io8c5mJgH8L3bglPRph6aeBpM2BNeKknWdKJziB0PCV/urP0XkliQslomnts1htIR/5kdMI/pX6rJaG77ycRnNHDhid3soyMkeZUFgbLUgSfI17oeh/YR5lxxjzcrRrqOSEZVFAD3XxxEWbSCaFOiD2n7vmKGbxBbiS09ZUWuTKoECTOtnKswUccgoV8ifrUkBaCVrQqP/A+7vEDYMRgj82dKZMp0bXWkcqqon+Mdnv6sgahTThxdX8xtPzXwpuw/1abonxV1cWVHdC7zFqEg9Xo6aUFYDVQAfVK0x/EPZTdrnTGs5c X-MS-Office365-Filtering-Correlation-Id: c2451159-1999-4a8e-569d-08d409beaba4 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:MWHPR12MB1152; X-Microsoft-Exchange-Diagnostics: 1; MWHPR12MB1152; 31:4ecsL9Qc+tH1rGbfPcYYSLRhDwnm7VwaqRoIinLRAH/AUnDI5dMx8N+4qZQkNcfKSDVPIRNGf/fF0i7F9MuDzjhKmd1vbXx9sEelcuZRxDzU8jnSWqW29W9OHkryyAx89i6oI/CKoKR2heBRnQH50WFZhzMrPVnH0AH/D76wRV2yUDtsDftDcZFCSeg2R20F2AWW/c+vZQMsPj3EBi1AVRcgKTOqFlKXOVoNChqcQ9j7TTZQN0PjNhMhvJh2vMAn; 20:q3wNt84mCEosTcZkkJ0YHK+Cza96O/DUDKJa5tR33RFGGUVXrbM6nvf/A/TRz5d8IY063s2GCxSx/GNV5oNE8Mwxi7V2Fi3iwkGAHZ1oKG6VLhai863+4by2lOTLC9O68d+vK0sX1R/Vmo0x5buntfBxa/Jj2a8ySn8RasbCMES2ThwNx9EJIh1mJVUN5eUYcWR3oyBRfb7HXZ+CIObiaiscVEkAtjFNdjX7GzioXNEvHueZPtA8qVui2xqv2Yjbb9HpJUTfso81LgBLj5Dp2/w9gdETnjuWHZeu1dcjwJ+0OYpZlvEXwXOdH/+RAUZms5pI+8Z2aYJpOx29bTSY+A/dxgzpVhJKJoxc+GcVcvW/dZtMDqG8xMWW6Z6PoHe4aEpVJaD1z7OTMpU1MoudgzgBFNHtnVaD++xE30fQy55+s1YPtAedAd9NcOONFcjukEdtQ5LNgYld0yvGOmmUozTE35MRkrfXQuKepHq9BxGSf6Q737oyuwf8KJsJEOXk X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040176)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6055026); SRVR:MWHPR12MB1152; BCL:0; PCL:0; RULEID:; SRVR:MWHPR12MB1152; X-Microsoft-Exchange-Diagnostics: 1; MWHPR12MB1152; 4:02/QJWxWFqdsN7I44cr3yc0TuFdwaBawYaJR+oKHRJgD4JlWsYR+muWuzRQmq8+EpWEAVz7A6jhC081HDeRLAAKCtFqut7B+mMNEiJMyhJeuTdIpFQVsnZWCabYpgWVhAvv/ucb6wFW4S23fvPFuR2tiNG5J5OL5qQ+g4KUJcAXsR89iSBMZe2PVDqx+AG+UufQL3HIJrPM+e5b5ZBtnnh7dv8ggO5M7+mdAm1E53GY8gMlbcaRTJ3n7Ko56q+nvBeimPSy8V8daZiJ2zgWK/vnpb6zahqLq0Yux+thrTE2D/42xQDohkGPioTyw9QEDKZDqaPOdi0k7EME/1j8cvW6umwsyEYe6wg44bNpgGSVw8Cynxm/R+408N7xKAUgp28qs5J8JseYWIWTLZjCTavrhi2vliyVtmDfAVwKnZb56Zk/BdAQhrbMhQdHZYgBLdaxftG2KYiw7ClXAwnOFuA== X-Forefront-PRVS: 01221E3973 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(7916002)(199003)(189002)(76176999)(50986999)(54356999)(305945005)(6916009)(97746001)(2950100002)(92566002)(189998001)(4001350100001)(97736004)(50466002)(6666003)(106356001)(7846002)(7736002)(230700001)(105586002)(81166006)(103116003)(81156014)(2351001)(110136003)(33646002)(8676002)(101416001)(23676002)(66066001)(68736007)(53416004)(586003)(42186005)(3846002)(6116002)(83506001)(1076002)(69596002)(47776003)(9686002)(86362001)(5660300001)(2906002)(4326007)(77096005)(71626007); DIR:OUT; SFP:1101; SCL:1; SRVR:MWHPR12MB1152; H:tlendack-t1.amdoffice.net; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtNV0hQUjEyTUIxMTUyOzIzOmhNTjlPWFpBVnhxYWFMeFJWbGpiSGt2aHpT?= =?utf-8?B?SC9KeXNFSHVtd0FjSGM4THJSYkVFSjVxUFVTMXMzVXVJaDVLM016ZHVZckJz?= =?utf-8?B?QUlFL3FZUUlWcm1idzdJNmhTdjAyYWJGQ2Rkd21RL1lRTnFET094eExpRjQ2?= =?utf-8?B?OVk5Zjl5di9sTnRVelcyWFVVczdTeXpqR0c4aDgxbHZONXBpWFdBYjdiWFl4?= =?utf-8?B?alFWT0IzRlNDYkZuSDhDUTgvT1AyQmJNRDN0ZmxMMytnbTl5UWZqeXZpWk5Y?= =?utf-8?B?YkF0aVdFczVRWk84eUdNUVNMWGlITWREWURLVXpuK2t5RGpKaFJhZitsRG5K?= =?utf-8?B?UFBjTUhqT1J3NEpaMHlwclpSVS9rVzk5MjZoMVlXdzVWWlN3Z1hjU2EreGcx?= =?utf-8?B?LzJJZkYwS1psQUppUWN4VVUycU0xL08vZkFScWpvVTd2TlJ4bDlLMWxnRGg3?= =?utf-8?B?NUZoRysrcDhtOEkra3grMlQyUFhSUjloaTRiOVdzQmRXM0RNV3ZjK1dlQXFF?= =?utf-8?B?WmhSbDlsV3RZUkV1bXFOazk0ZFRSOWlVZlNlSXBZcFUzNGY1OVBQRVU3TjdH?= =?utf-8?B?QVpWK1pnNWZpTVNzR1VoWUp5SjZQVlcyUTlCcHg2cm92NDBwRHhnS1RBSXNr?= =?utf-8?B?cHZ2RnJMWStmS2g4c3JTb1NnUmlKMWkwRjVaR09PVXlIMlh4cFdZY3RkeGU4?= =?utf-8?B?aFNBTW1wOUltSUd3U1Byb2t4NjBaWTNQRlVGTER5V2dQdmhXUGtySlE5Y2hR?= =?utf-8?B?Y2cvY2E1MVhwRHViZDRNQXBDai8rTVRycmttcVNkaWI5ZklRaXhBbkZVd2Nt?= =?utf-8?B?SE1YY3o4QmtaTVAxVXdxd1hyN0JuKysyVC9rY0tXRVBqTE9zM3VxbUJwRG1S?= =?utf-8?B?UWtVRUpsN2Y3N2VVdmRYeDhhcmpXM05ORG5tOEZTTWNUUDFMbDBaMml6eDZu?= =?utf-8?B?N2hYd20rNWxEbTFxeGNiU0ZYa3k5eFEzODBJSVc3RzdXZVlSeWZ0cjk1Ry9m?= =?utf-8?B?TzExVE5ZeTZkWkpSajdnWGU4VnFkSEc1akQ4TjJUdDJwZ2JDNDE5OWNPNGxF?= =?utf-8?B?OEl3RWlCZ3FmRzlYVnFPNmZ2LzdDc0ZsRnhGVlJ4QWNIc3RjZ1NFZjY1YWpv?= =?utf-8?B?aHVSZ3ZoMWJKQm1qa0NLUTVDeXpwSzI0VGRXOHZibkluV0FVVkk0L1E3V2dv?= =?utf-8?B?bFM1NzlDSFUzTHVhYWFDTXV6Mjd1V2N3Y1B2YWZMSmp2Q1c2MUcvYTFMemV1?= =?utf-8?B?VmhYdHpBLzZsTmlTQ0lrejRtclhTZVF0Z3k5K0cwRmd6RzJGdnJ4ZWhIQWdy?= =?utf-8?B?bkh0b09yb242ZytnODNPNlp4aGViRW5oM3hWbkI5ak1ZNnNXcEwyaVQ2RjMx?= =?utf-8?B?T1lJdkJTcWM1ZFJMaFJyM2V0Q25SZFhXK0E2bEljOWY4OC90RmI3enJqbDdv?= =?utf-8?B?bHlsMnNlaVBFdHE2R0p3Z2hwNHlpMWhOc21tdzR1TDBvWFA5VDZrRGwxRGpJ?= =?utf-8?B?bHRFaGpqQ3dsZDcxcVV5bGg5RTJYeDZNNEdlQ0s1ZWtPOTVsUDFqbnJpMU5Y?= =?utf-8?B?RHpuWEhydFhXWVpjd2xoTnN2a281Z3lJWi9XR0xWMFBXTExXRWhMdEsra2Nu?= =?utf-8?B?YkRhQmdULzBWNkZxamRmTW9QWjRKQ1FIN2NDbUE0OUFwWTBvdmtLNE13PT0=?= X-Microsoft-Exchange-Diagnostics: 1; MWHPR12MB1152; 6:I0vHHu5kcrEy9AeJmr2U+Hg3jhJNxeM++OdpMMvNp1l1PIsdmShu55yCq1s1bwV15DbCiocSIpeuHB+n3/aridzmjgjTrlt/ApN+enm8l/o2sE7/y5aJLrY7DgMjR0/MffDWB7ZnU2SD5N2KSf5PFi1CI2Q4+p2VAiFFfDY4T3Hy37pP24JzNidRuBNL17T+a3EINenMbKaP41HtXRIvhADj7mjCI9QOYP95fdesnzT2b5vRv97VxAfDUDB+uI67X7eIpVnuCkp4lqeH5c81guidCQ+xfZAK6RvokzDuorMOUt12px6d+APsYfZIyg5fmIjAYtLl4a4PxJzkffmmig==; 5:PZ15oLyljWQEQidnZuzi/hoRk/JRDH562TtdY0UCAkV6V0hhevBAvLMLPtWO97SqkyaNUv48cwrNxp2cwHMbprV2V3XAD327HiW4IeNg3UJrp5+iYpkgR6NwfISPxkUaDvBf555mVHGv0gSx5SYbsA==; 24:U+i/Rwpse/onsFrHdy4RvLQ+5BQtGtr2fEwS4StZPuSJ5RVmTSAuQEpeTR/s7nFW7fpxSn+OzE89ZBqn+Fkv4vNr9OdEtunUrle5FacS23A= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; MWHPR12MB1152; 7:ZSS74Lhj+iMsBWf7b/kbyVAXRtjMCFdC74rpFzW8MYxysLK+CrBKGDbTbOJ9JK4CIvWSakfKRl9CDqgnSeyFobg0+13CGgf/qzhE9hGAd3NC28o/Aw/DNRwceB6FIGFE78dDt/+FerG6G/+pZ/G01JZC700DnbPIrNnyEyopH2H1DnEXQbjU1yhO83EMvGv4IXvP/GG1Q3vxgwh6G4wG+RK9rhLMUBRsNn7BCoXzA9hntpICTVFnWK1h52e6NsZg2Dq5Ym+tr/uuQGTCVxWRXEQKc8OhhFZih6zhcrAtJhmu/1MST1OqcolLZ1gAgKHrt8HLQKa+Zu045nSpr5iDpXBflKy4nB1xd/McUEU+1is=; 20:OfOxRMCs+A/lNcVLYbk3ok2qYNp5QWtWYBHdb3zpY0RF1bLtDujKeIeZGUY0ZYslG3ByjE7xTr8nNpsHb2iM2Pkn5UPpvFKMhzcKa6+8xfNC3vFVDbajyfgZzpNMn71C2eIczbF7wuuv2iNiTfR3sugWeH5cAwvpUBtstjjlNnJU/m8QXONcIQU1dOCbUTLSqt5zwTARP4cdfFzR0FftbS6ES1BGX4FVZdsZLYODf59a1R2pwYRVQJXoVADogeVs X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Nov 2016 23:09:49.0930 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR12MB1152 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Update the reading of the Tx timestamp to account for a hardware issue on how the fields and interrupt are cleared. The "seconds" portion of the timestamp should be read first, followed by the "nanoseconds" portion. Reading the "nanoseconds" portion should clear the timestamp data and the interrupt. Because of an issue with the hardware this order is reversed and reading the "seconds" portion actually clears the timestamp. The code currently follows this workaround, but to guard against future versions where this is fixed add a field to the version data to indicate if the workaround is required or not. Signed-off-by: Tom Lendacky --- drivers/net/ethernet/amd/xgbe/xgbe-dev.c | 13 ++++++++++--- drivers/net/ethernet/amd/xgbe/xgbe-platform.c | 1 + drivers/net/ethernet/amd/xgbe/xgbe.h | 1 + 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-dev.c b/drivers/net/ethernet/amd/xgbe/xgbe-dev.c index e3862bb..81d4780 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe-dev.c +++ b/drivers/net/ethernet/amd/xgbe/xgbe-dev.c @@ -1360,14 +1360,21 @@ static u64 xgbe_get_tstamp_time(struct xgbe_prv_data *pdata) static u64 xgbe_get_tx_tstamp(struct xgbe_prv_data *pdata) { - unsigned int tx_snr; + unsigned int tx_snr, tx_ssr; u64 nsec; - tx_snr = XGMAC_IOREAD(pdata, MAC_TXSNR); + if (pdata->vdata->tx_tstamp_workaround) { + tx_snr = XGMAC_IOREAD(pdata, MAC_TXSNR); + tx_ssr = XGMAC_IOREAD(pdata, MAC_TXSSR); + } else { + tx_ssr = XGMAC_IOREAD(pdata, MAC_TXSSR); + tx_snr = XGMAC_IOREAD(pdata, MAC_TXSNR); + } + if (XGMAC_GET_BITS(tx_snr, MAC_TXSNR, TXTSSTSMIS)) return 0; - nsec = XGMAC_IOREAD(pdata, MAC_TXSSR); + nsec = tx_ssr; nsec *= NSEC_PER_SEC; nsec += tx_snr; diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-platform.c b/drivers/net/ethernet/amd/xgbe/xgbe-platform.c index 0edbcd5..7a701de 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe-platform.c +++ b/drivers/net/ethernet/amd/xgbe/xgbe-platform.c @@ -581,6 +581,7 @@ static int xgbe_platform_resume(struct device *dev) .xpcs_access = XGBE_XPCS_ACCESS_V1, .tx_max_fifo_size = 81920, .rx_max_fifo_size = 81920, + .tx_tstamp_workaround = 1, }; #ifdef CONFIG_ACPI diff --git a/drivers/net/ethernet/amd/xgbe/xgbe.h b/drivers/net/ethernet/amd/xgbe/xgbe.h index 0779247..8523779 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe.h +++ b/drivers/net/ethernet/amd/xgbe/xgbe.h @@ -805,6 +805,7 @@ struct xgbe_version_data { unsigned int mmc_64bit; unsigned int tx_max_fifo_size; unsigned int rx_max_fifo_size; + unsigned int tx_tstamp_workaround; }; struct xgbe_prv_data {