All of lore.kernel.org
 help / color / mirror / Atom feed
From: Richard Cochran <richardcochran@gmail.com>
To: <netdev@vger.kernel.org>
Cc: linux-kernel@vger.kernel.org, "Amir Vadai" <amirv@mellanox.com>,
	"Ariel Elior" <ariel.elior@qlogic.com>,
	"Arnd Bergmann" <arnd@linaro.org>,
	"Baolin Wang" <baolin.wang@linaro.org>,
	"Ben Hutchings" <ben@decadent.org.uk>,
	"Bruce Allan" <bruce.w.allan@intel.com>,
	"Carolyn Wyborny" <carolyn.wyborny@intel.com>,
	"Chris Metcalf" <cmetcalf@ezchip.com>,
	"David Miller" <davem@davemloft.net>,
	"Frank Li" <Frank.Li@freescale.com>,
	"Giuseppe Cavallaro" <peppe.cavallaro@st.com>,
	"Jeff Kirsher" <jeffrey.t.kirsher@intel.com>,
	"John Stultz" <john.stultz@linaro.org>,
	"Luwei Zhou" <b45643@freescale.com>,
	"Matthew Vick" <matthew.vick@intel.com>,
	"Michael Chan" <mchan@broadcom.com>,
	"Prashant Sreedharan" <prashant@broadcom.com>,
	"Shradha Shah" <sshah@solarflare.com>,
	"Solarflare linux maintainers" <linux-net-drivers@solarflare.com>,
	"Sonic Zhang" <sonic.zhang@analog.com>,
	"Stefan Sørensen" <stefan.sorensen@spectralink.com>,
	"Thomas Gleixner" <tglx@linutronix.de>,
	"Tom Lendacky" <thomas.lendacky@amd.com>
Subject: [PATCH net-next V2 12/23] ptp: i40e: convert to the 64 bit get/set time methods.
Date: Sat, 21 Mar 2015 22:39:30 +0100	[thread overview]
Message-ID: <6fa7cb21daad95e7663e6257336a872b655687c8.1426973658.git.richardcochran@gmail.com> (raw)
In-Reply-To: <cover.1426973658.git.richardcochran@gmail.com>

The device appears to use a 64 bit nanoseconds register, and so with
this patch the driver should be ready for the year 2038.

Compile tested only.

Signed-off-by: Richard Cochran <richardcochran@gmail.com>
---
 drivers/net/ethernet/intel/i40e/i40e_ptp.c |   26 +++++++++++++-------------
 1 file changed, 13 insertions(+), 13 deletions(-)

diff --git a/drivers/net/ethernet/intel/i40e/i40e_ptp.c b/drivers/net/ethernet/intel/i40e/i40e_ptp.c
index fabcfa1..a92b772 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_ptp.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_ptp.c
@@ -57,7 +57,7 @@
  * timespec. However, since the registers are 64 bits of nanoseconds, we must
  * convert the result to a timespec before we can return.
  **/
-static void i40e_ptp_read(struct i40e_pf *pf, struct timespec *ts)
+static void i40e_ptp_read(struct i40e_pf *pf, struct timespec64 *ts)
 {
 	struct i40e_hw *hw = &pf->hw;
 	u32 hi, lo;
@@ -69,7 +69,7 @@ static void i40e_ptp_read(struct i40e_pf *pf, struct timespec *ts)
 
 	ns = (((u64)hi) << 32) | lo;
 
-	*ts = ns_to_timespec(ns);
+	*ts = ns_to_timespec64(ns);
 }
 
 /**
@@ -81,10 +81,10 @@ static void i40e_ptp_read(struct i40e_pf *pf, struct timespec *ts)
  * we receive a timespec from the stack, we must convert that timespec into
  * nanoseconds before programming the registers.
  **/
