RFC 3390 states:
If the SYN or SYN/ACK is lost, the initial window used by a sender after a correctly transmitted SYN MUST be one segment consisting of MSS bytes.
and it seems that this is the intention of the code by setting snd_cwnd to 1.
This special value gets overwritten when cc_cong_signal() calls CC_ALGO(tp)->cong_signal().
So don't do that anymore.
It should be noted that RFC 6928 allows larger initial windows when the SYN or SYN/ACK was lost. This might be implemented later in a separate commit.