fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / drivers / net / atp.c
index fd2e033..2d306fc 100644 (file)
@@ -141,9 +141,9 @@ static int xcvr[NUM_UNITS];                         /* The data transfer mode. */
 #include <linux/skbuff.h>
 #include <linux/spinlock.h>
 #include <linux/delay.h>
+#include <linux/bitops.h>
 
 #include <asm/system.h>
-#include <asm/bitops.h>
 #include <asm/io.h>
 #include <asm/dma.h>
 
@@ -153,11 +153,11 @@ MODULE_AUTHOR("Donald Becker <becker@scyld.com>");
 MODULE_DESCRIPTION("RealTek RTL8002/8012 parallel port Ethernet driver");
 MODULE_LICENSE("GPL");
 
-MODULE_PARM(max_interrupt_work, "i");
-MODULE_PARM(debug, "i");
-MODULE_PARM(io, "1-" __MODULE_STRING(NUM_UNITS) "i");
-MODULE_PARM(irq, "1-" __MODULE_STRING(NUM_UNITS) "i");
-MODULE_PARM(xcvr, "1-" __MODULE_STRING(NUM_UNITS) "i");
+module_param(max_interrupt_work, int, 0);
+module_param(debug, int, 0);
+module_param_array(io, int, NULL, 0);
+module_param_array(irq, int, NULL, 0);
+module_param_array(xcvr, int, NULL, 0);
 MODULE_PARM_DESC(max_interrupt_work, "ATP maximum events handled per interrupt");
 MODULE_PARM_DESC(debug, "ATP debug level (0-7)");
 MODULE_PARM_DESC(io, "ATP I/O base address(es)");
@@ -203,7 +203,7 @@ static void hardware_init(struct net_device *dev);
 static void write_packet(long ioaddr, int length, unsigned char *packet, int pad, int mode);
 static void trigger_send(long ioaddr, int length);
 static int     atp_send_packet(struct sk_buff *skb, struct net_device *dev);
-static irqreturn_t atp_interrupt(int irq, void *dev_id, struct pt_regs *regs);
+static irqreturn_t atp_interrupt(int irq, void *dev_id);
 static void net_rx(struct net_device *dev);
 static void read_block(long ioaddr, int length, unsigned char *buffer, int data_mode);
 static int net_close(struct net_device *dev);
@@ -221,7 +221,7 @@ static struct net_device *root_atp_dev;
    If dev->base_addr == 1, always return failure.
    If dev->base_addr == 2, allocate space for the device and return success
    (detachable devices only).
-   
+
    FIXME: we should use the parport layer for this
    */
 static int __init atp_init(void)
@@ -596,20 +596,15 @@ static int atp_send_packet(struct sk_buff *skb, struct net_device *dev)
 
 /* The typical workload of the driver:
    Handle the network interface interrupts. */
-static irqreturn_t
-atp_interrupt(int irq, void *dev_instance, struct pt_regs * regs)
+static irqreturn_t atp_interrupt(int irq, void *dev_instance)
 {
-       struct net_device *dev = (struct net_device *)dev_instance;
+       struct net_device *dev = dev_instance;
        struct net_local *lp;
        long ioaddr;
        static int num_tx_since_rx;
        int boguscount = max_interrupt_work;
        int handled = 0;
 
-       if (dev == NULL) {
-               printk(KERN_ERR "ATP_interrupt(): irq %d for unknown device.\n", irq);
-               return IRQ_NONE;
-       }
        ioaddr = dev->base_addr;
        lp = netdev_priv(dev);
 
@@ -909,7 +904,7 @@ static void set_rx_mode_8012(struct net_device *dev)
                         i++, mclist = mclist->next)
                {
                        int filterbit = ether_crc_le(ETH_ALEN, mclist->dmi_addr) & 0x3f;
-                       mc_filter[filterbit >> 5] |= cpu_to_le32(1 << (filterbit & 31));
+                       mc_filter[filterbit >> 5] |= 1 << (filterbit & 31);
                }
                new_mode = CMR2h_Normal;
        }