-static void i40e_ptp_write(struct i40e_pf *pf, const struct timespec *ts)
+static void i40e_ptp_write(struct i40e_pf *pf, const struct timespec64 *ts)
 {
 	struct i40e_hw *hw = &pf->hw;
-	u64 ns = timespec_to_ns(ts);
+	u64 ns = timespec64_to_ns(ts);
 
 	/* The timer will not update until the high register is written, so
 	 * write the low register first.
@@ -159,14 +159,14 @@ static int i40e_ptp_adjfreq(struct ptp_clock_info *ptp, s32 ppb)
 static int i40e_ptp_adjtime(struct ptp_clock_info *ptp, s64 delta)
 {
 	struct i40e_pf *pf = container_of(ptp, struct i40e_pf, ptp_caps);
-	struct timespec now, then = ns_to_timespec(delta);
+	struct timespec64 now, then = ns_to_timespec64(delta);
 	unsigned long flags;
 
 	spin_lock_irqsave(&pf->tmreg_lock, flags);
 
 	i40e_ptp_read(pf, &now);
-	now = timespec_add(now, then);
-	i40e_ptp_write(pf, (const struct timespec *)&now);
+	now = timespec64_add(now, then);
+	i40e_ptp_write(pf, (const struct timespec64 *)&now);
 
 	spin_unlock_irqrestore(&pf->tmreg_lock, flags);
 
@@ -181,7 +181,7 @@ static int i40e_ptp_adjtime(struct ptp_clock_info *ptp, s64 delta)
  * Read the device clock and return the correct value on ns, after converting it
  * into a timespec struct.
  **/
-static int i40e_ptp_gettime(struct ptp_clock_info *ptp, struct timespec *ts)
+static int i40e_ptp_gettime(struct ptp_clock_info *ptp, struct timespec64 *ts)
 {
 	struct i40e_pf *pf = container_of(ptp, struct i40e_pf, ptp_caps);
 	unsigned long flags;
@@ -202,7 +202,7 @@ static int i40e_ptp_gettime(struct ptp_clock_info *ptp, struct timespec *ts)
  * to ns happens in the write function.
  **/
 static int i40e_ptp_settime(struct ptp_clock_info *ptp,
-			    const struct timespec *ts)
+			    const struct timespec64 *ts)
 {
 	struct i40e_pf *pf = container_of(ptp, struct i40e_pf, ptp_caps);
 	unsigned long flags;
@@ -613,8 +613,8 @@ static long i40e_ptp_create_clock(struct i40e_pf *pf)
 	pf->ptp_caps.pps = 0;
 	pf->ptp_caps.adjfreq = i40e_ptp_adjfreq;
 	pf->ptp_caps.adjtime = i40e_ptp_adjtime;
-	pf->ptp_caps.gettime = i40e_ptp_gettime;
-	pf->ptp_caps.settime = i40e_ptp_settime;
+	pf->ptp_caps.gettime64 = i40e_ptp_gettime;
+	pf->ptp_caps.settime64 = i40e_ptp_settime;
 	pf->ptp_caps.enable = i40e_ptp_feature_enable;
 
 	/* Attempt to register the clock before enabling the hardware. */
@@ -673,7 +673,7 @@ void i40e_ptp_init(struct i40e_pf *pf)
 		dev_err(&pf->pdev->dev, "%s: ptp_clock_register failed\n",
 			__func__);
 	} else {
-		struct timespec ts;
+		struct timespec64 ts;
 		u32 regval;
 
 		dev_info(&pf->pdev->dev, "%s: added PHC on %s\n", __func__,
@@ -695,7 +695,7 @@ void i40e_ptp_init(struct i40e_pf *pf)
 		i40e_ptp_set_timestamp_mode(pf, &pf->tstamp_config);
 
 		/* Set the clock value. */
-		ts = ktime_to_timespec(ktime_get_real());
+		ts = ktime_to_timespec64(ktime_get_real());
 		i40e_ptp_settime(&pf->ptp_caps, &ts);
 	}
 }
-- 
1.7.10.4


WARNING: multiple messages have this Message-ID (diff)
From: Richard Cochran <richardcochran@gmail.com>
To: <netdev@vger.kernel.org>
Cc: linux-kernel@vger.kernel.org, "Amir Vadai" <amirv@mellanox.com>,
	"Ariel Elior" <ariel.elior@qlogic.com>,
	"Arnd Bergmann" <arnd@linaro.org>,
	"Baolin Wang" <baolin.wang@linaro.org>,
	"Ben Hutchings" <ben@decadent.org.uk>,
	"Bruce Allan" <bruce.w.allan@intel.com>,
	"Carolyn Wyborny" <carolyn.wyborny@intel.com>,
	"Chris Metcalf" <cmetcalf@ezchip.com>,
	"David Miller" <davem@davemloft.net>,
	"Frank Li" <Frank.Li@freescale.com>,
	"Giuseppe Cavallaro" <peppe.cavallaro@st.com>,
	"Jeff Kirsher" <jeffrey.t.kirsher@intel.com>,
	"John Stultz" <john.stultz@linaro.org>,
	"Luwei Zhou" <b45643@freescale.com>,
	"Matthew Vick" <matthew.vick@intel.com>,
	"Michael Chan" <mchan@broadcom.com>,
	"Prashant Sreedharan" <prashant@broadcom.com>,
	"Shradha Shah" <sshah@solarflare.com>,
	"Solarflare linux maintainers" <linux-net-drivers@solarflare.com>,
	"Sonic Zhang" <sonic.zhang@analog.com>
Subject: [PATCH net-next V2 12/23] ptp: i40e: convert to the 64 bit get/set time methods.
Date: Sat, 21 Mar 2015 22:39:30 +0100	[thread overview]
Message-ID: <6fa7cb21daad95e7663e6257336a872b655687c8.1426973658.git.richardcochran@gmail.com> (raw)
In-Reply-To: <cover.1426973658.git.richardcochran@gmail.com>

The device appears to use a 64 bit nanoseconds register, and so with
this patch the driver should be ready for the year 2038.

Compile tested only.

Signed-off-by: Richard Cochran <richardcochran@gmail.com>
---
 drivers/net/ethernet/intel/i40e/i40e_ptp.c |   26 +++++++++++++-------------
 1 file changed, 13 insertions(+), 13 deletions(-)

diff --git a/drivers/net/ethernet/intel/i40e/i40e_ptp.c b/drivers/net/ethernet/intel/i40e/i40e_ptp.c
index fabcfa1..a92b772 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_ptp.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_ptp.c
@@ -57,7 +57,7 @@
  * timespec. However, since the registers are 64 bits of nanoseconds, we must
  * convert the result to a timespec before we can return.
  **/
-static void i40e_ptp_read(struct i40e_pf *pf, struct timespec *ts)
+static void i40e_ptp_read(struct i40e_pf *pf, struct timespec64 *ts)
 {
 	struct i40e_hw *hw = &pf->hw;
 	u32 hi, lo;
@@ -69,7 +69,7 @@ static void i40e_ptp_read(struct i40e_pf *pf, struct timespec *ts)
 
 	ns = (((u64)hi) << 32) | lo;
 
-	*ts = ns_to_timespec(ns);
+	*ts = ns_to_timespec64(ns);
 }
 
 /**
@@ -81,10 +81,10 @@ static void i40e_ptp_read(struct i40e_pf *pf, struct timespec *ts)
  * we receive a timespec from the stack, we must convert that timespec into
  * nanoseconds before programming the registers.
  **/
-static void i40e_ptp_write(struct i40e_pf *pf, const struct timespec *ts)
+static void i40e_ptp_write(struct i40e_pf *pf, const struct timespec64 *ts)
 {
 	struct i40e_hw *hw = &pf->hw;
-	u64 ns = timespec_to_ns(ts);
+	u64 ns = timespec64_to_ns(ts);
 
 	/* The timer will not update until the high register is written, so
 	 * write the low register first.
@@ -159,14 +159,14 @@ static int i40e_ptp_adjfreq(struct ptp_clock_info *ptp, s32 ppb)
 static int i40e_ptp_adjtime(struct ptp_clock_info *ptp, s64 delta)
 {
 	struct i40e_pf *pf = container_of(ptp, struct i40e_pf, ptp_caps);
-	struct timespec now, then = ns_to_timespec(delta);
+	struct timespec64 now, then = ns_to_timespec64(delta);
 	unsigned long flags;
 
 	spin_lock_irqsave(&pf->tmreg_lock, flags);
 
 	i40e_ptp_read(pf, &now);
-	now = timespec_add(now, then);
-	i40e_ptp_write(pf, (const struct timespec *)&now);
+	now = timespec64_add(now, then);
+	i40e_ptp_write(pf, (const struct timespec64 *)&now);
 
 	spin_unlock_irqrestore(&pf->tmreg_lock, flags);
 
@@ -181,7 +181,7 @@ static int i40e_ptp_adjtime(struct ptp_clock_info *ptp, s64 delta)
  * Read the device clock and return the correct value on ns, after converting it
  * into a timespec struct.
  **/
-static int i40e_ptp_gettime(struct ptp_clock_info *ptp, struct timespec *ts)
+static int i40e_ptp_gettime(struct ptp_clock_info *ptp, struct timespec64 *ts)
 {
 	struct i40e_pf *pf = container_of(ptp, struct i40e_pf, ptp_caps);
 	unsigned long flags;
@@ -202,7 +202,7 @@ static int i40e_ptp_gettime(struct ptp_clock_info *ptp, struct timespec *ts)
  * to ns happens in the write function.
  **/
 static int i40e_ptp_settime(struct ptp_clock_info *ptp,
-			    const struct timespec *ts)
+			    const struct timespec64 *ts)
 {
 	struct i40e_pf *pf = container_of(ptp, struct i40e_pf, ptp_caps);
 	unsigned long flags;
@@ -613,8 +613,8 @@ static long i40e_ptp_create_clock(struct i40e_pf *pf)
 	pf->ptp_caps.pps = 0;
 	pf->ptp_caps.adjfreq = i40e_ptp_adjfreq;
 	pf->ptp_caps.adjtime = i40e_ptp_adjtime;
-	pf->ptp_caps.gettime = i40e_ptp_gettime;
-	pf->ptp_caps.settime = i40e_ptp_settime;
+	pf->ptp_caps.gettime64 = i40e_ptp_gettime;
+	pf->ptp_caps.settime64 = i40e_ptp_settime;
 	pf->ptp_caps.enable = i40e_ptp_feature_enable;
 
 	/* Attempt to register the clock before enabling the hardware. */
@@ -673,7 +673,7 @@ void i40e_ptp_init(struct i40e_pf *pf)
 		dev_err(&pf->pdev->dev, "%s: ptp_clock_register failed\n",
 			__func__);
 	} else {
-		struct timespec ts;
+		struct timespec64 ts;
 		u32 regval;
 
 		dev_info(&pf->pdev->dev, "%s: added PHC on %s\n", __func__,
@@ -695,7 +695,7 @@ void i40e_ptp_init(struct i40e_pf *pf)
 		i40e_ptp_set_timestamp_mode(pf, &pf->tstamp_config);
 
 		/* Set the clock value. */
-		ts = ktime_to_timespec(ktime_get_real());
+		ts = ktime_to_timespec64(ktime_get_real());
 		i40e_ptp_settime(&pf->ptp_caps, &ts);
 	}
 }
-- 
1.7.10.4

  parent reply	other threads:[~2015-03-21 21:40 UTC|newest]

Thread overview: 80+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-21 21:39 [PATCH net-next V2 00/23] ptp: get ready for 2038 Richard Cochran
2015-03-21 21:39 ` Richard Cochran
2015-03-21 21:39 ` [PATCH net-next V2 01/23] ptp: introduce get/set time methods with explicit 64 bit seconds Richard Cochran
2015-03-21 21:39   ` Richard Cochran
2015-03-21 21:39 ` [PATCH net-next V2 02/23] ptp: use the 64 bit gettime method for the SYS_OFFSET ioctl Richard Cochran
2015-03-21 21:39   ` Richard Cochran
2015-03-21 21:39 ` [PATCH net-next V2 03/23] ptp: use the 64 bit get/set time methods for the posix clock Richard Cochran
2015-03-21 21:39   ` Richard Cochran
2015-03-21 21:39 ` [PATCH net-next V2 04/23] ptp: blackfin: convert to the 64 bit get/set time methods Richard Cochran
2015-03-21 21:39   ` Richard Cochran
2015-03-22  2:28   ` Arnd Bergmann
2015-03-22  2:28     ` Arnd Bergmann
2015-03-22  7:27     ` Richard Cochran
2015-03-22  7:27       ` Richard Cochran
2015-03-21 21:39 ` [PATCH net-next V2 05/23] ptp: xgbe: " Richard Cochran
2015-03-21 21:39   ` Richard Cochran
2015-03-21 21:39 ` [PATCH net-next V2 06/23] ptp: bnx2x: " Richard Cochran
2015-03-21 21:39   ` Richard Cochran
2015-03-21 21:39 ` [PATCH net-next V2 07/23] ptp: tg3: " Richard Cochran
2015-03-21 21:39   ` Richard Cochran
2015-03-21 21:39 ` [PATCH net-next V2 08/23] ptp: fec: " Richard Cochran
2015-03-21 21:39   ` Richard Cochran
2015-03-21 21:39 ` [PATCH net-next V2 09/23] ptp: gianfar: " Richard Cochran
2015-03-21 21:39   ` Richard Cochran
2015-03-21 21:39 ` [PATCH net-next V2 10/23] ptp: e1000e: " Richard Cochran
2015-03-21 21:39   ` Richard Cochran
2015-03-21 21:39 ` [PATCH net-next V2 11/23] ptp: fm10k: " Richard Cochran
2015-03-21 21:39   ` Richard Cochran
2015-03-21 21:39 ` Richard Cochran [this message]
2015-03-21 21:39   ` [PATCH net-next V2 12/23] ptp: i40e: " Richard Cochran
2015-03-21 21:39 ` [PATCH net-next V2 13/23] ptp: igb: " Richard Cochran
2015-03-21 21:39   ` Richard Cochran
2015-03-22  2:40   ` Arnd Bergmann
2015-03-22  2:40     ` Arnd Bergmann
2015-03-21 21:39 ` [PATCH net-next V2 14/23] ptp: ixgbe: " Richard Cochran
2015-03-21 21:39   ` Richard Cochran
2015-03-21 21:39 ` [PATCH net-next V2 15/23] ptp: mlx4: " Richard Cochran
2015-03-21 21:39   ` Richard Cochran
2015-03-21 21:39 ` [PATCH net-next V2 16/23] ptp: sfc: " Richard Cochran
2015-03-21 21:39   ` Richard Cochran
2015-03-21 21:39 ` [PATCH net-next V2 17/23] ptp: stmmac: " Richard Cochran
2015-03-21 21:39   ` Richard Cochran
2015-03-23 15:35   ` Giuseppe CAVALLARO
2015-03-23 15:35     ` Giuseppe CAVALLARO
2015-03-31 13:22     ` Rayagond Kokatanur
2015-03-31 13:22       ` Rayagond Kokatanur
2015-03-21 21:39 ` [PATCH net-next V2 18/23] ptp: cpts: " Richard Cochran
2015-03-21 21:39   ` Richard Cochran
2015-03-21 21:39 ` [PATCH net-next V2 19/23] ptp: tilegx: " Richard Cochran
2015-03-21 21:39   ` Richard Cochran
2015-03-23 16:02   ` Chris Metcalf
2015-03-23 16:02     ` Chris Metcalf
2015-03-23 16:58     ` Richard Cochran
2015-03-23 16:58       ` Richard Cochran
2015-03-23 17:26       ` Chris Metcalf
2015-03-23 17:26         ` Chris Metcalf
2015-03-23 20:06         ` Richard Cochran
2015-03-23 20:06           ` Richard Cochran
2015-03-21 21:39 ` [PATCH net-next V2 20/23] ptp: dp83640: " Richard Cochran
2015-03-21 21:39   ` Richard Cochran
2015-03-22  2:36   ` Arnd Bergmann
2015-03-22  2:36     ` Arnd Bergmann
2015-03-22  7:29     ` Richard Cochran
2015-03-22  7:29       ` Richard Cochran
2015-03-22 17:48       ` Arnd Bergmann
2015-03-22 17:48         ` Arnd Bergmann
2015-03-23  8:10         ` Richard Cochran
2015-03-23  8:10           ` Richard Cochran
2015-03-23 15:06           ` Arnd Bergmann
2015-03-23 15:06             ` Arnd Bergmann
2015-03-21 21:39 ` [PATCH net-next V2 21/23] ptp: ixp46x: " Richard Cochran
2015-03-21 21:39   ` Richard Cochran
2015-03-21 21:39 ` [PATCH net-next V2 22/23] ptp: pch: " Richard Cochran
2015-03-21 21:39   ` Richard Cochran
2015-03-21 21:39 ` [PATCH net-next V2 23/23] ptp: remove 32 bit get/set methods Richard Cochran
2015-03-21 21:39   ` Richard Cochran
2015-03-22  2:43 ` [PATCH net-next V2 00/23] ptp: get ready for 2038 Arnd Bergmann
2015-03-22  2:43   ` Arnd Bergmann
2015-03-23 10:16 ` Jeff Kirsher
2015-03-23 10:16   ` Jeff Kirsher

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=6fa7cb21daad95e7663e6257336a872b655687c8.1426973658.git.richardcochran@gmail.com \
    --to=richardcochran@gmail.com \
    --cc=Frank.Li@freescale.com \
    --cc=amirv@mellanox.com \
    --cc=ariel.elior@qlogic.com \
    --cc=arnd@linaro.org \
    --cc=b45643@freescale.com \
    --cc=baolin.wang@linaro.org \
    --cc=ben@decadent.org.uk \
    --cc=bruce.w.allan@intel.com \
    --cc=carolyn.wyborny@intel.com \
    --cc=cmetcalf@ezchip.com \
    --cc=davem@davemloft.net \
    --cc=jeffrey.t.kirsher@intel.com \
    --cc=john.stultz@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-net-drivers@solarflare.com \
    --cc=matthew.vick@intel.com \
    --cc=mchan@broadcom.com \
    --cc=netdev@vger.kernel.org \
    --cc=peppe.cavallaro@st.com \
    --cc=prashant@broadcom.com \
    --cc=sonic.zhang@analog.com \
    --cc=sshah@solarflare.com \
    --cc=stefan.sorensen@spectralink.com \
    --cc=tglx@linutronix.de \
    --cc=thomas.lendacky@amd.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.