All of lore.kernel.org
 help / color / mirror / Atom feed
* [net-next 00/14] ptp: convert drivers to .adjfine
@ 2022-08-18 22:27 Jacob Keller
  2022-08-18 22:27 ` [net-next 01/14] ptp: add missing documentation for parameters Jacob Keller
                   ` (14 more replies)
  0 siblings, 15 replies; 30+ messages in thread
From: Jacob Keller @ 2022-08-18 22:27 UTC (permalink / raw)
  To: netdev
  Cc: Jacob Keller, K. Y. Srinivasan, Haiyang Zhang, Stephen Hemminger,
	Wei Liu, Dexuan Cui, Tom Lendacky, Shyam Sundar S K,
	David S. Miller, Eric Dumazet, Jakub Kicinski, 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

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 recently updated all of the Intel drivers to the same calculation which is
now factored out into the two helper functions. These drivers are all
migrated in one change with the introduction of the helper functions.

The other driver changes are separated out. I do not have access to the
hardware necessary to test these, so they've only been compile tested. The
conversion is straight forward, but I expect driver maintainers will want to
test these changes appropriately. I've done my best to Cc relevant
maintainers on the cover letter and the appropriate change.

With this applied, there are still a handful of remaining drivers which are
not yet converted including:

 * 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

These drivers use varying calculation methods which are not directly
compatible with the adjust_by_scaled_ppm method. I lack access to the
hardware and knowledge of its implementation to convert them directly to
using scaled parts per million. Instead, I plan to follow up this series
with one which converts the remaining drivers to .adjfine by using
scaled_ppm_to_ppb in their .adjfine implementation. This will then allow
dropping the .adjfreq interface from the ptp_clock_info interface.

Cc: "K. Y. Srinivasan" <kys@microsoft.com>
Cc: Haiyang Zhang <haiyangz@microsoft.com>
Cc: Stephen Hemminger <sthemmin@microsoft.com>
Cc: Wei Liu <wei.liu@kernel.org>
Cc: Dexuan Cui <decui@microsoft.com>
Cc: Tom Lendacky <thomas.lendacky@amd.com>
Cc: Shyam Sundar S K <Shyam-sundar.S-k@amd.com>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Eric Dumazet <edumazet@google.com>
Cc: Jakub Kicinski <kuba@kernel.org>
Cc: Paolo Abeni <pabeni@redhat.com>
Cc: Siva Reddy Kallam <siva.kallam@broadcom.com>
Cc: Prashant Sreedharan <prashant@broadcom.com>
Cc: Michael Chan <mchan@broadcom.com>
Cc: Yisen Zhuang <yisen.zhuang@huawei.com>
Cc: Salil Mehta <salil.mehta@huawei.com>
Cc: Jesse Brandeburg <jesse.brandeburg@intel.com>
Cc: Tony Nguyen <anthony.l.nguyen@intel.com>
Cc: Tariq Toukan <tariqt@nvidia.com>
Cc: Saeed Mahameed <saeedm@nvidia.com>
Cc: Leon Romanovsky <leon@kernel.org>
Cc: Bryan Whitehead <bryan.whitehead@microchip.com>
Cc: Sergey Shtylyov <s.shtylyov@omp.ru>
Cc: Giuseppe Cavallaro <peppe.cavallaro@st.com>
Cc: Alexandre Torgue <alexandre.torgue@foss.st.com>
Cc: Jose Abreu <joabreu@synopsys.com>
Cc: Maxime Coquelin <mcoquelin.stm32@gmail.com>
Cc: Richard Cochran <richardcochran@gmail.com>
Cc: Vivek Thampi <vithampi@vmware.com>
Cc: VMware PV-Drivers Reviewers <pv-drivers@vmware.com>
Cc: Jie Wang <wangjie125@huawei.com>
Cc: Jacob Keller <jacob.e.keller@intel.com>
Cc: Guangbin Huang <huangguangbin2@huawei.com>
Cc: Eran Ben Elisha <eranbe@nvidia.com>
Cc: Aya Levin <ayal@nvidia.com>
Cc: Cai Huoqing <cai.huoqing@linux.dev>
Cc: Biju Das <biju.das.jz@bp.renesas.com>
Cc: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Cc: Phil Edworthy <phil.edworthy@renesas.com>
Cc: Jiasheng Jiang <jiasheng@iscas.ac.cn>
Cc: "Gustavo A. R. Silva" <gustavoars@kernel.org>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: Wan Jiabing <wanjiabing@vivo.com>
Cc: Lv Ruyi <lv.ruyi@zte.com.cn>
Cc: Arnd Bergmann <arnd@arndb.de>

