]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - drivers/net/tokenring/tms380tr.c
tms380tr: Use mdelay() in tms380tr_wait().
[net-next-2.6.git] / drivers / net / tokenring / tms380tr.c
index 8b508c922410cf4e010aa6b1bcbe8cd72b634bb2..793020347e543524708512d5ad0e0681ba0ad1fd 100644 (file)
@@ -5,7 +5,7 @@
  *  Originally sktr.c: Written 1997 by Christoph Goos
  *
  *  A fine result of the Linux Systems Network Architecture Project.
- *  http://www.linux-sna.org
+ *  http://www.vanheusden.com/sna/ 
  *
  *  This software may be used and distributed according to the terms
  *  of the GNU General Public License, incorporated herein by reference.
@@ -224,7 +224,7 @@ static int madgemc_sifprobe(struct net_device *dev)
                 chk2 ^= 0x0FE;
 
                 if(chk1 != chk2)
-                        return (-1);    /* No adapter */
+                        return -1;    /* No adapter */
                 chk1 -= 2;
         } while(chk1 != 0);     /* Repeat 128 times (all byte values) */
 
@@ -232,7 +232,7 @@ static int madgemc_sifprobe(struct net_device *dev)
         /* Restore the SIFADR value */
        SIFWRITEB(old, SIFADR);
 
-        return (0);
+        return 0;
 }
 #endif
 
@@ -271,7 +271,7 @@ int tms380tr_open(struct net_device *dev)
        {
                printk(KERN_INFO "%s: Chipset initialization error\n", 
                        dev->name);
-               return (-1);
+               return -1;
        }
 
        tp->timer.expires       = jiffies + 30*HZ;
@@ -298,7 +298,7 @@ int tms380tr_open(struct net_device *dev)
        if(tp->AdapterVirtOpenFlag == 0)
        {
                tms380tr_disable_interrupts(dev);
-               return (-1);
+               return -1;
        }
 
        tp->StartTime = jiffies;
@@ -309,7 +309,7 @@ int tms380tr_open(struct net_device *dev)
        tp->timer.data          = (unsigned long)dev;
        add_timer(&tp->timer);
 
-       return (0);
+       return 0;
 }
 
 /*
@@ -325,8 +325,6 @@ static void tms380tr_timer_end_wait(unsigned long data)
                tp->Sleeping = 0;
                wake_up_interruptible(&tp->wait_for_tok_int);
        }
-
-       return;
 }
 
 /*
@@ -345,23 +343,23 @@ static int tms380tr_chipset_init(struct net_device *dev)
                printk(KERN_DEBUG "%s: Resetting adapter...\n", dev->name);
        err = tms380tr_reset_adapter(dev);
        if(err < 0)
-               return (-1);
+               return -1;
 
        if(tms380tr_debug > 3)
                printk(KERN_DEBUG "%s: Bringup diags...\n", dev->name);
        err = tms380tr_bringup_diags(dev);
        if(err < 0)
-               return (-1);
+               return -1;
 
        if(tms380tr_debug > 3)
                printk(KERN_DEBUG "%s: Init adapter...\n", dev->name);
        err = tms380tr_init_adapter(dev);
        if(err < 0)
-               return (-1);
+               return -1;
 
        if(tms380tr_debug > 3)
                printk(KERN_DEBUG "%s: Done!\n", dev->name);
-       return (0);
+       return 0;
 }
 
 /*
@@ -460,8 +458,6 @@ static void tms380tr_init_net_local(struct net_device *dev)
        tp->RplHead = &tp->Rpl[0];
        tp->RplTail = &tp->Rpl[RPL_NUM-1];
        tp->RplTail->Status = (RX_START_FRAME | RX_END_FRAME | RX_FRAME_IRQ);
-
-       return;
 }
 
 /*
@@ -481,8 +477,6 @@ static void tms380tr_init_ipb(struct net_local *tp)
        tp->ipb.DMA_Abort_Thrhld = DMA_RETRIES;
        tp->ipb.SCB_Addr        = 0;
        tp->ipb.SSB_Addr        = 0;
-
-       return;
 }
 
 /*
@@ -527,8 +521,6 @@ static void tms380tr_init_opb(struct net_device *dev)
 
        tp->ocpl.ProdIDAddr[0]   = LOWORD(Addr);
        tp->ocpl.ProdIDAddr[1]   = HIWORD(Addr);
-
-       return;
 }
 
 /*
@@ -543,8 +535,6 @@ static void tms380tr_open_adapter(struct net_device *dev)
 
        tp->OpenCommandIssued = 1;
        tms380tr_exec_cmd(dev, OC_OPEN);
-
-       return;
 }
 
 /*
@@ -554,8 +544,6 @@ static void tms380tr_open_adapter(struct net_device *dev)
 static void tms380tr_disable_interrupts(struct net_device *dev)
 {
        SIFWRITEB(0, SIFACL);
-
-       return;
 }
 
 /*
@@ -565,8 +553,6 @@ static void tms380tr_disable_interrupts(struct net_device *dev)
 static void tms380tr_enable_interrupts(struct net_device *dev)
 {
        SIFWRITEB(ACL_SINTEN, SIFACL);
-
-       return;
 }
 
 /*
@@ -578,8 +564,6 @@ static void tms380tr_exec_cmd(struct net_device *dev, unsigned short Command)
 
        tp->CMDqueue |= Command;
        tms380tr_chk_outstanding_cmds(dev);
-
-       return;
 }
 
 static void tms380tr_timeout(struct net_device *dev)
@@ -592,7 +576,7 @@ static void tms380tr_timeout(struct net_device *dev)
         * fake transmission time and go on trying. Our own timeout
         * routine is in tms380tr_timer_chk()
         */
