puzzled of the congestion control window of Scalable TCP

I am now doing something related to the STCP (Scalable TCP). By pringking the

dynamic snd_cwnd in linux (kernel 2.6.18) ,the result puzzled me . Theoryly,

if any congestion occurs, the snd_cwnd = snd_cwnd * 0.875,but I haven't got

the result I expected. The snd_cwnd changes like this :

snd_cwnd = 1 , snd_ssthresh = 2147483647

snd_cwnd = 2 , snd_ssthresh = 2147483647

snd_cwnd = 3, snd_ssthresh = 2147483647

......

snd_cwnd = 19022, snd_ssthresh = 2147483647 // keeping this value for

several ms

snd_cwnd = 1769, snd_ssthresh = 16645 // congestion occurs

snd_cwnd = 1770, snd_ssthresh = 16645

......

From the above data. when congestion occurs , snd_ssthresh = 16645 ~=~

19022*0.875=16626 corresponds to the theory calculated result. no problems.

but what is the mean of snd_cwnd = 1770? how this value is calculated .who

(where )calculated it ?