[PATCH] ath5k: Disable fast channel switching by default
Andy Whitcroft
apw at canonical.com
Fri Jun 17 16:40:52 UTC 2011
On Fri, Jun 17, 2011 at 09:29:22AM -0500, Seth Forshee wrote:
> From: Nick Kossifidis <mickflemm at gmail.com>
>
> BugLink: http://bugs.launchpad.net/bugs/767192
>
> Disable fast channel change by default on AR2413/AR5413 due to
> some bug reports (it still works for me but it's better to be safe).
> Add a module parameter "fastchanswitch" in case anyone wants to enable
> it and play with it.
>
> Signed-off-by: Nick Kossifidis <mickflemm at gmail.com>
> Tested-by: Sedat Dilek <sedat.dilek at gmail.com>
> Signed-off-by: John W. Linville <linville at tuxdriver.com>
> (backported from commit a99168eece601d2a79ecfcb968ce226f2f30cf98 upstream)
>
> Signed-off-by: Seth Forshee <seth.forshee at canonical.com>
> ---
> drivers/net/wireless/ath/ath5k/base.c | 11 ++++++++++-
> drivers/net/wireless/ath/ath5k/reset.c | 5 ++++- > 2 files changed, 14 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/wireless/ath/ath5k/base.c b/drivers/net/wireless/ath/ath5k/base.c
> index 09ae4ef..f6814f0 100644
> --- a/drivers/net/wireless/ath/ath5k/base.c
> +++ b/drivers/net/wireless/ath/ath5k/base.c
> @@ -69,6 +69,11 @@ static int modparam_all_channels;
> module_param_named(all_channels, modparam_all_channels, bool, S_IRUGO);
> MODULE_PARM_DESC(all_channels, "Expose all channels the device can use.");
>
> +static int modparam_fastchanswitch;
> +module_param_named(fastchanswitch, modparam_fastchanswitch, bool, S_IRUGO);
> +MODULE_PARM_DESC(fastchanswitch, "Enable fast channel switching for AR2413/AR5413 radios.");
> +
> +
> /* Module info */
> MODULE_AUTHOR("Jiri Slaby");
> MODULE_AUTHOR("Nick Kossifidis");
> @@ -2664,6 +2669,7 @@ ath5k_reset(struct ath5k_softc *sc, struct ieee80211_channel *chan,
> struct ath5k_hw *ah = sc->ah;
> struct ath_common *common = ath5k_hw_common(ah);
> int ret, ani_mode;
> + bool fast;
>
> ATH5K_DBG(sc, ATH5K_DEBUG_RESET, "resetting\n");
>
> @@ -2685,7 +2691,10 @@ ath5k_reset(struct ath5k_softc *sc, struct ieee80211_channel *chan,
> sc->curchan = chan;
> sc->curband = &sc->sbands[chan->band];
> }
> - ret = ath5k_hw_reset(ah, sc->opmode, sc->curchan, chan != NULL,
> +
> + fast = ((chan != NULL) && modparam_fastchanswitch) ? 1 : 0;
I suspect this could just be:
fast = ((chan != NULL) && modparam_fastchanswitch);
but I assume that matches upstream, so don't change it.
> +
> + ret = ath5k_hw_reset(ah, sc->opmode, sc->curchan, fast,
> skip_pcu);
> if (ret) {
> ATH5K_ERR(sc, "can't reset hardware (%d)\n", ret);
> diff --git a/drivers/net/wireless/ath/ath5k/reset.c b/drivers/net/wireless/ath/ath5k/reset.c
> index 8420689..6f53d2b 100644
> --- a/drivers/net/wireless/ath/ath5k/reset.c
> +++ b/drivers/net/wireless/ath/ath5k/reset.c
> @@ -1119,8 +1119,11 @@ int ath5k_hw_reset(struct ath5k_hw *ah, enum nl80211_iftype op_mode,
> /* Non fatal, can happen eg.
> * on mode change */
> ret = 0;
> - } else
> + } else {
> + ATH5K_DBG(ah->ah_sc, ATH5K_DEBUG_RESET,
> + "fast chan change successful\n");
> return 0;
> + }
> }
Otherwise it looks to do what it says and be pretty small and clear, so:
Acked-by: Andy Whitcroft <apw at canonical.com>
-apw
More information about the kernel-team
mailing list