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