<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://docs.opennet-initiative.de/index.php?action=history&amp;feed=atom&amp;title=Benutzer%3ALeo%2Feth0-bug-analyse</id>
	<title>Benutzer:Leo/eth0-bug-analyse - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://docs.opennet-initiative.de/index.php?action=history&amp;feed=atom&amp;title=Benutzer%3ALeo%2Feth0-bug-analyse"/>
	<link rel="alternate" type="text/html" href="https://docs.opennet-initiative.de/index.php?title=Benutzer:Leo/eth0-bug-analyse&amp;action=history"/>
	<updated>2026-10-07T03:41:27Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Opennet</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://docs.opennet-initiative.de/index.php?title=Benutzer:Leo/eth0-bug-analyse&amp;diff=28699&amp;oldid=prev</id>
		<title>Leo: Die Seite wurde neu angelegt: „ linux-ar71xx_generic/linux-3.10.49/drivers/net/ethernet/atheros/ag71xx/ag71xx_main.c   &lt;pre&gt; AR9342 - Ist der SoC der Loco XWs  AR8030 - PHY chip - - http://q…“</title>
		<link rel="alternate" type="text/html" href="https://docs.opennet-initiative.de/index.php?title=Benutzer:Leo/eth0-bug-analyse&amp;diff=28699&amp;oldid=prev"/>
		<updated>2016-06-05T18:58:55Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „ linux-ar71xx_generic/linux-3.10.49/drivers/net/ethernet/atheros/ag71xx/ag71xx_main.c   &amp;lt;pre&amp;gt; AR9342 - Ist der SoC der Loco XWs  AR8030 - PHY chip - - http://q…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
linux-ar71xx_generic/linux-3.10.49/drivers/net/ethernet/atheros/ag71xx/ag71xx_main.c&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
AR9342 - Ist der SoC der Loco XWs&lt;br /&gt;
&lt;br /&gt;
AR8030 - PHY chip - - http://qca.qualcomm.com/wp-content/uploads/2013/11/AR8030.pdf&lt;br /&gt;
&lt;br /&gt;
AG71XX - ethernet driver  &lt;br /&gt;
 &lt;br /&gt;
AR7240 SoC - Woi kommt das her?&lt;br /&gt;
&lt;br /&gt;
Wo wird UP/DOWN von Ethernet behandelt?&lt;br /&gt;
ag71xx_main.c&lt;br /&gt;
- ag71xx_fast_reset()&lt;br /&gt;
- ag71xx_link_adjust()&lt;br /&gt;
    hier wird auch fast_reset aufgerufen&lt;br /&gt;
&lt;br /&gt;
ag71xx_phy.c - Was machen Funktionen?&lt;br /&gt;
- ag71xx_phy_link_adjust()&lt;br /&gt;
    ruft auch ag71xx_link_adjust() auf&lt;br /&gt;
