diff mbox series

net: gianfar_ptp: move set_fipers() to spinlock protecting area

Message ID 20180108101311.23581-1-yangbo.lu@nxp.com
State Superseded, archived
Delegated to: David Miller
Headers show
Series net: gianfar_ptp: move set_fipers() to spinlock protecting area | expand

Commit Message

Yangbo Lu Jan. 8, 2018, 10:13 a.m. UTC
set_fipers() calling should be protected by spinlock.
This patch is to move set_fipers() to spinlock protecting
area in ptp_gianfar_adjtime() function.

Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
---
 drivers/net/ethernet/freescale/gianfar_ptp.c |    3 +--
 1 files changed, 1 insertions(+), 2 deletions(-)

Comments

Fabio Estevam Jan. 8, 2018, 12:53 p.m. UTC | #1
On Mon, Jan 8, 2018 at 8:13 AM, Yangbo Lu <yangbo.lu@nxp.com> wrote:
> set_fipers() calling should be protected by spinlock.
> This patch is to move set_fipers() to spinlock protecting
> area in ptp_gianfar_adjtime() function.

It would be nice to explay why.

Thanks
Yangbo Lu Jan. 9, 2018, 3:23 a.m. UTC | #2
> -----Original Message-----

> From: Fabio Estevam [mailto:festevam@gmail.com]

> Sent: 2018年1月8日 20:54

> To: Y.b. Lu <yangbo.lu@nxp.com>

> Cc: Claudiu Manoil <claudiu.manoil@nxp.com>; Richard Cochran

> <richardcochran@gmail.com>; netdev@vger.kernel.org; linux-kernel

> <linux-kernel@vger.kernel.org>

> Subject: Re: [PATCH] net: gianfar_ptp: move set_fipers() to spinlock protecting

> area

> 

> On Mon, Jan 8, 2018 at 8:13 AM, Yangbo Lu <yangbo.lu@nxp.com> wrote:

> > set_fipers() calling should be protected by spinlock.

> > This patch is to move set_fipers() to spinlock protecting area in

> > ptp_gianfar_adjtime() function.

> 

> It would be nice to explay why.


[Y.b. Lu] Sent out v2 patch and explained in commit message :)
Thanks.

> 

> Thanks
Richard Cochran Jan. 9, 2018, 3:39 a.m. UTC | #3
On Mon, Jan 08, 2018 at 10:53:40AM -0200, Fabio Estevam wrote:
> On Mon, Jan 8, 2018 at 8:13 AM, Yangbo Lu <yangbo.lu@nxp.com> wrote:
> > set_fipers() calling should be protected by spinlock.
> > This patch is to move set_fipers() to spinlock protecting
> > area in ptp_gianfar_adjtime() function.
> 
> It would be nice to explay why.

Maybe this is important?

/* Caller must hold etsects->lock. */
static void set_fipers(struct etsects *etsects)
{
	set_alarm(etsects);
	gfar_write(&etsects->regs->tmr_fiper1, etsects->tmr_fiper1);
	gfar_write(&etsects->regs->tmr_fiper2, etsects->tmr_fiper2);
}

Thanks,
Richard
diff mbox series

Patch

diff --git a/drivers/net/ethernet/freescale/gianfar_ptp.c b/drivers/net/ethernet/freescale/gianfar_ptp.c
index 5441142..9f8d4f8 100644
--- a/drivers/net/ethernet/freescale/gianfar_ptp.c
+++ b/drivers/net/ethernet/freescale/gianfar_ptp.c
@@ -319,11 +319,10 @@  static int ptp_gianfar_adjtime(struct ptp_clock_info *ptp, s64 delta)
 	now = tmr_cnt_read(etsects);
 	now += delta;
 	tmr_cnt_write(etsects, now);
+	set_fipers(etsects);
 
 	spin_unlock_irqrestore(&etsects->lock, flags);
 
-	set_fipers(etsects);
-
 	return 0;
 }