#17839: Reboot command causes sometimes hanging router with TL-WDR3600 (HW V1.5)
and TL-WDR4300 (HW V1.7)
--------------------------+-----------------------------------
Reporter: michaeluray | Owner: developers
Type: defect | Status: new
Priority: high | Milestone: Barrier Breaker 14.07
Component: base system | Version: Barrier Breaker 14.07
Resolution: | Keywords: reboot
--------------------------+-----------------------------------
Comment (by michaeluray):
I did a couple test and at the end I just added an endless loop when the
FULL_CHIP_RESET bit gets set.
{{{
#!c
if (mask == AR71XX_RESET_FULL_CHIP)
for (;;);
}}}
The reboot works well with this solution.
File: build_dir/target-mips_34kc_uClibc-0.9.33.2/linux-
ar71xx_generic/linux-3.10.49/arch/mips/ath79/common.c
{{{
#!c
void ath79_device_reset_set(u32 mask)
{
unsigned long flags;
u32 reg;
u32 t;
if (soc_is_ar71xx())
reg = AR71XX_RESET_REG_RESET_MODULE;
else if (soc_is_ar724x())
reg = AR724X_RESET_REG_RESET_MODULE;
else if (soc_is_ar913x())
reg = AR913X_RESET_REG_RESET_MODULE;
else if (soc_is_ar933x())
reg = AR933X_RESET_REG_RESET_MODULE;
else if (soc_is_ar934x())
reg = AR934X_RESET_REG_RESET_MODULE;
else if (soc_is_qca953x())
reg = QCA953X_RESET_REG_RESET_MODULE;
else if (soc_is_qca955x())
reg = QCA955X_RESET_REG_RESET_MODULE;
else
panic("Reset register not defined for this SOC");
spin_lock_irqsave(&ath79_device_reset_lock, flags);
t = ath79_reset_rr(reg);
ath79_reset_wr(reg, t | mask);
if (mask == AR71XX_RESET_FULL_CHIP)
for (;;);
spin_unlock_irqrestore(&ath79_device_reset_lock, flags);
}
}}}
I uploaded the compiled BB version with the reset fix to our web server.
If someone wants to test this with his device, then you can download it by
the following links:
http://www.ctb.co.at/download/OpenWRT/14.07-rf/ar71xx/generic/openwrt-
ar71xx-generic-tl-wdr3600-v1-squashfs-factory.bin
http://www.ctb.co.at/download/OpenWRT/14.07-rf/ar71xx/generic/openwrt-
ar71xx-generic-tl-wdr3600-v1-squashfs-sysupgrade.bin
http://www.ctb.co.at/download/OpenWRT/14.07-rf/ar71xx/generic/openwrt-
ar71xx-generic-tl-wdr4300-v1-squashfs-factory.bin
http://www.ctb.co.at/download/OpenWRT/14.07-rf/ar71xx/generic/openwrt-
ar71xx-generic-tl-wdr4300-v1-squashfs-sysupgrade.bin
What are the next steps here and what is the right way to get this fix
into the OpenWRT system or into the Linux kernel?
--
Ticket URL: <https://dev.openwrt.org/ticket/17839#comment:58>
OpenWrt <http://openwrt.org>
Opensource Wireless Router Technology
_______________________________________________
openwrt-tickets mailing list
[email protected]
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-tickets