From: Bob Copeland <me@bobcopeland.com>
To: linville@tuxdriver.com, forrest@hifulltech.com
Cc: ath5k-devel@lists.ath5k.org, mickflemm@gmail.com,
jirislaby@gmail.com, lrodriguez@atheros.com,
linux-wireless@vger.kernel.org
Subject: [PATCH] ath5k: fix exp off-by-one when computing OFDM delta slope
Date: Wed, 13 May 2009 11:14:39 -0400 [thread overview]
Message-ID: <20090513151439.GA28476@hash.localnet> (raw)
From: Forrest Zhang <forrest@hifulltech.com>
Commit e8f055f0c3ba226ca599c14c2e5fe829f6f57cbb subtly changed the
code that computes floating point values for the PHY3_TIMING register
such that the exponent is off by a decimal point, which can cause
problems with OFDM channel operation.
get_bitmask_order() actually returns the highest bit set plus one,
whereas the previous code wanted the highest bit set. Instead, use
ilog2 which is what this code is really calculating. Also check
coef_scaled to handle the (invalid) case where we need log2(0).
Signed-off-by: Bob Copeland <me@bobcopeland.com>
---
John, this plus 706d64453cce7179e05924c24d87777584a1275c fixes a
regression for 2.6.30 5ghz operation (bugzilla 13077). Any chance
they can both make it in? I can send a backport of this patch if
you like (usual path change).
drivers/net/wireless/ath/ath5k/reset.c | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/net/wireless/ath/ath5k/reset.c b/drivers/net/wireless/ath/ath5k/reset.c
index 386bc8b..bd1940e 100644
--- a/drivers/net/wireless/ath/ath5k/reset.c
+++ b/drivers/net/wireless/ath/ath5k/reset.c
@@ -26,7 +26,7 @@
\*****************************/
#include <linux/pci.h> /* To determine if a card is pci-e */
-#include <linux/bitops.h> /* For get_bitmask_order */
+#include <linux/log2.h>
#include "ath5k.h"
#include "reg.h"
#include "base.h"
@@ -69,10 +69,10 @@ static inline int ath5k_hw_write_ofdm_timings(struct ath5k_hw *ah,
/* Get exponent
* ALGO: coef_exp = 14 - highest set bit position */
- coef_exp = get_bitmask_order(coef_scaled);
+ coef_exp = ilog2(coef_scaled);
/* Doesn't make sense if it's zero*/
- if (!coef_exp)
+ if (!coef_scaled || !coef_exp)
return -EINVAL;
/* Note: we've shifted coef_scaled by 24 */
--
1.6.0.6
--
Bob Copeland %% www.bobcopeland.com
next reply other threads:[~2009-05-13 15:15 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-13 15:14 Bob Copeland [this message]
2009-05-13 18:25 ` [PATCH] ath5k: fix exp off-by-one when computing OFDM delta slope John W. Linville
2009-05-13 18:51 ` [ath5k-devel] " Bob Copeland
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=20090513151439.GA28476@hash.localnet \
--to=me@bobcopeland.com \
--cc=ath5k-devel@lists.ath5k.org \
--cc=forrest@hifulltech.com \
--cc=jirislaby@gmail.com \
--cc=linux-wireless@vger.kernel.org \
--cc=linville@tuxdriver.com \
--cc=lrodriguez@atheros.com \
--cc=mickflemm@gmail.com \
/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 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).