diff --git a/CHANGES.html b/CHANGES.html
index 681478fb0..e576bc771 100644
--- a/CHANGES.html
+++ b/CHANGES.html
@@ -212,6 +212,8 @@ is now exported by WifiNetDevice.
The default value of the EnableBeaconJitter attribute in ApWifiMac was changed from false to true.
+ The NormalClose() callback of a TcpSocket object used to fire upon leaving TIME_WAIT state (2*MSL after FINs have been exchanged). It now fires upon entering TIME_WAIT state. Timing of the callback for the other path to state CLOSED (through LAST_ACK) has not been changed.
+
diff --git a/RELEASE_NOTES b/RELEASE_NOTES
index 2b29ce9ee..7d7b76b30 100644
--- a/RELEASE_NOTES
+++ b/RELEASE_NOTES
@@ -75,6 +75,7 @@ Bugs fixed
- Bug 2561 - TCP can not use Connect after a BindToNetDevice
- Bug 2563 - Modify pybindgen version check to >= minimum version required
- Bug 2564 - Simulation crashes when CtsTimeout is triggered for A-MPDU transmissions
+- Bug 2565 - TCP; do not wait for 2*MSL to notify socket close
- Bug 2566 - BlockAckManager::GetNRetryNeededPackets missing some packets in the queue
- Bug 2573 - Added TCP Ledbat
- Bug 2577 - simulation crashes when A-MPDU and multiple TOS are used with RTS-CTS enabled
diff --git a/src/internet/doc/tcp.rst b/src/internet/doc/tcp.rst
index 967a4ba50..876652cfe 100644
--- a/src/internet/doc/tcp.rst
+++ b/src/internet/doc/tcp.rst
@@ -271,9 +271,9 @@ Figure :ref:`fig-tcp-state-machine`.
in the tx buffer has been transmitted). This does not prevent the socket in
receiving data, and employing retransmit mechanism if losses are detected. If
the application calls *Close()* with unread data in its rx buffer, the socket
- will send a reset. If the socket is in the state SYN_SENT, CLOSING, LISTEN or
- LAST_ACK, after that call the application will be notified with
- *NotifyNormalClose()*. In all the other cases, the notification is delayed
+ will send a reset. If the socket is in the state SYN_SENT, CLOSING, LISTEN,
+ FIN_WAIT_2, or LAST_ACK, after that call the application will be notified with
+ *NotifyNormalClose()*. In other cases, the notification is delayed
(see *NotifyNormalClose()*).
-----------------------------------------
@@ -303,7 +303,7 @@ callback as well.
- Received an ACK for the FIN sent, with or without the FIN bit set (we are in LAST_ACK)
- The socket reaches the maximum amount of retries in retransmitting the SYN (*)
- We receive a timeout in the LAST_ACK state
- - After 2*Maximum Segment Lifetime seconds passed since the socket entered the TIME_WAIT state.
+ - Upon entering the TIME_WAIT state, before waiting the 2*Maximum Segment Lifetime seconds to finally deallocate the socket.
*NotifyErrorClose*: *SetCloseCallbacks*, 2nd argument
Invoked when we send an RST segment (for whatever reason) or we reached the