mwl8k: remove (mostly) write-only variable priv->current_channel
[safe/jmp/linux-2.6] / drivers / net / tokenring / lanstreamer.c
index 99e0b03..d6ccd59 100644 (file)
 
 #define STREAMER_IOCTL 0
 
-#include <linux/config.h>
 #include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/errno.h>
 #include <linux/stddef.h>
 #include <linux/init.h>
 #include <linux/pci.h>
+#include <linux/dma-mapping.h>
 #include <linux/spinlock.h>
-#include <linux/version.h>
 #include <linux/bitops.h>
+#include <linux/jiffies.h>
 
+#include <net/net_namespace.h>
 #include <net/checksum.h>
 
 #include <asm/io.h>
@@ -168,7 +169,7 @@ static char *open_min_error[] = {
        "Monitor Contention failer for RPL", "FDX Protocol Error"
 };
 
-/* Module paramters */
+/* Module parameters */
 
 /* Ring Speed 0,4,16
  * 0 = Autosense         
@@ -202,12 +203,11 @@ static int streamer_ioctl(struct net_device *, struct ifreq *, int);
 
 static int streamer_reset(struct net_device *dev);
 static int streamer_open(struct net_device *dev);
-static int streamer_xmit(struct sk_buff *skb, struct net_device *dev);
+static netdev_tx_t streamer_xmit(struct sk_buff *skb,
+                                      struct net_device *dev);
 static int streamer_close(struct net_device *dev);
 static void streamer_set_rx_mode(struct net_device *dev);
-static irqreturn_t streamer_interrupt(int irq, void *dev_id,
-                              struct pt_regs *regs);
-static struct net_device_stats *streamer_get_stats(struct net_device *dev);
+static irqreturn_t streamer_interrupt(int irq, void *dev_id);
 static int streamer_set_mac_address(struct net_device *dev, void *addr);
 static void streamer_arb_cmd(struct net_device *dev);
 static int streamer_change_mtu(struct net_device *dev, int mtu);
@@ -222,6 +222,18 @@ struct streamer_private *dev_streamer=NULL;
 #endif
 #endif
 
+static const struct net_device_ops streamer_netdev_ops = {
+       .ndo_open               = streamer_open,
+       .ndo_stop               = streamer_close,
+       .ndo_start_xmit         = streamer_xmit,
+       .ndo_change_mtu         = streamer_change_mtu,
+#if STREAMER_IOCTL
+       .ndo_do_ioctl           = streamer_ioctl,
+#endif
+       .ndo_set_multicast_list = streamer_set_rx_mode,
+       .ndo_set_mac_address    = streamer_set_mac_address,
+};
+
 static int __devinit streamer_init_one(struct pci_dev *pdev,
                                       const struct pci_device_id *ent)
 {
@@ -244,20 +256,19 @@ static int __devinit streamer_init_one(struct pci_dev *pdev,
                return -ENOMEM;
        }
 
-       SET_MODULE_OWNER(dev);
-       streamer_priv = dev->priv;
+       streamer_priv = netdev_priv(dev);
 
 #if STREAMER_NETWORK_MONITOR
 #ifdef CONFIG_PROC_FS
        if (!dev_streamer)
-               create_proc_read_entry("net/streamer_tr", 0, 0,
+               create_proc_read_entry("streamer_tr", 0, init_net.proc_net,
                                        streamer_proc_info, NULL); 
        streamer_priv->next = dev_streamer;
        dev_streamer = streamer_priv;
 #endif
 #endif
 
-       rc = pci_set_dma_mask(pdev, 0xFFFFFFFFULL);
+       rc = pci_set_dma_mask(pdev, DMA_BIT_MASK(32));
        if (rc) {
                printk(KERN_ERR "%s: No suitable PCI mapping available.\n",
                                dev->name);
@@ -322,18 +333,7 @@ static int __devinit streamer_init_one(struct pci_dev *pdev,
        init_waitqueue_head(&streamer_priv->srb_wait);
        init_waitqueue_head(&streamer_priv->trb_wait);
 
-       dev->open = &streamer_open;
-       dev->hard_start_xmit = &streamer_xmit;
-       dev->change_mtu = &streamer_change_mtu;
-       dev->stop = &streamer_close;
-#if STREAMER_IOCTL
-       dev->do_ioctl = &streamer_ioctl;
-#else
-       dev->do_ioctl = NULL;
-#endif
-       dev->set_multicast_list = &streamer_set_rx_mode;
-       dev->get_stats = &streamer_get_stats;
-       dev->set_mac_address = &streamer_set_mac_address;
+       dev->netdev_ops = &streamer_netdev_ops;
        dev->irq = pdev->irq;
        dev->base_addr=pio_start;
        SET_NETDEV_DEV(dev, &pdev->dev);
@@ -404,7 +404,7 @@ static void __devexit streamer_remove_one(struct pci_dev *pdev)
                return;
        }
 
-       streamer_priv=dev->priv;
+       streamer_priv=netdev_priv(dev);
        if (streamer_priv == NULL) {
                printk(KERN_ERR "lanstreamer::streamer_remove_one, ERROR dev->priv is NULL\n");
                return;
@@ -423,7 +423,7 @@ static void __devexit streamer_remove_one(struct pci_dev *pdev)
                        }
                }
                if (!dev_streamer)
-                       remove_proc_entry("net/streamer_tr", NULL);
+                       remove_proc_entry("streamer_tr", init_net.proc_net);
        }
 #endif
 #endif
@@ -448,14 +448,13 @@ static int streamer_reset(struct net_device *dev)
        struct sk_buff *skb = NULL;
        __u16 misr;
 
-       streamer_priv = (struct streamer_private *) dev->priv;
+       streamer_priv = netdev_priv(dev);
        streamer_mmio = streamer_priv->streamer_mmio;
 
        writew(readw(streamer_mmio + BCTL) | BCTL_SOFTRESET, streamer_mmio + BCTL);
        t = jiffies;
        /* Hold soft reset bit for a while */
