diff mbox

[net] net: igb: fix the start time for periodic output signals

Message ID 1434027090-26866-1-git-send-email-richardcochran@gmail.com
State Accepted, archived
Delegated to: David Miller
Headers show

Commit Message

Richard Cochran June 11, 2015, 12:51 p.m. UTC
When programming the start of a periodic output, the code wrongly places
the seconds value into the "low" register and the nanoseconds into the
"high" register.  Even though this is backwards, it slipped through my
testing, because the re-arming code in the interrupt service routine is
correct, and the signal does appear starting with the second edge.

This patch fixes the issue by programming the registers correctly.

Signed-off-by: Richard Cochran <richardcochran@gmail.com>
---
 drivers/net/ethernet/intel/igb/igb_ptp.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Richard Cochran June 11, 2015, 12:53 p.m. UTC | #1
On Thu, Jun 11, 2015 at 02:51:30PM +0200, Richard Cochran wrote:
> This patch fixes the issue by programming the registers correctly.

Please also consider this for stable.

Thanks,
Richard
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Jacob Keller June 11, 2015, 5:05 p.m. UTC | #2
Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>


Thanks Richard! Easy detail to miss.

Regards,
Jake

On Thu, 2015-06-11 at 14:51 +0200, Richard Cochran wrote:
> When programming the start of a periodic output, the code wrongly 

> places

> the seconds value into the "low" register and the nanoseconds into 

> the

> "high" register.  Even though this is backwards, it slipped through 

> my

> testing, because the re-arming code in the interrupt service routine 

> is

> correct, and the signal does appear starting with the second edge.

> 

> This patch fixes the issue by programming the registers correctly.

> 

> Signed-off-by: Richard Cochran <richardcochran@gmail.com>

> ---

>  drivers/net/ethernet/intel/igb/igb_ptp.c | 4 ++--

>  1 file changed, 2 insertions(+), 2 deletions(-)

> 

> diff --git a/drivers/net/ethernet/intel/igb/igb_ptp.c 

> b/drivers/net/ethernet/intel/igb/igb_ptp.c

> index e3b9b63..c3a9392c 100644

> --- a/drivers/net/ethernet/intel/igb/igb_ptp.c

> +++ b/drivers/net/ethernet/intel/igb/igb_ptp.c

> @@ -538,8 +538,8 @@ static int igb_ptp_feature_enable_i210(struct 

> ptp_clock_info *ptp,

>                       igb->perout[i].start.tv_nsec = rq

> ->perout.start.nsec;

>                       igb->perout[i].period.tv_sec = ts.tv_sec;

>                       igb->perout[i].period.tv_nsec = ts.tv_nsec;

> -                     wr32(trgttiml, rq->perout.start.sec);

> -                     wr32(trgttimh, rq->perout.start.nsec);

> +                     wr32(trgttimh, rq->perout.start.sec);

> +                     wr32(trgttiml, rq->perout.start.nsec);

>                       tsauxc |= tsauxc_mask;

>                       tsim |= tsim_mask;

>               } else {
David Miller June 11, 2015, 10:56 p.m. UTC | #3
From: Richard Cochran <richardcochran@gmail.com>
Date: Thu, 11 Jun 2015 14:53:10 +0200

> On Thu, Jun 11, 2015 at 02:51:30PM +0200, Richard Cochran wrote:
>> This patch fixes the issue by programming the registers correctly.
> 
> Please also consider this for stable.

Jeff, do you want me to integrate this directly?
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Kirsher, Jeffrey T June 11, 2015, 10:58 p.m. UTC | #4
On Thu, 2015-06-11 at 15:56 -0700, David Miller wrote:
> From: Richard Cochran <richardcochran@gmail.com>
> Date: Thu, 11 Jun 2015 14:53:10 +0200
> 
> > On Thu, Jun 11, 2015 at 02:51:30PM +0200, Richard Cochran wrote:
> >> This patch fixes the issue by programming the registers correctly.
> > 
> > Please also consider this for stable.
> 
> Jeff, do you want me to integrate this directly?

Yes please.  I was just about to send email asking that.
Kirsher, Jeffrey T June 11, 2015, 10:59 p.m. UTC | #5
On Thu, 2015-06-11 at 14:51 +0200, Richard Cochran wrote:
> When programming the start of a periodic output, the code wrongly
> places
> the seconds value into the "low" register and the nanoseconds into the
> "high" register.  Even though this is backwards, it slipped through my
> testing, because the re-arming code in the interrupt service routine
> is
> correct, and the signal does appear starting with the second edge.
> 
> This patch fixes the issue by programming the registers correctly.
> 
> Signed-off-by: Richard Cochran <richardcochran@gmail.com>

Acked-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
David Miller June 11, 2015, 11:04 p.m. UTC | #6
From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Date: Thu, 11 Jun 2015 15:59:05 -0700

> On Thu, 2015-06-11 at 14:51 +0200, Richard Cochran wrote:
>> When programming the start of a periodic output, the code wrongly
>> places
>> the seconds value into the "low" register and the nanoseconds into the
>> "high" register.  Even though this is backwards, it slipped through my
>> testing, because the re-arming code in the interrupt service routine
>> is
>> correct, and the signal does appear starting with the second edge.
>> 
>> This patch fixes the issue by programming the registers correctly.
>> 
>> Signed-off-by: Richard Cochran <richardcochran@gmail.com>
> 
> Acked-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>

Applied and queued up for -stable, thanks.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/net/ethernet/intel/igb/igb_ptp.c b/drivers/net/ethernet/intel/igb/igb_ptp.c
index e3b9b63..c3a9392c 100644
--- a/drivers/net/ethernet/intel/igb/igb_ptp.c
+++ b/drivers/net/ethernet/intel/igb/igb_ptp.c
@@ -538,8 +538,8 @@  static int igb_ptp_feature_enable_i210(struct ptp_clock_info *ptp,
 			igb->perout[i].start.tv_nsec = rq->perout.start.nsec;
 			igb->perout[i].period.tv_sec = ts.tv_sec;
 			igb->perout[i].period.tv_nsec = ts.tv_nsec;
-			wr32(trgttiml, rq->perout.start.sec);
-			wr32(trgttimh, rq->perout.start.nsec);
+			wr32(trgttimh, rq->perout.start.sec);
+			wr32(trgttiml, rq->perout.start.nsec);
 			tsauxc |= tsauxc_mask;
 			tsim |= tsim_mask;
 		} else {