FIN_WAIT_2 Timer

[The TCP chimney offload feature is deprecated and should not be used.]

When an offloaded TCP connection enters the FIN_WAIT_2 state, the offload target starts the FIN_WAIT_2 timer for that connection. The retransmit timer for the connection acts as the FIN_WAIT_2 timer when the connection is in the FIN_WAIT_2 state. An offload target should use a value of 120 seconds as the initial value of the FIN_WAIT_2 timer.

If an acceptable TCP segment arrives on the connection before the FIN_WAIT_2 timer expires, the offload target restarts the FIN_WAIT_2 timer.

If the FIN_WAIT_2 timer expires before an acceptable TCP segment arrives on the connection, the offload target must call the NdisTcpOffloadEventHandler function with the EventType parameter set to TcpIndicateRetrieve and the EventSpecificInformation parameter set to TimeoutExpiration. This call requests that the host stack terminate the offload of the connection.

When the FIN_WAIT_2 timer expires, the offload target should change its TCP state to CLOSED.

When offloading a TCP connection that is in the FIN_WAIT_2 state, the host stack passes the value of its FIN_WAIT_2 timer for the connection to the offload target. The host stack passes this value in the retransmit TimeoutDelta member of the TCP_OFFLOAD_STATE_DELEGATED structure. The offload target uses this value as the starting value for its FIN_WAIT_2 timer for the connection. If the host stack target was not running the FIN_WAIT_2 timer for the connection, it supplies a value of -1in the retransmit TimeoutDelta member.

Similarly, when terminating the offload of a TCP connection that is in the FIN_WAIT_2 state, an offload target passes the value of its FIN_WAIT_2 timer for the connection to the host stack. The offload target passes this value in the retransmit TimeoutDelta member of the TCP_OFFLOAD_STATE_DELEGATED structure.The host stack uses this value as the starting value for its FIN_WAIT_2 timer for the connection. If the offload target was not running the FIN_WAIT_2 timer, it should supply a value of -1 in the retransmit TimeoutDelta member. If the offload target supplies a value of 0 in the retransmit TimeoutDelta member, the host stack assumes that the offload target's FIN_WAIT_2 timer was running, and the host stack's FIN_WAIT_2 timer expires immediately.