From patchwork Sun Mar 6 15:28:47 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Talat Batheesh X-Patchwork-Id: 592920 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) by ozlabs.org (Postfix) with ESMTP id 64E521402D8; Mon, 7 Mar 2016 23:01:58 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=Mellanox.com header.i=@Mellanox.com header.b=AUvJNhrC; dkim-atps=neutral Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.76) (envelope-from ) id 1actrB-0006fD-Ia; Mon, 07 Mar 2016 12:01:49 +0000 Received: from mail-am1on0085.outbound.protection.outlook.com ([157.56.112.85] helo=emea01-am1-obe.outbound.protection.outlook.com) by huckleberry.canonical.com with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.76) (envelope-from ) id 1acacJ-0000Bq-Vh for kernel-team@lists.ubuntu.com; Sun, 06 Mar 2016 15:29:12 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:To:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=xERtrY0b3L2JqtRsVBDuyWyGeIz/EhfpdCmmV0q2s+I=; b=AUvJNhrCaPQ54oPJZRWMhg5wWFUsARcFAubUt/hx4LZFA0pfFm0YriFRTqMd4UrAgmpvY7MJPA6FRfAz2VRqn8NbQHaxlX5MRldwncgK2SBwHWokxEeHjrbK4yvU06VcHcr3dks/+7XuYC/DI3U8dMwrjzzpPNfjh/1l6YdxP+w= Authentication-Results: lists.ubuntu.com; dkim=none (message not signed) header.d=none;lists.ubuntu.com; dmarc=none action=none header.from=mellanox.com; Received: from dev-h-vrt-005.mth.labs.mlnx (193.47.165.251) by VI1PR05MB1312.eurprd05.prod.outlook.com (10.162.122.153) with Microsoft SMTP Server (TLS) id 15.1.427.16; Sun, 6 Mar 2016 15:29:10 +0000 From: Talat Batheesh To: Subject: [PATCH 2/2] net/mlx4_en: Fix HW timestamp init issue upon system startup Date: Sun, 6 Mar 2016 17:28:47 +0200 Message-ID: <1457278127-23145-2-git-send-email-talatb@mellanox.com> X-Mailer: git-send-email 2.5.0 In-Reply-To: <1457278127-23145-1-git-send-email-talatb@mellanox.com> References: <1457278127-23145-1-git-send-email-talatb@mellanox.com> MIME-Version: 1.0 X-Originating-IP: [193.47.165.251] X-ClientProxiedBy: HE1PR02CA0066.eurprd02.prod.outlook.com (25.163.170.34) To VI1PR05MB1312.eurprd05.prod.outlook.com (25.162.122.153) X-MS-Office365-Filtering-Correlation-Id: c1ba05eb-13b2-4985-08ce-08d345d410f0 X-Microsoft-Exchange-Diagnostics: 1; VI1PR05MB1312; 2:/BrKprWkr7oBpk8uwriITBo3XOnJsBM2UJSpZzTDTz/PWbbqQZX9CEL6o4ekb8LQyApNUblI09oNZCCwFqIfH5NVkAVRvh2kR0E8fziaCMrlU7uDB3pKCmxtnd9S+kEOQjcmwC/lKz73XTKk1FszndzTV6Wig+lBSCF9bHMTpDB5f41qUdfx28md8WsnVG/k; 3:XQaUdK5v85AIpl5vIsmZmCfPwCq86aJVYVDEDnvfYryqOS7Pa8SQEQoNMNUBtQnMGbzvTQpwhVnrUtAy2C1V5Q8hEAS6ypH0lClKb0FptCp0Ke9Dy9PudqEOHNTkve0X; 25:/nFfod+reYcWUClTTf3m6ERJJALIf+Rw4rzrlqsO8HY7A58a9ZuYbiXABCaICtmesUIGJtj9bjmD/x9v9Mzulcy8l694Gt27cwgyTjP2Bdn64dd0wMWKx+sTcQKg+Lo43JeMUDQjODuSLOVO1VYd87dfE7zNfZTcIElPccWPL4F5Gu26ECqgvzw2yoLPk7qtX8Dz2L8ZYPxpNEVDkf/w6y0jrUIVebywfuiJ25x3j/KMzwFuzG9HkexbAAyOyVuyZAJmJJBFOk3e7aAN4WTn/zyfjL01ypMRQcoVzFRQTHLi2DaCT4A9hvMrgGBQoXt5NgZtFoDU7PHlgPPEfQVVVg== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:VI1PR05MB1312; X-Microsoft-Exchange-Diagnostics: 1; VI1PR05MB1312; 20:mK8IQpK1GUjLm6e05UdTApSCaJ2ZPIIw85DriGPL7FkCXJJqbjKa4czErLl1GIaZo0j68y4tNYwvq5jW6SwT/uv0lcW2QcfATUGLFfi4imrePcToQwb8lO5+6+BeY8dB+rsEfWGG1WAf4i2A65lL182CACvigPMpGx5zbG04FS1yRLNPkP3sduNuD3+DdIBUNBzyLmogrn+R1LzcOiUZzcj2yExNeTTf/ljyZpRem59TtixeqT4dKoZSDEPbTpdQneYuFVyB8vZQNEN/bgOfRHCy/DFfZYwTxAYPrfNJ8wEmWOotkBIpCEUUPh03K7x03xmu0luyD7gRYEv/IgapWg3dLnl+co/ZuhhhYmjoIdhkOr7P7F/mQW47EFcNyNplX6Shag3ZaLv/4mKmdQWY/M8iBeNG6HOlO0eatMqyuQkUdM2u4bkZEMnH/1jyFSdIMAhJXFg8OKVv1NUwcpzvAsq5Cen/3k/zekDF3sjp3DLtnU8dbU+14lhwSLPdghxG; 4:0adGZduYc9F7pPt03M9FlhHEFPoKpJqOsxGqNWtevOGrbp96HubsNaWS+iKtyPsL04lB92m52zGs55dPXdU9G0zjpIPV7wDc54J4bGLusdnWxE97Bu8vSuZzVvMk/KaxPLyycfmwq3+mh1P5JPID4d/rcNlW3VnispNFAgecQt7IO2benlRlEdpMZKQY9hSertByVD2F4sygsDX/roJJH9DCzz5JrnKW35wJFa0VaQNwEr2GpGWSYgrUxEEPiC2dkdNJiKwNPXQV8W9vaK0YAR2FFq/AxJKmObl2tidhHVsjfa8WZd3GLCPf23ENFOsHgof3MPNUjLqZrkt6M/jZVUOVJL1aK4l7hEkhcvx1s7vTf56KiffddUtMRoCULHFb X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046); SRVR:VI1PR05MB1312; BCL:0; PCL:0; RULEID:; SRVR:VI1PR05MB1312; X-Forefront-PRVS: 087396016C X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(50466002)(122386002)(15975445007)(66066001)(77096005)(40100003)(3846002)(6116002)(5008740100001)(2906002)(81166005)(586003)(4326007)(1096002)(48376002)(4001430100002)(189998001)(107886002)(19580405001)(87976001)(76176999)(110136002)(50986999)(36756003)(575784001)(86362001)(50226001)(2950100001)(229853001)(33646002)(5003940100001)(2351001)(42186005)(19580395003)(450100001)(92566002)(1720100001); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR05MB1312; H:dev-h-vrt-005.mth.labs.mlnx; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR05MB1312; 23:Ex2MTuE2XJ1oEc/AfI5Ge16X/ymYLjzkIjuo9midt?= =?us-ascii?Q?nqKktmmqDWOWBL4ZM7Srkrx5ZKEqOH76xMIStjgimUlTiB3xhiGr3J1tVHcH?= =?us-ascii?Q?wDPiT9jP9gNs6GpMHP42JqGwL0KfmXBDsy0qI4Kqphby5sGsFtrlsmLFEOCS?= =?us-ascii?Q?YgDoV1DCujzlduBv1w7Tq6zNVxMbGVbxt3WOboaeVWPhRwWuy+5tdzkT9Q50?= =?us-ascii?Q?l3uZ2bCYfcBZVR836uk9fPIfeNuXhqGDN4v7Z0Xg8+5r07jbiZn8Dx62OeV2?= =?us-ascii?Q?myRQb3kAlQrwdkKnjYShBrG87cRWUF5WsHZm7kRH+pSxWg6rsM3nBxgEzjE9?= =?us-ascii?Q?VyttF2HUQ2XLTDOf1SICbLn0uAPDH+n4qveI2rBDuKg6FvmJHPqss/7k8K4r?= =?us-ascii?Q?TSw7JGlvQYpZfiEIAytKtkBqO/lgISgk+T3hPhWhAFSruaEFbYzIDvarqN63?= =?us-ascii?Q?7PHBHZb/MyTgRt8aKy9dhMRgtQxW6WWBSQzF5HN70u20dleQkPjkhSPaTCOu?= =?us-ascii?Q?OmkSOOKGHHoPxwlSLRv/6vlccSSeQuwr6i7mfob52JJM7DHu2GDP17ntBawZ?= =?us-ascii?Q?QT/VbOxC6YFS9vsWZuQUZyLKznO99V/ZJpbjYoQAtV3inyt9+ts7VQCS7nvy?= =?us-ascii?Q?qtOi2Fg5emaAqNy4/1CCrYtHTD7Y+bznGl15ZJUPzkNVOPx0b2n4qhD9P1dl?= =?us-ascii?Q?std3mrfgIgP5sz/CKeg7fXgTTBNupE9vMDCkRwBAd9iIoRncDzfETVFiTw02?= =?us-ascii?Q?xK/Kr5o5DFdYASoiw6U50EnjaZ2r90ebZtJtFJem8M8Eeo4OQvc/I8SdW7b+?= =?us-ascii?Q?pD4dTPNZ+Jm3qSZW6r0NtZQAHfIPKjR0tyWcZ15XwX0zf3DQjzWaywfTmX81?= =?us-ascii?Q?V/4xVME3JnGqOwoVz/+DM9yBNt49vWSWIQO3p87VI/350U1ZPvQyZJw1AL5T?= =?us-ascii?Q?HAFi+NKP5aVMv9uVCLNrNcb4Qyc/lNrI7I/Bmr0fu/QAnMDxHlX7EDBcLe3y?= =?us-ascii?Q?p5pgSpUrAx0L7Fh9PudXD9te8IUpIgXm+EBUbnrt/2wDz8XIC3P/w0123QXB?= =?us-ascii?Q?bK7w3E=3D?= X-Microsoft-Exchange-Diagnostics: 1; VI1PR05MB1312; 5:j0zRanXobmTLrutAhMJBd9yI5AOZJI2BeM/a3tA4iorenaC7Ihhbdf9cgcBbI08pLIWmsr6SAGM0lB3dBFm+6klr2hfmrGctLR1gl4nC/uioo53mO732GbM9qd05Zdd3bVNErXmgifGbJWyXev3Q1w==; 24:5+B8+/lb08AzlasRygFarwaCh8jMR1FaHw+EjQKhzcX1Rgi4xjJw3dlybHkLihwHWBHKz+iPD5Mhn2xR/HNmSwb3A8XJ6K7YHYbjcc8b24k= X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Mar 2016 15:29:10.3608 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB1312 X-Mailman-Approved-At: Mon, 07 Mar 2016 12:01:47 +0000 Cc: shanim@mellanox.com X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.14 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: kernel-team-bounces@lists.ubuntu.com From: Eugenia Emantayev Subject: [trusty] [PATCH 2/2] (upstream) Fixing PTP and timekeeper after reboot. BugLink: http://bugs.launchpad.net/bugs/1537859 mlx4_en_init_timestamp was called before creation of netdev and port init, thus used uninitialized values. Specifically - NIC frequency was incorrect causing wrong calculations and later wrong HW timestamps. Fixes: 1ec4864b1017 ('net/mlx4_en: Fixed crash when port type is changed') Signed-off-by: Eugenia Emantayev Signed-off-by: Marina Varshaver Signed-off-by: Eran Ben Elisha Signed-off-by: Or Gerlitz Signed-off-by: David S. Miller (cherry picked from commit 90683061dd50b0d70f01466c2d694f4e928a86f3) Signed-off-by: Talat Batheesh --- drivers/net/ethernet/mellanox/mlx4/en_clock.c | 7 +++++++ drivers/net/ethernet/mellanox/mlx4/en_main.c | 7 ------- drivers/net/ethernet/mellanox/mlx4/en_netdev.c | 7 +++++++ 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx4/en_clock.c b/drivers/net/ethernet/mellanox/mlx4/en_clock.c index 1e1455d..a1af5bd 100644 --- a/drivers/net/ethernet/mellanox/mlx4/en_clock.c +++ b/drivers/net/ethernet/mellanox/mlx4/en_clock.c @@ -244,6 +244,13 @@ void mlx4_en_init_timestamp(struct mlx4_en_dev *mdev) unsigned long flags; u64 ns; + /* mlx4_en_init_timestamp is called for each netdev. + * mdev->ptp_clock is common for all ports, skip initialization if + * was done for other port. + */ + if (mdev->ptp_clock) + return; + rwlock_init(&mdev->clock_lock); memset(&mdev->cycles, 0, sizeof(mdev->cycles)); diff --git a/drivers/net/ethernet/mellanox/mlx4/en_main.c b/drivers/net/ethernet/mellanox/mlx4/en_main.c index 4950bb1..5210ae3 100644 --- a/drivers/net/ethernet/mellanox/mlx4/en_main.c +++ b/drivers/net/ethernet/mellanox/mlx4/en_main.c @@ -208,9 +208,6 @@ static void mlx4_en_remove(struct mlx4_dev *dev, void *endev_ptr) if (mdev->pndev[i]) mlx4_en_destroy_netdev(mdev->pndev[i]); - if (mdev->dev->caps.flags2 & MLX4_DEV_CAP_FLAG2_TS) - mlx4_en_remove_timestamp(mdev); - flush_workqueue(mdev->workqueue); destroy_workqueue(mdev->workqueue); (void) mlx4_mr_free(dev, &mdev->mr); @@ -279,10 +276,6 @@ static void *mlx4_en_add(struct mlx4_dev *dev) mlx4_foreach_port(i, dev, MLX4_PORT_TYPE_ETH) mdev->port_cnt++; - /* Initialize time stamp mechanism */ - if (mdev->dev->caps.flags2 & MLX4_DEV_CAP_FLAG2_TS) - mlx4_en_init_timestamp(mdev); - /* Set default number of RX rings*/ mlx4_en_set_num_rx_rings(mdev); diff --git a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c index 3addab7..32cdb9d 100644 --- a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c +++ b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c @@ -2096,6 +2096,9 @@ void mlx4_en_destroy_netdev(struct net_device *dev) /* flush any pending task for this netdev */ flush_workqueue(mdev->workqueue); + if (mdev->dev->caps.flags2 & MLX4_DEV_CAP_FLAG2_TS) + mlx4_en_remove_timestamp(mdev); + /* Detach the netdev so tasks would not attempt to access it */ mutex_lock(&mdev->state_lock); mdev->pndev[priv->port] = NULL; @@ -2656,6 +2659,10 @@ int mlx4_en_init_netdev(struct mlx4_en_dev *mdev, int port, } queue_delayed_work(mdev->workqueue, &priv->stats_task, STATS_DELAY); + /* Initialize time stamp mechanism */ + if (mdev->dev->caps.flags2 & MLX4_DEV_CAP_FLAG2_TS) + mlx4_en_init_timestamp(mdev); + queue_delayed_work(mdev->workqueue, &priv->service_task, SERVICE_TASK_DELAY);