Thread (9 messages) 9 messages, 5 authors, 2008-01-04

Re: ath5k oops (recent regression, I think)

From: Johannes Berg <johannes@sipsolutions.net>
Date: 2007-12-25 10:54:40

Hi,

I'm absolutely unable to read the stack trace you pasted, I just don't
know how to read x86 stack traces as they're usually badly mangled.
seems ath5k likes to write some rate registers before vif is set up. i used 
the following as a stopgap fix. johannes, do you have any advice how to 
properly fix that?
+       if (sc->vif == NULL) {
+               printk("*** sc->vif NULL\n");
+               return;
+       }
+
Superficially, this fix looks correct if this function
(ath5k_hw_write_rate_duration) is called before a virtual interface is
brought up or down. I didn't think that would happen so I didn't protect
in mac80211 against it, ieee80211_generic_frame_duration() would have
returned 0 with the original behaviour.

Hence, if you want to restore the original behaviour, do something like

tx_time = 0;
if (sc->vif)
	tx_time = ieee80211_generic_frame_duration(....)

instead at the spot where ieee80211_generic_frame_duration() is used.

I don't think that's correct though and I have no idea why ath5k needs a
frame duration before it has an interface assigned (since it will then
never send a frame), but that's something for the ath5k people to figure
out.

johannes

Attachments

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help