• Vitaly Kuznetsov's avatar
    hv_utils: drop .getcrosststamp() support from PTP driver · 4f9bac03
    Vitaly Kuznetsov authored
    Turns out that our implementation of .getcrosststamp() never actually
    worked. Hyper-V is sending time samples every 5 seconds and this is
    too much for get_device_system_crosststamp() as it's interpolation
    algorithm (which nobody is currently using in kernel, btw) accounts
    for a 'slow' device but we're not slow in Hyper-V, our time reference
    is too far away.
    
    .getcrosststamp() is not currently used, get_device_system_crosststamp()
    almost always returns -EINVAL and client falls back to using PTP_SYS_OFFSET
    so this patch doesn't change much. I also tried doing interpolation
    manually (e.g. the same way hv_ptp_gettime() works and it turns out that
    we're getting even lower quality:
    
    PTP_SYS_OFFSET_PRECISE with manual interpolation:
    * PHC0                     0   3    37     4  -3974ns[-5338ns] +/-  977ns
    * PHC0                     0   3    77     7  +2227ns[+3184ns] +/-  576ns
    * PHC0                     0   3   177    10  +3060ns[+5220ns] +/-  548ns
    * PHC0                     0   3   377    12  +3937ns[+4371ns] +/- 1414ns
    * PHC0                     0   3   377     6   +764ns[+1240ns] +/- 1047ns
    * PHC0                     0   3   377     7  -1210ns[-3731ns] +/-  479ns
    * PHC0                     0   3   377     9   +153ns[-1019ns] +/-  406ns
    * PHC0                     0   3   377    12   -872ns[-1793ns] +/-  443ns
    * PHC0                     0   3   377     5   +701ns[+3599ns] +/-  426ns
    * PHC0                     0   3   377     5   -923ns[ -375ns] +/- 1062ns
    
    PTP_SYS_OFFSET:
    * PHC0                     0   3     7     5    +72ns[+8020ns] +/-  251ns
    * PHC0                     0   3    17     5   -885ns[-3661ns] +/-  254ns
    * PHC0                     0   3    37     6   -454ns[-5732ns] +/-  258ns
    * PHC0                     0   3    77    10  +1183ns[+3754ns] +/-  164ns
    * PHC0                     0   3   377     5   +579ns[+1137ns] +/-  110ns
    * PHC0                     0   3   377     7   +501ns[+1064ns] +/-   96ns
    * PHC0                     0   3   377     9  +1641ns[+3342ns] +/-  106ns
    * PHC0                     0   3   377     8    -47ns[  +77ns] +/-  160ns
    * PHC0                     0   3   377     5    +54ns[ +107ns] +/-  102ns
    * PHC0                     0   3   377     8   -354ns[ -617ns] +/-   89ns
    
    This fact wasn't noticed during the initial testing of the PTP device
    somehow but got revealed now. Let's just drop .getcrosststamp()
    implementation for now as it doesn't seem to be suitable for us.
    Signed-off-by: default avatarVitaly Kuznetsov <vkuznets@redhat.com>
    Signed-off-by: default avatarK. Y. Srinivasan <kys@microsoft.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    4f9bac03
hv_util.c 14.4 KB