fix(client): use kernel transmit time for upstream OWD

Upstream one-way delay now prefers the correlated Linux TX_SOFTWARE wall
timestamp retained by PendingProbe when it is locally plausible (sent_at
<= kernel_tx <= received_at, all on the client's own wall clock), falling
back to the userspace sent_at.wall sample otherwise. RTT, downstream OWD,
IPDV, and timeout/scheduling semantics are unchanged.
This commit is contained in:
Nils Andreas Svee committed 2026-08-15 18:54:41 +07:00
1 parent 1dc18588e7
commit 1066d5df72
4 files changed
+366 -24

No files matched your search

@@ -72,7 +72,7 @@ fn compute_one_way_omits_samples_when_client_wall_time_overflows_i64() {
};
assert_eq!(
compute_one_way(&sent_at, &received_at, &ReceiveMeta::default(), &ts),
compute_one_way(&sent_at, &received_at, None, &ReceiveMeta::default(), &ts),
None
);
}
@@ -93,7 +93,8 @@ fn compute_one_way_returns_available_direction_samples() {
..Default::default()
};
let sample = compute_one_way(&sent_at, &received_at, &ReceiveMeta::default(), &ts).unwrap();
let sample =
compute_one_way(&sent_at, &received_at, None, &ReceiveMeta::default(), &ts).unwrap();
assert_eq!(
sample.client_to_server,
Some(SignedDuration::from_nanos(15_000_000))
@@ -120,7 +121,8 @@ fn compute_one_way_preserves_negative_client_to_server_delay() {
..Default::default()
};
let sample = compute_one_way(&sent_at, &received_at, &ReceiveMeta::default(), &ts).unwrap();
let sample =
compute_one_way(&sent_at, &received_at, None, &ReceiveMeta::default(), &ts).unwrap();
assert_eq!(
sample.client_to_server,
@@ -148,7 +150,8 @@ fn compute_one_way_preserves_negative_server_to_client_delay() {
..Default::default()
};
let sample = compute_one_way(&sent_at, &received_at, &ReceiveMeta::default(), &ts).unwrap();
let sample =
compute_one_way(&sent_at, &received_at, None, &ReceiveMeta::default(), &ts).unwrap();
assert_eq!(
sample.client_to_server,