Information About cwnd

Congestion control sends a number of packets in a pipeline. For example, lets assume that cwnd is ten. Ten packets will be sent, each with 1 MSS of data. cwnd is increased after each ACK for a packet from the group. After all ten ACKs have been received, another batch of packets will be sent, based on the new value of cwnd.

The amount that cwnd is increased is based on the state of the congestion control algorithm:

Congestion Control
The value of cwnd is increased by 1/n, where n is the number of packets sent in the group. The net effect is that cwnd is increased by a total of 1 after all the ACKs have been received. If ten packets are send, then cwnd is increased by 1/10 after each ACK. If no packets are lost, then cwnd will be increased by 1 after the receipt of the 10 ACKs. In the next round, 11 packets will be sent.
Slow Start
The value of cwnd is increased by 1. The net effect is that cwnd is doubled after all the ACKs in the batch have been received.
Fast Recovery
The same as for congestion control

When a loss is detected, the current value of cwnd is used to determine the value of ssthresh

In slow start state or fast recovery state, as soon as cwnd is greater than or equal to ssthresh, then the state changes to congestion control.

When a problem from the book states that a loss occurred after round n, it means that you should assume that the loss was detected before cwnd was incremented at all in the round, so the value of cwnd should be its value when the round started.