* [PATCH 0/1] wintun driver get stalled for few sec until another packet is being sent -- approach 1
@ 2026-02-24 23:42 odedkatz
2026-02-24 23:42 ` [PATCH 1/1] remove the condition on possibly stale variable (Session->Descriptor.Receive.Ring->Alertable) for Setting TailMoved event odedkatz
0 siblings, 1 reply; 2+ messages in thread
From: odedkatz @ 2026-02-24 23:42 UTC (permalink / raw)
To: wireguard; +Cc: odedk, alexey, odedkatz
## changes:
- I observed a code [which can lead to a stall condition in the wintun driver](https://github.com/Twingate/wintun/blob/6bfc34a60aa944149fdc7e9cddb191e9a8b6ec1a/driver/twintun.c#L487-L488)
- I didn't want to change the driver code as, I was not sure if it will create a busy loop on kernel
- so instead I tackle this on the client-part of wintun
# issue description:
## Reproducing issue
- run iperf client on Client machine with the command `iperf3 -c 127.0.0.1.us.east.direct.vpn -t 300 -b0 -P1`
- once in a while we see intervals when no throughput goes to 0 and it takes about 4-5 sec to get out of this situation.
odedkatz (1):
remove the condition on possibly stale variable
(Session->Descriptor.Receive.Ring->Alertable) for Setting
TailMoved event
api/session.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
--
2.43.0
^ permalink raw reply [flat|nested] 2+ messages in thread
* [PATCH 1/1] remove the condition on possibly stale variable (Session->Descriptor.Receive.Ring->Alertable) for Setting TailMoved event
2026-02-24 23:42 [PATCH 0/1] wintun driver get stalled for few sec until another packet is being sent -- approach 1 odedkatz
@ 2026-02-24 23:42 ` odedkatz
0 siblings, 0 replies; 2+ messages in thread
From: odedkatz @ 2026-02-24 23:42 UTC (permalink / raw)
To: wireguard; +Cc: odedk, alexey, odedkatz
otherwise wintun driver just holds on the event until something wakes it up (see here)[https://github.com/Twingate/wintun/blob/6bfc34a60aa944149fdc7e9cddb191e9a8b6ec1a/driver/twintun.c#L487-L488]
---
api/session.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/api/session.c b/api/session.c
index ab96c64..dcaeb25 100644
--- a/api/session.c
+++ b/api/session.c
@@ -302,8 +302,7 @@ WintunSendPacket(TUN_SESSION *Session, const BYTE *Packet)
if (Session->Descriptor.Receive.Ring->Tail != Session->Receive.TailRelease)
{
WriteULongRelease(&Session->Descriptor.Receive.Ring->Tail, Session->Receive.TailRelease);
- if (ReadAcquire(&Session->Descriptor.Receive.Ring->Alertable))
- SetEvent(Session->Descriptor.Receive.TailMoved);
+ SetEvent(Session->Descriptor.Receive.TailMoved);
}
LeaveCriticalSection(&Session->Receive.Lock);
}
--
2.43.0
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-02-24 23:42 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-02-24 23:42 [PATCH 0/1] wintun driver get stalled for few sec until another packet is being sent -- approach 1 odedkatz
2026-02-24 23:42 ` [PATCH 1/1] remove the condition on possibly stale variable (Session->Descriptor.Receive.Ring->Alertable) for Setting TailMoved event odedkatz
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox