#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"
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);
}
{
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);
}