Merge branch 'upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/linville...
[powerpc.git] / drivers / net / ixp2000 / enp2611.c
index 3262e70..6f7dce8 100644 (file)
@@ -16,7 +16,7 @@
 #include <linux/etherdevice.h>
 #include <linux/init.h>
 #include <linux/moduleparam.h>
-#include <asm/arch/uengine.h>
+#include <asm/hardware/uengine.h>
 #include <asm/mach-types.h>
 #include <asm/io.h>
 #include "ixpdev.h"
@@ -148,18 +148,20 @@ static void enp2611_check_link_status(unsigned long __dummy)
                struct net_device *dev;
                int status;
 
-               if (!netif_running(nds[i]))
-                       continue;
-
                dev = nds[i];
 
                status = pm3386_is_link_up(i);
-               if (status && !netif_carrier_ok(nds[i])) {
+               if (status && !netif_carrier_ok(dev)) {
+                       /* @@@ Should report autonegotiation status.  */
+                       printk(KERN_INFO "%s: NIC Link is Up\n", dev->name);
+
                        pm3386_enable_tx(i);
                        caleb_enable_tx(i);
-                       netif_carrier_on(nds[i]);
-               } else if (!status && netif_carrier_ok(nds[i])) {
-                       netif_carrier_off(nds[i]);
+                       netif_carrier_on(dev);
+               } else if (!status && netif_carrier_ok(dev)) {
+                       printk(KERN_INFO "%s: NIC Link is Down\n", dev->name);
+
+                       netif_carrier_off(dev);
                        caleb_disable_tx(i);
                        pm3386_disable_tx(i);
                }
@@ -173,10 +175,15 @@ static void enp2611_set_port_admin_status(int port, int up)
 {
        if (up) {
                caleb_enable_rx(port);
+
+               pm3386_set_carrier(port, 1);
                pm3386_enable_rx(port);
        } else {
                caleb_disable_tx(port);
                pm3386_disable_tx(port);
+               /* @@@ Flush out pending packets.  */
+               pm3386_set_carrier(port, 0);
+
                pm3386_disable_rx(port);
                caleb_disable_rx(port);
        }