Search Linux Wireless

Re: [Bug 11749] Ath5k driver has too many interrupts per second at idle

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

 



On Mon, Oct 13, 2008 at 8:05 AM,  <bugme-daemon@xxxxxxxxxxxxxxxxxxx> wrote:
> http://bugzilla.kernel.org/show_bug.cgi?id=11749

---
Bug description from kernel.org bugzilla

Latest working kernel version: None
Earliest failing kernel version: Unknow
Distribution: all
Hardware Environment: Atheros wireless chipset
Software Environment: Fedora
Problem Description: ath5k driver has many inperrupts per second although the
system is idle.

I used AspierOne to test it, interrupts are so many that CPU's C3 residence
time is only 20 milliseconds or less, there isn't any valid traffic on my
wireless network except beacon frame.

I tested X61 in the same wireless environment, number of interrupt is only 1
per second, X61 has the latest Intel wireless chipset and 2.6.27 kernel was
running.

So i think ath5k and ath9k should can do as Intel wireless driver does,
otherwise, CPU can't stay at C3 with longer time because of wireless
interrupts.

Steps to reproduce:
1. Enable wireless on platform with Atheros wireless chipset.
2. watch cat /proc/interrupts

---

Folks, ANI is not handled yet in ath5k (and won't be on 2.6.26). What
I recommend is to try disabling MIB interrupts on the stable kernels
where you won't make use of MIB statistics, which you need for ANI.
Once you have ANI please enable the MIB interrupt.

yang.y.yi, please try this patch (also attached for your convenience)
and let us know if you see a difference.

  Luis

diff --git a/drivers/net/wireless/ath5k/base.c
b/drivers/net/wireless/ath5k/base.c
index 0676c6d..c18ead9 100644
--- a/drivers/net/wireless/ath5k/base.c
+++ b/drivers/net/wireless/ath5k/base.c
@@ -2246,8 +2246,7 @@ ath5k_init(struct ath5k_softc *sc)
         * Enable interrupts.
         */
        sc->imask = AR5K_INT_RX | AR5K_INT_TX | AR5K_INT_RXEOL |
-               AR5K_INT_RXORN | AR5K_INT_FATAL | AR5K_INT_GLOBAL |
-               AR5K_INT_MIB;
+               AR5K_INT_RXORN | AR5K_INT_FATAL | AR5K_INT_GLOBAL;

        ath5k_hw_set_intr(sc->ah, sc->imask);
        /* Set ack to be sent at low bit-rates */
diff --git a/drivers/net/wireless/ath5k/base.c b/drivers/net/wireless/ath5k/base.c
index 0676c6d..c18ead9 100644
--- a/drivers/net/wireless/ath5k/base.c
+++ b/drivers/net/wireless/ath5k/base.c
@@ -2246,8 +2246,7 @@ ath5k_init(struct ath5k_softc *sc)
 	 * Enable interrupts.
 	 */
 	sc->imask = AR5K_INT_RX | AR5K_INT_TX | AR5K_INT_RXEOL |
-		AR5K_INT_RXORN | AR5K_INT_FATAL | AR5K_INT_GLOBAL |
-		AR5K_INT_MIB;
+		AR5K_INT_RXORN | AR5K_INT_FATAL | AR5K_INT_GLOBAL;
 
 	ath5k_hw_set_intr(sc->ah, sc->imask);
 	/* Set ack to be sent at low bit-rates */

[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