From: Mohammed Shafi Shajakhan <mohammed@qca.qualcomm.com>
To: ath9k-devel@lists.ath9k.org
Subject: [ath9k-devel] [PATCH] ath9k_hw: avoid possible infinite loop in ar9003_get_pll_sqsum_dvc
Date: Mon, 18 Jun 2012 15:28:00 +0530 [thread overview]
Message-ID: <4FDEFBA8.40807@qca.qualcomm.com> (raw)
In-Reply-To: <20120618080453.GA3818@vmraj-lnx.qca.qualcomm.com>
Hi Raj,
On Monday 18 June 2012 01:34 PM, Rajkumar Manoharan wrote:
> On Mon, Jun 18, 2012 at 01:13:30PM +0530, Mohammed Shafi Shajakhan wrote:
>> From: Mohammed Shafi Shajakhan<mohammed@qca.qualcomm.com>
>>
>> "ath9k: Fix softlockup in AR9485" with commit id
>> 64bc1239c790e051ff677e023435d770d2ffa174 fixed the reported
>> issue, yet its better to avoid the possible infinite loop
>> in ar9003_get_pll_sqsum_dvc by having a timeout as suggested
>> by ath9k maintainers.
>> http://www.spinics.net/lists/linux-wireless/msg92126.html.
>> Based on my testing PLL's locking measurement is done in
>> ~200us (2 iterations).
>>
>> Cc: stable at vger.kernel.org
>> Cc: Rolf Offermanns<rolf.offermanns@gmx.net>
>> Cc: Sujith Manoharan<c_manoha@qca.qualcomm.com>
>> Cc: Senthil Balasubramanian<senthilb@qca.qualcomm.com>
>> Signed-off-by: Mohammed Shafi Shajakhan<mohammed@qca.qualcomm.com>
>> ---
>> drivers/net/wireless/ath/ath9k/hw.c | 14 +++++++++++++-
>> 1 files changed, 13 insertions(+), 1 deletions(-)
>>
>> diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c
>> index 784baee..a42c26f 100644
>> --- a/drivers/net/wireless/ath/ath9k/hw.c
>> +++ b/drivers/net/wireless/ath/ath9k/hw.c
>> @@ -773,13 +773,25 @@ static void ath9k_hw_init_qos(struct ath_hw *ah)
>>
>> u32 ar9003_get_pll_sqsum_dvc(struct ath_hw *ah)
>> {
>> + struct ath_common *common = ath9k_hw_common(ah);
>> + int i = 0;
>> +
>> REG_CLR_BIT(ah, PLL3, PLL3_DO_MEAS_MASK);
>> udelay(100);
>> REG_SET_BIT(ah, PLL3, PLL3_DO_MEAS_MASK);
>>
>> - while ((REG_READ(ah, PLL4)& PLL4_MEAS_DONE) == 0)
>> + while ((REG_READ(ah, PLL4)& PLL4_MEAS_DONE) == 0) {
>> +
>> udelay(100);
>>
>> + if (WARN_ON_ONCE(i>= 100)) {
>> + ath_err(common, "PLL4 meaurement not done\n");
>> + break;
>> + }
>> +
>> + i++;
> How did you come up with 100 as max limit to break the loop?
>
i assumed its a sufficient arbitrary max value to confirm that the PLL
locking measurement does not happens. Based on my quite a few of
tests(idle associated, with traffic)PLL immediately locksup in 200us (2
iterations). As per your suggestion i will quickly check with the
System's team if we can give a proper value, rather than 100 * 100 us as
timeout. thanks for reviewing it!
--
thanks,
shafi
WARNING: multiple messages have this Message-ID (diff)
From: Mohammed Shafi Shajakhan <mohammed@qca.qualcomm.com>
To: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
Cc: "John W. Linville" <linville@tuxdriver.com>,
<linux-wireless@vger.kernel.org>,
Rodriguez Luis <rodrigue@qca.qualcomm.com>,
<ath9k-devel@lists.ath9k.org>,
Sujith Manoharan <c_manoha@qca.qualcomm.com>,
<stable@vger.kernel.org>,
Rolf Offermanns <rolf.offermanns@gmx.net>,
Senthil Balasubramanian <senthilb@qca.qualcomm.com>
Subject: Re: [PATCH] ath9k_hw: avoid possible infinite loop in ar9003_get_pll_sqsum_dvc
Date: Mon, 18 Jun 2012 15:28:00 +0530 [thread overview]
Message-ID: <4FDEFBA8.40807@qca.qualcomm.com> (raw)
In-Reply-To: <20120618080453.GA3818@vmraj-lnx.qca.qualcomm.com>
Hi Raj,
On Monday 18 June 2012 01:34 PM, Rajkumar Manoharan wrote:
> On Mon, Jun 18, 2012 at 01:13:30PM +0530, Mohammed Shafi Shajakhan wrote:
>> From: Mohammed Shafi Shajakhan<mohammed@qca.qualcomm.com>
>>
>> "ath9k: Fix softlockup in AR9485" with commit id
>> 64bc1239c790e051ff677e023435d770d2ffa174 fixed the reported
>> issue, yet its better to avoid the possible infinite loop
>> in ar9003_get_pll_sqsum_dvc by having a timeout as suggested
>> by ath9k maintainers.
>> http://www.spinics.net/lists/linux-wireless/msg92126.html.
>> Based on my testing PLL's locking measurement is done in
>> ~200us (2 iterations).
>>
>> Cc: stable@vger.kernel.org
>> Cc: Rolf Offermanns<rolf.offermanns@gmx.net>
>> Cc: Sujith Manoharan<c_manoha@qca.qualcomm.com>
>> Cc: Senthil Balasubramanian<senthilb@qca.qualcomm.com>
>> Signed-off-by: Mohammed Shafi Shajakhan<mohammed@qca.qualcomm.com>
>> ---
>> drivers/net/wireless/ath/ath9k/hw.c | 14 +++++++++++++-
>> 1 files changed, 13 insertions(+), 1 deletions(-)
>>
>> diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c
>> index 784baee..a42c26f 100644
>> --- a/drivers/net/wireless/ath/ath9k/hw.c
>> +++ b/drivers/net/wireless/ath/ath9k/hw.c
>> @@ -773,13 +773,25 @@ static void ath9k_hw_init_qos(struct ath_hw *ah)
>>
>> u32 ar9003_get_pll_sqsum_dvc(struct ath_hw *ah)
>> {
>> + struct ath_common *common = ath9k_hw_common(ah);
>> + int i = 0;
>> +
>> REG_CLR_BIT(ah, PLL3, PLL3_DO_MEAS_MASK);
>> udelay(100);
>> REG_SET_BIT(ah, PLL3, PLL3_DO_MEAS_MASK);
>>
>> - while ((REG_READ(ah, PLL4)& PLL4_MEAS_DONE) == 0)
>> + while ((REG_READ(ah, PLL4)& PLL4_MEAS_DONE) == 0) {
>> +
>> udelay(100);
>>
>> + if (WARN_ON_ONCE(i>= 100)) {
>> + ath_err(common, "PLL4 meaurement not done\n");
>> + break;
>> + }
>> +
>> + i++;
> How did you come up with 100 as max limit to break the loop?
>
i assumed its a sufficient arbitrary max value to confirm that the PLL
locking measurement does not happens. Based on my quite a few of
tests(idle associated, with traffic)PLL immediately locksup in 200us (2
iterations). As per your suggestion i will quickly check with the
System's team if we can give a proper value, rather than 100 * 100 us as
timeout. thanks for reviewing it!
--
thanks,
shafi
next prev parent reply other threads:[~2012-06-18 9:58 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-06-18 7:43 [ath9k-devel] [PATCH] ath9k_hw: avoid possible infinite loop in ar9003_get_pll_sqsum_dvc Mohammed Shafi Shajakhan
2012-06-18 7:43 ` Mohammed Shafi Shajakhan
2012-06-18 8:04 ` [ath9k-devel] " Rajkumar Manoharan
2012-06-18 8:04 ` Rajkumar Manoharan
2012-06-18 9:58 ` Mohammed Shafi Shajakhan [this message]
2012-06-18 9:58 ` Mohammed Shafi Shajakhan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4FDEFBA8.40807@qca.qualcomm.com \
--to=mohammed@qca.qualcomm.com \
--cc=ath9k-devel@lists.ath9k.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.