Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=c21b39aca4f8f4975784e54cd3a1b80bab80dcc0
Commit:     c21b39aca4f8f4975784e54cd3a1b80bab80dcc0
Parent:     b92edbe0b8a36a833c16b0cbafb6e899b81ffc08
Author:     Stefano Brivio <[EMAIL PROTECTED]>
AuthorDate: Wed Dec 19 01:26:16 2007 +0100
Committer:  David S. Miller <[EMAIL PROTECTED]>
CommitDate: Mon Jan 28 14:59:41 2008 -0800

    mac80211: make PID rate control algorithm the default
    
    This makes the new PID TX rate control algorithm the default instead of the
    rc80211_simple rate control algorithm. The simple algorithm was flawed in
    several ways: it wasn't responsive at all and didn't age the information it 
was
    relying on properly. The PID algorithm allows us to tune characteristics 
such
    as responsiveness by adjusting parameters and was found to generally behave
    better.
    
    The default algorithm can be overridden to select simple instead. Which
    ever algorithm is the default is included as part of the mac80211
    module automatically. The other algorithm (simple vs. pid) can
    be selected for inclusion as well. If EMBEDDED is selected then
    the choice is available to have no default specified and neither
    algorithm included in mac80211. The default algorithm can be set
    through a modparam.
    
    While at it, mark rc80211-simple as deprecated, and schedule it
    for removal.
    
    Signed-off-by: Stefano Brivio <[EMAIL PROTECTED]>
    Signed-off-by: John W. Linville <[EMAIL PROTECTED]>
    Signed-off-by: David S. Miller <[EMAIL PROTECTED]>
---
 Documentation/feature-removal-schedule.txt |    8 +++
 net/mac80211/Kconfig                       |   72 +++++++++++++++++++++++-----
 net/mac80211/Makefile                      |    4 +-
 net/mac80211/ieee80211.c                   |   12 ++--
 net/mac80211/ieee80211_rate.c              |   24 +++++++--
 5 files changed, 93 insertions(+), 27 deletions(-)

diff --git a/Documentation/feature-removal-schedule.txt 
b/Documentation/feature-removal-schedule.txt
index 0927425..a6cf8f6 100644
--- a/Documentation/feature-removal-schedule.txt
+++ b/Documentation/feature-removal-schedule.txt
@@ -314,3 +314,11 @@ Why:       No in-kernel drivers will depend on it any 
longer.
 Who:   John W. Linville <[EMAIL PROTECTED]>
 
 ---------------------------
+
+What:  rc80211-simple rate control algorithm for mac80211
+When:  2.6.26
+Files: net/mac80211/rc80211-simple.c
+Why:   This algorithm was provided for reference but always exhibited bad
+       responsiveness and performance and has some serious flaws. It has been
+       replaced by rc80211-pid.
+Who:   Stefano Brivio <[EMAIL PROTECTED]>
diff --git a/net/mac80211/Kconfig b/net/mac80211/Kconfig
index 9f8663b..297f4d9 100644
--- a/net/mac80211/Kconfig
+++ b/net/mac80211/Kconfig
@@ -13,29 +13,75 @@ config MAC80211
        This option enables the hardware independent IEEE 802.11
        networking stack.
 
-config MAC80211_RCSIMPLE
-       bool "'simple' rate control algorithm" if EMBEDDED
+config MAC80211_RC_DEFAULT_CHOICE
+       bool "Choose default rate control algorithm" if EMBEDDED
        default y
        depends on MAC80211
-       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.
+       ---help---
+         This options enables selection of a default rate control
+         algorithm to be built into the mac80211 module.  Alternate
+         rate control algorithms might be built into the mac80211
+         module as well.
+
+choice
+       prompt "Default rate control algorithm"
+       default MAC80211_RC_DEFAULT_PID
+       depends on MAC80211 && MAC80211_RC_DEFAULT_CHOICE
+       ---help---
+         This option selects the default rate control algorithm
+         mac80211 will use. Note that this default can still be
+         overriden through the ieee80211_default_rc_algo module
+         parameter.
+
+config MAC80211_RC_DEFAULT_PID
+       bool "PID controller based rate control algorithm"
+       select MAC80211_RC_PID
+       ---help---
+         Select the PID controller based rate control as the
+         default rate control algorithm. You should choose
+         this unless you know what you are doing.
+
+config MAC80211_RC_DEFAULT_SIMPLE
+       bool "Simple rate control algorithm"
+       select MAC80211_RC_SIMPLE
+       ---help---
+         Select the simple rate control as the default rate
+         control algorithm. Note that this is a non-responsive,
+         dumb algorithm. You should choose the PID rate control
+         instead.
+
+endchoice
 
-         Say Y unless you know you will have another algorithm
-         available.
+config MAC80211_RC_DEFAULT
+       string
+       depends on MAC80211
+       default "pid" if MAC80211_RC_DEFAULT_PID
+       default "simple" if MAC80211_RC_DEFAULT_SIMPLE
+       default ""
 
-config MAC80211_RCPID
-       bool "'PID' rate control algorithm" if EMBEDDED
+config MAC80211_RC_PID
+       bool "PID controller based rate control algorithm"
        default y
        depends on MAC80211
-       help
+       ---help---
          This option enables a TX rate control algorithm for
          mac80211 that uses a PID controller to select the TX
          rate.
 
