Message ID | 20171213152017.GA3554@redhat.com (mailing list archive) |
---|---|
State | RFC |
Delegated to: | Kalle Valo |
Headers | show |
Hello! I tested the Archer MR200 device removing the patch as you suggested: package/kernel/mac80211/patches/600-23-rt2x00-rt2800mmio-add-a-workaround-for-spurious-TX_F.patch ... the error still appears, but the driver is still working as of now. Here - reporting my dmesg [ 819.060392] ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 [ 819.069900] ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 [ 819.079369] ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 [ 819.088823] ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 [ 819.098277] ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 [ 819.107729] ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 [ 819.117174] ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 [ 819.126627] ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 [ 819.136080] ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 [ 819.145533] ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 [ 819.154987] ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 [ 819.164441] ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 [ 819.173890] ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 [ 819.183336] ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 [ 819.192782] ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 [ 819.202200] ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 [ 819.211644] ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 [ 819.221090] ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 [ 819.230537] ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 [ 819.239983] ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 [ 819.249430] ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 To cause it, it seems a good technique to use a device as far as possible from the AP, but not enough to disconnect / stop working. A reauthentication may be required to use the AP again, Sat Dec 16 17:59:01 2017 daemon.info hostapd: wlan0: STA xx:xx:xx:xx:xx:xx IEEE 802.11: authenticated Sat Dec 16 17:59:01 2017 daemon.info hostapd: wlan0: STA xx:xx:xx:xx:xx:xx IEEE 802.11: associated (aid 1) Sat Dec 16 17:59:01 2017 daemon.notice hostapd: wlan0: AP-STA-CONNECTED xx:xx:xx:xx:xx:xx Sat Dec 16 17:59:01 2017 daemon.info hostapd: wlan0: STA xx:xx:xx:xx:xx:xx WPA: pairwise key handshake completed (RSN) Sat Dec 16 18:04:20 2017 kern.err kernel: [ 819.060392] ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 Sat Dec 16 18:04:20 2017 kern.err kernel: [ 819.069900] ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 Sat Dec 16 18:04:20 2017 kern.err kernel: [ 819.079369] ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 Sat Dec 16 18:04:20 2017 kern.err kernel: [ 819.088823] ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 Sat Dec 16 18:04:20 2017 kern.err kernel: [ 819.098277] ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 Sat Dec 16 18:04:20 2017 kern.err kernel: [ 819.107729] ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 Sat Dec 16 18:04:20 2017 kern.err kernel: [ 819.117174] ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 Sat Dec 16 18:04:20 2017 kern.err kernel: [ 819.126627] ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 Sat Dec 16 18:04:20 2017 kern.err kernel: [ 819.136080] ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 Sat Dec 16 18:04:20 2017 kern.err kernel: [ 819.145533] ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 Sat Dec 16 18:04:20 2017 kern.err kernel: [ 819.154987] ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 Sat Dec 16 18:04:20 2017 kern.err kernel: [ 819.164441] ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 Sat Dec 16 18:04:20 2017 kern.err kernel: [ 819.173890] ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 Sat Dec 16 18:04:20 2017 kern.err kernel: [ 819.183336] ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 Sat Dec 16 18:04:20 2017 kern.err kernel: [ 819.192782] ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 Sat Dec 16 18:04:20 2017 kern.err kernel: [ 819.202200] ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 Sat Dec 16 18:04:20 2017 kern.err kernel: [ 819.211644] ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 Sat Dec 16 18:04:20 2017 kern.err kernel: [ 819.221090] ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 Sat Dec 16 18:04:20 2017 kern.err kernel: [ 819.230537] ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 Sat Dec 16 18:04:20 2017 kern.err kernel: [ 819.239983] ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 Sat Dec 16 18:04:20 2017 kern.err kernel: [ 819.249430] ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 Sat Dec 16 18:11:11 2017 daemon.info hostapd: wlan0: STA x2:x2:x2:x2:x2:x2 IEEE 802.11: authenticated Sat Dec 16 18:11:11 2017 daemon.info hostapd: wlan0: STA x2:x2:x2:x2:x2:x2 IEEE 802.11: associated (aid 2) Sat Dec 16 18:11:11 2017 daemon.notice hostapd: wlan0: AP-STA-CONNECTED x2:x2:x2:x2:x2:x2 Sat Dec 16 18:11:11 2017 daemon.info hostapd: wlan0: STA x2:x2:x2:x2:x2:x2 WPA: pairwise key handshake completed (RSN) Sat Dec 16 18:18:43 2017 daemon.notice hostapd: wlan0: AP-STA-DISCONNECTED x2:x2:x2:x2:x2:x2 Sat Dec 16 18:18:43 2017 daemon.info hostapd: wlan0: STA x2:x2:x2:x2:x2:x2 IEEE 802.11: disassociated due to inactivity Sat Dec 16 18:18:44 2017 daemon.info hostapd: wlan0: STA x2:x2:x2:x2:x2:x2 IEEE 802.11: deauthenticated due to inactivity (timer DEAUTH/REMOVE) Sat Dec 16 18:19:03 2017 daemon.notice hostapd: wlan0: AP-STA-DISCONNECTED xx:xx:xx:xx:xx:xx Sat Dec 16 18:19:03 2017 daemon.info hostapd: wlan0: STA xx:xx:xx:xx:xx:xx IEEE 802.11: disassociated due to inactivity Sat Dec 16 18:19:04 2017 daemon.info hostapd: wlan0: STA xx:xx:xx:xx:xx:xx IEEE 802.11: deauthenticated due to inactivity (timer DEAUTH/REMOVE) Sat Dec 16 19:16:03 2017 daemon.info hostapd: wlan0: STA xx:xx:xx:xx:xx:xx IEEE 802.11: authenticated Sat Dec 16 19:16:03 2017 daemon.info hostapd: wlan0: STA xx:xx:xx:xx:xx:xx IEEE 802.11: associated (aid 1) Sat Dec 16 19:16:03 2017 daemon.notice hostapd: wlan0: AP-STA-CONNECTED xx:xx:xx:xx:xx:xx Sat Dec 16 19:16:03 2017 daemon.info hostapd: wlan0: STA xx:xx:xx:xx:xx:xx WPA: pairwise key handshake completed (RSN) where the xx:xx... mac is an iPhone SE, the x2:x2... is an Android device. thank you very much for the help and all. For the moment I am not sure about the situation still, so I think further testing would be needed. Hoping someone experiencing this problem can come up and give some more hints / tests on different hw. Thank you to all, Enrico On Wed, 13 Dec 2017, Stanislaw Gruszka wrote: > Date: Wed, 13 Dec 2017 16:20:18 > From: Stanislaw Gruszka <sgruszka@redhat.com> > To: Enrico Mioso <mrkiko.rs@gmail.com> > Cc: linux-wireless@vger.kernel.org, Johannes Berg <johannes.berg@intel.com>, > Daniel Golle <daniel@makrotopia.org>, Arnd Bergmann <arnd@arndb.de>, > John Crispin <john@phrozen.org>, nbd@nbd.name > Subject: Re: ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping > frame due to full tx queue...? > > On Mon, Dec 11, 2017 at 09:51:29PM +0100, Enrico Mioso wrote: >> Hello guys, and sorry for the big CC list. >> I would like to point out about a bug who survived for years - at least from 2015 until now, regarding the Ralink driver getting stuck, and in some cases not being able to recover. >> The problem manifested with an MT7620A chip, and the wireless card inside the WL-330N3G device. >> The error message is in rt2x00/rt2x00queue.c . >> >> This bug was discussed, and a patch proposed, in this thread: >> https://lists.openwrt.org/pipermail/openwrt-devel/2015-September/thread.html#35778 >> >> I would like to help if possible - I have the have both an Archer MR200, and the WL330n3G hardware. >> BTW, the Archer MR200 is a nice MT7610 device, and the problem manifests itself, see: >> https://forum.openwrt.org/viewtopic.php?id=64293&p=6 >> >> Any help, hint, anything would be apreciated. >> thank you to all. > > First I would try to remove this patch: > http://git.lede-project.org/?p=source.git;a=blob;f=package/kernel/mac80211/patches/600-23-rt2x00-rt2800mmio-add-a-workaround-for-spurious-TX_F.patch > and see if it makes things better. However I think for the stuck problem > we need tx status timeout mechanism similar like for rt2800usb. > > Attached patch can mitigate "Dropping frame due to full tx queue" > errors. I did not test it, so it can be totally broken. > > Regards > Stanislaw >
Ok, observing a stall. Unfortunately, it still happens. Ufh... dmesg: may I do something else? Linux version 4.9.70 (mrkiko@gatosaldo) (gcc version 5.5.0 (OpenWrt GCC 5.5.0 r5616-67c1c145f0) ) #0 Sun Dec 24 16:06:16 2017 SoC Type: Ralink RT3350 id:1 rev:2 bootconsole [early0] enabled CPU0 revision is: 0001964c (MIPS 24KEc) MIPS: machine is Asus WL-330N3G Determined physical RAM map: memory: 02000000 @ 00000000 (usable) Initrd not found or empty - disabling initrd Primary instruction cache 32kB, VIPT, 4-way, linesize 32 bytes. Primary data cache 16kB, 4-way, VIPT, no aliases, linesize 32 bytes Zone ranges: Normal [mem 0x0000000000000000-0x0000000001ffffff] Movable zone start for each node Early memory node ranges node 0: [mem 0x0000000000000000-0x0000000001ffffff] Initmem setup node 0 [mem 0x0000000000000000-0x0000000001ffffff] On node 0 totalpages: 8192 free_area_init_node: node 0, pgdat 8037e834, node_mem_map 81000020 Normal zone: 64 pages used for memmap Normal zone: 0 pages reserved Normal zone: 8192 pages, LIFO batch:0 pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768 pcpu-alloc: [0] 0 Built 1 zonelists in Zone order, mobility grouping on. Total pages: 8128 Kernel command line: console=ttyS0,57600 rootfstype=squashfs,jffs2 PID hash table entries: 128 (order: -3, 512 bytes) Dentry cache hash table entries: 4096 (order: 2, 16384 bytes) Inode-cache hash table entries: 2048 (order: 1, 8192 bytes) Writing ErrCtl register=0003c00b Readback ErrCtl register=0003c00b Memory: 28436K/32768K available (3061K kernel code, 147K rwdata, 372K rodata, 188K init, 200K bss, 4332K reserved, 0K cma-reserved) SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 NR_IRQS:256 CPU Clock: 320MHz clocksource_probe: no matching clocksources found clocksource: MIPS: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 11945377789 ns sched_clock: 32 bits at 160MHz, resolution 6ns, wraps every 13421772796ns Calibrating delay loop... 212.58 BogoMIPS (lpj=1062912) pid_max: default: 32768 minimum: 301 Mount-cache hash table entries: 1024 (order: 0, 4096 bytes) Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes) clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns futex hash table entries: 256 (order: -1, 3072 bytes) pinctrl core: initialized pinctrl subsystem NET: Registered protocol family 16 Can't analyze schedule() prologue at 802f97f0 rt2880_gpio 10000600.gpio: registering 24 gpios rt2880_gpio 10000600.gpio: registering 24 irq handlers clocksource: Switched to clocksource MIPS NET: Registered protocol family 2 TCP established hash table entries: 1024 (order: 0, 4096 bytes) TCP bind hash table entries: 1024 (order: 0, 4096 bytes) TCP: Hash tables configured (established 1024 bind 1024) UDP hash table entries: 256 (order: 0, 4096 bytes) UDP-Lite hash table entries: 256 (order: 0, 4096 bytes) NET: Registered protocol family 1 rt-timer 10000100.timer: maximum frequency is 3255Hz workingset: timestamp_bits=30 max_order=13 bucket_order=0 squashfs: version 4.0 (2009/01/31) Phillip Lougher jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc. io scheduler noop registered io scheduler deadline registered (default) Serial: 8250/16550 driver, 2 ports, IRQ sharing disabled console [ttyS0] disabled 10000c00.uartlite: ttyS0 at MMIO 0x10000c00 (irq = 20, base_baud = 6666666) is a Palmchip BK-3103 console [ttyS0] enabled bootconsole [early0] disabled spi spi0.0: force spi mode3 m25p80 spi0.0: w25q32 (4096 Kbytes) 4 ofpart partitions found on MTD device spi0.0 Creating 4 MTD partitions on "spi0.0": 0x000000000000-0x000000030000 : "u-boot" 0x000000030000-0x000000040000 : "u-boot-env" 0x000000040000-0x000000050000 : "factory" 0x000000050000-0x000000400000 : "firmware" 2 uimage-fw partitions found on MTD device firmware 0x000000050000-0x0000001758ed : "kernel" 0x0000001758ed-0x000000400000 : "rootfs" mtd: device 5 (rootfs) set to be root filesystem 1 squashfs-split partitions found on MTD device rootfs 0x00000032c000-0x000000400000 : "rootfs_data" libphy: Fixed MDIO Bus: probed rt3050-esw 10110000.esw: link changed 0x10 mtk_soc_eth 10100000.ethernet eth0: mediatek frame engine at 0xb0100000, irq 5 rt2880_wdt 10000120.watchdog: Initialized NET: Registered protocol family 10 NET: Registered protocol family 17 8021q: 802.1Q VLAN Support v1.8 VFS: Mounted root (squashfs filesystem) readonly on device 31:5. Freeing unused kernel memory: 188K This architecture does not have kernel memory protection. random: fast init done init: Console is alive init: - watchdog - kmodloader: loading kernel modules from /etc/modules-boot.d/* usbcore: registered new interface driver usbfs usbcore: registered new interface driver hub usbcore: registered new device driver usb dwc2 101c0000.otg: Configuration mismatch. dr_mode forced to host dwc2 101c0000.otg: DWC OTG Controller dwc2 101c0000.otg: new USB bus registered, assigned bus number 1 dwc2 101c0000.otg: irq 26, io mem 0x00000000 hub 1-0:1.0: USB hub found hub 1-0:1.0: 1 port detected kmodloader: done loading kernel modules from /etc/modules-boot.d/* init: - preinit - 8021q: adding VLAN 0 to HW filter on device eth0 jffs2: notice: (311) jffs2_build_xattr_subsystem: complete building xattr subsystem, 0 of xdatum (0 unchecked, 0 orphan) and 0 of xref (0 dead, 0 orphan) found. mount_root: switching to jffs2 overlay urandom-seed: Seeding with /etc/urandom.seed procd: - early - procd: - watchdog - procd: - watchdog - procd: - ubus - procd: - init - kmodloader: loading kernel modules from /etc/modules.d/* ip6_tables: (C) 2000-2006 Netfilter Core Team Loading modules backported from Linux version wt-2017-11-01-0-gfe248fc2c180 Backport generated by backports.git v4.14-rc2-1-31-g86cf0e5d ip_tables: (C) 2000-2006 Netfilter Core Team nf_conntrack version 0.5.0 (1024 buckets, 4096 max) xt_time: kernel timezone is -0000 rt2800_wmac 10180000.wmac: loaded eeprom from mtd device "factory" ieee80211 phy0: rt2x00_set_rt: Info - RT chipset 2872, rev 0200 detected ieee80211 phy0: rt2x00_set_rf: Info - RF chipset 0005 detected ieee80211 phy0: Selected rate control algorithm 'minstrel_ht' kmodloader: done loading kernel modules from /etc/modules.d/* 8021q: adding VLAN 0 to HW filter on device eth0 br-lan: port 1(eth0.1) entered blocking state br-lan: port 1(eth0.1) entered disabled state device eth0.1 entered promiscuous mode device eth0 entered promiscuous mode br-lan: port 1(eth0.1) entered blocking state br-lan: port 1(eth0.1) entered forwarding state IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready br-lan: port 2(wlan0) entered blocking state br-lan: port 2(wlan0) entered disabled state device wlan0 entered promiscuous mode IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready br-lan: port 2(wlan0) entered blocking state br-lan: port 2(wlan0) entered forwarding state random: crng init done rt3050-esw 10110000.esw: link changed 0x00 rt3050-esw 10110000.esw: link changed 0x10 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2 ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2
On Tue, Dec 26, 2017 at 06:20:22PM +0100, Enrico Mioso wrote: > Ok, observing a stall. Unfortunately, it still happens. <snip> > rt2800_wmac 10180000.wmac: loaded eeprom from mtd device "factory" > ieee80211 phy0: rt2x00_set_rt: Info - RT chipset 2872, rev 0200 detected > ieee80211 phy0: rt2x00_set_rf: Info - RF chipset 0005 detected Is possible that this is the FW problem for this particular RT2872 device or we do not correctly program registers for it. I think the issue is that at some point HW/FW is not capable to sent frames and do not report to driver failure of sending frames, hence driver queue can not be moved forward. The solution to this will be timeout mechanism for TX, similar like for rt2800usb, however this will require substantial rt2800pci/mmio driver rewrite. I'm going to look at this, but not sure when. Cheers Stanislaw
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00mac.c b/drivers/net/wireless/ralink/rt2x00/rt2x00mac.c index ecc96312a370..c8a6f163102f 100644 --- a/drivers/net/wireless/ralink/rt2x00/rt2x00mac.c +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00mac.c @@ -152,16 +152,6 @@ void rt2x00mac_tx(struct ieee80211_hw *hw, if (unlikely(rt2x00queue_write_tx_frame(queue, skb, control->sta, false))) goto exit_fail; - /* - * Pausing queue has to be serialized with rt2x00lib_txdone(). Note - * we should not use spin_lock_bh variant as bottom halve was already - * disabled before ieee80211_xmit() call. - */ - spin_lock(&queue->tx_lock); - if (rt2x00queue_threshold(queue)) - rt2x00queue_pause_queue(queue); - spin_unlock(&queue->tx_lock); - return; exit_fail: diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c index a2c1ca5c76d1..39d523bbb661 100644 --- a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c @@ -714,6 +714,13 @@ int rt2x00queue_write_tx_frame(struct data_queue *queue, struct sk_buff *skb, rt2x00queue_write_tx_descriptor(entry, &txdesc); rt2x00queue_kick_tx_queue(queue, &txdesc); + /* + * Pausing queue has to be serialized with rt2x00lib_txdone(), so we + * do this under queue->tx_lock. Bottom halve was already disabled + * before ieee80211_xmit() call. + */ + if (rt2x00queue_threshold(queue)) + rt2x00queue_pause_queue(queue); out: spin_unlock(&queue->tx_lock); return ret;