> Can you let me know what is the mechanism used in computing the advertised
> window ?
It is initialized to 3*mss (actually, 2...4*mss, look into include/net/tcp.h
tcp_select_initial_window() for details). Then each arriving segment
it is increased by 2*mss until it reaches maximal value (if the segment
does not have pathological ratio real_bits/overhead, see tcp_grow_window()).
Maximum depends only on rcvbuf and mss.
If pathological overflow of rcvbuf still happens,
window may be reset back to initial value.