include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit...
[safe/jmp/linux-2.6] / drivers / net / tokenring / lanstreamer.c
index 30dcdae..7a5fbf5 100644 (file)
 #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 <linux/slab.h>
 
+#include <net/net_namespace.h>
 #include <net/checksum.h>
 
 #include <asm/io.h>
 static char version[] = "LanStreamer.c v0.4.0 03/08/01 - Mike Sullivan\n"
                         "              v0.5.3 11/13/02 - Kent Yoder";
 
-static struct pci_device_id streamer_pci_tbl[] = {
+static DEFINE_PCI_DEVICE_TABLE(streamer_pci_tbl) = {
        { PCI_VENDOR_ID_IBM, PCI_DEVICE_ID_IBM_TR, PCI_ANY_ID, PCI_ANY_ID,},
        {}      /* terminating entry */
 };
@@ -169,7 +170,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         
@@ -203,12 +204,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);
@@ -223,6 +223,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)
 {
@@ -245,20 +257,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, DMA_32BIT_MASK);
+       rc = pci_set_dma_mask(pdev, DMA_BIT_MASK(32));
        if (rc) {
                printk(KERN_ERR "%s: No suitable PCI mapping available.\n",
                                dev->name);
@@ -323,18 +334,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);
@@ -405,7 +405,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;
@@ -424,7 +424,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
@@ -449,7 +449,7 @@ 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);
@@ -576,11 +576,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;
@@ -588,7 +584,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];
@@ -601,7 +597,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
@@ -622,8 +618,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);
                }
@@ -719,8 +713,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);
@@ -905,7 +899,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;
@@ -943,10 +937,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, 
@@ -1017,9 +1009,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 */
 
@@ -1028,11 +1019,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;
@@ -1042,8 +1033,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);
@@ -1062,8 +1053,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;
@@ -1152,10 +1143,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 ;
 
@@ -1194,11 +1186,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;
        }
 }
 
@@ -1206,7 +1198,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;
@@ -1272,12 +1264,11 @@ 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;
        unsigned char dev_mc_address[5];
-       int i;
 
        writel(streamer_priv->srb, streamer_mmio + LAPA);
        options = streamer_priv->streamer_copy_all_options;
@@ -1312,8 +1303,7 @@ static void streamer_set_rx_mode(struct net_device *dev)
        writel(streamer_priv->srb,streamer_mmio+LAPA);
        dev_mc_address[0] = dev_mc_address[1] = dev_mc_address[2] = dev_mc_address[3] = 0 ; 
   
-       for (i=0,dmi=dev->mc_list;i < dev->mc_count; i++,dmi = dmi->next) 
-       { 
+       netdev_for_each_mc_addr(dmi, dev) {
                dev_mc_address[0] |= dmi->dmi_addr[2] ; 
                dev_mc_address[1] |= dmi->dmi_addr[3] ; 
                dev_mc_address[2] |= dmi->dmi_addr[4] ; 
@@ -1331,7 +1321,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;
 
@@ -1493,17 +1483,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)) 
        {
@@ -1528,7 +1511,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;
@@ -1608,23 +1591,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 */
@@ -1744,7 +1722,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) 
@@ -1788,7 +1766,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)
@@ -1852,7 +1830,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;
@@ -1876,41 +1854,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));
@@ -1919,77 +1887,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,
@@ -1998,7 +1906,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) {