2011-05-24 05:01:30

by Mohammed Shafi Shajakhan

[permalink] [raw]
Subject: [PATCH] ath9k: wake up chip before initializing PAPRD table

From: Mohammed Shafi Shajakhan <[email protected]>

in PAPRD table initialization path we have register read. so make sure
that the chip is awake. currently PAPRD is disabled.

Signed-off-by: Mohammed Shafi Shajakhan <[email protected]>
---
drivers/net/wireless/ath/ath9k/main.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c
index a198ee3..af8aa9e 100644
--- a/drivers/net/wireless/ath/ath9k/main.c
+++ b/drivers/net/wireless/ath/ath9k/main.c
@@ -394,6 +394,8 @@ void ath_paprd_calibrate(struct work_struct *work)
if (!caldata)
return;

+ ath9k_ps_wakeup(sc);
+
if (ar9003_paprd_init_table(ah) < 0)
return;

@@ -411,7 +413,6 @@ void ath_paprd_calibrate(struct work_struct *work)
memcpy(hdr->addr2, hw->wiphy->perm_addr, ETH_ALEN);
memcpy(hdr->addr3, hw->wiphy->perm_addr, ETH_ALEN);

- ath9k_ps_wakeup(sc);
for (chain = 0; chain < AR9300_MAX_CHAINS; chain++) {
if (!(common->tx_chainmask & BIT(chain)))
continue;
--
1.7.0.4



2011-05-24 06:31:37

by Mohammed Shafi Shajakhan

[permalink] [raw]
Subject: Re: [PATCH] ath9k: wake up chip before initializing PAPRD table

On Tuesday 24 May 2011 11:50 AM, Senthilkumar Balasubramanian wrote:
> On Tue, May 24, 2011 at 10:31:03AM +0530, Mohammed Shafi Shajakhan wrote:
>> From: Mohammed Shafi Shajakhan<[email protected]>
>>
>> in PAPRD table initialization path we have register read. so make sure
>> that the chip is awake. currently PAPRD is disabled.
>>
>> Signed-off-by: Mohammed Shafi Shajakhan<[email protected]>
>> ---
>> drivers/net/wireless/ath/ath9k/main.c | 3 ++-
>> 1 files changed, 2 insertions(+), 1 deletions(-)
>>
>> diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c
>> index a198ee3..af8aa9e 100644
>> --- a/drivers/net/wireless/ath/ath9k/main.c
>> +++ b/drivers/net/wireless/ath/ath9k/main.c
>> @@ -394,6 +394,8 @@ void ath_paprd_calibrate(struct work_struct *work)
>> if (!caldata)
>> return;
>>
>> + ath9k_ps_wakeup(sc);
>> +
>> if (ar9003_paprd_init_table(ah)< 0)
>> return;
> Have you tested power save with this patch? ps_restore is missing here...

Senthil, I will look into that.

>>
>> @@ -411,7 +413,6 @@ void ath_paprd_calibrate(struct work_struct *work)
>> memcpy(hdr->addr2, hw->wiphy->perm_addr, ETH_ALEN);
>> memcpy(hdr->addr3, hw->wiphy->perm_addr, ETH_ALEN);
>>
>> - ath9k_ps_wakeup(sc);
>> for (chain = 0; chain< AR9300_MAX_CHAINS; chain++) {
>> if (!(common->tx_chainmask& BIT(chain)))
>> continue;
>> --
>> 1.7.0.4
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
>> the body of a message to [email protected]
>> More majordomo info at http://vger.kernel.org/majordomo-info.html
> .
>

--
thanks,
shafi

2011-05-24 07:06:37

by Mohammed Shafi Shajakhan

[permalink] [raw]
Subject: Re: [PATCH] ath9k: wake up chip before initializing PAPRD table

On Tuesday 24 May 2011 11:50 AM, Senthilkumar Balasubramanian wrote:
> On Tue, May 24, 2011 at 10:31:03AM +0530, Mohammed Shafi Shajakhan wrote:
>> From: Mohammed Shafi Shajakhan<[email protected]>
>>
>> in PAPRD table initialization path we have register read. so make sure
>> that the chip is awake. currently PAPRD is disabled.
>>
>> Signed-off-by: Mohammed Shafi Shajakhan<[email protected]>
>> ---
>> drivers/net/wireless/ath/ath9k/main.c | 3 ++-
>> 1 files changed, 2 insertions(+), 1 deletions(-)
>>
>> diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c
>> index a198ee3..af8aa9e 100644
>> --- a/drivers/net/wireless/ath/ath9k/main.c
>> +++ b/drivers/net/wireless/ath/ath9k/main.c
>> @@ -394,6 +394,8 @@ void ath_paprd_calibrate(struct work_struct *work)
>> if (!caldata)
>> return;
>>
>> + ath9k_ps_wakeup(sc);
>> +
>> if (ar9003_paprd_init_table(ah)< 0)
>> return;
> Have you tested power save with this patch? ps_restore is missing here...

Sorry Senthil and thanks for pointing it out, it would have introduced a
serious regression in Power Save when the device is in idle state(when
PAPRD enabled) and when it just returns from as we are never doing power
save restore

if (ar9003_paprd_init_table(ah) < 0)
return;

I will fix it properly by using goto fail_paprd as you had suggested.

>>
>> @@ -411,7 +413,6 @@ void ath_paprd_calibrate(struct work_struct *work)
>> memcpy(hdr->addr2, hw->wiphy->perm_addr, ETH_ALEN);
>> memcpy(hdr->addr3, hw->wiphy->perm_addr, ETH_ALEN);
>>
>> - ath9k_ps_wakeup(sc);
>> for (chain = 0; chain< AR9300_MAX_CHAINS; chain++) {
>> if (!(common->tx_chainmask& BIT(chain)))
>> continue;
>> --
>> 1.7.0.4
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
>> the body of a message to [email protected]
>> More majordomo info at http://vger.kernel.org/majordomo-info.html
> .
>

--
thanks,
shafi

2011-05-24 06:20:34

by Senthil Balasubramanian

[permalink] [raw]
Subject: Re: [PATCH] ath9k: wake up chip before initializing PAPRD table

On Tue, May 24, 2011 at 10:31:03AM +0530, Mohammed Shafi Shajakhan wrote:
> From: Mohammed Shafi Shajakhan <[email protected]>
>
> in PAPRD table initialization path we have register read. so make sure
> that the chip is awake. currently PAPRD is disabled.
>
> Signed-off-by: Mohammed Shafi Shajakhan <[email protected]>
> ---
> drivers/net/wireless/ath/ath9k/main.c | 3 ++-
> 1 files changed, 2 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c
> index a198ee3..af8aa9e 100644
> --- a/drivers/net/wireless/ath/ath9k/main.c
> +++ b/drivers/net/wireless/ath/ath9k/main.c
> @@ -394,6 +394,8 @@ void ath_paprd_calibrate(struct work_struct *work)
> if (!caldata)
> return;
>
> + ath9k_ps_wakeup(sc);
> +
> if (ar9003_paprd_init_table(ah) < 0)
> return;
Have you tested power save with this patch? ps_restore is missing here...
>
> @@ -411,7 +413,6 @@ void ath_paprd_calibrate(struct work_struct *work)
> memcpy(hdr->addr2, hw->wiphy->perm_addr, ETH_ALEN);
> memcpy(hdr->addr3, hw->wiphy->perm_addr, ETH_ALEN);
>
> - ath9k_ps_wakeup(sc);
> for (chain = 0; chain < AR9300_MAX_CHAINS; chain++) {
> if (!(common->tx_chainmask & BIT(chain)))
> continue;
> --
> 1.7.0.4
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html