Re: [PATCH v2 1/3] net: irda: pxaficp_ir: use sched_clock() for time management

From: Robert Jarzmik
Date: Fri Sep 18 2015 - 12:42:07 EST


David Miller <davem@xxxxxxxxxxxxx> writes:

>> My understanding is that the flow will be :
>> sched_clock()
>> rd->read_sched_clock() (cyc_to_ns() transformed for return)
>> pxa_read_sched_clock()
>> readl_relaxed(OSCR)
>>
>> I didn't see any timings issue, as the flow looks equivalent to the readl(OSCR),
>> but I might have overlooked something.
>
> Of course it's different, because sched_clock() converts the value read
> from OSCR into nanoseconds, which is obviously different from using the
> OSCR register value directly.
>
> You're therefore feeding different values into this IRDA code.
Ah yes, I see it.
Which brings me to wonder which is the more correct :
(a) replace to reproduce the same calculation
Previously mtt was compared to a difference of 76ns steps (as 307ns / 4 =
76ns):
while ((sched_clock() - si->last_clk) * 76 < mtt)

(b) change the calculation assuming mtt is in microseconds :
while ((sched_clock() - si->last_clk) * 1000 < mtt)

I have no IRDA protocol knowledge so unless someone points me to the correct
calculation I'll try my luck with (b).

Cheers.

--
Robert
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/