Commit 1a9eed8d authored by Jeff Garzik's avatar Jeff Garzik

Merge redhat.com:/home/jgarzik/repo/linus-2.5

into redhat.com:/home/jgarzik/repo/net-drivers-2.5
parents 2becf2fd 6b6a6768
......@@ -12,31 +12,36 @@ network devices.
struct net_device synchronization rules
=======================================
dev->open:
Locking: Inside rtnl_lock() semaphore.
Sleeping: OK
Synchronization: rtnl_lock() semaphore.
Context: process
dev->stop:
Locking: Inside rtnl_lock() semaphore.
Sleeping: OK
Synchronization: rtnl_lock() semaphore.
Context: process
Notes: netif_running() is guaranteed false when this is called
dev->do_ioctl:
Locking: Inside rtnl_lock() semaphore.
Sleeping: OK
Synchronization: rtnl_lock() semaphore.
Context: process
dev->get_stats:
Locking: Inside dev_base_lock spinlock.
Sleeping: NO
Synchronization: dev_base_lock rwlock.
Context: nominally process, but don't sleep inside an rwlock
dev->hard_start_xmit:
Locking: Inside dev->xmit_lock spinlock.
Sleeping: NO
Synchronization: dev->xmit_lock spinlock.
Context: BHs disabled
dev->tx_timeout:
Locking: Inside dev->xmit_lock spinlock.
Sleeping: NO
Synchronization: dev->xmit_lock spinlock.
Context: BHs disabled
dev->set_multicast_list:
Locking: Inside dev->xmit_lock spinlock.
Sleeping: NO
Synchronization: dev->xmit_lock spinlock.
Context: BHs disabled
dev->poll:
Synchronization: __LINK_STATE_RX_SCHED bit in dev->state. See
dev_close code and comments in net/core/dev.c for more info.
Context: softirq
......@@ -707,12 +707,20 @@ static void ewrk3_init(struct net_device *dev)
struct ewrk3_private *lp = (struct ewrk3_private *) dev->priv;
u_char csr, page;
u_long iobase = dev->base_addr;
int i;
/*
** Enable any multicasts
*/
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
*/
......@@ -1754,23 +1762,17 @@ static int ewrk3_ethtool_ioctl(struct net_device *dev, void *useraddr)
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);
......@@ -1791,24 +1793,21 @@ static int ewrk3_ethtool_ioctl(struct net_device *dev, void *useraddr)
/* 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 */
}
......
......@@ -508,7 +508,7 @@ rtl8169_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
spin_lock_init(&tp->lock);
pdev->driver_data = dev;
pci_set_drvdata(pdev, dev);
printk(KERN_INFO "%s: %s at 0x%lx, "
"%2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x, "
......@@ -618,7 +618,7 @@ rtl8169_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
static void __devexit
rtl8169_remove_one(struct pci_dev *pdev)
{
struct net_device *dev = pdev->driver_data;
struct net_device *dev = pci_get_drvdata(pdev);
struct rtl8169_private *tp = (struct rtl8169_private *) (dev->priv);
assert(dev != NULL);
......@@ -633,7 +633,7 @@ rtl8169_remove_one(struct pci_dev *pdev)
sizeof (struct net_device) + sizeof (struct rtl8169_private));
kfree(dev);
pdev->driver_data = NULL;
pci_set_drvdata(pdev, NULL);
}
static int
......
......@@ -384,7 +384,6 @@ extern "C" {
/* VPD Region */
/* PCI_VPD_ADR_REG 16 bit VPD Address Register */
#define PCI_VPD_FLAG (1L<<15) /* Bit 15: starts VPD rd/wd cycle*/
#define PCI_VPD_ADDR (0x3fffL<<0) /* Bit 14..0: VPD address */
/*
* Control Register File:
......
......@@ -1039,7 +1039,6 @@
/* PCI_VPD_NITEM 8 bit (ML) Next Item Ptr */
/* PCI_VPD_ADR_REG 16 bit (ML) VPD Address Register */
#define PCI_VPD_FLAG (1<<15) /* Bit 15 starts VPD rd/wd cycle*/
#define PCI_VPD_ADDR (0x3fff<<0) /* Bit 0..14 VPD address */
/* PCI_VPD_DAT_REG 32 bit (ML) VPD Data Register */
......
......@@ -2014,7 +2014,6 @@ static int __init de_init_one (struct pci_dev *pdev,
dev->watchdog_timeo = TX_TIMEOUT;
dev->irq = pdev->irq;
init_timer(&de->media_timer);
de = dev->priv;
de->de21040 = ent->driver_data == 0 ? 1 : 0;
......
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