• Siddaraju DH's avatar
    ice: restrict PTP HW clock freq adjustments to 100, 000, 000 PPB · 8aa4318c
    Siddaraju DH authored
    The PHY provides only 39b timestamp. With current timing
    implementation, we discard lower 7b, leaving 32b timestamp.
    The driver reconstructs the full 64b timestamp by correlating the
    32b timestamp with cached_time for performance. The reconstruction
    algorithm does both forward & backward interpolation.
    
    The 32b timeval has overflow duration of 2^32 counts ~= 4.23 second.
    Due to interpolation in both direction, its now ~= 2.125 second
    IIRC, going with at least half a duration, the cached_time is updated
    with periodic thread of 1 second (worst-case) periodicity.
    
    But the 1 second periodicity is based on System-timer.
    With PPB adjustments, if the 1588 timers increments at say
    double the rate, (2s in-place of 1s), the Nyquist rate/half duration
    sampling/update of cached_time with 1 second periodic thread will
    lead to incorrect interpolations.
    
    Hence we should restrict the PPB adjustments to at least half duration
    of cached_time update which translates to 500,000,000 PPB.
    
    Since the periodicity of the cached-time system thread can vary,
    it is good to have some buffer time and considering practicality of
    PPB adjustments, limiting the max_adj to 100,000,000.
    Signed-off-by: default avatarSiddaraju DH <siddaraju.dh@intel.com>
    Tested-by: Gurucharan G <gurucharanx.g@intel.com> (A Contingent worker at Intel)
    Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
    8aa4318c
ice_ptp.c 73.9 KB