FAQ Search Today's Posts Mark Forums Read
» Video Reviews

» Linux Archive

Linux-archive is a website aiming to archive linux email lists and to make them easily accessible for linux users/developers.


» Sponsor

» Partners

» Sponsor

Go Back   Linux Archive > Ubuntu > Ubuntu Kernel Team

 
 
LinkBack Thread Tools
 
Old 06-17-2011, 02:29 PM
Seth Forshee
 
Default ath5k: Disable fast channel switching by default

SRU Justification

Impact: Fast channel switching causes problems with scanning and
associating for many ath5k users.

Fix: Backport of upstream commit which disables fast channel switching
by default and adds a module parameter to enable it.

Test case: Tested by affected users on LP #767192.


--
kernel-team mailing list
kernel-team@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/kernel-team
 
Old 06-17-2011, 02:29 PM
Seth Forshee
 
Default ath5k: Disable fast channel switching by default

SRU Justification

Impact: Fast channel switching causes problems with scanning and
associating for many ath5k users.

Fix: Backport of upstream commit which disables fast channel switching
by default and adds a module parameter to enable it.

Test case: Tested by affected users on LP #767192.


--
kernel-team mailing list
kernel-team@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/kernel-team
 
Old 06-17-2011, 02:29 PM
Seth Forshee
 
Default ath5k: Disable fast channel switching by default

From: Nick Kossifidis <mickflemm@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@gmail.com>
Tested-by: Sedat Dilek <sedat.dilek@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
(backported from commit a99168eece601d2a79ecfcb968ce226f2f30cf98 upstream)

Signed-off-by: Seth Forshee <seth.forshee@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
");

@@ -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;
+
+ ret = ath5k_hw_reset(ah, sc->opmode, sc->curchan, fast,
skip_pcu);
if (ret) {
ATH5K_ERR(sc, "can't reset hardware (%d)
", 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
");
return 0;
+ }
}

/*
--
1.7.4.1


--
kernel-team mailing list
kernel-team@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/kernel-team
 
Old 06-17-2011, 02:29 PM
Seth Forshee
 
Default ath5k: Disable fast channel switching by default

From: Nick Kossifidis <mickflemm@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@gmail.com>
Tested-by: Sedat Dilek <sedat.dilek@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
(backported from commit a99168eece601d2a79ecfcb968ce226f2f30cf98 upstream)

Signed-off-by: Seth Forshee <seth.forshee@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
");

@@ -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;
+
+ ret = ath5k_hw_reset(ah, sc->opmode, sc->curchan, fast,
skip_pcu);
if (ret) {
ATH5K_ERR(sc, "can't reset hardware (%d)
", 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
");
return 0;
+ }
}

/*
--
1.7.4.1


--
kernel-team mailing list
kernel-team@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/kernel-team
 
Old 06-17-2011, 03:40 PM
Herton Ronaldo Krzesinski
 
Default ath5k: Disable fast channel switching by default

On Fri, Jun 17, 2011 at 09:29:22AM -0500, Seth Forshee wrote:
> From: Nick Kossifidis <mickflemm@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@gmail.com>
> Tested-by: Sedat Dilek <sedat.dilek@gmail.com>
> Signed-off-by: John W. Linville <linville@tuxdriver.com>
> (backported from commit a99168eece601d2a79ecfcb968ce226f2f30cf98 upstream)
>
> Signed-off-by: Seth Forshee <seth.forshee@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
");
>
> @@ -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;
> +
> + ret = ath5k_hw_reset(ah, sc->opmode, sc->curchan, fast,
> skip_pcu);
> if (ret) {
> ATH5K_ERR(sc, "can't reset hardware (%d)
", 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
");
> return 0;
> + }
> }
>
> /*

It looks ok, although from poking at bug 767192 it seems users tested
this with a 2.6.39 based build and not the natty kernel. But the bug
which this fixes is on 2.6.38 too, others confirmed this fix, and the SRU
process will require verification of this anyway. Also, the fix is simple and a
lot of users seems hitting it so:

Acked-by: Herton Ronaldo Krzesinski <herton.krzesinski@canonical.com>

> --
> 1.7.4.1
>
>
> --
> kernel-team mailing list
> kernel-team@lists.ubuntu.com
> https://lists.ubuntu.com/mailman/listinfo/kernel-team
>

--
[]'s
Herton

--
kernel-team mailing list
kernel-team@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/kernel-team
 
Old 06-17-2011, 04:40 PM
Andy Whitcroft
 
Default ath5k: Disable fast channel switching by default

On Fri, Jun 17, 2011 at 09:29:22AM -0500, Seth Forshee wrote:
> From: Nick Kossifidis <mickflemm@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@gmail.com>
> Tested-by: Sedat Dilek <sedat.dilek@gmail.com>
> Signed-off-by: John W. Linville <linville@tuxdriver.com>
> (backported from commit a99168eece601d2a79ecfcb968ce226f2f30cf98 upstream)
>
> Signed-off-by: Seth Forshee <seth.forshee@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
");
>
> @@ -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)
", 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
");
> return 0;
> + }
> }

Otherwise it looks to do what it says and be pretty small and clear, so:

Acked-by: Andy Whitcroft <apw@canonical.com>

-apw

--
kernel-team mailing list
kernel-team@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/kernel-team
 

Thread Tools




All times are GMT. The time now is 09:23 AM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.
Copyright 2007 - 2008, www.linux-archive.org