Patch "ice: restrict PTP HW clock freq adjustments to 100, 000, 000 PPB" has been added to the 5.15-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    ice: restrict PTP HW clock freq adjustments to 100, 000, 000 PPB

to the 5.15-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     ice-restrict-ptp-hw-clock-freq-adjustments-to-100-00.patch
and it can be found in the queue-5.15 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 77f5d39e4bab1b33ae9aaf2d9878f059328de7bc
Author: Siddaraju DH <siddaraju.dh@xxxxxxxxx>
Date:   Tue Nov 15 15:11:35 2022 +0530

    ice: restrict PTP HW clock freq adjustments to 100, 000, 000 PPB
    
    [ Upstream commit 8aa4318c3a122b8670bc09af142de3872ca63b88 ]
    
    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: Siddaraju DH <siddaraju.dh@xxxxxxxxx>
    Tested-by: Gurucharan G <gurucharanx.g@xxxxxxxxx> (A Contingent worker at Intel)
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@xxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/net/ethernet/intel/ice/ice_ptp.c b/drivers/net/ethernet/intel/ice/ice_ptp.c
index 9b50e9e6042a5..4d7aa49b7c147 100644
--- a/drivers/net/ethernet/intel/ice/ice_ptp.c
+++ b/drivers/net/ethernet/intel/ice/ice_ptp.c
@@ -1090,7 +1090,7 @@ static void ice_ptp_set_caps(struct ice_pf *pf)
 	snprintf(info->name, sizeof(info->name) - 1, "%s-%s-clk",
 		 dev_driver_string(dev), dev_name(dev));
 	info->owner = THIS_MODULE;
-	info->max_adj = 999999999;
+	info->max_adj = 100000000;
 	info->adjtime = ice_ptp_adjtime;
 	info->adjfine = ice_ptp_adjfine;
 	info->gettimex64 = ice_ptp_gettimex64;



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux