FS#20542 - [kernel26] iwlagn driver broken with kernel 2.6.35
Attached to Project:
Arch Linux
Opened by Can Celasun (dcelasun) - Friday, 20 August 2010, 19:35 GMT
Last edited by Tobias Powalowski (tpowa) - Tuesday, 14 February 2012, 14:31 GMT
Opened by Can Celasun (dcelasun) - Friday, 20 August 2010, 19:35 GMT
Last edited by Tobias Powalowski (tpowa) - Tuesday, 14 February 2012, 14:31 GMT
|
Details
Description:
With the 2.6.35 upgrade in [core], the iwlagn driver drops connection every ~5 minutes and auto-reconnects. dmesg and kernel.log is filled with: iwlagn 0000:04:00.0: BA scd_flow 0 does not match txq_id 10 The WiFi card is Intel 5100. Also, this might be related: https://patchwork.kernel.org/patch/112837/ I've set the severity to "high", since I had to downgrade to 2.6.34 for wifi to become stable again and having the kernel in IgnorePkg will eventually break something. Additional info: * package version(s) * config and/or log files etc. Steps to reproduce: Upgrade to 2.6.35 kernel and connect to a wifi using an Intel 5100 wifi link. |
This task depends upon
[EDIT] To avoid any confusion I'm creating a new bug report
Can, can you please post here when Intel post the new firmware, we can then include it in the linux-firmware package early.
Also, there is a workaround that I can confirm. I've fetched the iwlagn driver in 2.6.34.3 and replaced the driver in 2.6.35.4 with it. The kernel builds successfully with that configuration. It could be useful for those who can't wait for a firmware update.
Those who don't want to wait for the new firmware, Intel posted a workaround. Apparently, the bug in the firmware only causes problems when 802.11n is enabled. So, if you are not using an "n" network (most people don't) you can use kernel 2.6.35 and disable 802.11n with this:
- Get your 802.11n module name ($modinfo iwlagn)
- Reload the iwlagn module with disabling 802.11n (#modprobe iwlagn 11n_disable=1)
Hope this helps.
options iwlagn 11n_disable=1
and add or uncomment the following line from /etc/mkinitcpio.conf (note that the current default mkinitcpio.conf does not have the modprobe.d path in the example):
FILES="/etc/modprobe.d/modprobe.conf"
followed by a:
# mkinitcpio -p kernel26
If this is incorrect please note. If this is an inappropriate venue for this information, please let me know and I'll post to a more appropriate area next time.
rmmod iwlagn
modprobe iwlagn 11n_disable=1
Also, as an addendum to the modprobe.conf method listed above, I believe that editing /etc/mkinitcpio.conf to include the modprobe path is actually unnecessary now. All files within /etc/modprobe.d/ are now apparently included by default without explicit path definition.
It seems like the problem lies both within the ucode and the iwlwifi driver. I'm currently in touch with a developer from Intel and he confirmed that the future (unreleased) ucode fixes the issue. For the problem within iwlwifi, we are currently working on a fix. I'm currently testing a patch, if it turns out to be useful, I'll post it here.
The guy from Intel prepared the patch against 2.6.36rc6 (since that's what I'm using) so if you'd like to test the patch, you should fetch kernel26-mainline from AUR.
I'll post the patch (and the kernel config) here, hopefully tomorrow morning.
BTW, I did have greater trouble with the driver when I was on clocksource=hpet. jiffies eliminated a whole class of apparent powersave related issues that I had with iwlagn.
Anyhow, I'm happy to test against 2.6.36rc6 with patch if it seems to be working...
I don't have an n-router available so I can't test 802.11n, but based on your experience if it still fails from time to time, the problem is still there.
BTW, which kernel are you testing this with?
And I agree, problem is definitely not fixed, though perhaps attenuated with the compat-wireless bleeding edge drivers. I actually notice the problem most on one particular AP (a B/G only access point) and will try to test against that first to see if I can consistently get it to fail. I'd really like to be able to get a solid lock on the failure conditions so that I can test the patch with certainty. Will report further in a couple hours if I'm able to do so.
EDIT: scratch that... I was looking at the wrong MAC address and was connected to a remote AP. When connecting to a good signal, no dropouts or failures yet. Remote access point does seem to occasionally result in some kind of dropped connection, but not sure if it's related to the total failure noted before I upgraded to current kernel and bleeding-edge compat-wireless drivers.
[rd@rdbook ~]$ uname -r && iwconfig wlan0 | head -n 1
2.6.32-ARCH
wlan0 IEEE 802.11abgn ESSID:"rdwp"
[rd@rdbook ~]$ uname -r && iwconfig wlan0 | head -n 1
2.6.35-ARCH
wlan0 IEEE 802.11abg ESSID:"rdwp"
my wifi card is
[rd@rdbook ~]$ lspci -nn | grep WiFi
02:00.0 Network controller [0280]: Intel Corporation WiMAX/WiFi Link 5150 Series [8086:423c]
and it really support 802.11n. in kernel 2.6.32 I have about ten megabytes per second, but only three in 2.6.35
On current 2.6.36, the following setterm induces immediate iwlagn / 5100 failure on the console, and the equivalent xset commands below result in immediate failure while in X:
# setterm -blank 1 (for example)
# xset dmps force standby
# xset dmps force suspend
# xset dpms force off
I assume there is some powersave function that is ganged to the screen powersaving function resulting in the iwlagn failure correlation with display blanking.
EDIT: n.b. that the above only applies with clocksource=hpet. on my x100e, clocksource=jiffies results in NO FAILURES of iwlagn/5100 combo. hpet is preferable as clocksource but I'll use jiffies till this is sorted.
Here's the experimental ucode: http://www.intellinuxwireless.org/?n=experimental
On that page, the ucode for 5xxx devices fixes all problems except those using n-networks. If you can include this in linux-firmware, it would help a lot of users with 5xxx cards.
I would prefer if we could wait until they submit these images to the linux-firmware maintainers (http://git.kernel.org/?p=linux/kernel/git/dwmw2/linux-firmware.git;a=summary). In the meantime, you can replace the firmware file on your machine with the experimental ones and prevent pacman from overwriting them on update.
[1] https://bugzilla.kernel.org/show_bug.cgi?id=16691
I think this rules out any chance of including it in the repos, not even in [testing], right?
so what should I do to get n-networks working?
http://git.kernel.org/?p=linux/kernel/git/dwmw2/linux-firmware.git;a=commit;h=8654e2dd962899cbc81b3735c7122ca40fa5ea0e
[1] https://bugzilla.kernel.org/show_bug.cgi?id=16691
[1] http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=bfd36103ec26599557c2bd3225a1f1c9267f8fcb