regression with kernel 3.8
I'm using the latest wireless-testing.git and I have found a regression with kernel 3.8. I don't know if this is related to the driver I'm using (ath5k) but I have bisected the problem to the commit 6c17b77b67587b9f9e3070fb89fe98cef3187131 (mac80211: Fix tx queue handling during scans). Basically the authentication and association infos don't appear anymore in the kernel logs during a connection to my access point.
Tell me what you need to further debug the issue and solve the problem.
Fabio
Quoted 8 lines · Fabio Rossi
I'm using the latest wireless-testing.git and I have found a regression with kernel 3.8. I don't know if this is related to the driver I'm using (ath5k) but I have bisected the problem to the commit
6c17b77b67587b9f9e3070fb89fe98cef3187131(mac80211: Fix tx queue handling during scans). Basically the authentication and association infos don't appear anymore in the kernel logs during a connection to my access point.Tell me what you need to further debug the issue and solve the problem.
That patch is after 3.8.
Johannes, this looks like a problem with the changes you made when applying that patch. I really should have tested the result before now.
I think the off-channel frames are getting queued rather than passed down to the driver, which obviously isn't what we want. I'll get this fixed.
Seth
PATCH 1/1 mac80211: Ensure off-channel frames don't get queued
Commit 6c17b77b67587b9f9e3070fb89fe98cef3187131 (mac80211: Fix tx queue handling during scans) contains a bug that causes off-channel frames to get queued when they should be handed down to the driver for transmit. Prevent this from happening.
---
Fabio, this patch should fix the problem. Can you verify?
Johannes, this prevents the off-channel frames from getting queued without affecting the fast path. It does however make the indentation awfully deep ...
net/mac80211/tx.c | 56 +++++++++++++++++++++++++++++------------------------ 1 file changed, 31 insertions(+), 25 deletions(-)
net/mac80211/tx.c +31 -25
@@ -1231,34 +1231,40 @@ static bool ieee80211_tx_frags(struct ieee80211_local *local,if (local->queue_stop_reasons[q] || (!txpending && !skb_queue_empty (&local->pending[q]))) {if (unlikely (info->flags & -IEEE80211_TX_INTFL_OFFCHAN_TX_OK && - local->queue_stop_reasons[q] & - ~BIT (IEEE80211_QUEUE_STOP_REASON_OFFCHANNEL ))) { +IEEE80211_TX_INTFL_OFFCHAN_TX_OK )) { +if (local->queue_stop_reasons[q] & + ~BIT (IEEE80211_QUEUE_STOP_REASON_OFFCHANNEL )) { +/* +* Drop off-channel frames if queues +* are stopped for any reason other +* than off-channel operation. Never +* queue them. +*/ +spin_unlock_irqrestore ( + &local->queue_stop_reason_lock, + flags); +ieee80211_purge_tx_queue (&local->hw, + skbs); +return true; + } + }else { +/* -* Drop off-channel frames if queues are stopped -* for any reason other than off-channel -* operation. Never queue them. +* Since queue is stopped, queue up frames for +* later transmission from the tx-pending +* tasklet when the queue is woken again. */ -spin_unlock_irqrestore ( - &local->queue_stop_reason_lock, flags); -ieee80211_purge_tx_queue (&local->hw, skbs); -return true; +if (txpending) +skb_queue_splice_init (skbs, + &local->pending[q]); +else +skb_queue_splice_tail_init (skbs, + &local->pending[q]); + +spin_unlock_irqrestore (&local->queue_stop_reason_lock, + flags); +return false; } - -/* -* Since queue is stopped, queue up frames for later -* transmission from the tx-pending tasklet when the -* queue is woken again. -*/ -if (txpending) -skb_queue_splice_init (skbs, &local->pending[q]); -else -skb_queue_splice_tail_init (skbs, - &local->pending[q]); - -spin_unlock_irqrestore (&local->queue_stop_reason_lock, - flags); -return false; }spin_unlock_irqrestore (&local->queue_stop_reason_lock, flags);
Signature · 1 line
1.7.9.5
Johannes Berg
maintainerRe: [PATCH] mac80211: Ensure off-channel frames don't get queued
Quoted 7 lines · Seth Forshee
Commit
6c17b77b67587b9f9e3070fb89fe98cef3187131(mac80211: Fix tx queue handling during scans) contains a bug that causes off-channel frames to get queued when they should be handed down to the driver for transmit. Prevent this from happening.Reported-by Fabio Rossi <[email protected]>Signed-off-by Seth Forshee <[email protected]>
Quoted 7 lines
---
Fabio, this patch should fix the problem. Can you verify?
Johannes, this prevents the off-channel frames from getting queued without affecting the fast path. It does however make the indentation awfully deep ...
Ugh .. I do see the bug, but the indentation is crap. I'll apply this anyway, and then we can sort it out later.
johannes
Johannes Berg
maintainerQuoted 8 lines · Seth Forshee
Quoted 7 lines · Fabio Rossi
I'm using the latest wireless-testing.git and I have found a regression with kernel 3.8. I don't know if this is related to the driver I'm using (ath5k) but I have bisected the problem to the commit
6c17b77b67587b9f9e3070fb89fe98cef3187131(mac80211: Fix tx queue handling during scans). Basically the authentication and association infos don't appear anymore in the kernel logs during a connection to my access point.
Quoted 6 lines
Quoted 1 line
Tell me what you need to further debug the issue and solve the problem.
That patch is after 3.8.
Johannes, this looks like a problem with the changes you made when applying that patch. I really should have tested the result before now.
Hmm, crap. Sorry about that!
Quoted 3 lines
I think the off-channel frames are getting queued rather than passed down to the driver, which obviously isn't what we want. I'll get this fixed.
I saw you posted it, I'll take a closer look tomorrow morning.
johannes
Quoted 16 lines · Johannes Berg
Quoted 8 lines · Seth Forshee
Quoted 7 lines · Fabio Rossi
I'm using the latest wireless-testing.git and I have found a regression with kernel 3.8. I don't know if this is related to the driver I'm using (ath5k) but I have bisected the problem to the commit
6c17b77b67587b9f9e3070fb89fe98cef3187131(mac80211: Fix tx queue handling during scans). Basically the authentication and association infos don't appear anymore in the kernel logs during a connection to my access point.Quoted 6 lines
Quoted 1 line
Tell me what you need to further debug the issue and solve the problem.
That patch is after 3.8.
Johannes, this looks like a problem with the changes you made when applying that patch. I really should have tested the result before now.
Quoted 7 lines
Hmm, crap. Sorry about that!
Quoted 3 lines
I think the off-channel frames are getting queued rather than passed down to the driver, which obviously isn't what we want. I'll get this fixed.
I saw you posted it, I'll take a closer look tomorrow morning.
Have you had a chance to look at the patch yet? I think we ought to try and get this fixed pretty quickly.
Seth