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
next prev parent 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox