Search Linux Wireless

Re: 2.6.31.[12] ath5k regression

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Oct 09, 2009 at 04:39:22PM +0200, Richard Zidlicky wrote:
> -       ret = ath5k_hw_reset(ah, sc->opmode, sc->curchan, true);
> +       ret = ath5k_hw_reset(ah, sc->opmode, sc->curchan, chan != NULL);
>         if (ret) {
>                 ATH5K_ERR(sc, "can't reset hardware (%d)\n", ret);
>                 goto err;

So, this change effectively just ensures we now program the pcu registers
at startup (every other time chan should not be null).  So my guess is
programming the pcu actually causes some problem.  Can you try this patch
instead?

Also, since you're using adhoc there may be a path that's somewhat
different from infrastructure mode, please check dmesg after applying the
patch and be sure that you only see "ath5k: reset with change_channel=true"
once per driver load.


diff --git a/drivers/net/wireless/ath/ath5k/initvals.c b/drivers/net/wireless/ath/ath5k/initvals.c
index 8fa4393..c099fa2 100644
--- a/drivers/net/wireless/ath/ath5k/initvals.c
+++ b/drivers/net/wireless/ath/ath5k/initvals.c
@@ -1376,9 +1376,8 @@ static void ath5k_hw_ini_registers(struct ath5k_hw *ah, unsigned int size,
 	for (i = 0; i < size; i++) {
 		/* On channel change there is
 		 * no need to mess with PCU */
-		if (change_channel &&
-				ini_regs[i].ini_register >= AR5K_PCU_MIN &&
-				ini_regs[i].ini_register <= AR5K_PCU_MAX)
+		if (ini_regs[i].ini_register >= AR5K_PCU_MIN &&
+		    ini_regs[i].ini_register <= AR5K_PCU_MAX)
 			continue;
 
 		switch (ini_regs[i].ini_mode) {
diff --git a/drivers/net/wireless/ath/ath5k/reset.c b/drivers/net/wireless/ath/ath5k/reset.c
index 3dab3d8..4b8ccbe 100644
--- a/drivers/net/wireless/ath/ath5k/reset.c
+++ b/drivers/net/wireless/ath/ath5k/reset.c
@@ -880,6 +880,9 @@ int ath5k_hw_reset(struct ath5k_hw *ah, enum nl80211_iftype op_mode,
 
 	ATH5K_TRACE(ah->ah_sc);
 
+	if (!change_channel)
+		printk(KERN_DEBUG "ath5k: reset with change_channel=true\n");
+
 	s_ant = 0;
 	ee_mode = 0;
 	staid1_flags = 0;

-- 
Bob Copeland %% www.bobcopeland.com

--
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

[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux