Subject: Re: 2.6.12-rc5-mm2: "bic unavailable using TCP reno" messages

From: Adrian Bunk <[email-masked]>
Date: Thu, 2 Jun 2005 22:38:23 +0200

On Thu, Jun 02, 2005 at 10:38:05AM -0700, Stephen Hemminger wrote:
> On Thu, 02 Jun 2005 14:58:17 +0100
> Baruch Even <[email-masked]> wrote:
> 
> >...
> 
> Your right, the sysctl handler should be smarter, but that is not the problem here.
> The problem is that the default value is set to be BIC to be compatible with earlier kernels.
> Since 75% of the world isn't smart enough to figure out how to use sysctl, there is a
> question of what the default should be, and what to do if that is missing.
> 
> One version had a messy ifdef chain to try and avoid the warning:
> 
> char sysctl_tcp_congestion_control[] = 
> #if defined(CONFIG_TCP_BIC)
> 	"bic"
> #elif defined(CONFIG_TCP_HTCP)
> 	"htcp"
> #else
> 	"reno"
> #endif
> 	;
> 
> but that was ugly.
> 
> Another possibility is putting it in as yet another config value at kernel build time.
>...

One thing that currently makes all solutions harder (and the #ifdef 
example above not ugly but simply wrong) is that you allow modular 
congestion control options for the always static net support.

Is this really required?

The IO schedulers have a similar problem, and they are using the #ifdef 
approach for selecting the default.

One approach is to actually choose the default using #ifdef's.

You could also do any kind of runtime selection, but please don't print 
the warning more than once.

cu
Adrian

-- 

       "Is there not promise of rain?" Ling Tan asked suddenly out
        of the darkness. There had been need of rain for many days.
       "Only a promise," Lao Er said.
                                       Pearl S. Buck - Dragon Seed