mbox series

[net-next,00/14] ptp: convert drivers to .adjfine

Message ID 20220818222742.1070935-1-jacob.e.keller@intel.com (mailing list archive)
Headers show
Series ptp: convert drivers to .adjfine | expand

Message

Jacob Keller Aug. 18, 2022, 10:27 p.m. UTC
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

Comments

Richard Cochran Aug. 19, 2022, 7:39 a.m. UTC | #1
On Thu, Aug 18, 2022 at 03:27:28PM -0700, Jacob Keller wrote:
> Many drivers implementing PTP have not yet migrated to the new .adjfine
> frequency adjustment implementation.

The re-factoring looks like it will remove much duplicated code.
I guess you tested the Intel drivers yourself?

The other drivers want sanity testing to make sure nothing broke.

I'm on vacation until Monday, but I can test cpts on BBB then.

Thanks,
Richard
Jacob Keller Aug. 19, 2022, 8:56 p.m. UTC | #2
> -----Original Message-----
> From: Richard Cochran <richardcochran@gmail.com>
> Sent: Friday, August 19, 2022 12:39 AM
> To: Keller, Jacob E <jacob.e.keller@intel.com>
> Cc: netdev@vger.kernel.org; K. Y. Srinivasan <kys@microsoft.com>; Haiyang
> Zhang <haiyangz@microsoft.com>; Stephen Hemminger
> <sthemmin@microsoft.com>; Wei Liu <wei.liu@kernel.org>; Cui, Dexuan
> <decui@microsoft.com>; Tom Lendacky <thomas.lendacky@amd.com>; Shyam
> Sundar S K <Shyam-sundar.S-k@amd.com>; David S. Miller
> <davem@davemloft.net>; Eric Dumazet <edumazet@google.com>; Jakub Kicinski
> <kuba@kernel.org>; Paolo Abeni <pabeni@redhat.com>; Siva Reddy Kallam
> <siva.kallam@broadcom.com>; Prashant Sreedharan
> <prashant@broadcom.com>; Michael Chan <mchan@broadcom.com>; Yisen
> Zhuang <yisen.zhuang@huawei.com>; Salil Mehta <salil.mehta@huawei.com>;
> Brandeburg, Jesse <jesse.brandeburg@intel.com>; Nguyen, Anthony L
> <anthony.l.nguyen@intel.com>; Tariq Toukan <tariqt@nvidia.com>; Saeed
> Mahameed <saeedm@nvidia.com>; Leon Romanovsky <leon@kernel.org>;
> Bryan Whitehead <bryan.whitehead@microchip.com>; Sergey Shtylyov
> <s.shtylyov@omp.ru>; Giuseppe Cavallaro <peppe.cavallaro@st.com>;
> Alexandre Torgue <alexandre.torgue@foss.st.com>; Jose Abreu
> <joabreu@synopsys.com>; Maxime Coquelin <mcoquelin.stm32@gmail.com>;
> Thampi, Vivek <vithampi@vmware.com>; VMware PV-Drivers Reviewers <pv-
> drivers@vmware.com>; Jie Wang <wangjie125@huawei.com>; Guangbin Huang
> <huangguangbin2@huawei.com>; Eran Ben Elisha <eranbe@nvidia.com>; Aya
> Levin <ayal@nvidia.com>; Cai Huoqing <cai.huoqing@linux.dev>; Biju Das
> <biju.das.jz@bp.renesas.com>; Lad Prabhakar <prabhakar.mahadev-
> lad.rj@bp.renesas.com>; Phil Edworthy <phil.edworthy@renesas.com>; Jiasheng
> Jiang <jiasheng@iscas.ac.cn>; Gustavo A. R. Silva <gustavoars@kernel.org>; Linus
> Walleij <linus.walleij@linaro.org>; Wan Jiabing <wanjiabing@vivo.com>; Lv Ruyi
> <lv.ruyi@zte.com.cn>; Arnd Bergmann <arnd@arndb.de>
> Subject: Re: [net-next 00/14] ptp: convert drivers to .adjfine
> 
> On Thu, Aug 18, 2022 at 03:27:28PM -0700, Jacob Keller wrote:
> > Many drivers implementing PTP have not yet migrated to the new .adjfine
> > frequency adjustment implementation.
> 
> The re-factoring looks like it will remove much duplicated code.
> I guess you tested the Intel drivers yourself?
> 
> The other drivers want sanity testing to make sure nothing broke.
> 

Yes. I tried to CC as many folks as look like involved in the maintenance of the PTP for those parts, and testing + sanity checks are necessary.

> I'm on vacation until Monday, but I can test cpts on BBB then.
> 
> Thanks,
> Richard

That would be great, thanks!
Richard Cochran Aug. 23, 2022, 4:28 p.m. UTC | #3
On Fri, Aug 19, 2022 at 08:56:38PM +0000, Keller, Jacob E wrote:
> > I'm on vacation until Monday, but I can test cpts on BBB then.
> > 
> > Thanks,
> > Richard
> 
> That would be great, thanks!

Oh well, net-next doesn't even boot out of the box on BBB.  Maybe the
TI folks have a recent working board with cpts...

Thanks,
Richard