* Re: APSM, AR9285 and bus hangs
@ 2011-06-13 13:01 Adrian Chadd
2011-06-13 13:09 ` Camilo Mesias
2011-06-13 13:20 ` Stanislaw Gruszka
0 siblings, 2 replies; 11+ messages in thread
From: Adrian Chadd @ 2011-06-13 13:01 UTC (permalink / raw)
To: Stanislaw Gruszka
Cc: Jonathan Nieder, ath9k-devel, Tony Houghton, linux-wireless,
camilo
On 13 June 2011 19:00, Stanislaw Gruszka <sgruszka@redhat.com> wrote:
> cam a fedora user, confirms that patch fixes the locks-ups
> https://bugzilla.redhat.com/show_bug.cgi?id=697157#c26
>
> We are waiting for fix now :-)
Cool.
The problem is, the initial modification and subsequent changes to the
powersave function were documented to fix an APSM hang, not cause it.
I'm happy to submit a patch to undo that particular change but I'm not
sure if it'll -break- things for other people. :)
Someone with PCIe/APCI/APSM/general clue in the area of CPU + bus
sleep states needs to step in and help. I'm just not equipped to fix
the problem at the moment.
Thanks,
Adrian
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: APSM, AR9285 and bus hangs
2011-06-13 13:01 APSM, AR9285 and bus hangs Adrian Chadd
@ 2011-06-13 13:09 ` Camilo Mesias
2011-06-13 13:20 ` Stanislaw Gruszka
1 sibling, 0 replies; 11+ messages in thread
From: Camilo Mesias @ 2011-06-13 13:09 UTC (permalink / raw)
To: Adrian Chadd
Cc: Stanislaw Gruszka, Jonathan Nieder, ath9k-devel, Tony Houghton,
linux-wireless
Hi,
On Mon, Jun 13, 2011 at 2:01 PM, Adrian Chadd <adrian@freebsd.org> wrote:
> I'm happy to submit a patch to undo that particular change but I'm not
> sure if it'll -break- things for other people. :)
I was wondering if it would be a pragmatic approach to let people turn
off APSM somehow. During testing I tried the pcie_aspm=off boot option
but got the impression the ath9k driver didn't honour it. Maybe an
option to the driver specifically to let people configure the
workaround?
With the tweaked driver my netbook has gone from practically useless
to almost completely satisfactory, so I see this as an important fix
to make available to the general public somehow.
-Cam
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: APSM, AR9285 and bus hangs
2011-06-13 13:01 APSM, AR9285 and bus hangs Adrian Chadd
2011-06-13 13:09 ` Camilo Mesias
@ 2011-06-13 13:20 ` Stanislaw Gruszka
2011-06-13 13:40 ` Mohammed Shafi
2011-06-14 0:02 ` Adrian Chadd
1 sibling, 2 replies; 11+ messages in thread
From: Stanislaw Gruszka @ 2011-06-13 13:20 UTC (permalink / raw)
To: Adrian Chadd
Cc: Jonathan Nieder, ath9k-devel, Tony Houghton, linux-wireless,
camilo, Rajkumar Manoharan
On Mon, Jun 13, 2011 at 09:01:57PM +0800, Adrian Chadd wrote:
> On 13 June 2011 19:00, Stanislaw Gruszka <sgruszka@redhat.com> wrote:
>
> > cam a fedora user, confirms that patch fixes the locks-ups
> > https://bugzilla.redhat.com/show_bug.cgi?id=697157#c26
> >
> > We are waiting for fix now :-)
>
> Cool.
>
> The problem is, the initial modification and subsequent changes to the
> powersave function were documented to fix an APSM hang, not cause it.
>
> I'm happy to submit a patch to undo that particular change but I'm not
> sure if it'll -break- things for other people. :)
>
> Someone with PCIe/APCI/APSM/general clue in the area of CPU + bus
> sleep states needs to step in and help. I'm just not equipped to fix
> the problem at the moment.
I see this commit in 2.6.39, missed in 2.6.38 and 2.6.35 currently.
Is possible this is the fix which do not break other things?
commit 5b64aa72ead6f8be488d2be7af579f0d69fb7a6e
Author: Rajkumar Manoharan <rmanoharan@atheros.com>
Date: Thu Jan 27 18:39:37 2011 +0530
ath9k_hw: Fix system hang when resuming from S3/S4
The bit 6 & 7 of AR_WA (0x4004) should be enabled only
for the chips that are supporting L0s functionality
while resuming back from S3/S4.
Enabling these bits for AR9280 is causing system hang
within a few S3/S4-resume cycles.
Cc: stable@kernel.org
Cc: Jack Lee <jlee@atheros.com>
Signed-off-by: Rajkumar Manoharan <rmanoharan@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
diff --git a/drivers/net/wireless/ath/ath9k/ar9002_hw.c b/drivers/net/wireless/ath/ath9k/ar9002_hw.c
index f8a7771..f44c84a 100644
--- a/drivers/net/wireless/ath/ath9k/ar9002_hw.c
+++ b/drivers/net/wireless/ath/ath9k/ar9002_hw.c
@@ -426,9 +426,8 @@ static void ar9002_hw_configpcipowersave(struct ath_hw *ah,
}
/* WAR for ASPM system hang */
- if (AR_SREV_9280(ah) || AR_SREV_9285(ah) || AR_SREV_9287(ah)) {
+ if (AR_SREV_9285(ah) || AR_SREV_9287(ah))
val |= (AR_WA_BIT6 | AR_WA_BIT7);
- }
if (AR_SREV_9285E_20(ah))
val |= AR_WA_BIT23;
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: APSM, AR9285 and bus hangs
2011-06-13 13:20 ` Stanislaw Gruszka
@ 2011-06-13 13:40 ` Mohammed Shafi
2011-06-14 10:09 ` Stanislaw Gruszka
2011-06-14 0:02 ` Adrian Chadd
1 sibling, 1 reply; 11+ messages in thread
From: Mohammed Shafi @ 2011-06-13 13:40 UTC (permalink / raw)
To: Stanislaw Gruszka
Cc: Adrian Chadd, Jonathan Nieder, ath9k-devel, Tony Houghton,
linux-wireless, camilo, Rajkumar Manoharan
On Mon, Jun 13, 2011 at 6:50 PM, Stanislaw Gruszka <sgruszka@redhat.com> wrote:
> On Mon, Jun 13, 2011 at 09:01:57PM +0800, Adrian Chadd wrote:
>> On 13 June 2011 19:00, Stanislaw Gruszka <sgruszka@redhat.com> wrote:
>>
>> > cam a fedora user, confirms that patch fixes the locks-ups
>> > https://bugzilla.redhat.com/show_bug.cgi?id=697157#c26
>> >
>> > We are waiting for fix now :-)
>>
>> Cool.
>>
>> The problem is, the initial modification and subsequent changes to the
>> powersave function were documented to fix an APSM hang, not cause it.
>>
>> I'm happy to submit a patch to undo that particular change but I'm not
>> sure if it'll -break- things for other people. :)
>>
>> Someone with PCIe/APCI/APSM/general clue in the area of CPU + bus
>> sleep states needs to step in and help. I'm just not equipped to fix
>> the problem at the moment.
>
> I see this commit in 2.6.39, missed in 2.6.38 and 2.6.35 currently.
> Is possible this is the fix which do not break other things?
hi,
no, this fix only affects AR9280 and it does not affects AR9285.
>
> commit 5b64aa72ead6f8be488d2be7af579f0d69fb7a6e
> Author: Rajkumar Manoharan <rmanoharan@atheros.com>
> Date: Thu Jan 27 18:39:37 2011 +0530
>
> ath9k_hw: Fix system hang when resuming from S3/S4
>
> The bit 6 & 7 of AR_WA (0x4004) should be enabled only
> for the chips that are supporting L0s functionality
> while resuming back from S3/S4.
>
> Enabling these bits for AR9280 is causing system hang
> within a few S3/S4-resume cycles.
>
> Cc: stable@kernel.org
> Cc: Jack Lee <jlee@atheros.com>
> Signed-off-by: Rajkumar Manoharan <rmanoharan@atheros.com>
> Signed-off-by: John W. Linville <linville@tuxdriver.com>
>
> diff --git a/drivers/net/wireless/ath/ath9k/ar9002_hw.c b/drivers/net/wireless/ath/ath9k/ar9002_hw.c
> index f8a7771..f44c84a 100644
> --- a/drivers/net/wireless/ath/ath9k/ar9002_hw.c
> +++ b/drivers/net/wireless/ath/ath9k/ar9002_hw.c
> @@ -426,9 +426,8 @@ static void ar9002_hw_configpcipowersave(struct ath_hw *ah,
> }
>
> /* WAR for ASPM system hang */
> - if (AR_SREV_9280(ah) || AR_SREV_9285(ah) || AR_SREV_9287(ah)) {
> + if (AR_SREV_9285(ah) || AR_SREV_9287(ah))
> val |= (AR_WA_BIT6 | AR_WA_BIT7);
> - }
>
> if (AR_SREV_9285E_20(ah))
> val |= AR_WA_BIT23;
> --
> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
--
shafi
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: APSM, AR9285 and bus hangs
2011-06-13 13:20 ` Stanislaw Gruszka
2011-06-13 13:40 ` Mohammed Shafi
@ 2011-06-14 0:02 ` Adrian Chadd
2011-07-15 16:18 ` Stanislaw Gruszka
1 sibling, 1 reply; 11+ messages in thread
From: Adrian Chadd @ 2011-06-14 0:02 UTC (permalink / raw)
To: Stanislaw Gruszka
Cc: Jonathan Nieder, ath9k-devel, Tony Houghton, linux-wireless,
camilo, Rajkumar Manoharan
I think the problem on these laptops is that -disabling- the APSM bits
causes some systems to hang.
That's what the commit earlier in the year did - it disabled those
bits by default. Later code then enabled those bits only on poweron,
and disabled them on suspend. My dirty patch just has them enabled by
default again as per the previous behaviour.
I guess someone should establish whether APSM is even supported on those boards?
Adrian
On 13 June 2011 21:20, Stanislaw Gruszka <sgruszka@redhat.com> wrote:
> On Mon, Jun 13, 2011 at 09:01:57PM +0800, Adrian Chadd wrote:
>> On 13 June 2011 19:00, Stanislaw Gruszka <sgruszka@redhat.com> wrote:
>>
>> > cam a fedora user, confirms that patch fixes the locks-ups
>> > https://bugzilla.redhat.com/show_bug.cgi?id=697157#c26
>> >
>> > We are waiting for fix now :-)
>>
>> Cool.
>>
>> The problem is, the initial modification and subsequent changes to the
>> powersave function were documented to fix an APSM hang, not cause it.
>>
>> I'm happy to submit a patch to undo that particular change but I'm not
>> sure if it'll -break- things for other people. :)
>>
>> Someone with PCIe/APCI/APSM/general clue in the area of CPU + bus
>> sleep states needs to step in and help. I'm just not equipped to fix
>> the problem at the moment.
>
> I see this commit in 2.6.39, missed in 2.6.38 and 2.6.35 currently.
> Is possible this is the fix which do not break other things?
>
> commit 5b64aa72ead6f8be488d2be7af579f0d69fb7a6e
> Author: Rajkumar Manoharan <rmanoharan@atheros.com>
> Date: Thu Jan 27 18:39:37 2011 +0530
>
> ath9k_hw: Fix system hang when resuming from S3/S4
>
> The bit 6 & 7 of AR_WA (0x4004) should be enabled only
> for the chips that are supporting L0s functionality
> while resuming back from S3/S4.
>
> Enabling these bits for AR9280 is causing system hang
> within a few S3/S4-resume cycles.
>
> Cc: stable@kernel.org
> Cc: Jack Lee <jlee@atheros.com>
> Signed-off-by: Rajkumar Manoharan <rmanoharan@atheros.com>
> Signed-off-by: John W. Linville <linville@tuxdriver.com>
>
> diff --git a/drivers/net/wireless/ath/ath9k/ar9002_hw.c b/drivers/net/wireless/ath/ath9k/ar9002_hw.c
> index f8a7771..f44c84a 100644
> --- a/drivers/net/wireless/ath/ath9k/ar9002_hw.c
> +++ b/drivers/net/wireless/ath/ath9k/ar9002_hw.c
> @@ -426,9 +426,8 @@ static void ar9002_hw_configpcipowersave(struct ath_hw *ah,
> }
>
> /* WAR for ASPM system hang */
> - if (AR_SREV_9280(ah) || AR_SREV_9285(ah) || AR_SREV_9287(ah)) {
> + if (AR_SREV_9285(ah) || AR_SREV_9287(ah))
> val |= (AR_WA_BIT6 | AR_WA_BIT7);
> - }
>
> if (AR_SREV_9285E_20(ah))
> val |= AR_WA_BIT23;
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: APSM, AR9285 and bus hangs
2011-06-13 13:40 ` Mohammed Shafi
@ 2011-06-14 10:09 ` Stanislaw Gruszka
2011-06-14 11:44 ` Mohammed Shafi
0 siblings, 1 reply; 11+ messages in thread
From: Stanislaw Gruszka @ 2011-06-14 10:09 UTC (permalink / raw)
To: Mohammed Shafi
Cc: Adrian Chadd, Jonathan Nieder, ath9k-devel, Tony Houghton,
linux-wireless, camilo, Rajkumar Manoharan
On Mon, Jun 13, 2011 at 07:10:56PM +0530, Mohammed Shafi wrote:
> > I see this commit in 2.6.39, missed in 2.6.38 and 2.6.35 currently.
> > Is possible this is the fix which do not break other things?
>
> hi,
> no, this fix only affects AR9280 and it does not affects AR9285.
That could be another stupid question, but could we do not touch
these bits on older AR9285s and disable them only on revision, that
was added by bad commit 53bc7aa08b48e5cd745f986731cc7dc24eef2a9f
diff --git a/drivers/net/wireless/ath/ath9k/ar9002_hw.c b/drivers/net/wireless/ath/ath9k/ar9002_hw.c
index f344cc2..91d99eb 100644
--- a/drivers/net/wireless/ath/ath9k/ar9002_hw.c
+++ b/drivers/net/wireless/ath/ath9k/ar9002_hw.c
@@ -384,7 +384,7 @@ static void ar9002_hw_configpcipowersave(struct ath_hw *ah,
}
}
- if (AR_SREV_9280(ah) || AR_SREV_9285(ah) || AR_SREV_9287(ah)) {
+ if (AR_SREV_9280(ah) || AR_SREV_9285E_20(ah) || AR_SREV_9287(ah)) {
/*
* Disable bit 6 and 7 before entering D3 to
* prevent system hang.
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: APSM, AR9285 and bus hangs
2011-06-14 10:09 ` Stanislaw Gruszka
@ 2011-06-14 11:44 ` Mohammed Shafi
2011-06-14 11:47 ` Adrian Chadd
0 siblings, 1 reply; 11+ messages in thread
From: Mohammed Shafi @ 2011-06-14 11:44 UTC (permalink / raw)
To: Stanislaw Gruszka
Cc: Adrian Chadd, Jonathan Nieder, ath9k-devel, Tony Houghton,
linux-wireless, camilo, Rajkumar Manoharan
On Tue, Jun 14, 2011 at 3:39 PM, Stanislaw Gruszka <sgruszka@redhat.com> wrote:
> On Mon, Jun 13, 2011 at 07:10:56PM +0530, Mohammed Shafi wrote:
>> > I see this commit in 2.6.39, missed in 2.6.38 and 2.6.35 currently.
>> > Is possible this is the fix which do not break other things?
>>
>> hi,
>> no, this fix only affects AR9280 and it does not affects AR9285.
>
> That could be another stupid question, but could we do not touch
> these bits on older AR9285s and disable them only on revision, that
> was added by bad commit 53bc7aa08b48e5cd745f986731cc7dc24eef2a9f
>
> diff --git a/drivers/net/wireless/ath/ath9k/ar9002_hw.c b/drivers/net/wireless/ath/ath9k/ar9002_hw.c
> index f344cc2..91d99eb 100644
> --- a/drivers/net/wireless/ath/ath9k/ar9002_hw.c
> +++ b/drivers/net/wireless/ath/ath9k/ar9002_hw.c
> @@ -384,7 +384,7 @@ static void ar9002_hw_configpcipowersave(struct ath_hw *ah,
> }
> }
>
> - if (AR_SREV_9280(ah) || AR_SREV_9285(ah) || AR_SREV_9287(ah)) {
> + if (AR_SREV_9280(ah) || AR_SREV_9285E_20(ah) || AR_SREV_9287(ah)) {
> /*
> * Disable bit 6 and 7 before entering D3 to
> * prevent system hang.
I had verified with the internal code base whether this is being done,
unfortunately no and at least I had tested this patch in my lenovo
T400 machine it did not cause any issue. this might fix the issue for
the specific platform but I am not sure whether this will not cause
any problems in other platforms. these sort for Workarounds were done
based on testing in different platforms.
Adrian you have any thoughts?
--
shafi
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: APSM, AR9285 and bus hangs
2011-06-14 11:44 ` Mohammed Shafi
@ 2011-06-14 11:47 ` Adrian Chadd
2011-06-14 18:47 ` Tony Houghton
0 siblings, 1 reply; 11+ messages in thread
From: Adrian Chadd @ 2011-06-14 11:47 UTC (permalink / raw)
To: Mohammed Shafi
Cc: Stanislaw Gruszka, Jonathan Nieder, ath9k-devel, Tony Houghton,
linux-wireless, camilo, Rajkumar Manoharan
On 14 June 2011 19:44, Mohammed Shafi <shafi.wireless@gmail.com> wrote:
> I had verified with the internal code base whether this is being done,
> unfortunately no and at least I had tested this patch in my lenovo
> T400 machine it did not cause any issue. this might fix the issue for
> the specific platform but I am not sure whether this will not cause
> any problems in other platforms. these sort for Workarounds were done
> based on testing in different platforms.
> Adrian you have any thoughts?
I don't have any new thoughts, no. I think it's more likely something
to do with how the bus is being setup, how APSM is being used, how
power saving in general is handled, quirks of that chipset (all the
laptops with problems have been a specific AMD chipset, right?)
Unfortunately I don't know anywhere near enough about the goings on
with power saving/APSM on Linux. If someone would like to get us in
contact with the relevant developers, we could likely have a more
constructive discussion.
(And after exams please, I don't have brain cycles to spend thoroughly
thinking about this until late June..)
Adrian
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: APSM, AR9285 and bus hangs
2011-06-14 11:47 ` Adrian Chadd
@ 2011-06-14 18:47 ` Tony Houghton
0 siblings, 0 replies; 11+ messages in thread
From: Tony Houghton @ 2011-06-14 18:47 UTC (permalink / raw)
To: Adrian Chadd
Cc: Mohammed Shafi, Stanislaw Gruszka, Jonathan Nieder, ath9k-devel,
linux-wireless, camilo, Rajkumar Manoharan
On Tue, 14 Jun 2011 19:47:35 +0800
Adrian Chadd <adrian@freebsd.org> wrote:
> I don't have any new thoughts, no. I think it's more likely something
> to do with how the bus is being setup, how APSM is being used, how
> power saving in general is handled, quirks of that chipset (all the
> laptops with problems have been a specific AMD chipset, right?)
No, mine's Intel Atom/NVidia ION LE. According to lspci it has an NVidia
MCP79 running the PCI Express etc.
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: APSM, AR9285 and bus hangs
2011-06-14 0:02 ` Adrian Chadd
@ 2011-07-15 16:18 ` Stanislaw Gruszka
2011-07-22 13:30 ` Stanislaw Gruszka
0 siblings, 1 reply; 11+ messages in thread
From: Stanislaw Gruszka @ 2011-07-15 16:18 UTC (permalink / raw)
To: Adrian Chadd
Cc: Jonathan Nieder, ath9k-devel, Tony Houghton, linux-wireless,
camilo, Rajkumar Manoharan
On Tue, Jun 14, 2011 at 08:02:54AM +0800, Adrian Chadd wrote:
> I think the problem on these laptops is that -disabling- the APSM bits
> causes some systems to hang.
It is interesting if below patch works, people who can reproduce the
problem please give it a try. Except testing, I'm also interested
on comments :-)
---
>From 6f6f488156d60b44adeb68bbd0cb474b92111681 Mon Sep 17 00:00:00 2001
From: Stanislaw Gruszka <sgruszka@redhat.com>
Date: Fri, 15 Jul 2011 17:50:48 +0200
Subject: [PATCH] ath9k: skip ->config_pci_powersave quirks if PCIe port has ASPM disabled
We receive many bug reports about system hang during suspend/resume
when ath9k driver is in use. Adrian Chadd remarked that this problem
happens on systems that have ASPM disabled.
To do not hit the bug, try to skip doing ->config_pci_powersave magic
if PCIe downstream port device, which ath9k device is connected to, has
ASPM disabled.
This is test only patch, for now I'm interesting if it works. If so
proper patch will need to cope with runtime ASPM setting change, and
probably setup some ath9k registers correctly in both case ASPM is
disabled.
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
---
drivers/net/wireless/ath/ath9k/ar9002_hw.c | 6 +-----
drivers/net/wireless/ath/ath9k/ar9003_hw.c | 6 +-----
drivers/net/wireless/ath/ath9k/hw.c | 1 -
drivers/net/wireless/ath/ath9k/hw.h | 2 +-
drivers/net/wireless/ath/ath9k/pci.c | 20 ++++++++++++++++++++
5 files changed, 23 insertions(+), 12 deletions(-)
diff --git a/drivers/net/wireless/ath/ath9k/ar9002_hw.c b/drivers/net/wireless/ath/ath9k/ar9002_hw.c
index 9ff7c30..44d9d8d 100644
--- a/drivers/net/wireless/ath/ath9k/ar9002_hw.c
+++ b/drivers/net/wireless/ath/ath9k/ar9002_hw.c
@@ -309,11 +309,7 @@ static void ar9002_hw_configpcipowersave(struct ath_hw *ah,
u8 i;
u32 val;
- if (ah->is_pciexpress != true)
- return;
-
- /* Do not touch SerDes registers */
- if (ah->config.pcie_powersave_enable == 2)
+ if (ah->is_pciexpress != true || ah->aspm_enabled != true)
return;
/* Nothing to do on restore for 11N */
diff --git a/drivers/net/wireless/ath/ath9k/ar9003_hw.c b/drivers/net/wireless/ath/ath9k/ar9003_hw.c
index 8efdec2..ad2bb2b 100644
--- a/drivers/net/wireless/ath/ath9k/ar9003_hw.c
+++ b/drivers/net/wireless/ath/ath9k/ar9003_hw.c
@@ -519,11 +519,7 @@ static void ar9003_hw_configpcipowersave(struct ath_hw *ah,
int restore,
int power_off)
{
- if (ah->is_pciexpress != true)
- return;
-
- /* Do not touch SerDes registers */
- if (ah->config.pcie_powersave_enable == 2)
+ if (ah->is_pciexpress != true || ah->aspm_enabled != true)
return;
/* Nothing to do on restore for 11N */
diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c
index 2a5f908..8a80e7d 100644
--- a/drivers/net/wireless/ath/ath9k/hw.c
+++ b/drivers/net/wireless/ath/ath9k/hw.c
@@ -378,7 +378,6 @@ static void ath9k_hw_init_config(struct ath_hw *ah)
ah->config.additional_swba_backoff = 0;
ah->config.ack_6mb = 0x0;
ah->config.cwm_ignore_extcca = 0;
- ah->config.pcie_powersave_enable = 0;
ah->config.pcie_clock_req = 0;
ah->config.pcie_waen = 0;
ah->config.analog_shiftreg = 1;
diff --git a/drivers/net/wireless/ath/ath9k/hw.h b/drivers/net/wireless/ath/ath9k/hw.h
index 6acd0f9..7dd78e7 100644
--- a/drivers/net/wireless/ath/ath9k/hw.h
+++ b/drivers/net/wireless/ath/ath9k/hw.h
@@ -219,7 +219,6 @@ struct ath9k_ops_config {
int additional_swba_backoff;
int ack_6mb;
u32 cwm_ignore_extcca;
- u8 pcie_powersave_enable;
bool pcieSerDesWrite;
u8 pcie_clock_req;
u32 pcie_waen;
@@ -673,6 +672,7 @@ struct ath_hw {
bool sw_mgmt_crypto;
bool is_pciexpress;
+ bool aspm_enabled;
bool is_monitoring;
bool need_an_top2_fixup;
u16 tx_trig_level;
diff --git a/drivers/net/wireless/ath/ath9k/pci.c b/drivers/net/wireless/ath/ath9k/pci.c
index 3bad0b2..2f34503 100644
--- a/drivers/net/wireless/ath/ath9k/pci.c
+++ b/drivers/net/wireless/ath/ath9k/pci.c
@@ -123,6 +123,24 @@ static const struct ath_bus_ops ath_pci_bus_ops = {
.extn_synch_en = ath_pci_extn_synch_enable,
};
+static void ath_pci_check_aspm(struct ath_softc *sc)
+{
+ struct ath_hw *ah = sc->sc_ah;
+ struct pci_dev *pdev = to_pci_dev(sc->dev);
+ struct pci_dev *parent;
+ u8 aspm;
+
+ ah->aspm_enabled = false;
+
+ if (!pci_is_pcie(pdev))
+ return;
+
+ parent = pdev->bus->self;
+ pci_read_config_byte(parent, ATH_PCIE_CAP_LINK_CTRL, &aspm);
+ if (aspm & (ATH_PCIE_CAP_LINK_L0S | ATH_PCIE_CAP_LINK_L1))
+ ah->aspm_enabled = true;
+}
+
static int ath_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
{
void __iomem *mem;
@@ -230,6 +248,8 @@ static int ath_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
goto err_init;
}
+ ath_pci_check_aspm(sc);
+
ath9k_hw_name(sc->sc_ah, hw_name, sizeof(hw_name));
wiphy_info(hw->wiphy, "%s mem=0x%lx, irq=%d\n",
hw_name, (unsigned long)mem, pdev->irq);
--
1.7.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: APSM, AR9285 and bus hangs
2011-07-15 16:18 ` Stanislaw Gruszka
@ 2011-07-22 13:30 ` Stanislaw Gruszka
0 siblings, 0 replies; 11+ messages in thread
From: Stanislaw Gruszka @ 2011-07-22 13:30 UTC (permalink / raw)
To: Adrian Chadd
Cc: Jonathan Nieder, ath9k-devel, Tony Houghton, linux-wireless,
camilo, Rajkumar Manoharan
On Fri, Jul 15, 2011 at 06:18:58PM +0200, Stanislaw Gruszka wrote:
> On Tue, Jun 14, 2011 at 08:02:54AM +0800, Adrian Chadd wrote:
> > I think the problem on these laptops is that -disabling- the APSM bits
> > causes some systems to hang.
>
> It is interesting if below patch works, people who can reproduce the
> problem please give it a try. Except testing, I'm also interested
> on comments :-)
I got only feedback from Camilo, patch stops to hung system regularly,
but still there was rare random hangs.
I'm going to post some more patches on linux-wireles mailing list.
Please check them out!
Thanks
Stanislaw
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2011-07-22 13:29 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-06-13 13:01 APSM, AR9285 and bus hangs Adrian Chadd
2011-06-13 13:09 ` Camilo Mesias
2011-06-13 13:20 ` Stanislaw Gruszka
2011-06-13 13:40 ` Mohammed Shafi
2011-06-14 10:09 ` Stanislaw Gruszka
2011-06-14 11:44 ` Mohammed Shafi
2011-06-14 11:47 ` Adrian Chadd
2011-06-14 18:47 ` Tony Houghton
2011-06-14 0:02 ` Adrian Chadd
2011-07-15 16:18 ` Stanislaw Gruszka
2011-07-22 13:30 ` Stanislaw Gruszka
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).