Re: TCP_CONGESTION documentation

From: Michael Kerrisk
Date: Fri Nov 21 2008 - 15:34:58 EST


Bother. CC += Andi again.

On Fri, Nov 21, 2008 at 3:32 PM, Michael Kerrisk
<mtk.manpages@xxxxxxxxxxxxxx> wrote:
> Hi Stephen,
>
> On Fri, Nov 21, 2008 at 2:57 PM, Stephen Hemminger
> <shemminger@xxxxxxxxxxxxxxxxxxxx> wrote:
>> On Fri, 21 Nov 2008 11:06:19 -0500
>> Michael Kerrisk <mtk.manpages@xxxxxxxxxxxxxx> wrote:
>>
>>> Hello Stephen,
>>>
>>> Back in 2.6.13, you added the TCP_CONGESTION sockopt, but
>>> provided no man-page patch...
>>>
>>> Below is my attempt to document this sockopt. Could you please
>>> review. Please don't assume I've well understood the code: I
>>> may well have messed up in my reading of it, so review what
>>> I've written with care.
>>>
>>> Also, a question: was the silent truncation of the returned
>>> string on getsockopt() if optlen is too small really intended?
>>> Would it not be/have been better to error on this case?
>
> You added some other stuff below, but I got no response to the review
> request and the question above?
>
>>> TCP_CONGESTION (since Linux 2.6.13)
>>> Get or set the congestion-control algorithm for this
>>> socket. The optval argument is a pointer to a
>>> character-string buffer.
>>>
>>> For getsockopt() *optlen specifies the amount of space
>>> available in the buffer pointed to by optval, which
>>> should be at least 16 bytes (defined by the kernel-
>>> internal constant TCP_CA_NAME_MAX). On return, the
>>> buffer pointed to by optval is set to a null-terminated
>>> string containing the name of the congestion-control
>>> algorithm for this socket, and *optlen is set to the
>>> minimum of its original value and TCP_CA_NAME_MAX. If
>>> the value passed in *optlen is too small, then the
>>> string returned in *optval is silently truncated, and no
>>> terminating null byte is added. If an empty string is
>>> returned, then the socket is using the default conges-
>>> tion-control algorithm, determined as described under
>>> tcp_congestion_control above.
>>>
>>> For setsockopt() optlen specifies the length of the con-
>>> gestion-control algorithm name contained in the buffer
>>> pointed to by optval; this length need not include any
>>> terminating null byte. The algorithm "reno" is always
>>> permitted; other algorithms may be available, depending
>>> on kernel configuration. Possible errors from setsock-
>>> opt() include: algorithm not found/available (ENOENT);
>>> setting this algorithm requires the CAP_NET_ADMIN capa-
>>> bility (EPERM); and failure getting kernel module
>>> (EBUSY).
>
>> The tcp(7) man page is related
>
> (I'm a little confused by that remark: the patch at the end of my mail
> was *for* the tcp(7) man page; maybe you missed that.)
>
>> and seems out of date as well.
>
> Yes, many things on it are out of date. (I've made occasional
> requests to linux-net for help on this point, but have had little
> response.)
>
>> At least on this sytem (Ubuntu 8.04).it seems to be stuck back in pre 2.6.12
>
> Yes, 2.6.12 sounds about right.
>
>> timewarp (see tcp_bic, tcp_bic_low_window, ...) values that no
>> longer exist.
>
> And when they disappear, no one CCs the man-page maintainer :-(.
>
> Anyway, thanks for the heads up
>
> tcp_bic* is now fixed (disappeared in 2.6.13)
> and
> tcp_westwood is now fixed (disappeared in 2.6.13)
> and
> tcp_vegas_cong_avoid is now fixed (disappeared in 2.6.13)
>
>> Should be updated as well.
>
> I'm working on it. Many updates to tcp(7) will be in man-pages-3.14.
>
> Cheers,
>
> Michael
>
> --
> Michael Kerrisk
> Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
> git://git.kernel.org/pub/scm/docs/man-pages/man-pages.git
> man-pages online: http://www.kernel.org/doc/man-pages/online_pages.html
> Found a bug? http://www.kernel.org/doc/man-pages/reporting_bugs.html
>



--
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
git://git.kernel.org/pub/scm/docs/man-pages/man-pages.git
man-pages online: http://www.kernel.org/doc/man-pages/online_pages.html
Found a bug? http://www.kernel.org/doc/man-pages/reporting_bugs.html
--
To unsubscribe from this list: send the line "unsubscribe linux-net" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html