Re: TCP_CONGESTION documentation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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
--
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

[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux 802.1Q VLAN]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Git]     [Bugtraq]     [Yosemite News and Information]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux PCI]     [Linux Admin]     [Samba]

  Powered by Linux