From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754321AbbIRQmD (ORCPT ); Fri, 18 Sep 2015 12:42:03 -0400 Received: from smtp02.smtpout.orange.fr ([80.12.242.124]:34513 "EHLO smtp.smtpout.orange.fr" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754171AbbIRQmB (ORCPT ); Fri, 18 Sep 2015 12:42:01 -0400 X-ME-Helo: belgarion X-ME-Auth: amFyem1pay5yb2JlcnRAb3JhbmdlLmZy X-ME-Date: Fri, 18 Sep 2015 18:42:00 +0200 X-ME-IP: 90.16.209.104 From: Robert Jarzmik To: David Miller Cc: samuel@sortiz.org, petr.cvek@tul.cz, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, arnd@arndb.de Subject: Re: [PATCH v2 1/3] net: irda: pxaficp_ir: use sched_clock() for time management References: <1442058324-9760-1-git-send-email-robert.jarzmik@free.fr> <20150915.164025.1543038793305792029.davem@davemloft.net> <87eghyso6u.fsf@belgarion.home> <20150917.145106.1238429841434804906.davem@davemloft.net> X-URL: http://belgarath.falguerolles.org/ Date: Fri, 18 Sep 2015 18:36:56 +0200 In-Reply-To: <20150917.145106.1238429841434804906.davem@davemloft.net> (David Miller's message of "Thu, 17 Sep 2015 14:51:06 -0700 (PDT)") Message-ID: <87si6br8ev.fsf@belgarion.home> User-Agent: Gnus/5.130008 (Ma Gnus v0.8) Emacs/24.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org David Miller 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