]> git.hungrycats.org Git - linux/commitdiff
ath9k: Use minstrel rate control by default
authorSujith Manoharan <c_manoha@qca.qualcomm.com>
Thu, 6 Jun 2013 04:36:29 +0000 (10:06 +0530)
committerBen Hutchings <ben@decadent.org.uk>
Wed, 19 Jun 2013 01:16:59 +0000 (02:16 +0100)
commit 5efac94999ff218e0101f67a059e44abb4b0b523 upstream.

The ath9k rate control algorithm has various architectural
issues that make it a poor fit in scenarios like congested
environments etc.

An example: https://bugzilla.redhat.com/show_bug.cgi?id=927191

Change the default to minstrel which is more robust in such cases.
The ath9k RC code is left in the driver for now, maybe it can
be removed altogether later on.

Cc: Jouni Malinen <jouni@qca.qualcomm.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
[bwh: Backported to 3.2: adjust context]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
drivers/net/wireless/ath/ath9k/Kconfig
drivers/net/wireless/ath/ath9k/Makefile
drivers/net/wireless/ath/ath9k/init.c
drivers/net/wireless/ath/ath9k/rc.h

index d9c08c619a3ab045fe7950aff6dc6f50d1f08b49..f4ed4d838439e169dba2305fa7b909f66c394389 100644 (file)
@@ -50,13 +50,17 @@ config ATH9K_DEBUGFS
 
          Also required for changing debug message flags at run time.
 
-config ATH9K_RATE_CONTROL
+config ATH9K_LEGACY_RATE_CONTROL
        bool "Atheros ath9k rate control"
        depends on ATH9K
-       default y
+       default n
        ---help---
          Say Y, if you want to use the ath9k specific rate control
-         module instead of minstrel_ht.
+         module instead of minstrel_ht. Be warned that there are various
+         issues with the ath9k RC and minstrel is a more robust algorithm.
+         Note that even if this option is selected, "ath9k_rate_control"
+         has to be passed to mac80211 using the module parameter,
+         ieee80211_default_rc_algo.
 
 config ATH9K_HTC
        tristate "Atheros HTC based wireless cards support"
index 36ed3c46fec60afe7634092e90208292af0d423a..1cdb24680c5abbcae7c084a2ccdb5d00af220065 100644 (file)
@@ -5,7 +5,7 @@ ath9k-y +=      beacon.o \
                recv.o \
                xmit.o \
 
-ath9k-$(CONFIG_ATH9K_RATE_CONTROL) += rc.o
+ath9k-$(CONFIG_ATH9K_LEGACY_RATE_CONTROL) += rc.o
 ath9k-$(CONFIG_ATH9K_PCI) += pci.o
 ath9k-$(CONFIG_ATH9K_AHB) += ahb.o
 ath9k-$(CONFIG_ATH9K_DEBUGFS) += debug.o
index 83fcf8969e75ff850347ce618578323742965cd3..ba6a49c8a43b114380fcbf74bcc67bdee0a5a0c6 100644 (file)
@@ -713,10 +713,6 @@ void ath9k_set_hw_capab(struct ath_softc *sc, struct ieee80211_hw *hw)
        sc->ant_rx = hw->wiphy->available_antennas_rx;
        sc->ant_tx = hw->wiphy->available_antennas_tx;
 
-#ifdef CONFIG_ATH9K_RATE_CONTROL
-       hw->rate_control_algorithm = "ath9k_rate_control";
-#endif
-
        if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_2GHZ)
                hw->wiphy->bands[IEEE80211_BAND_2GHZ] =
                        &sc->sbands[IEEE80211_BAND_2GHZ];
index b7a4bcd3eec70f02c62f11e0a23ea7ff843813f2..e8e1901bb87810dcf8f9934678a6acb24473202e 100644 (file)
@@ -221,7 +221,7 @@ struct ath_rate_priv {
        struct ath_rc_stats rcstats[RATE_TABLE_SIZE];
 };
 
-#ifdef CONFIG_ATH9K_RATE_CONTROL
+#ifdef CONFIG_ATH9K_LEGACY_RATE_CONTROL
 int ath_rate_control_register(void);
 void ath_rate_control_unregister(void);
 #else