Add patch to fix iwlwifi queue settings backtrace (rhbz 1025769)
This commit is contained in:
parent
1780b4d063
commit
2e6935aab4
|
@ -0,0 +1,98 @@
|
|||
From f6b129527ca15bae29ffb9417ddaa1c9d99ffc5d Mon Sep 17 00:00:00 2001
|
||||
From: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
|
||||
Date: Tue, 15 Oct 2013 19:04:54 +0000
|
||||
Subject: iwlwifi: dvm: don't override mac80211's queue setting
|
||||
|
||||
Since we set IEEE80211_HW_QUEUE_CONTROL, we can let
|
||||
mac80211 do the queue assignement and don't need to
|
||||
override its decisions.
|
||||
While reassiging the same values is harmless of course,
|
||||
it triggered a WARNING when iwlwifi and mac80211 came
|
||||
to different conclusions. This happened when mac80211 set
|
||||
IEEE80211_TX_CTL_SEND_AFTER_DTIM, but didn't route the
|
||||
packet to the cab_queue because no stations were asleep.
|
||||
|
||||
iwlwifi should not override mac80211's decicions for
|
||||
offchannel packets and packets to be sent after DTIM,
|
||||
but it should override mac80211's decision for AMPDUs
|
||||
since we have a special queue for them. So for AMPDU,
|
||||
we still override info->hw_queue by the AMPDU queue.
|
||||
|
||||
This avoids:
|
||||
------------[ cut here ]------------
|
||||
WARNING: CPU: 0 PID: 2531 at drivers/net/wireless/iwlwifi/dvm/tx.c:456 iwlagn_tx_skb+0x6c5/0x883()
|
||||
Modules linked in:
|
||||
CPU: 0 PID: 2531 Comm: hostapd Not tainted 3.12.0-rc5+ #1
|
||||
Hardware name: /D53427RKE, BIOS RKPPT10H.86A.0017.2013.0425.1251 04/25/2013
|
||||
0000000000000000 0000000000000009 ffffffff8189aa62 0000000000000000
|
||||
ffffffff8105a4f2 ffff880058339a48 ffffffff815f8a04 0000000000000000
|
||||
ffff8800560097b0 0000000000000208 0000000000000000 ffff8800561a9e5e
|
||||
Call Trace:
|
||||
[<ffffffff8189aa62>] ? dump_stack+0x41/0x51
|
||||
[<ffffffff8105a4f2>] ? warn_slowpath_common+0x78/0x90
|
||||
[<ffffffff815f8a04>] ? iwlagn_tx_skb+0x6c5/0x883
|
||||
[<ffffffff815f8a04>] ? iwlagn_tx_skb+0x6c5/0x883
|
||||
[<ffffffff818a0040>] ? put_cred+0x15/0x15
|
||||
[<ffffffff815f6db4>] ? iwlagn_mac_tx+0x19/0x2f
|
||||
[<ffffffff8186cc45>] ? __ieee80211_tx+0x226/0x29b
|
||||
[<ffffffff8186e6bd>] ? ieee80211_tx+0xa6/0xb5
|
||||
[<ffffffff8186e98b>] ? ieee80211_monitor_start_xmit+0x1e9/0x204
|
||||
[<ffffffff8171ce5f>] ? dev_hard_start_xmit+0x271/0x3ec
|
||||
[<ffffffff817351ac>] ? sch_direct_xmit+0x66/0x164
|
||||
[<ffffffff8171d1bf>] ? dev_queue_xmit+0x1e5/0x3c8
|
||||
[<ffffffff817fac5a>] ? packet_sendmsg+0xac5/0xb3d
|
||||
[<ffffffff81709a09>] ? sock_sendmsg+0x37/0x52
|
||||
[<ffffffff810f9e0c>] ? __do_fault+0x338/0x36b
|
||||
[<ffffffff81713820>] ? verify_iovec+0x44/0x94
|
||||
[<ffffffff81709e63>] ? ___sys_sendmsg+0x1f1/0x283
|
||||
[<ffffffff81140a73>] ? __inode_wait_for_writeback+0x67/0xae
|
||||
[<ffffffff8111735e>] ? __cache_free.isra.46+0x178/0x187
|
||||
[<ffffffff811173b1>] ? kmem_cache_free+0x44/0x84
|
||||
[<ffffffff81132c22>] ? dentry_kill+0x13d/0x149
|
||||
[<ffffffff81132f6f>] ? dput+0xe5/0xef
|
||||
[<ffffffff81136e04>] ? fget_light+0x2e/0x7c
|
||||
[<ffffffff8170ae62>] ? __sys_sendmsg+0x39/0x57
|
||||
[<ffffffff818a7e39>] ? system_call_fastpath+0x16/0x1b
|
||||
---[ end trace 1b3eb79359c1d1e6 ]---
|
||||
|
||||
Reported-by: Sander Eikelenboom <linux@eikelenboom.it>
|
||||
Reviewed-by: Johannes Berg <johannes.berg@intel.com>
|
||||
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
---
|
||||
diff --git a/drivers/net/wireless/iwlwifi/dvm/tx.c b/drivers/net/wireless/iwlwifi/dvm/tx.c
|
||||
index da442b8..1fef524 100644
|
||||
--- a/drivers/net/wireless/iwlwifi/dvm/tx.c
|
||||
+++ b/drivers/net/wireless/iwlwifi/dvm/tx.c
|
||||
@@ -433,27 +433,19 @@ int iwlagn_tx_skb(struct iwl_priv *priv,
|
||||
/* Copy MAC header from skb into command buffer */
|
||||
memcpy(tx_cmd->hdr, hdr, hdr_len);
|
||||
|
||||
+ txq_id = info->hw_queue;
|
||||
+
|
||||
if (is_agg)
|
||||
txq_id = priv->tid_data[sta_id][tid].agg.txq_id;
|
||||
else if (info->flags & IEEE80211_TX_CTL_SEND_AFTER_DTIM) {
|
||||
/*
|
||||
- * Send this frame after DTIM -- there's a special queue
|
||||
- * reserved for this for contexts that support AP mode.
|
||||
- */
|
||||
- txq_id = ctx->mcast_queue;
|
||||
-
|
||||
- /*
|
||||
* The microcode will clear the more data
|
||||
* bit in the last frame it transmits.
|
||||
*/
|
||||
hdr->frame_control |=
|
||||
cpu_to_le16(IEEE80211_FCTL_MOREDATA);
|
||||
- } else if (info->flags & IEEE80211_TX_CTL_TX_OFFCHAN)
|
||||
- txq_id = IWL_AUX_QUEUE;
|
||||
- else
|
||||
- txq_id = ctx->ac_to_queue[skb_get_queue_mapping(skb)];
|
||||
+ }
|
||||
|
||||
- WARN_ON_ONCE(!is_agg && txq_id != info->hw_queue);
|
||||
WARN_ON_ONCE(is_agg &&
|
||||
priv->queue_to_mac80211[txq_id] != info->hw_queue);
|
||||
|
||||
--
|
||||
cgit v0.9.2
|
11
kernel.spec
11
kernel.spec
|
@ -807,6 +807,9 @@ Patch25139: net-flow_dissector-fail-on-evil-iph-ihl.patch
|
|||
Patch25140: 0001-Revert-epoll-use-freezable-blocking-call.patch
|
||||
Patch25141: 0001-Revert-select-use-freezable-blocking-call.patch
|
||||
|
||||
#rhbz 1025769
|
||||
Patch25142: iwlwifi-dvm-dont-override-mac80211-queue-setting.patch
|
||||
|
||||
# END OF PATCH DEFINITIONS
|
||||
|
||||
%endif
|
||||
|
@ -1572,6 +1575,9 @@ ApplyPatch net-flow_dissector-fail-on-evil-iph-ihl.patch
|
|||
ApplyPatch 0001-Revert-epoll-use-freezable-blocking-call.patch
|
||||
ApplyPatch 0001-Revert-select-use-freezable-blocking-call.patch
|
||||
|
||||
#rhbz 1025769
|
||||
ApplyPatch iwlwifi-dvm-dont-override-mac80211-queue-setting.patch
|
||||
|
||||
# END OF PATCH APPLICATIONS
|
||||
|
||||
%endif
|
||||
|
@ -2374,7 +2380,10 @@ fi
|
|||
# ||----w |
|
||||
# || ||
|
||||
%changelog
|
||||
* Mon Nov 04 2013 Justin M. Forbes <jforbes@fedoraproject.org> - 3.11.7-300
|
||||
* Mon Nov 04 2013 Josh Boyer <jwboyer@fedoraproject.org> - 3.11.7-300
|
||||
- Add patch to fix iwlwifi queue settings backtrace (rhbz 1025769)
|
||||
|
||||
* Mon Nov 04 2013 Justin M. Forbes <jforbes@fedoraproject.org>
|
||||
- Linux v3.11.7
|
||||
|
||||
* Fri Nov 01 2013 Josh Boyer <jwboyer@fedoraproject.org> - 3.11.6-302
|
||||
|
|
Loading…
Reference in New Issue