Commit b105e2cf authored by Stefan Rompf's avatar Stefan Rompf Committed by Jeff Garzik

[PATCH] netif_carrier_on()/off() for xircom_tulip_cb

parent b735a725
...@@ -343,6 +343,7 @@ static void xircom_tx_timeout(struct net_device *dev); ...@@ -343,6 +343,7 @@ static void xircom_tx_timeout(struct net_device *dev);
static void xircom_init_ring(struct net_device *dev); static void xircom_init_ring(struct net_device *dev);
static int xircom_start_xmit(struct sk_buff *skb, struct net_device *dev); static int xircom_start_xmit(struct sk_buff *skb, struct net_device *dev);
static int xircom_rx(struct net_device *dev); static int xircom_rx(struct net_device *dev);
static void xircom_media_change(struct net_device *dev);
static irqreturn_t xircom_interrupt(int irq, void *dev_instance, struct pt_regs *regs); static irqreturn_t xircom_interrupt(int irq, void *dev_instance, struct pt_regs *regs);
static int xircom_close(struct net_device *dev); static int xircom_close(struct net_device *dev);
static struct net_device_stats *xircom_get_stats(struct net_device *dev); static struct net_device_stats *xircom_get_stats(struct net_device *dev);
...@@ -789,6 +790,9 @@ xircom_up(struct net_device *dev) ...@@ -789,6 +790,9 @@ xircom_up(struct net_device *dev)
/* Tell the net layer we're ready */ /* Tell the net layer we're ready */
netif_start_queue (dev); netif_start_queue (dev);
/* Check current media state */
xircom_media_change(dev);
if (xircom_debug > 2) { if (xircom_debug > 2) {
printk(KERN_DEBUG "%s: Done xircom_up(), CSR0 %8.8x, CSR5 %8.8x CSR6 %8.8x.\n", printk(KERN_DEBUG "%s: Done xircom_up(), CSR0 %8.8x, CSR5 %8.8x CSR6 %8.8x.\n",
dev->name, inl(ioaddr + CSR0), inl(ioaddr + CSR5), dev->name, inl(ioaddr + CSR0), inl(ioaddr + CSR5),
...@@ -1013,6 +1017,7 @@ static void xircom_media_change(struct net_device *dev) ...@@ -1013,6 +1017,7 @@ static void xircom_media_change(struct net_device *dev)
dev->name, dev->name,
tp->speed100 ? "100" : "10", tp->speed100 ? "100" : "10",
tp->full_duplex ? "full" : "half"); tp->full_duplex ? "full" : "half");
netif_carrier_on(dev);
newcsr6 = csr6 & ~FullDuplexBit; newcsr6 = csr6 & ~FullDuplexBit;
if (tp->full_duplex) if (tp->full_duplex)
newcsr6 |= FullDuplexBit; newcsr6 |= FullDuplexBit;
...@@ -1020,6 +1025,7 @@ static void xircom_media_change(struct net_device *dev) ...@@ -1020,6 +1025,7 @@ static void xircom_media_change(struct net_device *dev)
outl_CSR6(newcsr6, ioaddr + CSR6); outl_CSR6(newcsr6, ioaddr + CSR6);
} else { } else {
printk(KERN_DEBUG "%s: Link is down\n", dev->name); printk(KERN_DEBUG "%s: Link is down\n", dev->name);
netif_carrier_off(dev);
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment