sfc: tidy up PTP synchronize function efx_ptp_process_times()
authorLaurence Evans <levans@solarflare.com>
Mon, 11 Feb 2013 13:55:08 +0000 (13:55 +0000)
committerBen Hutchings <bhutchings@solarflare.com>
Thu, 7 Mar 2013 20:21:56 +0000 (20:21 +0000)
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
drivers/net/ethernet/sfc/ptp.c

index 2b40cbd6667bb5fe07ea8ce61ab7113527d62f0c..d1858c0e0827c23fb32cf7f8eefb372de9201671 100644 (file)
@@ -432,13 +432,10 @@ static int efx_ptp_process_times(struct efx_nic *efx, u8 *synch_buf,
        unsigned number_readings = (response_length /
                               MC_CMD_PTP_OUT_SYNCHRONIZE_TIMESET_LEN);
        unsigned i;
-       unsigned min;
-       unsigned min_set = 0;
        unsigned total;
        unsigned ngood = 0;
        unsigned last_good = 0;
        struct efx_ptp_data *ptp = efx->ptp_data;
-       bool min_valid = false;
        u32 last_sec;
        u32 start_sec;
        struct timespec delta;
@@ -446,35 +443,17 @@ static int efx_ptp_process_times(struct efx_nic *efx, u8 *synch_buf,
        if (number_readings == 0)
                return -EAGAIN;
 
-       /* Find minimum value in this set of results, discarding clearly
-        * erroneous results.
+       /* Read the set of results and increment stats for any results that
+        * appera to be erroneous.
         */
        for (i = 0; i < number_readings; i++) {
                efx_ptp_read_timeset(synch_buf, &ptp->timeset[i]);
                synch_buf += MC_CMD_PTP_OUT_SYNCHRONIZE_TIMESET_LEN;
-               if (ptp->timeset[i].window > SYNCHRONISATION_GRANULARITY_NS) {
-                       if (min_valid) {
-                               if (ptp->timeset[i].window < min_set)
-                                       min_set = ptp->timeset[i].window;
-                       } else {
-                               min_valid = true;
-                               min_set = ptp->timeset[i].window;
-                       }
-               }
-       }
-
-       if (min_valid) {
-               if (ptp->base_sync_valid && (min_set > ptp->base_sync_ns))
-                       min = ptp->base_sync_ns;
-               else
-                       min = min_set;
-       } else {
-               min = SYNCHRONISATION_GRANULARITY_NS;
        }
 
-       /* Discard excessively long synchronise durations.  The MC times
-        * when it finishes reading the host time so the corrected window
-        * time should be fairly constant for a given platform.
+       /* Find the last good host-MC synchronization result. The MC times
+        * when it finishes reading the host time so the corrected window time
+        * should be fairly constant for a given platform.
         */
        total = 0;
        for (i = 0; i < number_readings; i++)
@@ -492,8 +471,8 @@ static int efx_ptp_process_times(struct efx_nic *efx, u8 *synch_buf,
 
        if (ngood == 0) {
                netif_warn(efx, drv, efx->net_dev,
-                          "PTP no suitable synchronisations %dns %dns\n",
-                          ptp->base_sync_ns, min_set);
+                          "PTP no suitable synchronisations %dns\n",
+                          ptp->base_sync_ns);
                return -EAGAIN;
        }