ptp: ocp: Improve PCIe delay estimation

The PCIe bus can be pretty busy during boot and probe function can
see excessive delays. Let's find the minimal value out of several
tests and use it as estimated value.

Signed-off-by: Vadim Fedorenko <[email protected]>
Link: https://patch.msgid.link/[email protected]
Signed-off-by: Jakub Kicinski <[email protected]>
This commit is contained in:
Vadim Fedorenko authored and Jakub Kicinski committed 2024-09-06 18:28:07 -07:00
1 parent 9a95eedc81
commit aa05fe67bc
1 file changed
+11 -9
+11 -9
View File
@@ -1558,22 +1558,24 @@ ptp_ocp_watchdog(struct timer_list *t)
static void
ptp_ocp_estimate_pci_timing(struct ptp_ocp *bp)
{
ktime_t start, end;
ktime_t delay;
ktime_t start, end, delay = U64_MAX;
u32 ctrl;
int i;
ctrl = ioread32(&bp->reg->ctrl);
ctrl = OCP_CTRL_READ_TIME_REQ | OCP_CTRL_ENABLE;
for (i = 0; i < 3; i++) {
ctrl = ioread32(&bp->reg->ctrl);
ctrl = OCP_CTRL_READ_TIME_REQ | OCP_CTRL_ENABLE;
iowrite32(ctrl, &bp->reg->ctrl);
iowrite32(ctrl, &bp->reg->ctrl);
start = ktime_get_ns();
start = ktime_get_raw_ns();
ctrl = ioread32(&bp->reg->ctrl);
ctrl = ioread32(&bp->reg->ctrl);
end = ktime_get_ns();
end = ktime_get_raw_ns();
delay = end - start;
delay = min(delay, end - start);
}
bp->ts_window_adjust = (delay >> 5) * 3;
}