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. ...@@ -12,31 +12,36 @@ network devices.
struct net_device synchronization rules struct net_device synchronization rules
======================================= =======================================
dev->open: dev->open:
Locking: Inside rtnl_lock() semaphore. Synchronization: rtnl_lock() semaphore.
Sleeping: OK Context: process
dev->stop: dev->stop:
Locking: Inside rtnl_lock() semaphore. Synchronization: rtnl_lock() semaphore.
Sleeping: OK Context: process
Notes: netif_running() is guaranteed false when this is called
dev->do_ioctl: dev->do_ioctl:
Locking: Inside rtnl_lock() semaphore. Synchronization: rtnl_lock() semaphore.
Sleeping: OK Context: process
dev->get_stats: dev->get_stats:
Locking: Inside dev_base_lock spinlock. Synchronization: dev_base_lock rwlock.
Sleeping: NO Context: nominally process, but don't sleep inside an rwlock
dev->hard_start_xmit: dev->hard_start_xmit:
Locking: Inside dev->xmit_lock spinlock. Synchronization: dev->xmit_lock spinlock.
Sleeping: NO Context: BHs disabled
dev->tx_timeout: dev->tx_timeout:
Locking: Inside dev->xmit_lock spinlock. Synchronization: dev->xmit_lock spinlock.
Sleeping: NO Context: BHs disabled
dev->set_multicast_list: dev->set_multicast_list:
Locking: Inside dev->xmit_lock spinlock. Synchronization: dev->xmit_lock spinlock.
Sleeping: NO 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) ...@@ -707,12 +707,20 @@ static void ewrk3_init(struct net_device *dev)
struct ewrk3_private *lp = (struct ewrk3_private *) dev->priv; struct ewrk3_private *lp = (struct ewrk3_private *) dev->priv;
u_char csr, page; u_char csr, page;
u_long iobase = dev->base_addr; u_long iobase = dev->base_addr;
int i;
/* /*
** Enable any multicasts ** Enable any multicasts
*/ */
set_multicast_list(dev); 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 ** 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) ...@@ -1754,23 +1762,17 @@ static int ewrk3_ethtool_ioctl(struct net_device *dev, void *useraddr)
return 0; return 0;
} }
#ifdef BROKEN
/* Blink LED for identification */ /* Blink LED for identification */
case ETHTOOL_PHYS_ID: { case ETHTOOL_PHYS_ID: {
struct ethtool_value edata; struct ethtool_value edata;
u_long flags; u_long flags;
long delay, ret;
u_char cr; u_char cr;
int count; int count;
wait_queue_head_t wait;
init_waitqueue_head(&wait);
if (copy_from_user(&edata, useraddr, sizeof(edata))) if (copy_from_user(&edata, useraddr, sizeof(edata)))
return -EFAULT; return -EFAULT;
/* Toggle LED 4x per second */ /* Toggle LED 4x per second */
delay = HZ >> 2;
count = edata.data << 2; count = edata.data << 2;
spin_lock_irqsave(&lp->hw_lock, flags); spin_lock_irqsave(&lp->hw_lock, flags);
...@@ -1791,24 +1793,21 @@ static int ewrk3_ethtool_ioctl(struct net_device *dev, void *useraddr) ...@@ -1791,24 +1793,21 @@ static int ewrk3_ethtool_ioctl(struct net_device *dev, void *useraddr)
/* Wait a little while */ /* Wait a little while */
spin_unlock_irqrestore(&lp->hw_lock, flags); spin_unlock_irqrestore(&lp->hw_lock, flags);
ret = delay; set_current_state(TASK_UNINTERRUPTIBLE);
__wait_event_interruptible_timeout(wait, 0, ret); schedule_timeout(HZ>>2);
spin_lock_irqsave(&lp->hw_lock, flags); spin_lock_irqsave(&lp->hw_lock, flags);
/* Exit if we got a signal */ /* Exit if we got a signal */
if (ret == -ERESTARTSYS) if (signal_pending(current))
goto out; break;
} }
ret = 0;
out:
lp->led_mask = CR_LED; lp->led_mask = CR_LED;
cr = inb(EWRK3_CR); cr = inb(EWRK3_CR);
outb(cr & ~CR_LED, EWRK3_CR); outb(cr & ~CR_LED, EWRK3_CR);
spin_unlock_irqrestore(&lp->hw_lock, flags); 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) ...@@ -508,7 +508,7 @@ rtl8169_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
spin_lock_init(&tp->lock); spin_lock_init(&tp->lock);
pdev->driver_data = dev; pci_set_drvdata(pdev, dev);
printk(KERN_INFO "%s: %s at 0x%lx, " printk(KERN_INFO "%s: %s at 0x%lx, "
"%2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x, " "%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) ...@@ -618,7 +618,7 @@ rtl8169_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
static void __devexit static void __devexit
rtl8169_remove_one(struct pci_dev *pdev) 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); struct rtl8169_private *tp = (struct rtl8169_private *) (dev->priv);
assert(dev != NULL); assert(dev != NULL);
...@@ -633,7 +633,7 @@ rtl8169_remove_one(struct pci_dev *pdev) ...@@ -633,7 +633,7 @@ rtl8169_remove_one(struct pci_dev *pdev)
sizeof (struct net_device) + sizeof (struct rtl8169_private)); sizeof (struct net_device) + sizeof (struct rtl8169_private));
kfree(dev); kfree(dev);
pdev->driver_data = NULL; pci_set_drvdata(pdev, NULL);
} }
static int static int
......
...@@ -384,7 +384,6 @@ extern "C" { ...@@ -384,7 +384,6 @@ extern "C" {
/* VPD Region */ /* VPD Region */
/* PCI_VPD_ADR_REG 16 bit VPD Address Register */ /* 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_FLAG (1L<<15) /* Bit 15: starts VPD rd/wd cycle*/
#define PCI_VPD_ADDR (0x3fffL<<0) /* Bit 14..0: VPD address */
/* /*
* Control Register File: * Control Register File:
......
...@@ -1039,7 +1039,6 @@ ...@@ -1039,7 +1039,6 @@
/* PCI_VPD_NITEM 8 bit (ML) Next Item Ptr */ /* PCI_VPD_NITEM 8 bit (ML) Next Item Ptr */
/* PCI_VPD_ADR_REG 16 bit (ML) VPD Address Register */ /* 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_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 */ /* PCI_VPD_DAT_REG 32 bit (ML) VPD Data Register */
......
...@@ -2014,7 +2014,6 @@ static int __init de_init_one (struct pci_dev *pdev, ...@@ -2014,7 +2014,6 @@ static int __init de_init_one (struct pci_dev *pdev,
dev->watchdog_timeo = TX_TIMEOUT; dev->watchdog_timeo = TX_TIMEOUT;
dev->irq = pdev->irq; dev->irq = pdev->irq;
init_timer(&de->media_timer);
de = dev->priv; de = dev->priv;
de->de21040 = ent->driver_data == 0 ? 1 : 0; 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