#18922: eth1 (ag71xx): transmit queue 0 timed out
------------------------+--------------------------------
Reporter: fpv2000@… | Owner: developers
Type: defect | Status: new
Priority: normal | Milestone: Chaos Calmer 15.05
Component: kernel | Version: Trunk
Resolution: | Keywords:
------------------------+--------------------------------
Comment (by anonymous):
Update: the patch in the previous comment wasn't sufficient to solve the
issue, but this *did*:
{{{
diff --git
a/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_main.c
b/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_main.c
index dc77699..28669ef 100644
---
a/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_main.c
+++
b/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_main.c
@@ -489,6 +489,8 @@ static void ag71xx_hw_init(struct ag71xx *ag)
ag71xx_hw_setup(ag);
ag71xx_dma_reset(ag);
+
+ printk("ag71xx_hw_init\n");
}
static void ag71xx_fast_reset(struct ag71xx *ag)
@@ -865,13 +867,19 @@ static void ag71xx_restart_work_func(struct
work_struct *work)
{
struct ag71xx *ag = container_of(work, struct ag71xx,
restart_work);
+#if 0
if (ag71xx_get_pdata(ag)->is_ar724x) {
ag->link = 0;
ag71xx_link_adjust(ag);
return;
}
+#endif
ag71xx_stop(ag->dev);
+
+ if (ag71xx_get_pdata(ag)->is_ar724x)
+ ag71xx_hw_init(ag);
+
ag71xx_open(ag->dev);
}
@@ -914,7 +922,7 @@ static int ag71xx_tx_packets(struct ag71xx *ag)
struct sk_buff *skb = ring->buf[i].skb;
if (!ag71xx_desc_empty(desc)) {
- if (pdata->is_ar7240 &&
+ if (pdata->is_ar724x &&
ag71xx_check_dma_stuck(ag,
ring->buf[i].timestamp))
schedule_work(&ag->restart_work);
break;
}}}
Log snippet:
{{{
[66994.010000] ------------[ cut here ]------------
[66994.010000] WARNING: CPU: 0 PID: 0 at net/sched/sch_generic.c:303
dev_watchdog+0x1d8/0x25c()
[66994.020000] NETDEV WATCHDOG: eth1 (ag71xx): transmit queue 0 timed out
[66994.020000] Modules linked in: ath9k ath9k_common pppoe ppp_async
iptable_nat ath9k_hw ath pppox ppp_generic nf_nat_ipv4 nf_conntrack_ipv6
nf_conntrack_ipv4 mac80211 ipt_REJECT ipt_MASQUERADE cfg80211 xt_time
xt_tcpudp xt_tcpmss xt_statistic xt_state xt_recent xt_nat xt_multiport
xt_mark xt_mac xt_limit xt_length xt_id xt_hl xt_helper xt_ecn xt_dscp
xt_conntrack xt_connmark xt_connlimit xt_connbytes xt_comment xt_TCPMSS
xt_REDIRECT xt_LOG xt_HL xt_DSCP xt_CT xt_CLASSIFY slhc nf_reject_ipv4
nf_nat_masquerade_ipv4 nf_nat_ftp nf_nat nf_log_ipv4 nf_defrag_ipv6
nf_defrag_ipv4 nf_conntrack_rtcache nf_conntrack_ftp nf_conntrack
iptable_raw iptable_mangle iptable_filter ipt_ECN ip_tables crc_ccitt
compat fuse act_ipt em_nbyte sch_teql sch_prio sch_pie sch_codel sch_gred
em_meta sch_htb cls_basic em_text sch_tbf sch_red sch_sfq sch_fq
act_police em_cmp sch_dsmark act_skbedit act_mirred em_u32 cls_u32
cls_tcindex cls_flow cls_route cls_fw sch_hfsc sch_ingress ledtrig_usbdev
ip6t_REJECT nf_reject_ipv6 nf_log_ipv6 nf_log_common ip6table_raw
ip6table_mangle ip6table_filter ip6_tables x_tables ifb zram
lzo_decompress lzo_compress lz4_decompress lz4_compress zsmalloc ipv6 arc4
crypto_blkcipher usb_storage ohci_platform ohci_hcd ehci_platform ehci_hcd
sd_mod scsi_mod gpio_button_hotplug ext4 jbd2 mbcache usbcore nls_base
usb_common crc16 crypto_hash
[66994.140000] CPU: 0 PID: 0 Comm: swapper Not tainted 3.18.23 #1
[66994.150000] Stack : 00000000 00000000 00000000 00000000 803b4292
00000032 00000000 8024d7e8
[66994.150000] 00000001 00000059 80305cd8 8035c9e3 00000000 803b34d0
8035cd18 00000059
[66994.150000] 803b3918 00000001 00000004 800a35cc 00000003 800803bc
0000012f 00000059
[66994.150000] 803092d0 80357c6c 00000000 00000000 00000000 00000000
00000000 00000000
[66994.150000] 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000
[66994.150000] ...
[66994.190000] Call Trace:
[66994.190000] [<80070fe0>] show_stack+0x50/0x84
[66994.190000] [<800804c4>] warn_slowpath_common+0x84/0xb4
[66994.200000] [<80080520>] warn_slowpath_fmt+0x2c/0x38
[66994.200000] [<8024d7e8>] dev_watchdog+0x1d8/0x25c
[66994.210000] [<800ab068>] call_timer_fn.isra.38+0x24/0x84
[66994.210000] [<800ab880>] run_timer_softirq+0x1bc/0x1f8
[66994.220000] [<800829c4>] __do_softirq+0xf8/0x230
[66994.220000] [<80082d30>] irq_exit+0x54/0x70
[66994.230000] [<80060830>] ret_from_irq+0x0/0x4
[66994.230000] [<80060a80>] __r4k_wait+0x20/0x40
[66994.240000] [<8009f564>] cpu_startup_entry+0xf0/0x13c
[66994.240000] [<80375b5c>] start_kernel+0x42c/0x444
[66994.250000]
[66994.250000] ---[ end trace 46214145c634dfe5 ]---
[66994.250000] eth1: tx timeout
[66994.260000] eth1: link down
[66994.940000] ag71xx_hw_init
[66997.650000] eth1: link up (100Mbps/Half duplex)
}}}
With the above patch, a tx timeout triggered while I was simultaneously
downloading via bittorrent *and* via http, and the http download was not
interrupted during recovery from the timeout event.
I'll try another build that only disables that same code block in the
ag71xx_restart_work_func, as I'm not sure if it was the ag71xx_hw_init
addition that was the reason for the successful recovery. This may take
some time, as it took a *long time* to trigger the bug.
--
Ticket URL: <https://dev.openwrt.org/ticket/18922#comment:3>
OpenWrt <http://openwrt.org>
Opensource Wireless Router Technology
_______________________________________________
openwrt-tickets mailing list
[email protected]
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-tickets