| From 7c2510120e9b43b0caf32c3786a6ab831f7d9e87 Mon Sep 17 00:00:00 2001 |
| From: Stanislaw Gruszka <sgruszka@redhat.com> |
| Date: Fri, 26 Aug 2011 17:24:59 +0200 |
| Subject: iwlegacy: fix BUG_ON(info->control.rates[0].idx < 0) |
| |
| From: Stanislaw Gruszka <sgruszka@redhat.com> |
| |
| commit 7c2510120e9b43b0caf32c3786a6ab831f7d9e87 upstream. |
| |
| When trying to connect to 5GHz we can provide negative index to |
| mac80211 what trigger BUG_ON. Reason of iwl-3945-rs malfunction |
| on 5GHz is unknown and needs further investigation. For now, to |
| do not trigger a bug, correct value and just print WARNING. |
| |
| Address bug: |
| https://bugzilla.redhat.com/show_bug.cgi?id=730653 |
| |
| Reported-and-tested-by: Jan Teichmann <jan.teichmann@gmail.com> |
| Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com> |
| Signed-off-by: John W. Linville <linville@tuxdriver.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| drivers/net/wireless/iwlegacy/iwl-3945-rs.c | 13 ++++++++----- |
| 1 file changed, 8 insertions(+), 5 deletions(-) |
| |
| --- a/drivers/net/wireless/iwlegacy/iwl-3945-rs.c |
| +++ b/drivers/net/wireless/iwlegacy/iwl-3945-rs.c |
| @@ -822,12 +822,15 @@ static void iwl3945_rs_get_rate(void *pr |
| |
| out: |
| |
| - rs_sta->last_txrate_idx = index; |
| - if (sband->band == IEEE80211_BAND_5GHZ) |
| - info->control.rates[0].idx = rs_sta->last_txrate_idx - |
| - IWL_FIRST_OFDM_RATE; |
| - else |
| + if (sband->band == IEEE80211_BAND_5GHZ) { |
| + if (WARN_ON_ONCE(index < IWL_FIRST_OFDM_RATE)) |
| + index = IWL_FIRST_OFDM_RATE; |
| + rs_sta->last_txrate_idx = index; |
| + info->control.rates[0].idx = index - IWL_FIRST_OFDM_RATE; |
| + } else { |
| + rs_sta->last_txrate_idx = index; |
| info->control.rates[0].idx = rs_sta->last_txrate_idx; |
| + } |
| |
| IWL_DEBUG_RATE(priv, "leave: %d\n", index); |
| } |