- ag71xx_phy_connect()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Implementierung:&lt;br /&gt;
in  ag71xx_phy.c    (detecktiere von UP zu DOWN)&lt;br /&gt;
+       if (status_change) {&lt;br /&gt;
+           pr_info(&amp;quot;Debug: phy state change. ag-&amp;gt;link=%d \n&amp;quot;, ag-&amp;gt;link);&lt;br /&gt;
+           pr_info(&amp;quot;Debug: phy state change. phydev-&amp;gt;link=%d \n &amp;quot;, phydev-&amp;gt;link);&lt;br /&gt;
                if ()&lt;br /&gt;
                ag71xx_link_adjust(ag); &lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
------- &lt;br /&gt;
und in ag71xx_main.c&lt;br /&gt;
+#include &amp;lt;linux/of_gpio.h&amp;gt;&lt;br /&gt;
+#include &amp;lt;linux/gpio.h&amp;gt;&lt;br /&gt;
+#define GPIO_SET                              0x1804000C&lt;br /&gt;
+#define GPIO_CLEAR                            0x18040010&lt;br /&gt;
&lt;br /&gt;
void ag71xx_link_adjust()&lt;br /&gt;
...&lt;br /&gt;
if (!ag-&amp;gt;link) {&lt;br /&gt;
&lt;br /&gt;
    ag71xx_hw_stop(ag);&lt;br /&gt;
&lt;br /&gt;
    netif_carrier_off(ag-&amp;gt;dev);&lt;br /&gt;
&lt;br /&gt;
    -+if (netif_msg_link(ag)) {&lt;br /&gt;
&lt;br /&gt;
    pr_info(&amp;quot;%s: link down\n&amp;quot;, ag-&amp;gt;dev-&amp;gt;name);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    +pr_info(&amp;quot;AR803x PHY hangs? Reset it now! Interface maybe down but should not be in defect state ...\n&amp;quot;);    &lt;br /&gt;
&lt;br /&gt;
    +gpiod_set_value(GPIO_CLEAR, (1&amp;lt;&amp;lt;0));&lt;br /&gt;
&lt;br /&gt;
    +msleep(2);&lt;br /&gt;
&lt;br /&gt;
    +gpiod_set_value(GPIO_SET, (1&amp;lt;&amp;lt;0));&lt;br /&gt;
&lt;br /&gt;
    +msleep(2);&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return;&lt;br /&gt;
&lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
Was muss implementiert werden? (allgemein)&lt;br /&gt;
https://dev.openwrt.org/ticket/19085#comment:14&lt;br /&gt;
&lt;br /&gt;
Checken wie folgendes realisiert werden kann (Interface reset)  &lt;br /&gt;
    #define GPIO_SET                              0x1804000C&lt;br /&gt;
    #define GPIO_CLEAR                            0x18040010&lt;br /&gt;
    &lt;br /&gt;
    athr_reg_wr(GPIO_CLEAR,(1&amp;lt;&amp;lt;0));&lt;br /&gt;
    mdelay(2);&lt;br /&gt;
    athr_reg_wr(GPIO_SET,(1&amp;lt;&amp;lt;0));&lt;br /&gt;
    mdelay(2);&lt;br /&gt;
----------&lt;br /&gt;
von http://permalink.gmane.org/gmane.linux.network/318765&lt;br /&gt;
&lt;br /&gt;
+#include &amp;lt;linux/of_gpio.h&amp;gt;&lt;br /&gt;
+#include &amp;lt;linux/gpio/consumer.h&amp;gt;&lt;br /&gt;
+static void at803x_adjust_state(struct phy_device *phydev)&lt;br /&gt;
+{&lt;br /&gt;
+        struct at803x_priv *priv = phydev-&amp;gt;priv;&lt;br /&gt;
+        if (phydev-&amp;gt;drv-&amp;gt;phy_id == ATH8030_PHY_ID) {&lt;br /&gt;
+                if (phydev-&amp;gt;state == PHY_NOLINK) {&lt;br /&gt;
+                        if (priv-&amp;gt;gpiod_reset &amp;amp;&amp;amp; !priv-&amp;gt;phy_reset) {&lt;br /&gt;
+                                struct at803x_context context;&lt;br /&gt;
+&lt;br /&gt;
+                                at803x_context_save(phydev, &amp;amp;context);&lt;br /&gt;
+&lt;br /&gt;
+                                gpiod_set_value(priv-&amp;gt;gpiod_reset, 0);&lt;br /&gt;
+                                msleep(1);&lt;br /&gt;
+                                gpiod_set_value(priv-&amp;gt;gpiod_reset, 1);&lt;br /&gt;
+                                msleep(1);&lt;br /&gt;
+&lt;br /&gt;
+                                at803x_context_restore(phydev, &amp;amp;context);&lt;br /&gt;
+&lt;br /&gt;
+                                dev_dbg(&amp;amp;phydev-&amp;gt;dev, &amp;quot;%s(): phy was reset\n&amp;quot;,&lt;br /&gt;
+                                        __func__);&lt;br /&gt;
+                                priv-&amp;gt;phy_reset = true;&lt;br /&gt;
+                        }&lt;br /&gt;
+                } else {&lt;br /&gt;
+                        priv-&amp;gt;phy_reset = false;&lt;br /&gt;
+                }&lt;br /&gt;
+        }&lt;br /&gt;
&lt;br /&gt;
===============&lt;br /&gt;
&lt;br /&gt;
enum phy_state {                                                                                                        &lt;br /&gt;
        PHY_DOWN=0,                                                                                                     &lt;br /&gt;
        PHY_STARTING,                                                                                                   &lt;br /&gt;
        PHY_READY,                                                                                                      &lt;br /&gt;
        PHY_PENDING,                                                                                                    &lt;br /&gt;
        PHY_UP,                                                                                                         &lt;br /&gt;
        PHY_AN,                                                                                                         &lt;br /&gt;
        PHY_RUNNING,                                                                                                    &lt;br /&gt;
        PHY_NOLINK,                                                                                                     &lt;br /&gt;
        PHY_FORCING,                                                                                                    &lt;br /&gt;
        PHY_CHANGELINK,                                                                                                 &lt;br /&gt;
        PHY_HALTED,                                                                                                     &lt;br /&gt;
        PHY_RESUMING                                                                                                    &lt;br /&gt;
};  &lt;br /&gt;
&lt;br /&gt;
===========================&lt;br /&gt;
Log nach Anwendung des obigen Patches, zeigt leider zwei Dinge:&lt;br /&gt;
    1. Schwenk von UP zu DOWN wurde nicht erkannt.&lt;br /&gt;
    2. Einfach so GPIO zu schreiben, bringt Kernelfehler (naja, war fast zu erwarten. Aber es war einen Versuch wert)&lt;br /&gt;
&lt;br /&gt;
Log nach dem normalen Booten:    &lt;br /&gt;
    root@AP-2-30:~# dmesg | grep -i phy&lt;br /&gt;
[    0.000000] Determined physical RAM map:&lt;br /&gt;
[    0.600000] libphy: ag71xx_mdio: probed&lt;br /&gt;
[    1.150000] ag71xx ag71xx.0: connected to PHY at ag71xx-mdio.0:01 [uid=004dd023, driver=Generic PHY]&lt;br /&gt;
[    6.170000] Debug: phy state change. ag-&amp;gt;link=1 (Opennet 4)&lt;br /&gt;
[    6.170000] Debug: phy state change. phydev-&amp;gt;link=1 (Opennet 4)&lt;br /&gt;
[   21.730000] AR803x PHY hangs? Reset it now! Interface maybe down but should not be in defect state ...(Opennet Hack4)&lt;br /&gt;
[   21.730000] [&amp;lt;800b4bfc&amp;gt;] ag71xx_phy_stop+0x78/0x9c&lt;br /&gt;
[   21.990000] [&amp;lt;800b4bfc&amp;gt;] ag71xx_phy_stop+0x78/0x9c&lt;br /&gt;
[   25.570000] ieee80211 phy0: Selected rate control algorithm &amp;#039;minstrel_ht&amp;#039;&lt;br /&gt;
[   25.650000] ieee80211 phy0: Atheros AR9340 Rev:0 mem=0xb8100000, irq=47&lt;br /&gt;
[   43.430000] Debug: phy state change. ag-&amp;gt;link=1 (Opennet 4)&lt;br /&gt;
[   43.430000] Debug: phy state change. phydev-&amp;gt;link=1 (Opennet 4)&lt;br /&gt;
&lt;br /&gt;
[69453.360000] Debug: phy state change. ag-&amp;gt;link=1 (Opennet 4)&lt;br /&gt;
[69453.360000] Debug: phy state change. phydev-&amp;gt;link=1 (Opennet 4)&lt;br /&gt;
[69453.360000]  &lt;br /&gt;
[69453.360000] eth0: link up (10Mbps/Half duplex)&lt;br /&gt;
[69455.370000] Debug: phy state change. ag-&amp;gt;link=0 (Opennet 4)&lt;br /&gt;
[69455.370000] Debug: phy state change. phydev-&amp;gt;link=0 (Opennet 4)&lt;br /&gt;
[69455.370000]  &lt;br /&gt;
[69455.370000] eth0: link down&lt;br /&gt;
[69455.370000] AR803x PHY hangs? Reset it now! Interface maybe down but should not be in defect state ...(Opennet Hack4)&lt;br /&gt;
[69455.370000] ------------[ cut here ]------------&lt;br /&gt;
[69455.370000] WARNING: at drivers/gpio/gpiolib.c:126 gpio_to_desc+0x2c/0x54()&lt;br /&gt;
[69455.370000] invalid GPIO 402915344&lt;br /&gt;
[69455.370000] Modules linked in: ath9k ath9k_common pppoe ppp_async iptable_nat ath9k_hw ath pptp pppox ppp_mppe ppp_generic nf_nat_ipv4 nf_conntrack_ipv4 mac80211 ipt_MASQUERADE cfg80211 xt_time xt_tcpudp xt_state xt_nat xt_multiport xt_mark xt_mac xt_limit xt_id xt_conntrack xt_comment xt_TCPMSS xt_REDIRECT xt_LOG xt_CT slhc nf_nat_irc nf_nat_ftp nf_nat nf_defrag_ipv4 nf_conntrack_irc nf_conntrack_ftp iptable_raw iptable_mangle iptable_filter ipt_REJECT ip_tables crc_ccitt compat ip6t_REJECT ip6table_raw ip6table_mangle ip6table_filter ip6_tables x_tables nf_conntrack_ipv6 nf_conntrack nf_defrag_ipv6 ip_gre gre ip_tunnel tun ipv6 sha1_generic ecb arc4 crypto_blkcipher crypto_hash&lt;br /&gt;
[69455.370000] CPU: 0 PID: 232 Comm: kworker/0:2 Tainted: G        W    3.10.49 #4&lt;br /&gt;
[69455.370000] Workqueue: events phy_state_machine&lt;br /&gt;
[69455.370000] Stack : 839da380 802d4c44 80148110 0000007e 802e4278 83926c00 83926d74 8030f8b0&lt;br /&gt;
[69455.370000]           00000008 8027b720 000000e8 801e38ac 83904a08 83926c00 802e2250 83aa7ce4&lt;br /&gt;
[69455.370000]           83aa7ce4 8027b720 00000003 801e33d0 802e4278 00000000 00000005 802144b0&lt;br /&gt;
[69455.370000]           00000000 00000000 00000000 00000000 00000000 00000000 6576656e 74730000&lt;br /&gt;
[69455.370000]           00000000 00000000 00000000 00000000 83816a00 81082300 801da094 83aa7c90&lt;br /&gt;
[69455.370000]           ...&lt;br /&gt;
[69455.370000] Call Trace:&lt;br /&gt;
[69455.370000] [&amp;lt;8022441c&amp;gt;] show_stack+0x48/0x70&lt;br /&gt;
[69455.370000] [&amp;lt;8028aca4&amp;gt;] warn_slowpath_common+0x78/0xa8&lt;br /&gt;
[69455.370000] [&amp;lt;8028ad00&amp;gt;] warn_slowpath_fmt+0x2c/0x38&lt;br /&gt;
[69455.370000] [&amp;lt;80148110&amp;gt;] gpio_to_desc+0x2c/0x54&lt;br /&gt;
[69455.370000] [&amp;lt;8008fef8&amp;gt;] __gpio_set_value+0x1c/0xe0&lt;br /&gt;
[69455.370000] [&amp;lt;800b3b84&amp;gt;] ag71xx_link_adjust+0x84/0x39c&lt;br /&gt;
[69455.370000] [&amp;lt;800b4b10&amp;gt;] ag71xx_phy_link_adjust+0xa0/0xc8&lt;br /&gt;
[69455.370000] [&amp;lt;801da334&amp;gt;] phy_state_machine+0x2a0/0x484&lt;br /&gt;
[69455.370000] [&amp;lt;801ebe5c&amp;gt;] process_one_work+0x228/0x364&lt;br /&gt;
[69455.370000] [&amp;lt;8028c054&amp;gt;] worker_thread+0x234/0x388&lt;br /&gt;
[69455.370000] [&amp;lt;8018c7a4&amp;gt;] kthread+0xb0/0xb8&lt;br /&gt;
[69455.370000] [&amp;lt;80060878&amp;gt;] ret_from_kernel_thread+0x14/0x1c&lt;br /&gt;
[69455.370000] &lt;br /&gt;
[69455.370000] ---[ end trace 9841a412d51fe0b2 ]---&lt;br /&gt;
[69455.590000] ------------[ cut here ]------------&lt;br /&gt;
[69455.590000] WARNING: at drivers/gpio/gpiolib.c:126 gpio_to_desc+0x2c/0x54()&lt;br /&gt;
[69455.600000] invalid GPIO 402915340&lt;br /&gt;
[69455.600000] Modules linked in: ath9k ath9k_common pppoe ppp_async iptable_nat ath9k_hw ath pptp pppox ppp_mppe ppp_generic nf_nat_ipv4 nf_conntrack_ipv4 mac80211 ipt_MASQUERADE cfg80211 xt_time xt_tcpudp xt_state xt_nat xt_multiport xt_mark xt_mac xt_limit xt_id xt_conntrack xt_comment xt_TCPMSS xt_REDIRECT xt_LOG xt_CT slhc nf_nat_irc nf_nat_ftp nf_nat nf_defrag_ipv4 nf_conntrack_irc nf_conntrack_ftp iptable_raw iptable_mangle iptable_filter ipt_REJECT ip_tables crc_ccitt compat ip6t_REJECT ip6table_raw ip6table_mangle ip6table_filter ip6_tables x_tables nf_conntrack_ipv6 nf_conntrack nf_defrag_ipv6 ip_gre gre ip_tunnel tun ipv6 sha1_generic ecb arc4 crypto_blkcipher crypto_hash&lt;br /&gt;
[69455.660000] CPU: 0 PID: 232 Comm: kworker/0:2 Tainted: G        W    3.10.49 #4&lt;br /&gt;
[69455.670000] Workqueue: events phy_state_machine/home/leo/trunk/5-package-repo-change/on_firmware/openwrt/build_dir/targ~ibc-0.9.33.2/linux-ar71xx_generic/linux-3.18.11/arch/mips/ath79/common.c&lt;br /&gt;
[69455.680000] Stack : 839da380 802d4c44 80148110 0000007e 802e4278 83926c00 83926d74 8030f8b0&lt;br /&gt;
[69455.680000]           00000008 8027b720 000000e8 801e38ac 83904a08 83926c00 802e2250 83aa7ce4&lt;br /&gt;
[69455.680000]           83aa7ce4 8027b720 00000003 801e33d0 802e4278 00000000 00000005 802144b0&lt;br /&gt;
[69455.680000]           00000000 00000000 00000000 00000000 00000000 00000000 6576656e 74730000&lt;br /&gt;
[69455.680000]           00000000 00000000 00000000 00000000 83816a00 81082300 801da094 83aa7c90&lt;br /&gt;
[69455.680000]           ...&lt;br /&gt;
[69455.710000] Call Trace:&lt;br /&gt;
[69455.720000] [&amp;lt;8022441c&amp;gt;] show_stack+0x48/0x70&lt;br /&gt;
[69455.720000] [&amp;lt;8028aca4&amp;gt;] warn_slowpath_common+0x78/0xa8&lt;br /&gt;
[69455.730000] [&amp;lt;8028ad00&amp;gt;] warn_slowpath_fmt+0x2c/0x38&lt;br /&gt;
[69455.730000] [&amp;lt;80148110&amp;gt;] gpio_to_desc+0x2c/0x54&lt;br /&gt;
[69455.730000] [&amp;lt;8008fef8&amp;gt;] __gpio_set_value+0x1c/0xe0&lt;br /&gt;
[69455.740000] [&amp;lt;800b3b98&amp;gt;] ag71xx_link_adjust+0x98/0x39c&lt;br /&gt;
[69455.750000] [&amp;lt;800b4b10&amp;gt;] ag71xx_phy_link_adjust+0xa0/0xc8&lt;br /&gt;
[69455.750000] [&amp;lt;801da334&amp;gt;] phy_state_machine+0x2a0/0x484&lt;br /&gt;
[69455.760000] [&amp;lt;801ebe5c&amp;gt;] process_one_work+0x228/0x364&lt;br /&gt;
[69455.760000] [&amp;lt;8028c054&amp;gt;] worker_thread+0x234/0x388&lt;br /&gt;
[69455.770000] [&amp;lt;8018c7a4&amp;gt;] kthread+0xb0/0xb8&lt;br /&gt;
[69455.770000] [&amp;lt;80060878&amp;gt;] ret_from_kernel_thread+0x14/0x1c&lt;br /&gt;
[69455.780000] &lt;br /&gt;
[69455.780000] ---[ end trace 9841a412d51fe0b3 ]---&lt;br /&gt;
[69455.790000] br-lan: port 1(eth0) entered disabled state&lt;br /&gt;
[71876.510000] br-lan: port 1(eth0) entered disabled state&lt;br /&gt;
[71885.020000] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=============================&lt;br /&gt;
&lt;br /&gt;
Versuch: Reset bei jedem up/down machen oder zumindest bei jeden Reset des Interfaces.&lt;br /&gt;
&lt;br /&gt;
Fragen: In welche Situationen wird interface Reset gemacht. Das durch Debug Meldungen in Funktionen ermitteln.&lt;br /&gt;
&lt;br /&gt;
Frage: In welche Funktion den Reset machen? &lt;br /&gt;
- evtl. in /home/leo/trunk/5-package-repo-change/on_firmware/openwrt/build_dir/targ~ibc-0.9.33.2/linux-ar71xx_generic/linux-3.18.11/arch/mips/ath79/common.c&lt;br /&gt;
&lt;br /&gt;
    void ath79_device_reset_clear(u32 mask)&lt;br /&gt;
&lt;br /&gt;
    diese Funktion wird in der ag71xx...main.c  - ag71xx_hw_init() aufgerufen.&lt;br /&gt;
&lt;br /&gt;
    In der ag71xx_hw_init() gibt es auch ein Reset-Bit (reset_mask). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
gpio = devm_gpiod_get_index(dev, name, index);&lt;br /&gt;
res = gpiod_direction_output(gpio, !value);  &lt;br /&gt;
devm_gpiod_put(dev, gpio); &lt;br /&gt;
gpiod_set_value_cansleep(gpio, value);&lt;br /&gt;
&lt;br /&gt;
einige Beschreibungen zu GPIO : linux-ar71xx_generic/linux-3.18.11/Documentation/gpio/consumer.txt &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===============================&lt;br /&gt;
&lt;br /&gt;
ag71xx_phy.c&lt;br /&gt;
- ag71xx_phy_link_adjust()&lt;br /&gt;
-- vor phydev-&amp;gt;link&lt;br /&gt;
   int id1 = phy_read( phydev, 2 )&lt;br /&gt;
   int id2 = phy_read( phydev, 3 ) &lt;br /&gt;
   printk (&amp;quot;hack id=%04x %04x&amp;quot;, id1, id2); /* sollte &amp;quot;004d d023&amp;quot; sein, bis der bug auftritt */&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
======================&lt;br /&gt;
ag71xx_phy.c&lt;br /&gt;
- ag71xx_phy_link_adjust()&lt;br /&gt;
&lt;br /&gt;
        spin_lock_irqsave(&amp;amp;ag-&amp;gt;lock, flags);                                                                                                    &lt;br /&gt;
                                                                                                                                                &lt;br /&gt;
        int id1 = phy_read( phydev, 2 );                                                                                                        &lt;br /&gt;
        int id2 = phy_read( phydev, 3 );                                                                                                        &lt;br /&gt;
        printk(&amp;quot;Opennet Hack09: id=%04x %04x&amp;quot;,id1, id2); /* sollte &amp;quot;004d d023&amp;quot; sein, bis der bug auftritt */                                    &lt;br /&gt;
                                                                                                                                                &lt;br /&gt;
        if (phydev-&amp;gt;link) {&lt;br /&gt;
&lt;br /&gt;
- ag71xx_main.c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;------&amp;gt;&amp;lt;------&amp;gt;pr_info(&amp;quot;%s: link up (%sMbps/%s duplex) OpennetHack09\n&amp;quot;,                                                                       &lt;br /&gt;
&lt;br /&gt;
========================&lt;br /&gt;
leo@minato:~/trunk/eth0-bug-trunk/on_firmware/openwrt/build_dir/target-mips_34kc_uClibc-0.9.33.2/linux-ar71xx_generic/linux-3.18.14/drivers/net/ethernet/atheros/ag71xx$ cp ag71xx_phy.c.patched ~&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Leo</name></author>
	</entry>
</feed>