Commit aa05fe67 authored by Vadim Fedorenko's avatar Vadim Fedorenko Committed by Jakub Kicinski

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: default avatarVadim Fedorenko <vadim.fedorenko@linux.dev>
Link: https://patch.msgid.link/20240905140028.560454-1-vadim.fedorenko@linux.devSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 9a95eedc
...@@ -1558,22 +1558,24 @@ ptp_ocp_watchdog(struct timer_list *t) ...@@ -1558,22 +1558,24 @@ ptp_ocp_watchdog(struct timer_list *t)
static void static void
ptp_ocp_estimate_pci_timing(struct ptp_ocp *bp) ptp_ocp_estimate_pci_timing(struct ptp_ocp *bp)
{ {
ktime_t start, end; ktime_t start, end, delay = U64_MAX;
ktime_t delay;
u32 ctrl; u32 ctrl;
int i;
ctrl = ioread32(&bp->reg->ctrl); for (i = 0; i < 3; i++) {
ctrl = OCP_CTRL_READ_TIME_REQ | OCP_CTRL_ENABLE; 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; bp->ts_window_adjust = (delay >> 5) * 3;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment