[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20220818222742.1070935-1-jacob.e.keller@intel.com>
Date: Thu, 18 Aug 2022 15:27:28 -0700
From: Jacob Keller <jacob.e.keller@...el.com>
To: netdev@...r.kernel.org
Cc: Jacob Keller <jacob.e.keller@...el.com>,
"K. Y. Srinivasan" <kys@...rosoft.com>,
Haiyang Zhang <haiyangz@...rosoft.com>,
Stephen Hemminger <sthemmin@...rosoft.com>,
Wei Liu <wei.liu@...nel.org>, Dexuan Cui <decui@...rosoft.com>,
Tom Lendacky <thomas.lendacky@....com>,
Shyam Sundar S K <Shyam-sundar.S-k@....com>,
"David S. Miller" <davem@...emloft.net>,
Eric Dumazet <edumazet@...gle.com>,
Jakub Kicinski <kuba@...nel.org>,
Paolo Abeni <pabeni@...hat.com>,
Siva Reddy Kallam <siva.kallam@...adcom.com>,
Prashant Sreedharan <prashant@...adcom.com>,
Michael Chan <mchan@...adcom.com>,
Yisen Zhuang <yisen.zhuang@...wei.com>,
Salil Mehta <salil.mehta@...wei.com>,
Jesse Brandeburg <jesse.brandeburg@...el.com>,
Tony Nguyen <anthony.l.nguyen@...el.com>,
Tariq Toukan <tariqt@...dia.com>,
Saeed Mahameed <saeedm@...dia.com>,
Leon Romanovsky <leon@...nel.org>,
Bryan Whitehead <bryan.whitehead@...rochip.com>,
Sergey Shtylyov <s.shtylyov@....ru>,
Giuseppe Cavallaro <peppe.cavallaro@...com>,
Alexandre Torgue <alexandre.torgue@...s.st.com>,
Jose Abreu <joabreu@...opsys.com>,
Maxime Coquelin <mcoquelin.stm32@...il.com>,
Richard Cochran <richardcochran@...il.com>,
Vivek Thampi <vithampi@...are.com>,
VMware PV-Drivers Reviewers <pv-drivers@...are.com>,
Jie Wang <wangjie125@...wei.com>,
Guangbin Huang <huangguangbin2@...wei.com>,
Eran Ben Elisha <eranbe@...dia.com>,
Aya Levin <ayal@...dia.com>,
Cai Huoqing <cai.huoqing@...ux.dev>,
Biju Das <biju.das.jz@...renesas.com>,
Lad Prabhakar <prabhakar.mahadev-lad.rj@...renesas.com>,
Phil Edworthy <phil.edworthy@...esas.com>,
Jiasheng Jiang <jiasheng@...as.ac.cn>,
"Gustavo A. R. Silva" <gustavoars@...nel.org>,
Linus Walleij <linus.walleij@...aro.org>,
Wan Jiabing <wanjiabing@...o.com>,
Lv Ruyi <lv.ruyi@....com.cn>, Arnd Bergmann <arnd@...db.de>
Subject: [net-next 00/14] ptp: convert drivers to .adjfine
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@...rosoft.com>
Cc: Haiyang Zhang <haiyangz@...rosoft.com>
Cc: Stephen Hemminger <sthemmin@...rosoft.com>
Cc: Wei Liu <wei.liu@...nel.org>
Cc: Dexuan Cui <decui@...rosoft.com>
Cc: Tom Lendacky <thomas.lendacky@....com>
Cc: Shyam Sundar S K <Shyam-sundar.S-k@....com>
Cc: "David S. Miller" <davem@...emloft.net>
Cc: Eric Dumazet <edumazet@...gle.com>
Cc: Jakub Kicinski <kuba@...nel.org>
Cc: Paolo Abeni <pabeni@...hat.com>
Cc: Siva Reddy Kallam <siva.kallam@...adcom.com>
Cc: Prashant Sreedharan <prashant@...adcom.com>
Cc: Michael Chan <mchan@...adcom.com>
Cc: Yisen Zhuang <yisen.zhuang@...wei.com>
Cc: Salil Mehta <salil.mehta@...wei.com>
Cc: Jesse Brandeburg <jesse.brandeburg@...el.com>
Cc: Tony Nguyen <anthony.l.nguyen@...el.com>
Cc: Tariq Toukan <tariqt@...dia.com>
Cc: Saeed Mahameed <saeedm@...dia.com>
Cc: Leon Romanovsky <leon@...nel.org>
Cc: Bryan Whitehead <bryan.whitehead@...rochip.com>
Cc: Sergey Shtylyov <s.shtylyov@....ru>
Cc: Giuseppe Cavallaro <peppe.cavallaro@...com>
Cc: Alexandre Torgue <alexandre.torgue@...s.st.com>
Cc: Jose Abreu <joabreu@...opsys.com>
Cc: Maxime Coquelin <mcoquelin.stm32@...il.com>
Cc: Richard Cochran <richardcochran@...il.com>
Cc: Vivek Thampi <vithampi@...are.com>
Cc: VMware PV-Drivers Reviewers <pv-drivers@...are.com>
Cc: Jie Wang <wangjie125@...wei.com>
Cc: Jacob Keller <jacob.e.keller@...el.com>
Cc: Guangbin Huang <huangguangbin2@...wei.com>
Cc: Eran Ben Elisha <eranbe@...dia.com>
Cc: Aya Levin <ayal@...dia.com>
Cc: Cai Huoqing <cai.huoqing@...ux.dev>
Cc: Biju Das <biju.das.jz@...renesas.com>
Cc: Lad Prabhakar <prabhakar.mahadev-lad.rj@...renesas.com>
Cc: Phil Edworthy <phil.edworthy@...esas.com>
Cc: Jiasheng Jiang <jiasheng@...as.ac.cn>
Cc: "Gustavo A. R. Silva" <gustavoars@...nel.org>
Cc: Linus Walleij <linus.walleij@...aro.org>
Cc: Wan Jiabing <wanjiabing@...o.com>
Cc: Lv Ruyi <lv.ruyi@....com.cn>
Cc: Arnd Bergmann <arnd@...db.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
Powered by blists - more mailing lists