Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 73531
b: refs/heads/master
c: ac71c69
h: refs/heads/master
i:
  73529: bea77a7
  73527: 17ff82b
v: v3
  • Loading branch information
Johannes Berg authored and David S. Miller committed Nov 11, 2007
1 parent a425ed6 commit 94487a7
Show file tree
Hide file tree
Showing 7 changed files with 43 additions and 28 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 8a8f1c0437a77cce29c1cb6089f01f22a6d9ca6e
refs/heads/master: ac71c691e6a5ce991fe221d3bdb0c972f617aa37
12 changes: 12 additions & 0 deletions trunk/net/mac80211/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,18 @@ config MAC80211
This option enables the hardware independent IEEE 802.11
networking stack.

config MAC80211_RCSIMPLE
bool "'simple' rate control algorithm"
default y
depends on MAC80211 && EMBEDDED
help
This option allows you to turn off the 'simple' rate
control algorithm in mac80211. If you do turn it off,
you absolutely need another rate control algorithm.

Say Y unless you know you will have another algorithm
available.

config MAC80211_LEDS
bool "Enable LED triggers"
depends on MAC80211 && LEDS_TRIGGERS
Expand Down
3 changes: 2 additions & 1 deletion trunk/net/mac80211/Makefile
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
obj-$(CONFIG_MAC80211) += mac80211.o rc80211_simple.o
obj-$(CONFIG_MAC80211) += mac80211.o

mac80211-objs-$(CONFIG_MAC80211_LEDS) += ieee80211_led.o
mac80211-objs-$(CONFIG_MAC80211_DEBUGFS) += debugfs.o debugfs_sta.o debugfs_netdev.o debugfs_key.o
mac80211-objs-$(CONFIG_NET_SCHED) += wme.o
mac80211-objs-$(CONFIG_MAC80211_RCSIMPLE) += rc80211_simple.o

mac80211-objs := \
ieee80211.o \
Expand Down
13 changes: 13 additions & 0 deletions trunk/net/mac80211/ieee80211.c
Original file line number Diff line number Diff line change
Expand Up @@ -1233,8 +1233,17 @@ static int __init ieee80211_init(void)

BUILD_BUG_ON(sizeof(struct ieee80211_tx_packet_data) > sizeof(skb->cb));

#ifdef CONFIG_MAC80211_RCSIMPLE
ret = ieee80211_rate_control_register(&mac80211_rcsimple);
if (ret)
return ret;
#endif

ret = ieee80211_wme_register();
if (ret) {
#ifdef CONFIG_MAC80211_RCSIMPLE
ieee80211_rate_control_unregister(&mac80211_rcsimple);
#endif
printk(KERN_DEBUG "ieee80211_init: failed to "
"initialize WME (err=%d)\n", ret);
return ret;
Expand All @@ -1248,6 +1257,10 @@ static int __init ieee80211_init(void)

static void __exit ieee80211_exit(void)
{
#ifdef CONFIG_MAC80211_RCSIMPLE
ieee80211_rate_control_unregister(&mac80211_rcsimple);
#endif

ieee80211_wme_unregister();
ieee80211_debugfs_netdev_exit();
}
Expand Down
13 changes: 11 additions & 2 deletions trunk/net/mac80211/ieee80211_rate.c
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,9 @@ int ieee80211_rate_control_register(struct rate_control_ops *ops)
{
struct rate_control_alg *alg;

if (!ops->name)
return -EINVAL;

alg = kzalloc(sizeof(*alg), GFP_KERNEL);
if (alg == NULL) {
return -ENOMEM;
Expand Down Expand Up @@ -61,9 +64,12 @@ ieee80211_try_rate_control_ops_get(const char *name)
struct rate_control_alg *alg;
struct rate_control_ops *ops = NULL;

if (!name)
return NULL;

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;
Expand All @@ -80,9 +86,12 @@ ieee80211_rate_control_ops_get(const char *name)
{
struct rate_control_ops *ops;

if (!name)
name = "simple";

ops = ieee80211_try_rate_control_ops_get(name);
if (!ops) {
request_module("rc80211_%s", name ? name : "default");
request_module("rc80211_%s", name);
ops = ieee80211_try_rate_control_ops_get(name);
}
return ops;
Expand Down
3 changes: 3 additions & 0 deletions trunk/net/mac80211/ieee80211_rate.h
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,9 @@ struct rate_control_ref {
struct kref kref;
};

/* default 'simple' algorithm */
extern struct rate_control_ops mac80211_rcsimple;

int ieee80211_rate_control_register(struct rate_control_ops *ops);
void ieee80211_rate_control_unregister(struct rate_control_ops *ops);

Expand Down
25 changes: 1 addition & 24 deletions trunk/net/mac80211/rc80211_simple.c
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
* published by the Free Software Foundation.
*/

#include <linux/module.h>
#include <linux/init.h>
#include <linux/netdevice.h>
#include <linux/types.h>
Expand All @@ -29,8 +28,6 @@
#define RATE_CONTROL_INTERVAL (HZ / 20)
#define RATE_CONTROL_MIN_TX 10

MODULE_ALIAS("rc80211_default");

static void rate_control_rate_inc(struct ieee80211_local *local,
struct sta_info *sta)
{
Expand Down Expand Up @@ -394,8 +391,7 @@ static void rate_control_simple_remove_sta_debugfs(void *priv, void *priv_sta)
}
#endif

static struct rate_control_ops rate_control_simple = {
.module = THIS_MODULE,
struct rate_control_ops mac80211_rcsimple = {
.name = "simple",
.tx_status = rate_control_simple_tx_status,
.get_rate = rate_control_simple_get_rate,
Expand All @@ -410,22 +406,3 @@ static struct rate_control_ops rate_control_simple = {
.remove_sta_debugfs = rate_control_simple_remove_sta_debugfs,
#endif
};


static int __init rate_control_simple_init(void)
{
return ieee80211_rate_control_register(&rate_control_simple);
}


static void __exit rate_control_simple_exit(void)
{
ieee80211_rate_control_unregister(&rate_control_simple);
}


subsys_initcall(rate_control_simple_init);
module_exit(rate_control_simple_exit);

MODULE_DESCRIPTION("Simple rate control algorithm for ieee80211");
MODULE_LICENSE("GPL");

0 comments on commit 94487a7

Please sign in to comment.