Subject: Re: hardware time stamping with extra skb->hwtstamp

From: Oliver Hartkopp <[email-masked]>
Date: Thu, 27 Nov 2008 23:13:08 +0100

Octavian Purdila wrote:
> From: Patrick Ohly <[email-masked]>
> Date: Thu, 27 Nov 2008 16:31:07 +0100
>
>   
>> On Thu, 2008-11-27 at 14:02 +0000, Octavian Purdila wrote:
>>     
>>> From: Patrick Ohly <[email-masked]>
>>> Date: Thu, 27 Nov 2008 11:07:07 +0100
>>>
>>>       
>>>> To summarize, I see the following options at this time:
>>>>         
>>> [snip]
>>>
>>>       
>>>> My personal preference is, in this order: 3, 4, 2b (current patch,
>>>> but needs clean way to find network device), 1a.
>>>>         
>>> I also vote for 3 (storing hw timestamps in the skb).
>>>
>>>       

4 would be mine.

I assume, we would get kicked somewhere when we are trying to push 
*another* 8 bytes into the skb by default ;-]

> How about this twist: we add a new option at the socket level, to get the 
> whole skb->head - skb->end data into a user buffer. Then, we call an device 
> ioctl and pass this buffer. The device will extract the hw timestamp and give 
> it to the user. 
>
> We might not need to get the whole skb->head - skb->end buffer, maybe just skb-
>   
>> head - skb->mac if we know that skb->mac is sane at the socket level and we 
>>     
> use the convention that the device driver must put the timestamp below the mac 
> header.
>
> One potential problem I see with this approach is leaking sensitive 
> information into userspace, which means we will have to restrict this to 
> privileged processes only.
>
>   

Ugh.

Not every protocol that uses skbuffs, has a mac header (e.g. the CAN 
protocol doesn't have mac addresses). This twist does not look very 
maintainable to me ...

One additional question for Patrick:
As you wrote that your hw timestamp contained in the new skbuff-field is 
already cocked ... is there any identifier that tells the userspace 
application about the type of hw timestamp he gets (e.g. cocked, raw 
registers, offset to whatever, etc.) ?

Regards,
Oliver