Jacob Keller (14):
  ptp: add missing documentation for parameters
  ptp: introduce helpers to adjust by scaled parts per million
  drivers: convert unsupported .adjfreq to .adjfine
  ptp_phc: convert to .adjfine and ptp_adj_scaled_ppm
  ptp_ixp46x: convert to .adjfine and adjust_by_scaled_ppm
  ptp: tg3: convert to .adjfine and diff_by_scaled_ppm
  ptp: hclge: convert to .adjfine and adjust_by_scaled_ppm
  ptp: mlx4: convert to .adjfine and adjust_by_scaled_ppm
  ptp: mlx5: convert to .adjfine and adjust_by_scaled_ppm
  ptp: lan743x: convert to .adjfine and diff_by_scaled_ppm
  ptp: ravb: convert to .adjfine and adjust_by_scaled_ppm
  ptp: stmac: convert to .adjfine and adjust_by_scaled_ppm
  ptp: cpts: 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/broadcom/tg3.c           | 22 ++++----
 .../hisilicon/hns3/hns3pf/hclge_ptp.c         | 22 ++------
 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 | 25 ++++-----
 .../ethernet/mellanox/mlx5/core/lib/clock.c   | 22 +++-----
 drivers/net/ethernet/microchip/lan743x_ptp.c  | 28 ++++------
 drivers/net/ethernet/renesas/ravb_ptp.c       | 16 ++----
 .../net/ethernet/stmicro/stmmac/stmmac_ptp.c  | 23 +++-----
 drivers/net/ethernet/ti/cpts.c                | 21 +++-----
 drivers/net/ethernet/xscale/ptp_ixp46x.c      | 19 ++-----
 drivers/ptp/ptp_kvm_common.c                  |  4 +-
 drivers/ptp/ptp_pch.c                         | 19 ++-----
 drivers/ptp/ptp_vmw.c                         |  4 +-
 include/linux/ptp_clock_kernel.h              | 53 +++++++++++++++++++
 20 files changed, 143 insertions(+), 252 deletions(-)


base-commit: 9017462f006c4b686cb1e1e1a3a52ea8363076e6
-- 
2.37.1.208.ge72d93e88cb2


^ permalink raw reply	[flat|nested] 30+ messages in thread

end of thread, other threads:[~2022-08-25 21:59 UTC | newest]

Thread overview: 30+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-08-18 22:27 [net-next 00/14] ptp: convert drivers to .adjfine Jacob Keller
2022-08-18 22:27 ` [net-next 01/14] ptp: add missing documentation for parameters Jacob Keller
2022-08-18 22:27 ` [net-next 02/14] ptp: introduce helpers to adjust by scaled parts per million Jacob Keller
2022-08-18 22:27 ` [net-next 03/14] drivers: convert unsupported .adjfreq to .adjfine Jacob Keller
2022-08-18 22:27 ` [net-next 04/14] ptp_phc: convert to .adjfine and ptp_adj_scaled_ppm Jacob Keller
2022-08-18 22:27 ` [net-next 05/14] ptp_ixp46x: convert to .adjfine and adjust_by_scaled_ppm Jacob Keller
2022-08-18 22:27 ` [net-next 06/14] ptp: tg3: convert to .adjfine and diff_by_scaled_ppm Jacob Keller
2022-08-18 22:27 ` [net-next 07/14] ptp: hclge: convert to .adjfine and adjust_by_scaled_ppm Jacob Keller
2022-08-18 22:27 ` [net-next 08/14] ptp: mlx4: " Jacob Keller
2022-08-18 22:27 ` [net-next 09/14] ptp: mlx5: " Jacob Keller
2022-08-23 15:30   ` Gal Pressman
2022-08-25  6:31     ` Gal Pressman
2022-08-25 21:59     ` Keller, Jacob E
2022-08-18 22:27 ` [net-next 10/14] ptp: lan743x: convert to .adjfine and diff_by_scaled_ppm Jacob Keller
2022-08-19  2:47   ` kernel test robot
2022-08-21 15:22   ` kernel test robot
2022-08-22 17:10     ` Keller, Jacob E
2022-08-18 22:27 ` [net-next 11/14] ptp: ravb: convert to .adjfine and adjust_by_scaled_ppm Jacob Keller
2022-08-20 19:33   ` Sergey Shtylyov
2022-08-22 17:07     ` Keller, Jacob E
2022-08-18 22:27 ` [net-next 12/14] ptp: stmac: " Jacob Keller
2022-08-18 22:27 ` [net-next 13/14] ptp: cpts: " Jacob Keller
2022-08-18 22:27 ` [net-next 14/14] ptp: xgbe: " Jacob Keller
2022-08-19 16:05   ` Tom Lendacky
2022-08-19 21:04     ` Keller, Jacob E
2022-08-22 20:47       ` Tom Lendacky
2022-08-22 21:11         ` Keller, Jacob E
2022-08-19  7:39 ` [net-next 00/14] ptp: convert drivers to .adjfine Richard Cochran
2022-08-19 20:56   ` Keller, Jacob E
2022-08-23 16:28     ` Richard Cochran

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.