Message ID | 20220818222742.1070935-12-jacob.e.keller@intel.com (mailing list archive) |
---|---|
State | Changes Requested |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | ptp: convert drivers to .adjfine | expand |
Hello! On 8/19/22 1:27 AM, Jacob Keller wrote: > The ravb implementation of .adjfreq is implemented in terms of a > straight forward "base * ppb / 1 billion" calculation. > > Convert this driver to .adjfine and use the adjust_by_scaled_ppm helper > function to calculate the new addend. > > Signed-off-by: Jacob Keller <jacob.e.keller@intel.com> > Cc: Sergey Shtylyov <s.shtylyov@omp.ru> > Cc: Biju Das <biju.das.jz@bp.renesas.com> > Cc: Phil Edworthy <phil.edworthy@renesas.com> > Cc: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> > Cc: linux-renesas-soc@vger.kernel.org > --- > > I do not have this hardware, and have only compile tested the change. > > drivers/net/ethernet/renesas/ravb_ptp.c | 16 +++++----------- > 1 file changed, 5 insertions(+), 11 deletions(-) > > diff --git a/drivers/net/ethernet/renesas/ravb_ptp.c b/drivers/net/ethernet/renesas/ravb_ptp.c > index 87c4306d66ec..941aa3b0e8a0 100644 > --- a/drivers/net/ethernet/renesas/ravb_ptp.c > +++ b/drivers/net/ethernet/renesas/ravb_ptp.c > @@ -88,24 +88,18 @@ static int ravb_ptp_update_compare(struct ravb_private *priv, u32 ns) > } > > /* PTP clock operations */ > -static int ravb_ptp_adjfreq(struct ptp_clock_info *ptp, s32 ppb) > +static int ravb_ptp_adjfine(struct ptp_clock_info *ptp, long scaled_ppm) > { > struct ravb_private *priv = container_of(ptp, struct ravb_private, > ptp.info); > struct net_device *ndev = priv->ndev; > unsigned long flags; > - u32 diff, addend; > - bool neg_adj = false; > + u32 addend; > u32 gccr; > > - if (ppb < 0) { > - neg_adj = true; > - ppb = -ppb; > - } > addend = priv->ptp.default_addend; I don't think we should keep this line -- it has no effect now... > - diff = div_u64((u64)addend * ppb, NSEC_PER_SEC); > - > - addend = neg_adj ? addend - diff : addend + diff; > + addend = (u32)adjust_by_scaled_ppm(priv->ptp.default_addend, > + scaled_ppm); > > spin_lock_irqsave(&priv->lock, flags); > [...] MBR, Sergey
> -----Original Message----- > From: Sergey Shtylyov <s.shtylyov@omp.ru> > Sent: Saturday, August 20, 2022 12:34 PM > To: Keller, Jacob E <jacob.e.keller@intel.com>; netdev@vger.kernel.org > Cc: 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>; Giuseppe Cavallaro > <peppe.cavallaro@st.com>; Alexandre Torgue <alexandre.torgue@foss.st.com>; > Jose Abreu <joabreu@synopsys.com>; Maxime Coquelin > <mcoquelin.stm32@gmail.com>; Richard Cochran <richardcochran@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>; linux-renesas- > soc@vger.kernel.org > Subject: Re: [net-next 11/14] ptp: ravb: convert to .adjfine and > adjust_by_scaled_ppm > > Hello! > > On 8/19/22 1:27 AM, Jacob Keller wrote: > > > The ravb implementation of .adjfreq is implemented in terms of a > > straight forward "base * ppb / 1 billion" calculation. > > > > Convert this driver to .adjfine and use the adjust_by_scaled_ppm helper > > function to calculate the new addend. > > > > Signed-off-by: Jacob Keller <jacob.e.keller@intel.com> > > Cc: Sergey Shtylyov <s.shtylyov@omp.ru> > > Cc: Biju Das <biju.das.jz@bp.renesas.com> > > Cc: Phil Edworthy <phil.edworthy@renesas.com> > > Cc: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> > > Cc: linux-renesas-soc@vger.kernel.org > > --- > > > > I do not have this hardware, and have only compile tested the change. > > > > drivers/net/ethernet/renesas/ravb_ptp.c | 16 +++++----------- > > 1 file changed, 5 insertions(+), 11 deletions(-) > > > > diff --git a/drivers/net/ethernet/renesas/ravb_ptp.c > b/drivers/net/ethernet/renesas/ravb_ptp.c > > index 87c4306d66ec..941aa3b0e8a0 100644 > > --- a/drivers/net/ethernet/renesas/ravb_ptp.c > > +++ b/drivers/net/ethernet/renesas/ravb_ptp.c > > @@ -88,24 +88,18 @@ static int ravb_ptp_update_compare(struct > ravb_private *priv, u32 ns) > > } > > > > /* PTP clock operations */ > > -static int ravb_ptp_adjfreq(struct ptp_clock_info *ptp, s32 ppb) > > +static int ravb_ptp_adjfine(struct ptp_clock_info *ptp, long scaled_ppm) > > { > > struct ravb_private *priv = container_of(ptp, struct ravb_private, > > ptp.info); > > struct net_device *ndev = priv->ndev; > > unsigned long flags; > > - u32 diff, addend; > > - bool neg_adj = false; > > + u32 addend; > > u32 gccr; > > > > - if (ppb < 0) { > > - neg_adj = true; > > - ppb = -ppb; > > - } > > addend = priv->ptp.default_addend; > > I don't think we should keep this line -- it has no effect now... > Yea this can be dropped. > > - diff = div_u64((u64)addend * ppb, NSEC_PER_SEC); > > - > > - addend = neg_adj ? addend - diff : addend + diff; > > + addend = (u32)adjust_by_scaled_ppm(priv->ptp.default_addend, > > + scaled_ppm); > > > > spin_lock_irqsave(&priv->lock, flags); > > > [...] > > MBR, Sergey
diff --git a/drivers/net/ethernet/renesas/ravb_ptp.c b/drivers/net/ethernet/renesas/ravb_ptp.c index 87c4306d66ec..941aa3b0e8a0 100644 --- a/drivers/net/ethernet/renesas/ravb_ptp.c +++ b/drivers/net/ethernet/renesas/ravb_ptp.c @@ -88,24 +88,18 @@ static int ravb_ptp_update_compare(struct ravb_private *priv, u32 ns) } /* PTP clock operations */ -static int ravb_ptp_adjfreq(struct ptp_clock_info *ptp, s32 ppb) +static int ravb_ptp_adjfine(struct ptp_clock_info *ptp, long scaled_ppm) { struct ravb_private *priv = container_of(ptp, struct ravb_private, ptp.info); struct net_device *ndev = priv->ndev; unsigned long flags; - u32 diff, addend; - bool neg_adj = false; + u32 addend; u32 gccr; - if (ppb < 0) { - neg_adj = true; - ppb = -ppb; - } addend = priv->ptp.default_addend; - diff = div_u64((u64)addend * ppb, NSEC_PER_SEC); - - addend = neg_adj ? addend - diff : addend + diff; + addend = (u32)adjust_by_scaled_ppm(priv->ptp.default_addend, + scaled_ppm); spin_lock_irqsave(&priv->lock, flags); @@ -295,7 +289,7 @@ static const struct ptp_clock_info ravb_ptp_info = { .max_adj = 50000000, .n_ext_ts = N_EXT_TS, .n_per_out = N_PER_OUT, - .adjfreq = ravb_ptp_adjfreq, + .adjfine = ravb_ptp_adjfine, .adjtime = ravb_ptp_adjtime, .gettime64 = ravb_ptp_gettime64, .settime64 = ravb_ptp_settime64,
The ravb implementation of .adjfreq is implemented in terms of a straight forward "base * ppb / 1 billion" calculation. Convert this driver to .adjfine and use the adjust_by_scaled_ppm helper function to calculate the new addend. Signed-off-by: Jacob Keller <jacob.e.keller@intel.com> Cc: Sergey Shtylyov <s.shtylyov@omp.ru> Cc: Biju Das <biju.das.jz@bp.renesas.com> Cc: Phil Edworthy <phil.edworthy@renesas.com> Cc: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> Cc: linux-renesas-soc@vger.kernel.org --- I do not have this hardware, and have only compile tested the change. drivers/net/ethernet/renesas/ravb_ptp.c | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-)