-       dev->trans_start = jiffies;
+       dev->trans_start = jiffies; /* prevent tx timeout */
        netif_wake_queue(dev);
 }
 
@@ -712,8 +696,6 @@ static void tms380tr_chk_src_addr(unsigned char *frame, unsigned char *hw_addr)
        SRBit = frame[8] & 0x80;
        memcpy(&frame[8], hw_addr, 6);
        frame[8] |= SRBit;
-
-       return;
 }
 
 /*
@@ -743,8 +725,6 @@ static void tms380tr_timer_chk(unsigned long data)
                return;
        tp->ReOpenInProgress = 1;
        tms380tr_open_adapter(dev);
-
-       return;
 }
 
 /*
@@ -863,8 +843,6 @@ static void tms380tr_reset_interrupt(struct net_device *dev)
         * and clear STS_SYSTEM_IRQ bit: enable adapter for further interrupts.
         */
        tms380tr_exec_sifcmd(dev, CMD_SSB_CLEAR | CMD_CLEAR_SYSTEM_IRQ);
-
-       return;
 }
 
 /*
@@ -899,7 +877,7 @@ static unsigned char tms380tr_chk_ssb(struct net_local *tp, unsigned short IrqTy
           IrqType != STS_IRQ_COMMAND_STATUS &&
           IrqType != STS_IRQ_RING_STATUS)
        {
-               return (1);     /* SSB not involved. */
+               return 1;       /* SSB not involved. */
        }
 
        /* Note: All fields of the SSB have been set to all ones (-1) after it
@@ -909,21 +887,21 @@ static unsigned char tms380tr_chk_ssb(struct net_local *tp, unsigned short IrqTy
         */
 
        if(ssb->STS == (unsigned short) -1)
-               return (0);     /* Command field not yet available. */
+               return 0;       /* Command field not yet available. */
        if(IrqType == STS_IRQ_COMMAND_STATUS)
-               return (1);     /* Status fields not always affected. */
+               return 1;       /* Status fields not always affected. */
        if(ssb->Parm[0] == (unsigned short) -1)
-               return (0);     /* Status 1 field not yet available. */
+               return 0;       /* Status 1 field not yet available. */
        if(IrqType == STS_IRQ_RING_STATUS)
-               return (1);     /* Status 2 & 3 fields not affected. */
+               return 1;       /* Status 2 & 3 fields not affected. */
 
        /* Note: At this point, the interrupt is either TRANSMIT or RECEIVE. */
        if(ssb->Parm[1] == (unsigned short) -1)
-               return (0);     /* Status 2 field not yet available. */
+               return 0;       /* Status 2 field not yet available. */
        if(ssb->Parm[2] == (unsigned short) -1)
-               return (0);     /* Status 3 field not yet available. */
+               return 0;       /* Status 3 field not yet available. */
 
-       return (1);     /* All SSB fields have been written by the adapter. */
+       return 1;       /* All SSB fields have been written by the adapter. */
 }
 
 /*
@@ -1119,8 +1097,6 @@ static void tms380tr_cmd_status_irq(struct net_device *dev)
                tp->MacStat.frequency_errors += tp->errorlogtable.Frequency_Error;
                tp->MacStat.internal_errors += tp->errorlogtable.Internal_Error;
        }
-
-       return;
 }
 
 /*
@@ -1167,7 +1143,7 @@ int tms380tr_close(struct net_device *dev)
 #endif
        tms380tr_cancel_tx_queue(tp);
 
-       return (0);
+       return 0;
 }
 
 /*
@@ -1178,7 +1154,7 @@ static struct net_device_stats *tms380tr_get_stats(struct net_device *dev)
 {
        struct net_local *tp = netdev_priv(dev);
 
-       return ((struct net_device_stats *)&tp->MacStat);
+       return (struct net_device_stats *)&tp->MacStat;
 }
 
 /*
@@ -1211,17 +1187,17 @@ static void tms380tr_set_multicast_list(struct net_device *dev)
                }
                else
                {
-                       struct dev_mc_list *mclist;
+                       struct netdev_hw_addr *ha;
 
-                       netdev_for_each_mc_addr(mclist, dev) {
+                       netdev_for_each_mc_addr(ha, dev) {
                                ((char *)(&tp->ocpl.FunctAddr))[0] |=
-                                       mclist->dmi_addr[2];
+                                       ha->addr[2];
                                ((char *)(&tp->ocpl.FunctAddr))[1] |=
-                                       mclist->dmi_addr[3];
+                                       ha->addr[3];
                                ((char *)(&tp->ocpl.FunctAddr))[2] |=
-                                       mclist->dmi_addr[4];
+                                       ha->addr[4];
                                ((char *)(&tp->ocpl.FunctAddr))[3] |=
-                                       mclist->dmi_addr[5];
+                                       ha->addr[5];
                        }
                }
                tms380tr_exec_cmd(dev, OC_SET_FUNCT_ADDR);
@@ -1229,7 +1205,6 @@ static void tms380tr_set_multicast_list(struct net_device *dev)
        
        tp->ocpl.OPENOptions = OpenOptions;
        tms380tr_exec_cmd(dev, OC_MODIFY_OPEN_PARMS);
-       return;
 }
 
 /*
@@ -1245,9 +1220,8 @@ void tms380tr_wait(unsigned long time)
                tmp = schedule_timeout_interruptible(tmp);
        } while(time_after(tmp, jiffies));
 #else
-       udelay(time);
+       mdelay(time / 1000);
 #endif
-       return;
 }
 
 /*
@@ -1266,8 +1240,6 @@ static void tms380tr_exec_sifcmd(struct net_device *dev, unsigned int WriteValue
                SifStsValue = SIFREADW(SIFSTS);
        } while((SifStsValue & CMD_INTERRUPT_ADAPTER) && loop_counter--);
        SIFWRITEW(cmd, SIFCMD);
-
-       return;
 }
 
 /*
@@ -1284,7 +1256,7 @@ static int tms380tr_reset_adapter(struct net_device *dev)
        if (request_firmware(&fw_entry, "tms380tr.bin", tp->pdev) != 0) {
                printk(KERN_ALERT "%s: firmware %s is missing, cannot start.\n",
                        dev->name, "tms380tr.bin");
-               return (-1);
+               return -1;
        }
 
        fw_ptr = (unsigned short *)fw_entry->data;
@@ -1349,16 +1321,14 @@ static int tms380tr_reset_adapter(struct net_device *dev)
 
                        /* Clear CPHALT and start BUD */
                        SIFWRITEW(c, SIFACL);
-                       if (fw_entry)
-                               release_firmware(fw_entry);
-                       return (1);
+                       release_firmware(fw_entry);
+                       return 1;
                }
        } while(count == 0);
 
-       if (fw_entry)
-               release_firmware(fw_entry);
+       release_firmware(fw_entry);
        printk(KERN_INFO "%s: Adapter Download Failed\n", dev->name);
-       return (-1);
+       return -1;
 }
 
 MODULE_FIRMWARE("tms380tr.bin");
@@ -1390,10 +1360,10 @@ static int tms380tr_bringup_diags(struct net_device *dev)
                        Status &= STS_MASK;
 
                        if(tms380tr_debug > 3)
-                               printk(KERN_DEBUG " %04X \n", Status);
+                               printk(KERN_DEBUG " %04X\n", Status);
                        /* BUD successfully completed */
                        if(Status == STS_INITIALIZE)
-                               return (1);
+                               return 1;
                /* Unrecoverable hardware error, BUD not completed? */
                } while((loop_cnt > 0) && ((Status & (STS_ERROR | STS_TEST))
                        != (STS_ERROR | STS_TEST)));
@@ -1420,7 +1390,7 @@ static int tms380tr_bringup_diags(struct net_device *dev)
        else
                printk(KERN_INFO "%s: Bring Up Diagnostics Error (%04X) occurred\n", dev->name, Status & 0x000f);
 
-       return (-1);
+       return -1;
 }
 
 /*
@@ -1494,7 +1464,7 @@ static int tms380tr_init_adapter(struct net_device *dev)
                                {
                                        printk(KERN_INFO "%s: DMA failed\n", dev->name);
                                        /* DMA data error: wrong data in SCB */
