From: Bob Copeland <me@bobcopeland.com>
To: Pavel Roskin <proski@gnu.org>
Cc: "Luis R. Rodriguez" <lrodriguez@atheros.com>,
Jiri Slaby <jirislaby@gmail.com>,
"ath5k-devel@venema.h4ckr.net" <ath5k-devel@venema.h4ckr.net>,
"linux-wireless@vger.kernel.org" <linux-wireless@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"John W. Linville" <linville@tuxdriver.com>,
mickflemm@gmail.com
Subject: Re: [ath5k-devel] [PATCH 1/1] ath5k: fix hw rate index condition
Date: Mon, 2 Mar 2009 22:46:00 -0500 [thread overview]
Message-ID: <20090303034600.GA3757@hash.localnet> (raw)
In-Reply-To: <1235884912.9224.26.camel@mj>
On Sun, Mar 01, 2009 at 12:21:52AM -0500, Pavel Roskin wrote:
> I would prefer that we don't hide problems.
>
> If we don't know why we cannot get a valid rate, we should use WARN_ON
> and find out why and when it happens. I'm fine with using a bogus rate
> with WARN_ON.
So here is at least stage one of this, not yet the global "unknown rate"
infrastructure, but hopefully it will allow us to track down the issue.
It makes hw_to_driver_rix a little uglier, but oh well. Thoughts?
From: Bob Copeland <me@bobcopeland.com>
Date: Mon, 2 Mar 2009 21:55:18 -0500
Subject: [PATCH] ath5k: warn and correct rate for unknown hw rate indexes
ath5k sets up a mapping table from the hardware rate index to
the rate index used by mac80211; however, we have seen some
received frames with incorrect rate indexes. Such frames
normally get dropped with a warning in __ieee80211_rx(), but the
warning doesn't include enough context to track down the error.
This patch adds a warning to hw_to_driver_rix for any lookups
that result in a rate index of -1, then returns a valid rate so
the frame can be processed.
This also includes the bug fix suggested by Pavel Roskin, in which
the mapping table is made signed, so rates initialized to -1 stay
that way.
Signed-off-by: Bob Copeland <me@bobcopeland.com>
---
drivers/net/wireless/ath5k/base.c | 15 ++++++++++++---
drivers/net/wireless/ath5k/base.h | 2 +-
2 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/drivers/net/wireless/ath5k/base.c b/drivers/net/wireless/ath5k/base.c
index f7c424d..8d4b11c 100644
--- a/drivers/net/wireless/ath5k/base.c
+++ b/drivers/net/wireless/ath5k/base.c
@@ -1100,9 +1100,18 @@ ath5k_mode_setup(struct ath5k_softc *sc)
static inline int
ath5k_hw_to_driver_rix(struct ath5k_softc *sc, int hw_rix)
{
- WARN(hw_rix < 0 || hw_rix >= AR5K_MAX_RATES,
- "hw_rix out of bounds: %x\n", hw_rix);
- return sc->rate_idx[sc->curband->band][hw_rix];
+ int rix;
+
+ /* return base rate on errors */
+ if (WARN(hw_rix < 0 || hw_rix >= AR5K_MAX_RATES,
+ "hw_rix out of bounds: %x\n", hw_rix))
+ return 0;
+
+ rix = sc->rate_idx[sc->curband->band][hw_rix];
+ if (WARN(rix < 0, "invalid hw_rix: %x\n", hw_rix))
+ rix = 0;
+
+ return rix;
}
/***************\
diff --git a/drivers/net/wireless/ath5k/base.h b/drivers/net/wireless/ath5k/base.h
index 20e0d14..8229561 100644
--- a/drivers/net/wireless/ath5k/base.h
+++ b/drivers/net/wireless/ath5k/base.h
@@ -112,7 +112,7 @@ struct ath5k_softc {
struct ieee80211_supported_band sbands[IEEE80211_NUM_BANDS];
struct ieee80211_channel channels[ATH_CHAN_MAX];
struct ieee80211_rate rates[IEEE80211_NUM_BANDS][AR5K_MAX_RATES];
- u8 rate_idx[IEEE80211_NUM_BANDS][AR5K_MAX_RATES];
+ s8 rate_idx[IEEE80211_NUM_BANDS][AR5K_MAX_RATES];
enum nl80211_iftype opmode;
struct ath5k_hw *ah; /* Atheros HW */
--
1.6.0.6
--
Bob Copeland %% www.bobcopeland.com
next prev parent reply other threads:[~2009-03-03 3:46 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-02-26 22:44 [PATCH 1/1] ath5k: fix hw rate index condition Jiri Slaby
2009-02-26 23:15 ` Bob Copeland
2009-02-26 23:19 ` Jiri Slaby
2009-02-26 23:28 ` [ath5k-devel] " Bob Copeland
2009-02-26 23:32 ` Jiri Slaby
2009-02-27 2:27 ` Bob Copeland
2009-02-27 2:39 ` Luis R. Rodriguez
2009-02-27 3:06 ` Bob Copeland
2009-02-27 3:15 ` Luis R. Rodriguez
2009-03-01 5:21 ` Pavel Roskin
2009-03-03 3:46 ` Bob Copeland [this message]
2009-03-03 4:31 ` Nick Kossifidis
2009-03-03 13:02 ` Bob Copeland
2009-03-23 3:04 ` Bob Copeland
2009-03-23 8:21 ` Nick Kossifidis
2009-03-23 19:53 ` John W. Linville
2009-03-24 3:38 ` Bob Copeland
2009-03-01 5:07 ` Pavel Roskin
2009-03-01 14:36 ` Bob Copeland
-- strict thread matches above, loose matches on Subject: below --
2009-01-07 15:22 Dhaval Giani
2009-02-02 7:57 ` Dhaval Giani
2009-02-15 13:47 ` Bob Copeland
2009-02-28 23:08 ` Jiri Slaby
2009-03-30 8:59 ` Dhaval Giani
2009-03-30 16:58 ` Bob Copeland
2009-03-30 17:59 ` Dhaval Giani
2009-03-30 18:13 ` Bob Copeland
2009-03-31 3:51 ` Dhaval Giani
2009-03-31 12:23 ` Bob Copeland
2009-04-08 15:22 ` [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=20090303034600.GA3757@hash.localnet \
--to=me@bobcopeland.com \
--cc=ath5k-devel@venema.h4ckr.net \
--cc=jirislaby@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-wireless@vger.kernel.org \
--cc=linville@tuxdriver.com \
--cc=lrodriguez@atheros.com \
--cc=mickflemm@gmail.com \
--cc=proski@gnu.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 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).