drivers/net/ni65.c: fix sparse warnings: symbol shadows an earlier one
[safe/jmp/linux-2.6] / drivers / net / ni65.c
index bb42ff2..d769a88 100644 (file)
@@ -7,8 +7,6 @@
  * EtherBlaster. (probably it also works with every full NE2100
  * compatible card)
  *
- * To compile as module, type:
- *     gcc -O2 -fomit-frame-pointer -m486 -D__KERNEL__ -DMODULE -c ni65.c
  * driver probes: io: 0x360,0x300,0x320,0x340 / dma: 3,5,6,7
  *
  * This is an extension to the Linux operating system, and is covered by the
@@ -183,7 +181,7 @@ static struct card {
        short addr_offset;
        unsigned char *vendor_id;
        char *cardname;
-       long config;
+       unsigned long config;
 } cards[] = {
        {
                .id0         = NI65_ID0,
@@ -248,7 +246,7 @@ struct priv
 };
 
 static int  ni65_probe1(struct net_device *dev,int);
-static irqreturn_t ni65_interrupt(int irq, void * dev_id, struct pt_regs *regs);
+static irqreturn_t ni65_interrupt(int irq, void * dev_id);
 static void ni65_recv_intr(struct net_device *dev,int);
 static void ni65_xmit_intr(struct net_device *dev,int);
 static int  ni65_open(struct net_device *dev);
@@ -295,7 +293,7 @@ static void ni65_set_performance(struct priv *p)
  */
 static int ni65_open(struct net_device *dev)
 {
-       struct priv *p = (struct priv *) dev->priv;
+       struct priv *p = dev->ml_priv;
        int irqval = request_irq(dev->irq, &ni65_interrupt,0,
                         cards[p->cardno].cardname,dev);
        if (irqval) {
@@ -321,10 +319,10 @@ static int ni65_open(struct net_device *dev)
  */
 static int ni65_close(struct net_device *dev)
 {
-       struct priv *p = (struct priv *) dev->priv;
+       struct priv *p = dev->ml_priv;
 
        netif_stop_queue(dev);
-       
+
        outw(inw(PORT+L_RESET),PORT+L_RESET); /* that's the hard way */
 
 #ifdef XMT_VIA_SKB
@@ -345,7 +343,7 @@ static int ni65_close(struct net_device *dev)
 
 static void cleanup_card(struct net_device *dev)
 {
-       struct priv *p = (struct priv *) dev->priv;
+       struct priv *p = dev->ml_priv;
        disable_dma(dev->dma);
        free_dma(dev->dma);
        release_region(dev->base_addr, cards[p->cardno].total_size);
@@ -444,7 +442,7 @@ static int __init ni65_probe1(struct net_device *dev,int ioaddr)
                release_region(ioaddr, cards[i].total_size);
                return j;
        }
-       p = (struct priv *) dev->priv;
+       p = dev->ml_priv;
        p->cmdr_addr = ioaddr + cards[i].cmd_offset;
        p->cardno = i;
        spin_lock_init(&p->ring_lock);
@@ -489,20 +487,20 @@ static int __init ni65_probe1(struct net_device *dev,int ioaddr)
                                int dma = dmatab[i];
                                if(test_bit(dma,&dma_channels) || request_dma(dma,"ni6510"))
                                        continue;
-                                       
+
                                flags=claim_dma_lock();
                                disable_dma(dma);
                                set_dma_mode(dma,DMA_MODE_CASCADE);
                                enable_dma(dma);
                                release_dma_lock(flags);
-                               
+
                                ni65_init_lance(p,dev->dev_addr,0,0); /* trigger memory access */
-                               
+
                                flags=claim_dma_lock();
                                disable_dma(dma);
                                free_dma(dma);
                                release_dma_lock(flags);
-                               
+
                                if(readreg(CSR0) & CSR0_IDON)
                                        break;
                        }
@@ -550,7 +548,6 @@ static int __init ni65_probe1(struct net_device *dev,int ioaddr)
        }
 
        dev->base_addr = ioaddr;
-       SET_MODULE_OWNER(dev);
        dev->open               = ni65_open;
        dev->stop               = ni65_close;
        dev->hard_start_xmit    = ni65_send_packet;
@@ -610,7 +607,6 @@ static void *ni65_alloc_mem(struct net_device *dev,char *what,int size,int type)
                        printk(KERN_WARNING "%s: unable to allocate %s memory.\n",dev->name,what);
                        return NULL;
                }
-               skb->dev = dev;
                skb_reserve(skb,2+16);
                skb_put(skb,R_BUF_SIZE);         /* grab the whole space .. (not necessary) */
                ptr = skb->data;
@@ -649,8 +645,8 @@ static int ni65_alloc_buffer(struct net_device *dev)
        if(!ptr)
                return -ENOMEM;
 
-       p = dev->priv = (struct priv *) (((unsigned long) ptr + 7) & ~0x7);
-       memset((char *) dev->priv,0,sizeof(struct priv));
+       p = dev->ml_priv = (struct priv *) (((unsigned long) ptr + 7) & ~0x7);
+       memset((char *)p, 0, sizeof(struct priv));
        p->self = ptr;
 
        for(i=0;i<TMDNUM;i++)
@@ -792,7 +788,7 @@ static void ni65_stop_start(struct net_device *dev,struct priv *p)
 static int ni65_lance_reinit(struct net_device *dev)
 {
         int i;
-        struct priv *p = (struct priv *) dev->priv;
+        struct priv *p = dev->ml_priv;
         unsigned long flags;
 
         p->lock = 0;
@@ -871,17 +867,17 @@ static int ni65_lance_reinit(struct net_device *dev)
 /*
  * interrupt handler
  */
-static irqreturn_t ni65_interrupt(int irq, void * dev_id, struct pt_regs * regs)
+static irqreturn_t ni65_interrupt(int irq, void * dev_id)
 {
        int csr0 = 0;
        struct net_device *dev = dev_id;
        struct priv *p;
        int bcnt = 32;
 
-       p = (struct priv *) dev->priv;
+       p = dev->ml_priv;
 
        spin_lock(&p->ring_lock);
-       
+
        while(--bcnt) {
                csr0 = inw(PORT+L_DATAREG);
 
@@ -901,7 +897,6 @@ static irqreturn_t ni65_interrupt(int irq, void * dev_id, struct pt_regs * regs)
 
                if(csr0 & CSR0_ERR)
                {
-                       struct priv *p = (struct priv *) dev->priv;
                        if(debuglevel > 1)
                                printk(KERN_ERR "%s: general error: %04x.\n",dev->name,csr0);
                        if(csr0 & CSR0_BABL)
@@ -926,8 +921,7 @@ static irqreturn_t ni65_interrupt(int irq, void * dev_id, struct pt_regs * regs)
  int j;
  for(j=0;j<RMDNUM;j++)
  {
-       struct priv *p = (struct priv *) dev->priv;
-       int i,k,num1,num2;
+       int i, num2;
        for(i=RMDNUM-1;i>0;i--) {
                 num2 = (p->rmdnum + i) & (RMDNUM-1);
                 if(!(p->rmdhead[num2].u.s.status & RCV_OWN))
@@ -935,6 +929,7 @@ static irqreturn_t ni65_interrupt(int irq, void * dev_id, struct pt_regs * regs)
        }
 
        if(i) {
+               int k, num1;
                for(k=0;k<RMDNUM;k++) {
                        num1 = (p->rmdnum + k) & (RMDNUM-1);
                        if(!(p->rmdhead[num1].u.s.status & RCV_OWN))
@@ -946,7 +941,6 @@ static irqreturn_t ni65_interrupt(int irq, void * dev_id, struct pt_regs * regs)
                if(debuglevel > 0)
                {
                        char buf[256],*buf1;
-                       int k;
                        buf1 = buf;
                        for(k=0;k<RMDNUM;k++) {
                                sprintf(buf1,"%02x ",(p->rmdhead[k].u.s.status)); /* & RCV_OWN) ); */
@@ -984,7 +978,7 @@ static irqreturn_t ni65_interrupt(int irq, void * dev_id, struct pt_regs * regs)
  */
 static void ni65_xmit_intr(struct net_device *dev,int csr0)
 {
-       struct priv *p = (struct priv *) dev->priv;
+       struct priv *p = dev->ml_priv;
 
        while(p->xmit_queued)
        {
@@ -1051,7 +1045,7 @@ static void ni65_recv_intr(struct net_device *dev,int csr0)
        struct rmd *rmdp;
        int rmdstat,len;
        int cnt=0;
-       struct priv *p = (struct priv *) dev->priv;
+       struct priv *p = dev->ml_priv;
 
        rmdp = p->rmdhead + p->rmdnum;
        while(!( (rmdstat = rmdp->u.s.status) & RCV_OWN))
@@ -1094,11 +1088,10 @@ static void ni65_recv_intr(struct net_device *dev,int csr0)
                        if(skb)
                        {
                                skb_reserve(skb,2);
-       skb->dev = dev;
 #ifdef RCV_VIA_SKB
                                if( (unsigned long) (skb->data + R_BUF_SIZE) > 0x1000000) {
                                        skb_put(skb,len);
-                                       eth_copy_and_sum(skb, (unsigned char *)(p->recv_skb[p->rmdnum]->data),len,0);
+                                       skb_copy_to_linear_data(skb, (unsigned char *)(p->recv_skb[p->rmdnum]->data),len);
                                }
                                else {
                                        struct sk_buff *skb1 = p->recv_skb[p->rmdnum];
@@ -1110,13 +1103,12 @@ static void ni65_recv_intr(struct net_device *dev,int csr0)
                                }
 #else
                                skb_put(skb,len);
-                               eth_copy_and_sum(skb, (unsigned char *) p->recvbounce[p->rmdnum],len,0);
+                               skb_copy_to_linear_data(skb, (unsigned char *) p->recvbounce[p->rmdnum],len);
 #endif
                                p->stats.rx_packets++;
                                p->stats.rx_bytes += len;
                                skb->protocol=eth_type_trans(skb,dev);
                                netif_rx(skb);
-                               dev->last_rx = jiffies;
                        }
                        else
                        {
@@ -1139,11 +1131,11 @@ static void ni65_recv_intr(struct net_device *dev,int csr0)
 /*
  * kick xmitter ..
  */
+
 static void ni65_timeout(struct net_device *dev)
 {
        int i;
-       struct priv *p = (struct priv *) dev->priv;
+       struct priv *p = dev->ml_priv;
 
        printk(KERN_ERR "%s: xmitter timed out, try to restart!\n",dev->name);
        for(i=0;i<TMDNUM;i++)
@@ -1160,10 +1152,10 @@ static void ni65_timeout(struct net_device *dev)
 
 static int ni65_send_packet(struct sk_buff *skb, struct net_device *dev)
 {
-       struct priv *p = (struct priv *) dev->priv;
+       struct priv *p = dev->ml_priv;
 
        netif_stop_queue(dev);
-       
+
        if (test_and_set_bit(0, (void*)&p->lock)) {
                printk(KERN_ERR "%s: Queue was locked.\n", dev->name);
                return 1;
@@ -1178,8 +1170,9 @@ static int ni65_send_packet(struct sk_buff *skb, struct net_device *dev)
                if( (unsigned long) (skb->data + skb->len) > 0x1000000) {
 #endif
 
-                       memcpy((char *) p->tmdbounce[p->tmdbouncenum] ,(char *)skb->data,
-                                                        (skb->len > T_BUF_SIZE) ? T_BUF_SIZE : skb->len);
+                       skb_copy_from_linear_data(skb, p->tmdbounce[p->tmdbouncenum],
+                                     skb->len > T_BUF_SIZE ? T_BUF_SIZE :
+                                                             skb->len);
                        if (len > skb->len)
                                memset((char *)p->tmdbounce[p->tmdbouncenum]+skb->len, 0, len-skb->len);
                        dev_kfree_skb (skb);
@@ -1209,10 +1202,10 @@ static int ni65_send_packet(struct sk_buff *skb, struct net_device *dev)
 
                if(p->tmdnum != p->tmdlast)
                        netif_wake_queue(dev);
-                       
+
                p->lock = 0;
                dev->trans_start = jiffies;
-               
+
                spin_unlock_irqrestore(&p->ring_lock, flags);
        }
 
@@ -1224,7 +1217,7 @@ static struct net_device_stats *ni65_get_stats(struct net_device *dev)
 
 #if 0
        int i;
-       struct priv *p = (struct priv *) dev->priv;
+       struct priv *p = dev->ml_priv;
        for(i=0;i<RMDNUM;i++)
        {
                struct rmd *rmdp = p->rmdhead + ((p->rmdnum + i) & (RMDNUM-1));
@@ -1233,7 +1226,7 @@ static struct net_device_stats *ni65_get_stats(struct net_device *dev)
        printk("\n");
 #endif
 
-       return &((struct priv *) dev->priv)->stats;
+       return &((struct priv *)dev->ml_priv)->stats;
 }
 
 static void set_multicast_list(struct net_device *dev)
@@ -1253,13 +1246,13 @@ MODULE_PARM_DESC(irq, "ni6510 IRQ number (ignored for some cards)");
 MODULE_PARM_DESC(io, "ni6510 I/O base address");
 MODULE_PARM_DESC(dma, "ni6510 ISA DMA channel (ignored for some cards)");
 
-int init_module(void)
+int __init init_module(void)
 {
        dev_ni65 = ni65_probe(-1);
        return IS_ERR(dev_ni65) ? PTR_ERR(dev_ni65) : 0;
 }
 
-void cleanup_module(void)
+void __exit cleanup_module(void)
 {
        unregister_netdev(dev_ni65);
        cleanup_card(dev_ni65);
@@ -1268,7 +1261,3 @@ void cleanup_module(void)
 #endif /* MODULE */
 
 MODULE_LICENSE("GPL");
-
-/*
- * END of ni65.c
- */