This allows a driver to ask for a specific rate control algorithm. The rate control algorithm asked for must be registered and be available as a module or built-in. Signed-off-by: Johannes Berg <johannes@xxxxxxxxxxxxxxxx> --- The fix that makes rc80211 simple built-in will break Intel's drivers because they never bothered to fix the rate control selection bugs they have. This is required to fix those bugs. include/net/mac80211.h | 5 +++++ net/mac80211/ieee80211.c | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) --- linux-2.6.orig/include/net/mac80211.h 2007-10-28 14:23:16.625046333 +0100 +++ linux-2.6/include/net/mac80211.h 2007-10-28 14:29:51.925037218 +0100 @@ -704,11 +704,16 @@ enum ieee80211_hw_flags { * * @queues: number of available hardware transmit queues for * data packets. WMM/QoS requires at least four. + * + * @rate_control_algorithm: rate control algorithm for this hardware. + * If unset (NULL), the default algorithm will be used. Must be + * set before calling ieee80211_register_hw(). */ struct ieee80211_hw { struct ieee80211_conf conf; struct wiphy *wiphy; struct workqueue_struct *workqueue; + const char *rate_control_algorithm; void *priv; u32 flags; unsigned int extra_tx_headroom; --- linux-2.6.orig/net/mac80211/ieee80211.c 2007-10-28 14:28:46.655082356 +0100 +++ linux-2.6/net/mac80211/ieee80211.c 2007-10-28 14:29:03.805036512 +0100 @@ -1272,7 +1272,8 @@ int ieee80211_register_hw(struct ieee802 ieee80211_debugfs_add_netdev(IEEE80211_DEV_TO_SUB_IF(local->mdev)); ieee80211_if_set_type(local->mdev, IEEE80211_IF_TYPE_AP); - result = ieee80211_init_rate_ctrl_alg(local, NULL); + result = ieee80211_init_rate_ctrl_alg(local, + hw->rate_control_algorithm); if (result < 0) { printk(KERN_DEBUG "%s: Failed to initialize rate control " "algorithm\n", wiphy_name(local->hw.wiphy)); - To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html