ice: Check for PTP HW lock more frequently
authorKarol Kolacinski <karol.kolacinski@intel.com>
Mon, 3 Oct 2022 09:55:18 +0000 (11:55 +0200)
committerTony Nguyen <anthony.l.nguyen@intel.com>
Wed, 23 Nov 2022 16:59:42 +0000 (08:59 -0800)
It was observed that PTP HW semaphore can be held for ~50 ms in worst
case.
SW should wait longer and check more frequently if the HW lock is held.

Signed-off-by: Karol Kolacinski <karol.kolacinski@intel.com>
Tested-by: Gurucharan G <gurucharanx.g@intel.com> (A Contingent worker at Intel)
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
drivers/net/ethernet/intel/ice/ice_ptp_hw.c

index 772b1f5..1f8dd50 100644 (file)
@@ -2963,16 +2963,18 @@ bool ice_ptp_lock(struct ice_hw *hw)
        u32 hw_lock;
        int i;
 
-#define MAX_TRIES 5
+#define MAX_TRIES 15
 
        for (i = 0; i < MAX_TRIES; i++) {
                hw_lock = rd32(hw, PFTSYN_SEM + (PFTSYN_SEM_BYTES * hw->pf_id));
                hw_lock = hw_lock & PFTSYN_SEM_BUSY_M;
-               if (!hw_lock)
-                       break;
+               if (hw_lock) {
+                       /* Somebody is holding the lock */
+                       usleep_range(5000, 6000);
+                       continue;
+               }
 
-               /* Somebody is holding the lock */
-               usleep_range(10000, 20000);
+               break;
        }
 
        return !hw_lock;