Tor uses SENDME cells for circuit-level flow control. When a destination relay receives a certain amount of data (one "window" worth), it sends a SENDME cell back to the source. The source must wait for SENDME acknowledgment before sending the next window. This prevents relays from being overwhelmed by fast senders before they can process and forward the data.
The congestion control improvements in Tor 0.4.7+ make the window size dynamic rather than fixed. Windows grow when the circuit shows spare capacity and shrink when delays increase, similar to how TCP's congestion window operates. This adaptive windowing allows circuits to use available bandwidth more efficiently while preventing congestion collapse when multiple circuits compete for the same relay bandwidth.
For relay operators, the visible effect of improved congestion control is more stable throughput under high load. Previous fixed-window flow control could result in relay buffer oscillation where queues would alternately build up and drain in waves. The new adaptive control produces smoother throughput curves that are easier to provision for and monitor.