Search Linux Wireless

[PATCH] mac80211: enable vif.cab_queue for mesh

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Since mesh powersaving was added, pending bcast/mcast frames may go out the
CAB queue now.  Unfortunately, the queue was only set up for AP mode, so we
would try to tx on the IEEE80211_INVAL_HW_QUEUE.  Allow cab_queue for mesh
interfaces as well.

Fixes the following warning (or crash without MAC80211_VERBOSE_DEBUG):

[ 1888.975315] ------------[ cut here ]------------
[ 1888.975390] WARNING: at net/mac80211/tx.c:1223 __ieee80211_tx+0x162/0x35f [mac80211]()
[ 1888.975397] Hardware name: 3443CTO
[ 1888.975401] Modules linked in: mac80211_hwsim mac80211 cfg80211 vfat fat parport_pc ppdev lp parport rfcomm bnep binfmt_misc uinput nfsd auth_rpcgss nfs_acl nfs lockd fscache sunrpc loop snd_hda_codec_hdmi iTCO_wdt iTCO_vendor_support snd_hda_codec_realtek btusb bluetooth joydev arc4 cdc_ncm coretemp usbnet kvm_intel mii cdc_acm cdc_wdm kvm evdev snd_hda_intel psmouse snd_hda_codec pcspkr serio_raw snd_hwdep snd_pcm thinkpad_acpi snd_page_alloc nvram snd_seq snd_seq_device lpc_ich snd_timer mfd_core i2c_i801 snd i915 ac battery rfkill tpm_tis tpm soundcore tpm_bios ehci_pci ehci_hcd acpi_cpufreq mperf i2c_algo_bit drm_kms_helper drm video wmi button i2c_core processor ext4 crc16 jbd2 mbcache dm_crypt dm_mod sg sd_mod crc_t10dif crc32c_intel ghash_clmulni_intel ahci libahci libata aesni_intel xts aes_x86_64 lrw gf128mul ablk_helper scsi_mod cryptd sdhci_pci sdhci mmc_core xhci_hcd usbcore usb_common thermal thermal_sys [last unloaded: cfg80211]
[ 1888.975671] Pid: 3085, comm: avahi-daemon Tainted: G        W    3.8.0-rc1+ #377
[ 1888.975677] Call Trace:
[ 1888.975701]  [<ffffffff81045c20>] warn_slowpath_common+0x83/0x9c
[ 1888.975715]  [<ffffffff81045c53>] warn_slowpath_null+0x1a/0x1c
[ 1888.975771]  [<ffffffffa083aef0>] __ieee80211_tx+0x162/0x35f [mac80211]
[ 1888.975820]  [<ffffffffa083cb1d>] ieee80211_tx+0xd3/0xf9 [mac80211]
[ 1888.975868]  [<ffffffffa083cc0f>] ieee80211_xmit+0xcc/0xd5 [mac80211]
[ 1888.975914]  [<ffffffffa083db59>] ieee80211_subif_start_xmit+0xc53/0xcd8 [mac80211]
[ 1888.975933]  [<ffffffff81319acd>] dev_hard_start_xmit+0x259/0x3ce
[ 1888.975951]  [<ffffffff81333d6b>] sch_direct_xmit+0x74/0x17d
[ 1888.975967]  [<ffffffff81313759>] ? spin_lock+0x9/0xb
[ 1888.975980]  [<ffffffff8131a0b1>] dev_queue_xmit+0x230/0x414
[ 1888.975995]  [<ffffffff8134877a>] ip_finish_output2+0x348/0x3aa
[ 1888.976008]  [<ffffffff81349029>] ip_finish_output+0x6c/0x71
[ 1888.976020]  [<ffffffff81349046>] NF_HOOK_COND.constprop.44+0x18/0x58
[ 1888.976036]  [<ffffffff8130d2f6>] ? skb_clone+0x8b/0x90
[ 1888.976048]  [<ffffffff8134a03a>] ip_mc_output+0x134/0x13c
[ 1888.976060]  [<ffffffff8134835a>] dst_output+0x18/0x1c
[ 1888.976072]  [<ffffffff81349a24>] ip_local_out+0x20/0x24
[ 1888.976084]  [<ffffffff8134a8cf>] ip_send_skb+0x16/0x3c
[ 1888.976098]  [<ffffffff8136bfba>] udp_send_skb+0x254/0x2b9
[ 1888.976112]  [<ffffffff8136c85e>] udp_sendmsg+0x5a8/0x7d4
[ 1888.976126]  [<ffffffff813483c3>] ? skb_dst_copy.isra.29+0x25/0x25
[ 1888.976139]  [<ffffffff81373e00>] ? rcu_read_unlock+0x44/0x5d
[ 1888.976157]  [<ffffffff81092ef9>] ? lock_release+0x1ab/0x200
[ 1888.976170]  [<ffffffff81373fbf>] inet_sendmsg+0x3f/0x68
[ 1888.976184]  [<ffffffff813022c6>] __sock_sendmsg_nosec+0x25/0x27
[ 1888.976196]  [<ffffffff813049f5>] sock_sendmsg+0x5f/0x80
[ 1888.976211]  [<ffffffff81304c2b>] __sys_sendmsg+0x215/0x2b6
[ 1888.976226]  [<ffffffff8106a423>] ? __srcu_read_unlock+0x4a/0x68
[ 1888.976259]  [<ffffffff8116e2f7>] ? fsnotify+0x499/0x4e4
[ 1888.976283]  [<ffffffff8116deeb>] ? fsnotify+0x8d/0x4e4
[ 1888.976318]  [<ffffffff811507f6>] ? fcheck_files+0x85/0xea
[ 1888.976332]  [<ffffffff81150ebb>] ? fget_light+0x38/0x99
[ 1888.976346]  [<ffffffff81305e20>] sys_sendmsg+0x42/0x60
[ 1888.976364]  [<ffffffff813f4c99>] system_call_fastpath+0x16/0x1b
[ 1888.976373] ---[ end trace 1a356222b0c6ad6a ]---

Signed-off-by: Bob Copeland <bob@xxxxxxxxxxx>
---
 net/mac80211/iface.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c
index 40ff030..16ece80 100644
--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
@@ -294,7 +294,8 @@ static int ieee80211_check_queues(struct ieee80211_sub_if_data *sdata)
 		}
 	}
 
-	if ((sdata->vif.type != NL80211_IFTYPE_AP) ||
+	if ((sdata->vif.type != NL80211_IFTYPE_AP &&
+	     sdata->vif.type != NL80211_IFTYPE_MESH_POINT) ||
 	    !(sdata->local->hw.flags & IEEE80211_HW_QUEUE_CONTROL)) {
 		sdata->vif.cab_queue = IEEE80211_INVAL_HW_QUEUE;
 		return 0;
-- 
1.7.10.4

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux