On Fri, Dec 03, 2010 at 01:12:57PM +0100, Claudio Jeker wrote:
> Window size scaling is disabled when an application is issuing a
> setsockopt() changing SO_SNDBUF or SO_RCVBUF.

tcp_update_sndspace() still rounds up to tp->t_maxseg even if
SO_SNDBUF has been set.

I was always wondering why the code in tcp_update_sndspace()
is different from tcp_update_rcvspace().

tcp_update_sndspace()
...
        /* round to MSS boundary */
        nmax = roundup(nmax, tp->t_maxseg);

        if (nmax != so->so_snd.sb_hiwat)
                sbreserve(&so->so_snd, nmax);
}

tcp_update_rcvspace()
...
        if (nmax == so->so_rcv.sb_hiwat)
                return;

        /* round to MSS boundary */
        nmax = roundup(nmax, tp->t_maxseg);
        sbreserve(&so->so_rcv, nmax);
}

bluhm

Reply via email to