patch-2.4.21 linux-2.4.21/drivers/net/ewrk3.c
Next file: linux-2.4.21/drivers/net/fc/iph5526.c
Previous file: linux-2.4.21/drivers/net/ether00.c
Back to the patch index
Back to the overall index
- Lines: 88
- Date:
2003-06-13 07:51:34.000000000 -0700
- Orig file:
linux-2.4.20/drivers/net/ewrk3.c
- Orig date:
2002-11-28 15:53:13.000000000 -0800
diff -urN linux-2.4.20/drivers/net/ewrk3.c linux-2.4.21/drivers/net/ewrk3.c
@@ -712,6 +712,7 @@
struct ewrk3_private *lp = (struct ewrk3_private *) dev->priv;
u_char csr, page;
u_long iobase = dev->base_addr;
+ int i;
/*
** Enable any multicasts
@@ -719,6 +720,13 @@
set_multicast_list(dev);
/*
+ ** Set hardware MAC address. Address is initialized from the EEPROM
+ ** during startup but may have since been changed by the user.
+ */
+ for (i=0; i<ETH_ALEN; i++)
+ outb(dev->dev_addr[i], EWRK3_PAR0 + i);
+
+ /*
** Clean out any remaining entries in all the queues here
*/
while (inb(EWRK3_TQ));
@@ -1759,23 +1767,17 @@
return 0;
}
-#ifdef BROKEN
/* Blink LED for identification */
case ETHTOOL_PHYS_ID: {
struct ethtool_value edata;
u_long flags;
- long delay, ret;
u_char cr;
int count;
- wait_queue_head_t wait;
-
- init_waitqueue_head(&wait);
if (copy_from_user(&edata, useraddr, sizeof(edata)))
return -EFAULT;
/* Toggle LED 4x per second */
- delay = HZ >> 2;
count = edata.data << 2;
spin_lock_irqsave(&lp->hw_lock, flags);
@@ -1796,24 +1798,21 @@
/* Wait a little while */
spin_unlock_irqrestore(&lp->hw_lock, flags);
- ret = delay;
- __wait_event_interruptible_timeout(wait, 0, ret);
+ set_current_state(TASK_UNINTERRUPTIBLE);
+ schedule_timeout(HZ>>2);
spin_lock_irqsave(&lp->hw_lock, flags);
/* Exit if we got a signal */
- if (ret == -ERESTARTSYS)
- goto out;
+ if (signal_pending(current))
+ break;
}
- ret = 0;
-out:
lp->led_mask = CR_LED;
cr = inb(EWRK3_CR);
outb(cr & ~CR_LED, EWRK3_CR);
spin_unlock_irqrestore(&lp->hw_lock, flags);
- return ret;
+ return signal_pending(current) ? -ERESTARTSYS : 0;
}
-#endif /* BROKEN */
}
@@ -1973,7 +1972,10 @@
case EWRK3_GET_STATS: { /* Get the driver statistics */
struct ewrk3_stats *tmp_stats =
kmalloc(sizeof(lp->pktStats), GFP_KERNEL);
- if (!tmp_stats) return -ENOMEM;
+ if (!tmp_stats) {
+ status = -ENOMEM;
+ break;
+ }
spin_lock_irqsave(&lp->hw_lock, flags);
memcpy(tmp_stats, &lp->pktStats, sizeof(lp->pktStats));
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)