net: fec: reduce spin lock time in fec_ptp_adjfreq
move below calculate out of spin lock section diff = fep->cc.mult; diff *= ppb; diff = div_u64(diff, 1000000000ULL); diff is local variable and not neccesary in spin lock Signed-off-by: Frank Li <Frank.Li@freescale.com> Acked-by: Richard Cochran <richardcochran@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
0f2f7a40f9
commit
7da716aee2
|
@ -145,6 +145,7 @@ static int fec_ptp_adjfreq(struct ptp_clock_info *ptp, s32 ppb)
|
||||||
u64 diff;
|
u64 diff;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
int neg_adj = 0;
|
int neg_adj = 0;
|
||||||
|
u32 mult = FEC_CC_MULT;
|
||||||
|
|
||||||
struct fec_enet_private *fep =
|
struct fec_enet_private *fep =
|
||||||
container_of(ptp, struct fec_enet_private, ptp_caps);
|
container_of(ptp, struct fec_enet_private, ptp_caps);
|
||||||
|
@ -154,6 +155,10 @@ static int fec_ptp_adjfreq(struct ptp_clock_info *ptp, s32 ppb)
|
||||||
neg_adj = 1;
|
neg_adj = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
diff = mult;
|
||||||
|
diff *= ppb;
|
||||||
|
diff = div_u64(diff, 1000000000ULL);
|
||||||
|
|
||||||
spin_lock_irqsave(&fep->tmreg_lock, flags);
|
spin_lock_irqsave(&fep->tmreg_lock, flags);
|
||||||
/*
|
/*
|
||||||
* dummy read to set cycle_last in tc to now.
|
* dummy read to set cycle_last in tc to now.
|
||||||
|
@ -161,15 +166,8 @@ static int fec_ptp_adjfreq(struct ptp_clock_info *ptp, s32 ppb)
|
||||||
* timercounter_read.
|
* timercounter_read.
|
||||||
*/
|
*/
|
||||||
timecounter_read(&fep->tc);
|
timecounter_read(&fep->tc);
|
||||||
fep->cc.mult = FEC_CC_MULT;
|
|
||||||
diff = fep->cc.mult;
|
|
||||||
diff *= ppb;
|
|
||||||
diff = div_u64(diff, 1000000000ULL);
|
|
||||||
|
|
||||||
if (neg_adj)
|
fep->cc.mult = neg_adj ? mult - diff : mult + diff;
|
||||||
fep->cc.mult -= diff;
|
|
||||||
else
|
|
||||||
fep->cc.mult += diff;
|
|
||||||
|
|
||||||
spin_unlock_irqrestore(&fep->tmreg_lock, flags);
|
spin_unlock_irqrestore(&fep->tmreg_lock, flags);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue