Search Linux Wireless

Re: letting drivers choose their preferred rate scale

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

 



On Mon, 2007-09-03 at 02:21 +0200, ian wrote:

> I read up on the code and kernel mechanisms involved and this is
> what i came up with
> 
> Right now there is no way of knowing what the "default" rc should be
> other than that it has a module alias rc80211_default, checking
> for this is probably not done, and would be pretty unpractical.
> And it wouldn't be settable from userspace in the future either.
> 
> We could however replace "simple" with a user settable variable.
> (global variable in ieee80211.c like the rate_ctrl_algs and mutex,
> with some accessors for a module parameter/debugfs/..?)
> 
> we could additionally remove the module_alias from rc80211_simple
> 
> I don't know too much of the rest of mac80211 code and conventions,
> so feel free to be brutal if this patch makes no sense.
> ---
> Make rc80211_simple the default rate scaling algorithm
> 
> Signed-of-by: Ian Schram <ischram@xxxxxxxxxx>

I think along with the patch from James this should work, with simple
being the default. We should additionally have a debugfs file associated
with "local" that allows you to set the "simple" string you've used
there to something else. That also allows us to test the error path
there :P

> --- a/net/mac80211/ieee80211_rate.c	2007-09-03 01:26:18.000000000 +0200
> +++ b/net/mac80211/ieee80211_rate.c	2007-09-03 01:46:54.000000000 +0200
> @@ -62,7 +62,7 @@ ieee80211_try_rate_control_ops_get(const
> 
>  	mutex_lock(&rate_ctrl_mutex);
>  	list_for_each_entry(alg, &rate_ctrl_algs, list) {
> -		if (!name || !strcmp(alg->ops->name, name))
> +		if (!strcmp(alg->ops->name, name))
>  			if (try_module_get(alg->ops->module)) {
>  				ops = alg->ops;
>  				break;
> @@ -78,11 +78,12 @@ static struct rate_control_ops *
>  ieee80211_rate_control_ops_get(const char *name)
>  {
>  	struct rate_control_ops *ops;
> +	const char *try_name = name ? name : "simple";
> 
> -	ops = ieee80211_try_rate_control_ops_get(name);
> +	ops = ieee80211_try_rate_control_ops_get(try_name);
>  	if (!ops) {
> -		request_module("rc80211_%s", name ? name : "default");
> -		ops = ieee80211_try_rate_control_ops_get(name);
> +		request_module("rc80211_%s", try_name);
> +		ops = ieee80211_try_rate_control_ops_get(try_name);
>  	}
>  	return ops;
>  }
> 
> 
> 

Attachment: signature.asc
Description: This is a digitally signed message part


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux