On Tue, Nov 12, 2013 at 5:16 AM, Grumbach, Emmanuel <emmanuel.grumbach@xxxxxxxxx> wrote: >> >> 2013/11/12 wzyboy <wzyboy@xxxxxxxxxx>: >> > I will continue downloading big files to benchmark it. >> >> Hi guys, good news! >> >> Six hours ago I ran a simple loop script to repeatly download big files (and >> saving to /dev/null) and went to have lessons. Six hours later it's after school. >> I found that the wireless still works! >> >> So I believe that the two "setpci" commands really work! Thanks Bjorn and >> Emmanuel! > > Well... I haven't done much, but the setpci isn't really a solution - it is more a work around. > Bjorn is basically disabling L1 PCIe feature which allows to save power. While you might not care, I do :) > The HW folks here would still want to know if you can disable L1 substates feature (not that I know what it is - but I can guess). > If you can try to: > * upgrade your BIOS (if needed) > * check the advanced options I sent to you to see if you can unlock the advanced menu in your BIOS > > it'd help me to understand the issue. > In any case, I am happy that you have a way to reliably use your NIC now. The setpci experiment was only for debugging. Obviously it's not a real fix, and it doesn't help any other users of this ThinkPad X240s. But it does seem clear that the problem is related to ASPM. And it looks like the same thing we investigated here: https://bugzilla.kernel.org/show_bug.cgi?id=57331, which is even on the same device. >From your dmesg logs: ACPI FADT declares the system doesn't support PCIe ASPM, so disable it acpi PNP0A08:00: ACPI _OSC control for PCIe not granted, disabling ASPM The messages are misleading. Linux does not actually disable ASPM as you did with setpci. All Linux does is leave the current ASPM configuration untouched, because we believe that the BIOS is managing it. The BIOS must have enabled ASPM on this device (you could verify this by booting with "pci=earlydump"), and BIOS also says the OS must not enable ASPM control (via the ACPI FADT table and the PCI host bridge _OSC method). It would really help if you still had Windows on this system, and we could look and see whether it disables ASPM for this device (if anybody does have Windows, I would probably use AIDA64 to dump the PCI config space). I did experiments for bug 57331 that suggested that Windows leaves ASPM alone just like Linux does, but my experiments were on qemu, not on real hardware, and I didn't have an Intel wifi device. If the Windows driver works fine even with ASPM enabled, that would suggest that the problem is something in the Linux iwlwifi driver. If Windows does actually disable ASPM on this device, then we would have to figure out if there's a way we can safely make Linux also disable ASPM. Bjorn -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html