fix(host/linux): TCP_NODELAY on accepted usbip loopback sockets
audit / bun-audit (push) Successful in 13s
ci / web (push) Successful in 49s
decky / build-publish (push) Successful in 22s
docker / build-push (--build-arg FEDORA_VERSION=44, ci, ci/fedora-rpm.Dockerfile, punktfunk-fedora44-rpm) (push) Successful in 8s
docker / build-push (., web/Dockerfile, punktfunk-web) (push) Successful in 10s
docker / build-push (ci, ci/fedora-rpm.Dockerfile, punktfunk-fedora-rpm) (push) Successful in 8s
docker / build-push (ci, ci/rust-ci.Dockerfile, punktfunk-rust-ci) (push) Successful in 9s
docker / build-push (docs-site, docs-site/Dockerfile, punktfunk-docs) (push) Successful in 8s
audit / cargo-audit (push) Successful in 2m15s
ci / bench (push) Successful in 6m21s
windows-host / package (push) Successful in 8m44s
docker / deploy-docs (push) Successful in 23s
android / android (push) Successful in 12m37s
windows-msix / package (arm64, C:\Users\Public\ffmpeg-arm64, --no-default-features, aarch64-pc-windows-msvc, C:\t-a64) (push) Successful in 3m59s
arch / build-publish (push) Successful in 13m46s
deb / build-publish (push) Successful in 13m32s
rpm / build-publish (43, bazzite, punktfunk-fedora-rpm) (push) Successful in 13m35s
ci / rust (push) Failing after 16m28s
windows-msix / package (x64, C:\Users\Public\ffmpeg, , x86_64-pc-windows-msvc, C:\t) (push) Successful in 3m44s
flatpak / build-publish (push) Failing after 8m13s
rpm / build-publish (44, fedora-44, punktfunk-fedora44-rpm) (push) Successful in 14m42s
windows / build (aarch64-pc-windows-msvc) (push) Successful in 5m4s
ci / docs-site (push) Successful in 51s
windows / build (x86_64-pc-windows-msvc) (push) Successful in 5m47s
apple / swift (push) Has been cancelled
apple / screenshots (push) Has been cancelled
release / apple (push) Has been cancelled
audit / bun-audit (push) Successful in 13s
ci / web (push) Successful in 49s
decky / build-publish (push) Successful in 22s
docker / build-push (--build-arg FEDORA_VERSION=44, ci, ci/fedora-rpm.Dockerfile, punktfunk-fedora44-rpm) (push) Successful in 8s
docker / build-push (., web/Dockerfile, punktfunk-web) (push) Successful in 10s
docker / build-push (ci, ci/fedora-rpm.Dockerfile, punktfunk-fedora-rpm) (push) Successful in 8s
docker / build-push (ci, ci/rust-ci.Dockerfile, punktfunk-rust-ci) (push) Successful in 9s
docker / build-push (docs-site, docs-site/Dockerfile, punktfunk-docs) (push) Successful in 8s
audit / cargo-audit (push) Successful in 2m15s
ci / bench (push) Successful in 6m21s
windows-host / package (push) Successful in 8m44s
docker / deploy-docs (push) Successful in 23s
android / android (push) Successful in 12m37s
windows-msix / package (arm64, C:\Users\Public\ffmpeg-arm64, --no-default-features, aarch64-pc-windows-msvc, C:\t-a64) (push) Successful in 3m59s
arch / build-publish (push) Successful in 13m46s
deb / build-publish (push) Successful in 13m32s
rpm / build-publish (43, bazzite, punktfunk-fedora-rpm) (push) Successful in 13m35s
ci / rust (push) Failing after 16m28s
windows-msix / package (x64, C:\Users\Public\ffmpeg, , x86_64-pc-windows-msvc, C:\t) (push) Successful in 3m44s
flatpak / build-publish (push) Failing after 8m13s
rpm / build-publish (44, fedora-44, punktfunk-fedora44-rpm) (push) Successful in 14m42s
windows / build (aarch64-pc-windows-msvc) (push) Successful in 5m4s
ci / docs-site (push) Successful in 51s
windows / build (x86_64-pc-windows-msvc) (push) Successful in 5m47s
apple / swift (push) Has been cancelled
apple / screenshots (push) Has been cancelled
release / apple (push) Has been cancelled
The vhci-bound socket already set nodelay, but the server-side accepted socket — the one carrying every URB reply back to the kernel — did not. The wired single-interface device never tripped it, but the Puck's six concurrent endpoint streams turn the request/response URB pattern into classic write-write-read Nagle/delayed-ACK stalls: measured ~22 reports/s on Steam's active Puck hidraw (each ~45 ms apart, sequence jumping by 12) against a clean 266 Hz feed from the client. Trackpad felt accordingly. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -283,6 +283,11 @@ async fn run_server(
|
|||||||
_ = stop.notified() => break,
|
_ = stop.notified() => break,
|
||||||
r = listener.accept() => match r {
|
r = listener.accept() => match r {
|
||||||
Ok((mut sock, _)) => {
|
Ok((mut sock, _)) => {
|
||||||
|
// URB replies are small and interleave with the kernel's next SUBMITs; without
|
||||||
|
// TCP_NODELAY the multi-interface request/response pattern collapses into
|
||||||
|
// ~40 ms Nagle/delayed-ACK stalls (observed as ~22 reports/s on the Puck's
|
||||||
|
// active hidraw against a 266 Hz source).
|
||||||
|
sock.set_nodelay(true).ok();
|
||||||
let server = server.clone();
|
let server = server.clone();
|
||||||
tokio::spawn(async move {
|
tokio::spawn(async move {
|
||||||
let _ = usbip_sim::handler(&mut sock, server).await;
|
let _ = usbip_sim::handler(&mut sock, server).await;
|
||||||
|
|||||||
Reference in New Issue
Block a user