-       current->state = TASK_UNINTERRUPTIBLE;
-       schedule_timeout(HZ);
+       ssleep(1);
        
        writew(readw(streamer_mmio + BCTL) & ~BCTL_SOFTRESET,
               streamer_mmio + BCTL);
@@ -511,9 +510,8 @@ static int streamer_reset(struct net_device *dev)
        writew(SISR_MI, streamer_mmio + SISR_MASK_SUM);
 
        while (!((readw(streamer_mmio + SISR)) & SISR_SRB_REPLY)) {
-               current->state = TASK_INTERRUPTIBLE;
-               schedule_timeout(HZ/10);
-               if (jiffies - t > 40 * HZ) {
+               msleep_interruptible(100);
+               if (time_after(jiffies, t + 40 * HZ)) {
                        printk(KERN_ERR
                               "IBM PCI tokenring card not responding\n");
                        release_region(dev->base_addr, STREAMER_IO_SPACE);
@@ -577,11 +575,7 @@ static int streamer_reset(struct net_device *dev)
                        dev->dev_addr[i+1]= addr & 0xff;
                }
 #if STREAMER_DEBUG
-               printk("Adapter address: ");
-               for (i = 0; i < 6; i++) {
-                       printk("%02x:", dev->dev_addr[i]);
-               }
-               printk("\n");
+               printk("Adapter address: %pM\n", dev->dev_addr);
 #endif
        }
        return 0;
@@ -589,7 +583,7 @@ static int streamer_reset(struct net_device *dev)
 
 static int streamer_open(struct net_device *dev)
 {
-       struct streamer_private *streamer_priv = (struct streamer_private *) dev->priv;
+       struct streamer_private *streamer_priv = netdev_priv(dev);
        __u8 __iomem *streamer_mmio = streamer_priv->streamer_mmio;
        unsigned long flags;
        char open_error[255];
@@ -602,7 +596,7 @@ static int streamer_open(struct net_device *dev)
                rc=streamer_reset(dev);
        }
 
-       if (request_irq(dev->irq, &streamer_interrupt, SA_SHIRQ, "lanstreamer", dev)) {
+       if (request_irq(dev->irq, streamer_interrupt, IRQF_SHARED, "lanstreamer", dev)) {
                return -EAGAIN;
        }
 #if STREAMER_DEBUG
@@ -623,8 +617,6 @@ static int streamer_open(struct net_device *dev)
        printk("SISR Mask = %04x\n", readw(streamer_mmio + SISR_MASK));
 #endif
        do {
-               int i;
-
                for (i = 0; i < SRB_COMMAND_SIZE; i += 2) {
                        writew(0, streamer_mmio + LAPDINC);
                }
@@ -720,8 +712,8 @@ static int streamer_open(struct net_device *dev)
                                        strcat(open_error, " - ");
                                        strcat(open_error, open_min_error[(error_code & 0x0f)]);
 
-                                       if (!streamer_priv->streamer_ring_speed
-                                           && ((error_code & 0x0f) == 0x0d)) 
+                                       if (!streamer_priv->streamer_ring_speed &&
+                                           ((error_code & 0x0f) == 0x0d))
                                        {
                                                printk(KERN_WARNING "%s: Tried to autosense ring speed with no monitors present\n", dev->name);
                                                printk(KERN_WARNING "%s: Please try again with a specified ring speed \n", dev->name);
@@ -906,7 +898,7 @@ static int streamer_open(struct net_device *dev)
 static void streamer_rx(struct net_device *dev)
 {
        struct streamer_private *streamer_priv =
-           (struct streamer_private *) dev->priv;
+           netdev_priv(dev);
        __u8 __iomem *streamer_mmio = streamer_priv->streamer_mmio;
        struct streamer_rx_desc *rx_desc;
        int rx_ring_last_received, length, frame_length, buffer_cnt = 0;
@@ -944,10 +936,8 @@ static void streamer_rx(struct net_device *dev)
                        if (skb == NULL) 
                        {
                                printk(KERN_WARNING "%s: Not enough memory to copy packet to upper layers. \n", dev->name);
-                               streamer_priv->streamer_stats.rx_dropped++;
+                               dev->stats.rx_dropped++;
                        } else {        /* we allocated an skb OK */
-                               skb->dev = dev;
-
                                if (buffer_cnt == 1) {
                                        /* release the DMA mapping */
                                        pci_unmap_single(streamer_priv->pci_dev, 
@@ -1018,9 +1008,8 @@ static void streamer_rx(struct net_device *dev)
                                        /* send up to the protocol */
                                        netif_rx(skb);
                                }
-                               dev->last_rx = jiffies;
-                               streamer_priv->streamer_stats.rx_packets++;
-                               streamer_priv->streamer_stats.rx_bytes += length;
+                               dev->stats.rx_packets++;
+                               dev->stats.rx_bytes += length;
                        }       /* if skb == null */
                }               /* end received without errors */
 
@@ -1029,11 +1018,11 @@ static void streamer_rx(struct net_device *dev)
        }                       /* end for all completed rx descriptors */
 }
 
-static irqreturn_t streamer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+static irqreturn_t streamer_interrupt(int irq, void *dev_id)
 {
        struct net_device *dev = (struct net_device *) dev_id;
        struct streamer_private *streamer_priv =
-           (struct streamer_private *) dev->priv;
+           netdev_priv(dev);
        __u8 __iomem *streamer_mmio = streamer_priv->streamer_mmio;
        __u16 sisr;
        __u16 misr;
@@ -1043,8 +1032,8 @@ static irqreturn_t streamer_interrupt(int irq, void *dev_id, struct pt_regs *reg
        sisr = readw(streamer_mmio + SISR);
 
        while((sisr & (SISR_MI | SISR_SRB_REPLY | SISR_ADAPTER_CHECK | SISR_ASB_FREE | 
-                      SISR_ARB_CMD | SISR_TRB_REPLY | SISR_PAR_ERR | SISR_SERR_ERR))
-               && (max_intr > 0)) {
+                      SISR_ARB_CMD | SISR_TRB_REPLY | SISR_PAR_ERR | SISR_SERR_ERR)) &&
+             (max_intr > 0)) {
 
                if(sisr & SISR_PAR_ERR) {
                        writew(~SISR_PAR_ERR, streamer_mmio + SISR_RUM);
@@ -1063,8 +1052,8 @@ static irqreturn_t streamer_interrupt(int irq, void *dev_id, struct pt_regs *reg
                                while(streamer_priv->streamer_tx_ring[(streamer_priv->tx_ring_last_status + 1) & (STREAMER_TX_RING_SIZE - 1)].status) {
                                streamer_priv->tx_ring_last_status = (streamer_priv->tx_ring_last_status + 1) & (STREAMER_TX_RING_SIZE - 1);
                                streamer_priv->free_tx_ring_entries++;
-                               streamer_priv->streamer_stats.tx_bytes += streamer_priv->tx_ring_skb[streamer_priv->tx_ring_last_status]->len;
-                               streamer_priv->streamer_stats.tx_packets++;
+                               dev->stats.tx_bytes += streamer_priv->tx_ring_skb[streamer_priv->tx_ring_last_status]->len;
+                               dev->stats.tx_packets++;
                                dev_kfree_skb_irq(streamer_priv->tx_ring_skb[streamer_priv->tx_ring_last_status]);
                                streamer_priv->streamer_tx_ring[streamer_priv->tx_ring_last_status].buffer = 0xdeadbeef;
                                streamer_priv->streamer_tx_ring[streamer_priv->tx_ring_last_status].status = 0;
@@ -1153,10 +1142,11 @@ static irqreturn_t streamer_interrupt(int irq, void *dev_id, struct pt_regs *reg
        return IRQ_HANDLED;
 }
 
-static int streamer_xmit(struct sk_buff *skb, struct net_device *dev)
+static netdev_tx_t streamer_xmit(struct sk_buff *skb,
+                                      struct net_device *dev)
 {
        struct streamer_private *streamer_priv =
-           (struct streamer_private *) dev->priv;
+           netdev_priv(dev);
        __u8 __iomem *streamer_mmio = streamer_priv->streamer_mmio;
        unsigned long flags ;
 
@@ -1195,11 +1185,11 @@ static int streamer_xmit(struct sk_buff *skb, struct net_device *dev)
 
                streamer_priv->tx_ring_free = (streamer_priv->tx_ring_free + 1) & (STREAMER_TX_RING_SIZE - 1);
                spin_unlock_irqrestore(&streamer_priv->streamer_lock,flags);
-               return 0;
+               return NETDEV_TX_OK;
        } else {
                netif_stop_queue(dev);
                spin_unlock_irqrestore(&streamer_priv->streamer_lock,flags);
-               return 1;
+               return NETDEV_TX_BUSY;
        }
 }
 
@@ -1207,7 +1197,7 @@ static int streamer_xmit(struct sk_buff *skb, struct net_device *dev)
 static int streamer_close(struct net_device *dev)
 {
        struct streamer_private *streamer_priv =
-           (struct streamer_private *) dev->priv;
+           netdev_priv(dev);
        __u8 __iomem *streamer_mmio = streamer_priv->streamer_mmio;
        unsigned long flags;
        int i;
@@ -1273,7 +1263,7 @@ static int streamer_close(struct net_device *dev)
 static void streamer_set_rx_mode(struct net_device *dev)
 {
        struct streamer_private *streamer_priv =
-           (struct streamer_private *) dev->priv;
+           netdev_priv(dev);
        __u8 __iomem *streamer_mmio = streamer_priv->streamer_mmio;
        __u8 options = 0;
        struct dev_mc_list *dmi;
@@ -1332,7 +1322,7 @@ static void streamer_set_rx_mode(struct net_device *dev)
 
 static void streamer_srb_bh(struct net_device *dev)
 {
-       struct streamer_private *streamer_priv = (struct streamer_private *) dev->priv;
+       struct streamer_private *streamer_priv = netdev_priv(dev);
        __u8 __iomem *streamer_mmio = streamer_priv->streamer_mmio;
        __u16 srb_word;
 
@@ -1494,17 +1484,10 @@ static void streamer_srb_bh(struct net_device *dev)
        }                       /* switch srb[0] */
 }
 
-static struct net_device_stats *streamer_get_stats(struct net_device *dev)
-{
-       struct streamer_private *streamer_priv;
-       streamer_priv = (struct streamer_private *) dev->priv;
-       return (struct net_device_stats *) &streamer_priv->streamer_stats;
-}
-
 static int streamer_set_mac_address(struct net_device *dev, void *addr)
 {
        struct sockaddr *saddr = addr;
-       struct streamer_private *streamer_priv = (struct streamer_private *) dev->priv;
+       struct streamer_private *streamer_priv = netdev_priv(dev);
 
        if (netif_running(dev)) 
        {
@@ -1529,7 +1512,7 @@ static int streamer_set_mac_address(struct net_device *dev, void *addr)
 static void streamer_arb_cmd(struct net_device *dev)
 {
        struct streamer_private *streamer_priv =
-           (struct streamer_private *) dev->priv;
+           netdev_priv(dev);
        __u8 __iomem *streamer_mmio = streamer_priv->streamer_mmio;
        __u8 header_len;
        __u16 frame_len, buffer_len;
@@ -1609,23 +1592,18 @@ static void streamer_arb_cmd(struct net_device *dev)
                                      frame_data, buffer_len);
                } while (next_ptr && (buff_off = next_ptr));
 
+               mac_frame->protocol = tr_type_trans(mac_frame, dev);
 #if STREAMER_NETWORK_MONITOR
                printk(KERN_WARNING "%s: Received MAC Frame, details: \n",
                       dev->name);
-               mac_hdr = (struct trh_hdr *) mac_frame->data;
+               mac_hdr = tr_hdr(mac_frame);
                printk(KERN_WARNING
-                      "%s: MAC Frame Dest. Addr: %02x:%02x:%02x:%02x:%02x:%02x \n",
-                      dev->name, mac_hdr->daddr[0], mac_hdr->daddr[1],
-                      mac_hdr->daddr[2], mac_hdr->daddr[3],
-                      mac_hdr->daddr[4], mac_hdr->daddr[5]);
+                      "%s: MAC Frame Dest. Addr: %pM\n",
+                      dev->name, mac_hdr->daddr);
                printk(KERN_WARNING
-                      "%s: MAC Frame Srce. Addr: %02x:%02x:%02x:%02x:%02x:%02x \n",
-                      dev->name, mac_hdr->saddr[0], mac_hdr->saddr[1],
-                      mac_hdr->saddr[2], mac_hdr->saddr[3],
-                      mac_hdr->saddr[4], mac_hdr->saddr[5]);
+                      "%s: MAC Frame Srce. Addr: %pM\n",
+                      dev->name, mac_hdr->saddr);
 #endif
-               mac_frame->dev = dev;
-               mac_frame->protocol = tr_type_trans(mac_frame, dev);
                netif_rx(mac_frame);
 
                /* Now tell the card we have dealt with the received frame */
@@ -1745,7 +1723,7 @@ drop_frame:
 static void streamer_asb_bh(struct net_device *dev)
 {
        struct streamer_private *streamer_priv =
-           (struct streamer_private *) dev->priv;
+           netdev_priv(dev);
        __u8 __iomem *streamer_mmio = streamer_priv->streamer_mmio;
 
        if (streamer_priv->asb_queued == 1) 
@@ -1789,7 +1767,7 @@ static void streamer_asb_bh(struct net_device *dev)
 static int streamer_change_mtu(struct net_device *dev, int mtu)
 {
        struct streamer_private *streamer_priv =
-           (struct streamer_private *) dev->priv;
+           netdev_priv(dev);
        __u16 max_mtu;
 
        if (streamer_priv->streamer_ring_speed == 4)
@@ -1853,7 +1831,7 @@ static int streamer_proc_info(char *buffer, char **start, off_t offset,
 static int sprintf_info(char *buffer, struct net_device *dev)
 {
        struct streamer_private *streamer_priv =
-           (struct streamer_private *) dev->priv;
+           netdev_priv(dev);
        __u8 __iomem *streamer_mmio = streamer_priv->streamer_mmio;
        struct streamer_adapter_addr_table sat;
        struct streamer_parameters_table spt;
@@ -1877,41 +1855,31 @@ static int sprintf_info(char *buffer, struct net_device *dev)
                datap[size+1]=io_word & 0xff;
        }
 
-
        size = sprintf(buffer, "\n%6s: Adapter Address   : Node Address      : Functional Addr\n", dev->name);
 
        size += sprintf(buffer + size,
-                   "%6s: %02x:%02x:%02x:%02x:%02x:%02x : %02x:%02x:%02x:%02x:%02x:%02x : %02x:%02x:%02x:%02x\n",
-                   dev->name, dev->dev_addr[0], dev->dev_addr[1],
-                   dev->dev_addr[2], dev->dev_addr[3], dev->dev_addr[4],
-                   dev->dev_addr[5], sat.node_addr[0], sat.node_addr[1],
-                   sat.node_addr[2], sat.node_addr[3], sat.node_addr[4],
-                   sat.node_addr[5], sat.func_addr[0], sat.func_addr[1],
-                   sat.func_addr[2], sat.func_addr[3]);
+                       "%6s: %pM : %pM : %02x:%02x:%02x:%02x\n",
+                       dev->name, dev->dev_addr, sat.node_addr,
+                       sat.func_addr[0], sat.func_addr[1],
+                       sat.func_addr[2], sat.func_addr[3]);
 
        size += sprintf(buffer + size, "\n%6s: Token Ring Parameters Table:\n", dev->name);
 
        size += sprintf(buffer + size, "%6s: Physical Addr : Up Node Address   : Poll Address      : AccPri : Auth Src : Att Code :\n", dev->name);
 
        size += sprintf(buffer + size,
-                   "%6s: %02x:%02x:%02x:%02x   : %02x:%02x:%02x:%02x:%02x:%02x : %02x:%02x:%02x:%02x:%02x:%02x : %04x   : %04x     :  %04x    :\n",
+                   "%6s: %02x:%02x:%02x:%02x   : %pM : %pM : %04x   : %04x     :  %04x    :\n",
                    dev->name, spt.phys_addr[0], spt.phys_addr[1],
                    spt.phys_addr[2], spt.phys_addr[3],
-                   spt.up_node_addr[0], spt.up_node_addr[1],
-                   spt.up_node_addr[2], spt.up_node_addr[3],
-                   spt.up_node_addr[4], spt.up_node_addr[4],
-                   spt.poll_addr[0], spt.poll_addr[1], spt.poll_addr[2],
-                   spt.poll_addr[3], spt.poll_addr[4], spt.poll_addr[5],
+                   spt.up_node_addr, spt.poll_addr,
                    ntohs(spt.acc_priority), ntohs(spt.auth_source_class),
                    ntohs(spt.att_code));
 
        size += sprintf(buffer + size, "%6s: Source Address    : Bcn T : Maj. V : Lan St : Lcl Rg : Mon Err : Frame Correl : \n", dev->name);
 
        size += sprintf(buffer + size,
-                   "%6s: %02x:%02x:%02x:%02x:%02x:%02x : %04x  : %04x   : %04x   : %04x   : %04x    :     %04x     : \n",
-                   dev->name, spt.source_addr[0], spt.source_addr[1],
-                   spt.source_addr[2], spt.source_addr[3],
-                   spt.source_addr[4], spt.source_addr[5],
+                   "%6s: %pM : %04x  : %04x   : %04x   : %04x   : %04x    :     %04x     : \n",
+                   dev->name, spt.source_addr,
                    ntohs(spt.beacon_type), ntohs(spt.major_vector),
                    ntohs(spt.lan_status), ntohs(spt.local_ring),
                    ntohs(spt.mon_error), ntohs(spt.frame_correl));
@@ -1920,77 +1888,17 @@ static int sprintf_info(char *buffer, struct net_device *dev)
                    dev->name);
 
        size += sprintf(buffer + size,
-                   "%6s:                :  %02x  :  %02x  : %02x:%02x:%02x:%02x:%02x:%02x : %02x:%02x:%02x:%02x    : \n",
+                   "%6s:                :  %02x  :  %02x  : %pM : %02x:%02x:%02x:%02x    : \n",
                    dev->name, ntohs(spt.beacon_transmit),
-                   ntohs(spt.beacon_receive), spt.beacon_naun[0],
-                   spt.beacon_naun[1], spt.beacon_naun[2],
-                   spt.beacon_naun[3], spt.beacon_naun[4],
-                   spt.beacon_naun[5], spt.beacon_phys[0],
-                   spt.beacon_phys[1], spt.beacon_phys[2],
-                   spt.beacon_phys[3]);
+                   ntohs(spt.beacon_receive),
+                   spt.beacon_naun,
+                   spt.beacon_phys[0], spt.beacon_phys[1],
+                   spt.beacon_phys[2], spt.beacon_phys[3]);
        return size;
 }
 #endif
 #endif
 
-#if STREAMER_IOCTL && (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
-static int streamer_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
-{
-        int i;
-       struct streamer_private *streamer_priv = (struct streamer_private *) dev->priv;
-       u8 __iomem *streamer_mmio = streamer_priv->streamer_mmio;
-
-       switch(cmd) {
-       case IOCTL_SISR_MASK:
-               writew(SISR_MI, streamer_mmio + SISR_MASK_SUM);
-               break;
-       case IOCTL_SPIN_LOCK_TEST:
-               printk(KERN_INFO "spin_lock() called.\n");
-               spin_lock(&streamer_priv->streamer_lock);
-               spin_unlock(&streamer_priv->streamer_lock);
-               printk(KERN_INFO "spin_unlock() finished.\n");
-               break;
-       case IOCTL_PRINT_BDAS:
-               printk(KERN_INFO "bdas: RXBDA: %x RXLBDA: %x TX2FDA: %x TX2LFDA: %x\n",
-                      readw(streamer_mmio + RXBDA),
-                      readw(streamer_mmio + RXLBDA),
-                      readw(streamer_mmio + TX2FDA),
-                      readw(streamer_mmio + TX2LFDA));
-               break;
-       case IOCTL_PRINT_REGISTERS:
-               printk(KERN_INFO "registers:\n");
-               printk(KERN_INFO "SISR: %04x MISR: %04x LISR: %04x BCTL: %04x BMCTL: %04x\nmask  %04x mask  %04x\n", 
-                      readw(streamer_mmio + SISR),
-                      readw(streamer_mmio + MISR_RUM),
-                      readw(streamer_mmio + LISR),
-                      readw(streamer_mmio + BCTL),
-                      readw(streamer_mmio + BMCTL_SUM),
-                      readw(streamer_mmio + SISR_MASK),
-                      readw(streamer_mmio + MISR_MASK));
-               break;
-       case IOCTL_PRINT_RX_BUFS:
-               printk(KERN_INFO "Print rx bufs:\n");
-               for(i=0; i<STREAMER_RX_RING_SIZE; i++)
-                       printk(KERN_INFO "rx_ring %d status: 0x%x\n", i, 
-                              streamer_priv->streamer_rx_ring[i].status);
-               break;
-       case IOCTL_PRINT_TX_BUFS:
-               printk(KERN_INFO "Print tx bufs:\n");
-               for(i=0; i<STREAMER_TX_RING_SIZE; i++)
-                       printk(KERN_INFO "tx_ring %d status: 0x%x\n", i, 
-                              streamer_priv->streamer_tx_ring[i].status);
-               break;
-       case IOCTL_RX_CMD:
-               streamer_rx(dev);
-               printk(KERN_INFO "Sent rx command.\n");
-               break;
-       default:
-               printk(KERN_INFO "Bad ioctl!\n");
-       }
-       return 0;
-}
-#endif
-
 static struct pci_driver streamer_pci_driver = {
   .name     = "lanstreamer",
   .id_table = streamer_pci_tbl,
@@ -1999,7 +1907,7 @@ static struct pci_driver streamer_pci_driver = {
 };
 
 static int __init streamer_init_module(void) {
-  return pci_module_init(&streamer_pci_driver);
+  return pci_register_driver(&streamer_pci_driver);
 }
 
 static void __exit streamer_cleanup_module(void) {