I’m using kernel tdi to communicate with a linux server. I traced
into tcpip.sys and got that the Irp of ioctl TCP_SOCKET_NODELAY
was successfully processed. But there was no any real effect on the
network traffic.
The calling stack is like this:
XXX!set_tcp_option
-> IoCallDriver
-> tcpip!TCPDispatch
-> tcpip!TCPDispatchDeviceControl
-> tcpip!TCPSetInformationEx
-> tcpip!TCPDataRequestComplete
I’m using xp sp2. Any one have a clue on it ?
I also noticed that there are two “new” options: 7 and 8. I didn’t get
any infromation about these two options. Anyone here could provide some info
?
Best wishes,
Matt
Happended to get a way to solve this problem:
I Implemented an internal buffer/queue for small sendings to make
a workaroud for NODELAY’s not working. i.e. move the user payloads
into the internal buffer/queue, then we finish the’s user request
and return to user ASAP.
But with this way TCP_NODELAY takes effect and it affects the
performnace amazingly.
It’s amazing but I could not explain the reason. Any one could ?
Long time it cost me to get it. Wish it could help later tdi
programmers.
Matt
“Matt Wu” wrote: xxxxx@ntdev…
>
> I’m using kernel tdi to communicate with a linux server. I traced
> into tcpip.sys and got that the Irp of ioctl TCP_SOCKET_NODELAY
> was successfully processed. But there was no any real effect on the
> network traffic.
>
> The calling stack is like this:
>
> XXX!set_tcp_option
> -> IoCallDriver
> -> tcpip!TCPDispatch
> -> tcpip!TCPDispatchDeviceControl
> -> tcpip!TCPSetInformationEx > flag>
> -> tcpip!TCPDataRequestComplete
>
> I’m using xp sp2. Any one have a clue on it ?
>
> I also noticed that there are two “new” options: 7 and 8. I didn’t get
> any infromation about these two options. Anyone here could provide some
> info ?
>
> Best wishes,
>
> Matt