On Thu, Mar 12, 2009 at 3:18 PM, Luis R. Rodriguez <lrodriguez@xxxxxxxxxxx> wrote: > This v6 removes the hotplug CPU stuff which although it technically > would be correct is more cruft and highly unlikely. The down side > is you will get serialization applied even if you only have one > CPU but who cares, I doubt those nutty SGI guys are toying with > ath9k in the lab. > > Yesterday I started mucking with an alternative approach to > serialization which worked. I added just 5 udelay()s in key places > where we had a lot of consecutive IO read/writes issued and that > resolved the issue at least for STA mode but it didn't do the trick > for AP mode. Technically it should be possible to groom all hardware > access routines to do the same but I'm tired of this issue and want > to a fix merged today not a few weeks from now. Anyway if you are > curious you can check out that patch replacement approach for > serialization here: > > http://www.kernel.org/pub/linux/kernel/people/mcgrof/patches/ath9k/2009-03-12/smp-udelay-fix.patch > > Note that AP won't work though so if you have a lot of time in your > hands and have an SMP box with PCI Atheros 11n and are seeing the hangs > and want a neat alternative to the current serialization implementation > try adding udelays like the ones in the patch in places where we do a lot > of io read/writes. Send me the results :) > > The compromise is to keep serialization conditional -- we do not want to > do it for every read/write regardless of the type of card you have, the > code overhead is not great and we maintain this anyway. Adding it for all > cases would just not be optimal. > > Luis R. Rodriguez (3): > ath9k: implement IO serialization > ath9k: AR9280 PCI devices must serialize IO as well > ath9k: remove dummy PCI "retry timeout" fix > > drivers/net/wireless/ath9k/ath9k.h | 34 ++++++++++++++++++++++++++++++++++ > drivers/net/wireless/ath9k/hw.c | 28 +++++++++++++++++++++++++++- > drivers/net/wireless/ath9k/hw.h | 4 ++-- > drivers/net/wireless/ath9k/main.c | 1 + > drivers/net/wireless/ath9k/pci.c | 18 ------------------ > 5 files changed, 64 insertions(+), 21 deletions(-) John, Greg, these patches require a port down to the other stable kernels, I've taken the time to port only the necessary patches (the first two) to fix the SMP hang on each stable kernel and test them accordingly: * 2.6.27 * 2.6.28 * 2.6.29 Once merged into wireless-testing the following patches can be used to push into Linus' tree: http://www.kernel.org/pub/linux/kernel/people/mcgrof/patches/ath9k/2009-03-12/serialization-v6/for-2.6.29/ Once merged into stable these can be used to merge into 2.6.27 and 2.6.28: http://www.kernel.org/pub/linux/kernel/people/mcgrof/patches/ath9k/2009-03-12/serialization-v6/for-2.6.27/ http://www.kernel.org/pub/linux/kernel/people/mcgrof/patches/ath9k/2009-03-12/serialization-v6/for-2.6.28/ Just replace: This is a port of commit SHA1 <BLEH> With the respective SHA1. I can also simply resend the ports for 27 and 28 once merged into Linus' tree. Whatever makes it easier for you. Luis -- 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