menu "Rate control algorithm selection"
        depends on MAC80211 != n
 
+config MAC80211_RC_PID
+       bool "PID controller based rate control algorithm" if EMBEDDED
+       default y
+       ---help---
+         This option enables a TX rate control algorithm for
+         mac80211 that uses a PID controller to select the TX
+         rate.
+
 choice
        prompt "Default rate control algorithm"
        default MAC80211_RC_DEFAULT_PID
 
 config MAC80211_RC_DEFAULT_PID
        bool "PID controller based rate control algorithm"
-       select MAC80211_RC_PID
+       depends on 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_NONE
-       bool "No default algorithm"
-       depends on EMBEDDED
-       help
-         Selecting this option will select no default algorithm
-         and allow you to not build any. Do not choose this
-         option unless you know your driver comes with another
-         suitable algorithm.
 endchoice
 
-comment "Selecting 'y' for an algorithm will"
-comment "build the algorithm into mac80211."
-
 config MAC80211_RC_DEFAULT
        string
        default "pid" if MAC80211_RC_DEFAULT_PID
        default ""
 
-config MAC80211_RC_PID
-       tristate "PID controller based rate control algorithm"
-       ---help---
-         This option enables a TX rate control algorithm for
-         mac80211 that uses a PID controller to select the TX
-         rate.
-
-         Say Y or M unless you're sure you want to use a
-         different rate control algorithm.
-
 endmenu
 
 config MAC80211_MESH
 
 obj-$(CONFIG_MAC80211) += mac80211.o
 
-# objects for PID algorithm
-rc80211_pid-y := rc80211_pid_algo.o
-rc80211_pid-$(CONFIG_MAC80211_DEBUGFS) += rc80211_pid_debugfs.o
-
-# build helper for PID algorithm
-rc-pid-y := $(rc80211_pid-y)
-rc-pid-m := rc80211_pid.o
-
 # mac80211 objects
 mac80211-y := \
        main.o \
        mesh_plink.o \
        mesh_hwmp.o
 
+# objects for PID algorithm
+rc80211_pid-y := rc80211_pid_algo.o
+rc80211_pid-$(CONFIG_MAC80211_DEBUGFS) += rc80211_pid_debugfs.o
 
-# Build rate control algorithm(s)
-CFLAGS_rc80211_pid_algo.o += -DRC80211_PID_COMPILE
-mac80211-$(CONFIG_MAC80211_RC_PID) += $(rc-pid-$(CONFIG_MAC80211_RC_PID))
-
-# Modular rate algorithms are assigned to mac80211-m - make separate modules
-obj-m += $(mac80211-m)
+mac80211-$(CONFIG_MAC80211_RC_PID) += $(rc80211_pid-y)
 
        }
        rcu_read_unlock();
 }
-EXPORT_SYMBOL(mesh_plink_broken);
 
 /**
  * mesh_path_flush_by_nexthop - Deletes mesh paths if their next hop matches
 
 
 
 /* Rate control algorithms */
-#if defined(RC80211_PID_COMPILE) || \
-       (defined(CONFIG_MAC80211_RC_PID) && \
-        !defined(CONFIG_MAC80211_RC_PID_MODULE))
+#ifdef CONFIG_MAC80211_RC_PID
 extern int rc80211_pid_init(void);
 extern void rc80211_pid_exit(void);
 #else
 
 #endif
 };
 
-MODULE_DESCRIPTION("PID controller based rate control algorithm");
-MODULE_AUTHOR("Stefano Brivio");
-MODULE_AUTHOR("Mattias Nissler");
-MODULE_LICENSE("GPL");
-
 int __init rc80211_pid_init(void)
 {
        return ieee80211_rate_control_register(&mac80211_rcpid);
 {
        ieee80211_rate_control_unregister(&mac80211_rcpid);
 }
-
-#ifdef CONFIG_MAC80211_RC_PID_MODULE
-module_init(rc80211_pid_init);
-module_exit(rc80211_pid_exit);
-#endif