igb: refactor igb_ptp_adjfine_82580 to use diff_by_scaled_ppm
authorAndrii Staikov <andrii.staikov@intel.com>
Wed, 8 Mar 2023 10:36:51 +0000 (11:36 +0100)
committerTony Nguyen <anthony.l.nguyen@intel.com>
Tue, 21 Mar 2023 18:37:16 +0000 (11:37 -0700)
Driver's .adjfine interface functions use adjust_by_scaled_ppm and
diff_by_scaled_ppm introduced in commit 1060707e3809
("ptp: introduce helpers to adjust by scaled parts per million")
to calculate the required adjustment in a concise manner,
but not igb_ptp_adjfine_82580.
Fix it by introducing IGB_82580_BASE_PERIOD and changing function logic
to use diff_by_scaled_ppm.

Signed-off-by: Andrii Staikov <andrii.staikov@intel.com>
Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
Tested-by: Pucha Himasekhar Reddy <himasekharx.reddy.pucha@intel.com> (A Contingent worker at Intel)
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
drivers/net/ethernet/intel/igb/igb_ptp.c

index 6f471b9..405886e 100644 (file)
@@ -67,6 +67,7 @@
 #define INCVALUE_82576_MASK            GENMASK(E1000_TIMINCA_16NS_SHIFT - 1, 0)
 #define INCVALUE_82576                 (16u << IGB_82576_TSYNC_SHIFT)
 #define IGB_NBITS_82580                        40
+#define IGB_82580_BASE_PERIOD          0x800000000
 
 static void igb_ptp_tx_hwtstamp(struct igb_adapter *adapter);
 static void igb_ptp_sdp_init(struct igb_adapter *adapter);
@@ -209,17 +210,11 @@ static int igb_ptp_adjfine_82580(struct ptp_clock_info *ptp, long scaled_ppm)
        struct igb_adapter *igb = container_of(ptp, struct igb_adapter,
                                               ptp_caps);
        struct e1000_hw *hw = &igb->hw;
-       int neg_adj = 0;
+       bool neg_adj;
        u64 rate;
        u32 inca;
 
-       if (scaled_ppm < 0) {
-               neg_adj = 1;
-               scaled_ppm = -scaled_ppm;
-       }
-       rate = scaled_ppm;
-       rate <<= 13;
-       rate = div_u64(rate, 15625);
+       neg_adj = diff_by_scaled_ppm(IGB_82580_BASE_PERIOD, scaled_ppm, &rate);
 
        inca = rate & INCVALUE_MASK;
        if (neg_adj)