All of lore.kernel.org
 help / color / mirror / Atom feed
From: Oliver Hartkopp <socketcan@hartkopp.net>
To: Martin Kozusky <mkozusky@kkmicro.cz>
Cc: linux-can@vger.kernel.org
Subject: Re: Flexcan - timestamp from message buffer to userspace
Date: Fri, 18 Oct 2013 16:42:49 +0200	[thread overview]
Message-ID: <526148E9.4040406@hartkopp.net> (raw)
In-Reply-To: <526113A1.8020403@kkmicro.cz>

On 18.10.2013 12:55, Martin Kozusky wrote:
> 
> Dne 18.10.2013 11:56, Martin Kozusky napsal(a):
>> Hello,
>> is there any official way how to read timestamp from flexcans message
>> buffer?
>> I see there is a macro defined FLEXCAN_MB_CNT_TIMESTAMP in flexcan.c,
>> but not used.
>> I would modify function flecan_read_fifo like
>>
>> + u32 timestamp = FLEXCAN_MB_CNT_TIMESTAMP(reg_ctrl);
> 
> sorry, u32 should be just u16
> 
>> but what to do with timestamp variable next and how to read it in
>> userspace? :) I could change structure can_frame and add  u32 timestamp
> also u16, not u32
> 
>> into it, but it wouldn't be very nice hack I think.
>>
>> BTW: is timestamp read with SO_TIMESTAMP  actualy taken when CAN message
>> arrives?
>>

Hello Martin,

with SO_TIMESTAMP you get the system timestamp in nanosec resolution.

It is set at the time when the CAN frame is pushed to the network layer by
the CAN drivers interrupt routine.

See net_timestamp_check() in netif_rx():

http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/net/core/dev.c#n3228

You may get this timestamp via ioctl() or recvmsg().

To pass hardware timestamps there's some infrastructure for ethernet devices in the
mainlaine kernel, which is configured with "ethtool":

   ethtool -T|--show-time-stamping DEVNAME    Show time stamping capabilities

See details at

http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/networking/timestamping.txt

And some example source code at 

http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/networking/timestamping/timestamping.c

There needs to be added some infrastructure to the network devices to query
and configure the timestamping possibilities.

This is currently missing for CAN devices ...

Even if I moved a wrongly assigned hardware timestamp to another place here:

http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/drivers/net/can/usb/peak_usb?id=c9faaa09e2a1335678f09c70a0d0eda095564bab

the rest of the hardware timestamping (& configuration) is still missing.

Regards,
Oliver


  reply	other threads:[~2013-10-18 14:42 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-10-18  9:56 Flexcan - timestamp from message buffer to userspace Martin Kozusky
2013-10-18 10:55 ` Martin Kozusky
2013-10-18 14:42   ` Oliver Hartkopp [this message]
2013-10-21  6:54     ` Martin Kozusky
2013-10-21  8:00       ` Wolfgang Grandegger
2013-10-21  8:11         ` Wolfgang Grandegger
2013-10-21  8:54           ` Martin Kozusky
2013-10-21  9:51             ` Martin Kozusky
2013-10-21 11:23               ` Wolfgang Grandegger
2013-10-21 16:29                 ` Oliver Hartkopp
2013-10-22 12:22                   ` Martin Kozusky
2013-10-22 19:36                     ` Oliver Hartkopp

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=526148E9.4040406@hartkopp.net \
    --to=socketcan@hartkopp.net \
    --cc=linux-can@vger.kernel.org \
    --cc=mkozusky@kkmicro.cz \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.