-                                       return (-1);
+                                       return -1;
                                }
                                i++;
                        } while(i < 6);
@@ -1503,11 +1473,11 @@ static int tms380tr_init_adapter(struct net_device *dev)
                        do {    /* Test if contents of SSB is valid */
                                if(SSB_Test[i] != *(sb_ptr + i))
                                        /* DMA data error: wrong data in SSB */
-                                       return (-1);
+                                       return -1;
                                i++;
                        } while (i < 8);
 
-                       return (1);     /* Adapter successfully initialized */
+                       return 1;       /* Adapter successfully initialized */
                }
                else
                {
@@ -1518,7 +1488,7 @@ static int tms380tr_init_adapter(struct net_device *dev)
                                Status &= STS_ERROR_MASK;
                                /* ShowInitialisationErrorCode(Status); */
                                printk(KERN_INFO "%s: Status error: %d\n", dev->name, Status);
-                               return (-1); /* Unrecoverable error */
+                               return -1; /* Unrecoverable error */
                        }
                        else
                        {
@@ -1533,7 +1503,7 @@ static int tms380tr_init_adapter(struct net_device *dev)
        } while(retry_cnt > 0);
 
        printk(KERN_INFO "%s: Retry exceeded\n", dev->name);
-       return (-1);
+       return -1;
 }
 
 /*
@@ -1700,8 +1670,6 @@ static void tms380tr_chk_outstanding_cmds(struct net_device *dev)
 
        /* Execute SCB and generate IRQ when done. */
        tms380tr_exec_sifcmd(dev, CMD_EXECUTE | CMD_SCB_REQUEST);
-
-       return;
 }
 
 /*
@@ -1774,8 +1742,6 @@ static void tms380tr_ring_status_irq(struct net_device *dev)
                tp->AdapterOpenFlag = 0;
                tms380tr_open_adapter(dev);
        }
-
-       return;
 }
 
 /*
@@ -1846,7 +1812,7 @@ static void tms380tr_chk_irq(struct net_device *dev)
                        break;
 
                case DMA_WRITE_ABORT:
-                       printk(KERN_INFO "%s: DMA write operation aborted: \n",
+                       printk(KERN_INFO "%s: DMA write operation aborted:\n",
                                dev->name);
                        switch (AdapterCheckBlock[1])
                        {
@@ -1932,8 +1898,6 @@ static void tms380tr_chk_irq(struct net_device *dev)
                /* Restart of firmware successful */
                tp->AdapterOpenFlag = 1;
        }
-
-       return;
 }
 
 /*
@@ -1988,8 +1952,6 @@ static void tms380tr_read_ram(struct net_device *dev, unsigned char *Data,
        /* Restore original values */
        SIFWRITEW(old_sifadx, SIFADX);
        SIFWRITEW(old_sifadr, SIFADR);
-
-       return;
 }
 
 /*
@@ -2021,8 +1983,6 @@ static void tms380tr_cancel_tx_queue(struct net_local* tp)
                        dma_unmap_single(tp->pdev, tpl->DMABuff, tpl->Skb->len, DMA_TO_DEVICE);
                dev_kfree_skb_any(tpl->Skb);
        }
-
-       return;
 }
 
 /*
@@ -2094,7 +2054,6 @@ static void tms380tr_tx_status_irq(struct net_device *dev)
 
        if(!tp->TplFree->NextTPLPtr->BusyFlag)
                netif_wake_queue(dev);
-       return;
 }
 
 /*
@@ -2255,8 +2214,6 @@ static void tms380tr_rcv_status_irq(struct net_device *dev)
                /* Inform adapter about RPL valid. */
                tms380tr_exec_sifcmd(dev, CMD_RX_VALID);
        }
-
-       return;
 }
 
 /*
@@ -2269,8 +2226,6 @@ static void tms380tr_rcv_status_irq(struct net_device *dev)
 static void tms380tr_write_rpl_status(RPL *rpl, unsigned int Status)
 {
        rpl->Status = Status;
-
-       return;
 }
 
 /*
@@ -2287,8 +2242,6 @@ static void tms380tr_update_rcv_stats(struct net_local *tp, unsigned char DataPt
        /* Test functional bit */
        if(DataPtr[2] & GROUP_BIT)
                tp->MacStat.multicast++;
-
-       return;
 }
 
 static int tms380tr_set_mac_address(struct net_device *dev, void *addr)
@@ -2318,8 +2271,6 @@ static void tms380tr_dump(unsigned char *Data, int length)
                       Data[j+0],Data[j+1],Data[j+2],Data[j+3],
                       Data[j+4],Data[j+5],Data[j+6],Data[j+7]);
        }
-
-       return;
 }
 #endif