-         Say Y unless you're sure you want to use a different
-         rate control algorithm.
+         Say Y or M unless you're sure you want to use a
+         different rate control algorithm.
+
+config MAC80211_RC_SIMPLE
+       bool "Simple rate control algorithm (DEPRECATED)"
+       default n
+       depends on MAC80211
+       ---help---
+         This option enables a very simple, non-responsive TX
+         rate control algorithm. This algorithm is deprecated
+         and will be removed from the kernel in near future.
+         It has been replaced by the PID algorithm.
+
+         Say N unless you know what you are doing.
 
 config MAC80211_LEDS
        bool "Enable LED triggers"
diff --git a/net/mac80211/Makefile b/net/mac80211/Makefile
index 62c01ca..a375f04 100644
--- a/net/mac80211/Makefile
+++ b/net/mac80211/Makefile
@@ -3,8 +3,8 @@ 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-$(CONFIG_MAC80211_RCPID) += rc80211_pid.o
+mac80211-objs-$(CONFIG_MAC80211_RC_SIMPLE) += rc80211_simple.o
+mac80211-objs-$(CONFIG_MAC80211_RC_PID) += rc80211_pid.o
 
 mac80211-objs := \
        ieee80211.o \
diff --git a/net/mac80211/ieee80211.c b/net/mac80211/ieee80211.c
index 3d7b434..c0dbf77 100644
--- a/net/mac80211/ieee80211.c
+++ b/net/mac80211/ieee80211.c
@@ -1312,13 +1312,13 @@ static int __init ieee80211_init(void)
 
        BUILD_BUG_ON(sizeof(struct ieee80211_tx_packet_data) > sizeof(skb->cb));
 
-#ifdef CONFIG_MAC80211_RCSIMPLE
+#ifdef CONFIG_MAC80211_RC_SIMPLE
        ret = ieee80211_rate_control_register(&mac80211_rcsimple);
        if (ret)
                goto fail;
 #endif
 
-#ifdef CONFIG_MAC80211_RCPID
+#ifdef CONFIG_MAC80211_RC_PID
        ret = ieee80211_rate_control_register(&mac80211_rcpid);
        if (ret)
                goto fail;
@@ -1338,10 +1338,10 @@ static int __init ieee80211_init(void)
 
 fail:
 
-#ifdef CONFIG_MAC80211_RCSIMPLE
+#ifdef CONFIG_MAC80211_RC_SIMPLE
        ieee80211_rate_control_unregister(&mac80211_rcsimple);
 #endif
-#ifdef CONFIG_MAC80211_RCPID
+#ifdef CONFIG_MAC80211_RC_PID
        ieee80211_rate_control_unregister(&mac80211_rcpid);
 #endif
 
@@ -1350,10 +1350,10 @@ fail:
 
 static void __exit ieee80211_exit(void)
 {
-#ifdef CONFIG_MAC80211_RCSIMPLE
+#ifdef CONFIG_MAC80211_RC_SIMPLE
        ieee80211_rate_control_unregister(&mac80211_rcsimple);
 #endif
-#ifdef CONFIG_MAC80211_RCPID
+#ifdef CONFIG_MAC80211_RC_PID
        ieee80211_rate_control_unregister(&mac80211_rcpid);
 #endif
 
diff --git a/net/mac80211/ieee80211_rate.c b/net/mac80211/ieee80211_rate.c
index e495b09..65fc9ad 100644
--- a/net/mac80211/ieee80211_rate.c
+++ b/net/mac80211/ieee80211_rate.c
@@ -21,6 +21,11 @@ struct rate_control_alg {
 static LIST_HEAD(rate_ctrl_algs);
 static DEFINE_MUTEX(rate_ctrl_mutex);
 
+static char *ieee80211_default_rc_algo = CONFIG_MAC80211_RC_DEFAULT;
+module_param(ieee80211_default_rc_algo, charp, 0644);
+MODULE_PARM_DESC(ieee80211_default_rc_algo,
+                "Default rate control algorithm for mac80211 to use");
+
 int ieee80211_rate_control_register(struct rate_control_ops *ops)
 {
        struct rate_control_alg *alg;
@@ -89,21 +94,27 @@ ieee80211_try_rate_control_ops_get(const char *name)
        return ops;
 }
 
-/* Get the rate control algorithm. If `name' is NULL, get the first
- * available algorithm. */
+/* Get the rate control algorithm. */
 static struct rate_control_ops *
 ieee80211_rate_control_ops_get(const char *name)
 {
        struct rate_control_ops *ops;
+       const char *alg_name;
 
        if (!name)
-               name = "simple";
+               alg_name = ieee80211_default_rc_algo;
+       else
+               alg_name = name;
 
-       ops = ieee80211_try_rate_control_ops_get(name);
+       ops = ieee80211_try_rate_control_ops_get(alg_name);
        if (!ops) {
-               request_module("rc80211_%s", name);
-               ops = ieee80211_try_rate_control_ops_get(name);
+               request_module("rc80211_%s", alg_name);
+               ops = ieee80211_try_rate_control_ops_get(alg_name);
        }
+       if (!ops && name)
+               /* try default if specific alg requested but not found */
+               ops = 
ieee80211_try_rate_control_ops_get(ieee80211_default_rc_algo);
+
        return ops;
 }
 
@@ -244,3 +255,4 @@ void rate_control_deinitialize(struct ieee80211_local 
*local)
        local->rate_ctrl = NULL;
        rate_control_put(ref);
 }
+
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to