/* directly indexed by chip_t, above */
-const static struct {
+static const struct {
const char *name;
u8 version; /* from RTL8139C docs */
u32 RxConfigMask; /* should clear the bits supported by this chip */
MODULE_AUTHOR ("Jeff Garzik <jgarzik@pobox.com>");
MODULE_DESCRIPTION ("Skeleton for a PCI Fast Ethernet driver");
MODULE_LICENSE("GPL");
-MODULE_PARM (multicast_filter_limit, "i");
-MODULE_PARM (max_interrupt_work, "i");
-MODULE_PARM (debug, "i");
-MODULE_PARM (media, "1-" __MODULE_STRING(8) "i");
+module_param(multicast_filter_limit, int, 0);
+module_param(max_interrupt_work, int, 0);
+module_param_array(media, int, NULL, 0);
MODULE_PARM_DESC (multicast_filter_limit, "pci-skeleton maximum number of filtered multicast addresses");
MODULE_PARM_DESC (max_interrupt_work, "pci-skeleton maximum events handled per interrupt");
MODULE_PARM_DESC (media, "pci-skeleton: Bits 0-3: media type, bit 17: full duplex");
-MODULE_PARM_DESC (debug, "(unused)");
static int read_eeprom (void *ioaddr, int location, int addr_len);
static int netdrv_open (struct net_device *dev);
void *ioaddr = NULL;
struct net_device *dev;
struct netdrv_private *tp;
- u8 tmp8;
int rc, i;
u32 pio_start, pio_end, pio_flags, pio_len;
unsigned long mmio_start, mmio_end, mmio_flags, mmio_len;
int i, addr_len, option;
void *ioaddr = NULL;
static int board_idx = -1;
- u8 tmp;
/* when built into the kernel, we only print version if device is found */
#ifndef MODULE
tp->pci_dev = pdev;
tp->board = ent->driver_data;
tp->mmio_addr = ioaddr;
- tp->lock = SPIN_LOCK_UNLOCKED;
+ spin_lock_init(&tp->lock);
pci_set_drvdata(pdev, dev);
pci_set_drvdata (pdev, NULL);
- pci_power_off (pdev, -1);
+ pci_disable_device (pdev);
DPRINTK ("EXIT\n");
}
struct netdrv_private *tp = dev->priv;
void *ioaddr = tp->mmio_addr;
u32 i;
- u8 tmp;
DPRINTK ("ENTER\n");
static int netdrv_ioctl (struct net_device *dev, struct ifreq *rq, int cmd)
{
struct netdrv_private *tp = dev->priv;
- struct mii_ioctl_data *data = (struct mii_ioctl_data *) & rq->ifr_data;
+ struct mii_ioctl_data *data = if_mii(rq);
unsigned long flags;
int rc = 0;
rx_mode = AcceptBroadcast | AcceptMulticast | AcceptMyPhys;
mc_filter[1] = mc_filter[0] = 0;
for (i = 0, mclist = dev->mc_list; mclist && i < dev->mc_count;
- i++, mclist = mclist->next)
- set_bit (ether_crc (ETH_ALEN, mclist->dmi_addr) >> 26,
- mc_filter);
+ i++, mclist = mclist->next) {
+ int bit_nr = ether_crc(ETH_ALEN, mclist->dmi_addr) >> 26;
+
+ mc_filter[bit_nr >> 5] |= 1 << (bit_nr & 31);
+ }
}
/* if called from irq handler, lock already acquired */
#ifdef CONFIG_PM
-static int netdrv_suspend (struct pci_dev *pdev, u32 state)
+static int netdrv_suspend (struct pci_dev *pdev, pm_message_t state)
{
struct net_device *dev = pci_get_drvdata (pdev);
struct netdrv_private *tp = dev->priv;
unsigned long flags;
if (!netif_running(dev))
- return;
+ return 0;
netif_device_detach (dev);
spin_lock_irqsave (&tp->lock, flags);
spin_unlock_irqrestore (&tp->lock, flags);
- pci_power_off (pdev, -1);
+ pci_save_state (pdev);
+ pci_set_power_state (pdev, PCI_D3hot);
return 0;
}
static int netdrv_resume (struct pci_dev *pdev)
{
struct net_device *dev = pci_get_drvdata (pdev);
+ struct netdrv_private *tp = dev->priv;
if (!netif_running(dev))
- return;
- pci_power_on (pdev);
+ return 0;
+ pci_set_power_state (pdev, PCI_D0);
+ pci_restore_state (pdev);
netif_device_attach (dev);
netdrv_hw_start (dev);