linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] minstrel: fix warning if lowest supported rate index is not 0
@ 2008-12-22 14:35 Christian Lamparter
  2008-12-22 15:11 ` Felix Fietkau
  0 siblings, 1 reply; 2+ messages in thread
From: Christian Lamparter @ 2008-12-22 14:35 UTC (permalink / raw)
  To: wireless; +Cc: nbd, John W Linville, Johannes Berg

This patch fixes the following WARNING (caused by rix_to_ndx): "
>WARNING: at net/mac80211/rc80211_minstrel.c:69 minstrel_rate_init+0xd2/0x33a [mac80211]()
>[...]
>Call Trace:
> warn_on_slowpath+0x51/0x75
> _format_mac_addr+0x4c/0x88
> minstrel_rate_init+0xd2/0x33a [mac80211]
> print_mac+0x16/0x1b
> schedule_hrtimeout_range+0xdc/0x107
> ieee80211_add_station+0x158/0x1bd [mac80211]
> nl80211_new_station+0x1b3/0x20b [cfg80211]

The reason is that I'm experimenting with "g" only mode on a 802.11 b/g card.

Therefore rate_lowest_index returns 4 (= 6Mbit, instead of usual 0 = 1Mbit).
Since mi->r array is initialized with zeros in minstrel_alloc_sta,
rix_to_ndx has a hard time to find the 6Mbit entry and will trigged the WARNING.

Signed-off-by: Christian Lamparter <chunkeey@web.de>
---
nbd?

Is this the correct? or should we initialize mi->r array in minstrel_alloc_sta?
---
Johannes,

yeah, this fixes the problems I described in 
"[PATCH] ath9k: Fix a NULL pointer dereference in ath_rate_get".
sorry for the noise!
---
diff --git a/net/mac80211/rc80211_minstrel.c b/net/mac80211/rc80211_minstrel.c
index 2b3b490..3824990 100644
--- a/net/mac80211/rc80211_minstrel.c
+++ b/net/mac80211/rc80211_minstrel.c
@@ -395,13 +395,15 @@ minstrel_rate_init(void *priv, struct ieee80211_supported_band *sband,
 {
 	struct minstrel_sta_info *mi = priv_sta;
 	struct minstrel_priv *mp = priv;
-	struct minstrel_rate *mr_ctl;
+	struct ieee80211_local *local = hw_to_local(mp->hw);
+	struct ieee80211_rate *ctl_rate;
 	unsigned int i, n = 0;
 	unsigned int t_slot = 9; /* FIXME: get real slot time */
 
 	mi->lowest_rix = rate_lowest_index(sband, sta);
-	mr_ctl = &mi->r[rix_to_ndx(mi, mi->lowest_rix)];
-	mi->sp_ack_dur = mr_ctl->ack_time;
+	ctl_rate = &sband->bitrates[mi->lowest_rix];
+	mi->sp_ack_dur = ieee80211_frame_duration(local, 10, ctl_rate->bitrate,
+				!!(ctl_rate->flags & IEEE80211_RATE_ERP_G), 1);
 
 	for (i = 0; i < sband->n_bitrates; i++) {
 		struct minstrel_rate *mr = &mi->r[n];
@@ -416,7 +418,7 @@ minstrel_rate_init(void *priv, struct ieee80211_supported_band *sband,
 
 		mr->rix = i;
 		mr->bitrate = sband->bitrates[i].bitrate / 5;
-		calc_rate_durations(mi, hw_to_local(mp->hw), mr,
+		calc_rate_durations(mi, local, mr,
 				&sband->bitrates[i]);
 
 		/* calculate maximum number of retransmissions before

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] minstrel: fix warning if lowest supported rate index is not 0
  2008-12-22 14:35 [PATCH] minstrel: fix warning if lowest supported rate index is not 0 Christian Lamparter
@ 2008-12-22 15:11 ` Felix Fietkau
  0 siblings, 0 replies; 2+ messages in thread
From: Felix Fietkau @ 2008-12-22 15:11 UTC (permalink / raw)
  To: Christian Lamparter; +Cc: wireless, John W Linville, Johannes Berg

Christian Lamparter wrote:
> This patch fixes the following WARNING (caused by rix_to_ndx): "
>>WARNING: at net/mac80211/rc80211_minstrel.c:69 minstrel_rate_init+0xd2/0x33a [mac80211]()
>>[...]
>>Call Trace:
>> warn_on_slowpath+0x51/0x75
>> _format_mac_addr+0x4c/0x88
>> minstrel_rate_init+0xd2/0x33a [mac80211]
>> print_mac+0x16/0x1b
>> schedule_hrtimeout_range+0xdc/0x107
>> ieee80211_add_station+0x158/0x1bd [mac80211]
>> nl80211_new_station+0x1b3/0x20b [cfg80211]
> 
> The reason is that I'm experimenting with "g" only mode on a 802.11 b/g card.
> 
> Therefore rate_lowest_index returns 4 (= 6Mbit, instead of usual 0 = 1Mbit).
> Since mi->r array is initialized with zeros in minstrel_alloc_sta,
> rix_to_ndx has a hard time to find the 6Mbit entry and will trigged the WARNING.
> 
> Signed-off-by: Christian Lamparter <chunkeey@web.de>
Acked-by: Felix Fietkau <nbd@openwrt.org>

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2008-12-22 15:11 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-12-22 14:35 [PATCH] minstrel: fix warning if lowest supported rate index is not 0 Christian Lamparter
2008-12-22 15:11 ` Felix Fietkau

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).