Linux, FreeBSD, Windows, and OSX take care about the buffer size and TCP autotuning. In Solaris we have to set `setsockopt` call in both sides, sender and receiver to set optimal buffer size. To get such value we take `RTT` from ping, and then multiplied by the `bandwidth` we have:
BUFFER SIZE = Bandwidth * RTT
pathrate is a good tool which can be used to get the `Bandwidth` value.