From patchwork Fri Oct 28 11:04:11 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jacob Keller X-Patchwork-Id: 13023445 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 58F69ECAAA1 for ; Fri, 28 Oct 2022 11:04:39 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229995AbiJ1LEh (ORCPT ); Fri, 28 Oct 2022 07:04:37 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48528 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229861AbiJ1LEf (ORCPT ); Fri, 28 Oct 2022 07:04:35 -0400 Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0F915B495 for ; Fri, 28 Oct 2022 04:04:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1666955074; x=1698491074; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=EDa+rBvtiQl/d57HcQumvpplb3EJAE+BSWiTNb2Q+So=; b=agBtOk9DemLNxw8Tn2T8Xe+D1qkL3i1F7L3WUhbhrOtlswmPY4emxesJ od1PG8x2g0wfA4F3XQu8sHpEZkKI0G/rzuBzp513p1v8wv6yZDQgkrNbK dFo+j2k/ZNVFMQ4v4J4IrrinaL1fWXapMOvBX5tBDs1sb4iovQH0UNZMG 36OnqikDDHu+tScSX6gwdSP+Yyfb0ZqQbhTTZR+eYVgkHtsG4m8Ftpuz7 Fwu/WYau6sKZHjzic+iqKUG/M3ArbJeo8gzTEVt606OHgBGZDbKIbXv3W tuPSFrhotyrpDRnIj78L5Pg0zjMZf9IcuPYu2YwSr3NAU3PC1N+G9smJG A==; X-IronPort-AV: E=McAfee;i="6500,9779,10513"; a="291766531" X-IronPort-AV: E=Sophos;i="5.95,220,1661842800"; d="scan'208";a="291766531" Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Oct 2022 04:04:33 -0700 X-IronPort-AV: E=McAfee;i="6500,9779,10513"; a="701698079" X-IronPort-AV: E=Sophos;i="5.95,220,1661842800"; d="scan'208";a="701698079" Received: from jekeller-desk.amr.corp.intel.com ([10.166.241.7]) by fmsmga004-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Oct 2022 04:04:31 -0700 From: Jacob Keller To: Jakub Kicinski , David Miller Cc: netdev@vger.kernel.org, Jacob Keller , "K. Y. Srinivasan" , Haiyang Zhang , Stephen Hemminger , Wei Liu , Dexuan Cui , Tom Lendacky , Shyam Sundar S K , Eric Dumazet , Paolo Abeni , Siva Reddy Kallam , Prashant Sreedharan , Michael Chan , Yisen Zhuang , Salil Mehta , Jesse Brandeburg , Tony Nguyen , Tariq Toukan , Saeed Mahameed , Leon Romanovsky , Bryan Whitehead , Sergey Shtylyov , Giuseppe Cavallaro , Alexandre Torgue , Jose Abreu , Maxime Coquelin , Richard Cochran , Vivek Thampi , VMware PV-Drivers Reviewers , Jie Wang , Guangbin Huang , Eran Ben Elisha , Aya Levin , Cai Huoqing , Biju Das , Lad Prabhakar , Phil Edworthy , Jiasheng Jiang , "Gustavo A. R. Silva" , Linus Walleij , Wan Jiabing , Lv Ruyi , Arnd Bergmann Subject: [net-next v3 0/9] ptp: convert drivers to .adjfine Date: Fri, 28 Oct 2022 04:04:11 -0700 Message-Id: <20221028110420.3451088-1-jacob.e.keller@intel.com> X-Mailer: git-send-email 2.38.0.83.gd420dda05763 MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org Many drivers implementing PTP have not yet migrated to the new .adjfine frequency adjustment implementation. A handful of these drivers use hardware with a simple increment value which is adjusted by multiplying by the adjustment factor and then dividing by 1 billion. This calculation is very easy to convert to .adjfine, by simply updating the divisor. Introduce new helper functions, diff_by_scaled_ppm and adjust_by_scaled_ppm which perform the most common calculations used by drivers for this purpose. The adjust_by_scaled_ppm takes the base increment and scaled PPM value, and calculates the new increment to use. A few drivers need the difference and direction rather than a raw increment value. The diff_by_scaled_ppm calculates the difference and returns true if it should be a subtraction, false otherwise. This most closely aligns with existing driver implementations. I previously submitted v1 of this series at [1], and got some feedback only on a handful of drivers. In the interest of merging the changes which have received feedback, I've dropped the following drivers out of this send: * ptp_phc * ptp_ipx46x * tg3 * hclge * stmac * cpts I plan to submit those drivers changes again at a later date. As before, there are some drivers which are not trivial to convert to the new helper functions. While they may be able to work, their implementation is different and I lack the hardware or datasheets to determine what the correct implementation would be. * drivers/net/ethernet/broadcom/bnx2x * drivers/net/ethernet/broadcom/bnxt * drivers/net/ethernet/cavium/liquidio * drivers/net/ethernet/chelsio/cxgb4 * drivers/net/ethernet/freescale * drivers/net/ethernet/qlogic/qed * drivers/net/ethernet/qlogic/qede * drivers/net/ethernet/sfc * drivers/net/ethernet/sfc/siena * drivers/net/ethernet/ti/am65-cpts.c * drivers/ptp/ptp_dte.c My end goal is to drop the .adjfreq implementation entirely, and to that end I plan on modifying these drivers in the future to directly use scaled_ppm_to_ppb as the simplest method to convert them. Changes since v2: * Rebased to allow landing in 6.2 * Added Richard's Acked-by Cc: "K. Y. Srinivasan" Cc: Haiyang Zhang Cc: Stephen Hemminger Cc: Wei Liu Cc: Dexuan Cui Cc: Tom Lendacky Cc: Shyam Sundar S K Cc: "David S. Miller" Cc: Eric Dumazet Cc: Jakub Kicinski Cc: Paolo Abeni Cc: Siva Reddy Kallam Cc: Prashant Sreedharan Cc: Michael Chan Cc: Yisen Zhuang Cc: Salil Mehta Cc: Jesse Brandeburg Cc: Tony Nguyen Cc: Tariq Toukan Cc: Saeed Mahameed Cc: Leon Romanovsky Cc: Bryan Whitehead Cc: Sergey Shtylyov Cc: Giuseppe Cavallaro Cc: Alexandre Torgue Cc: Jose Abreu Cc: Maxime Coquelin Cc: Richard Cochran Cc: Vivek Thampi Cc: VMware PV-Drivers Reviewers Cc: Jie Wang Cc: Jacob Keller Cc: Guangbin Huang Cc: Eran Ben Elisha Cc: Aya Levin Cc: Cai Huoqing Cc: Biju Das Cc: Lad Prabhakar Cc: Phil Edworthy Cc: Jiasheng Jiang Cc: "Gustavo A. R. Silva" Cc: Linus Walleij Cc: Wan Jiabing Cc: Lv Ruyi Cc: Arnd Bergmann Jacob Keller (9): ptp: add missing documentation for parameters ptp: introduce helpers to adjust by scaled parts per million drivers: convert unsupported .adjfreq to .adjfine ptp: mlx4: convert to .adjfine and adjust_by_scaled_ppm ptp: mlx5: convert to .adjfine and adjust_by_scaled_ppm ptp: lan743x: remove .adjfreq implementation ptp: lan743x: use diff_by_scaled_ppm in .adjfine implementation ptp: ravb: convert to .adjfine and adjust_by_scaled_ppm ptp: xgbe: convert to .adjfine and adjust_by_scaled_ppm drivers/hv/hv_util.c | 4 +- drivers/net/ethernet/amd/xgbe/xgbe-ptp.c | 20 ++----- drivers/net/ethernet/intel/e1000e/ptp.c | 16 ++---- drivers/net/ethernet/intel/i40e/i40e_ptp.c | 17 ++---- drivers/net/ethernet/intel/ice/ice_ptp.c | 18 +------ drivers/net/ethernet/intel/igb/igb_ptp.c | 18 +------ drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c | 24 ++------- drivers/net/ethernet/mellanox/mlx4/en_clock.c | 29 ++++------ .../ethernet/mellanox/mlx5/core/lib/clock.c | 22 +++----- drivers/net/ethernet/microchip/lan743x_ptp.c | 54 +++---------------- drivers/net/ethernet/renesas/ravb_ptp.c | 17 ++---- drivers/ptp/ptp_kvm_common.c | 4 +- drivers/ptp/ptp_vmw.c | 4 +- include/linux/ptp_clock_kernel.h | 53 ++++++++++++++++++ 14 files changed, 105 insertions(+), 195 deletions(-) base-commit: 915b96c52763e2988e6368b538b487a7138b8fa4