]> git.hungrycats.org Git - linux/commitdiff
[NET]: Convert sk98lin away from init_etherdev.
authorDavid S. Miller <davem@nuts.ninka.net>
Thu, 16 Oct 2003 19:42:49 +0000 (12:42 -0700)
committerStephen Hemminger <shemminger@osdl.org>
Thu, 16 Oct 2003 19:42:49 +0000 (12:42 -0700)
drivers/net/sk98lin/skge.c

index 60cbb3d85690fa1af4aca9c060f75804e1e27f13..5da46110913ff611424c4bb2b1ab8527cd822071 100644 (file)
@@ -653,24 +653,16 @@ static int __init skge_probe (void)
                        continue;
 
 
-               if ((dev = init_etherdev(dev, sizeof(DEV_NET))) == NULL) {
+               if ((dev = alloc_etherdev(sizeof(DEV_NET))) == NULL) {
                        printk(KERN_ERR "Unable to allocate etherdev "
                               "structure!\n");
                        break;
                }
 
-               if (dev->priv == NULL) {
-                       printk(KERN_ERR "Unable to allocate adapter "
-                              "structure!\n");
-                       break;
-               }
-
                pNet = dev->priv;
                pNet->pAC = kmalloc(sizeof(SK_AC), GFP_KERNEL);
                if (pNet->pAC == NULL){
-                       dev->get_stats = NULL;
-                       unregister_netdev(dev);
-                       kfree(dev->priv);
+                       free_netdev(dev);
                        printk(KERN_ERR "Unable to allocate adapter "
                               "structure!\n");
                        break;
@@ -699,9 +691,7 @@ static int __init skge_probe (void)
                retval = SkGeInitPCI(pAC);
                if (retval) {
                        printk("SKGE: PCI setup failed: %i\n", retval);
-                       dev->get_stats = NULL;
-                       unregister_netdev(dev);
-                       kfree(dev);
+                       free_netdev(dev);
                        continue;
                }
 
@@ -730,13 +720,20 @@ static int __init skge_probe (void)
                pAC->Index = boards_found;
                if (SkGeBoardInit(dev, pAC)) {
                        FreeResources(dev);
-                       kfree(dev);
+                       free_netdev(dev);
                        continue;
                }
 
                memcpy((caddr_t) &dev->dev_addr,
                        (caddr_t) &pAC->Addr.Net[0].CurrentMacAddress, 6);
 
+               if (register_netdev(dev)) {
+                       printk(KERN_ERR "SKGE: Could not register device.\n");
+                       FreeResources(dev);
+                       free_netdev(dev);
+                       continue;
+               }
+
                /* First adapter... Create proc and print message */
 #ifdef CONFIG_PROC_FS
                if (!DeviceFound) {
@@ -767,21 +764,11 @@ static int __init skge_probe (void)
                pNet->PortNr = 0;
                pNet->NetNr = 0;
 
-
-#ifdef SK_ZEROCOPY
-#ifdef USE_SK_TX_CHECKSUM
-                       if (pAC->ChipsetType) {
-                               /* SG and ZEROCOPY - fly baby... */
-                               dev->features |= NETIF_F_SG | NETIF_F_IP_CSUM;
-                       }
-#endif
-#endif
-
                boards_found++;
 
                /* More then one port found */
                if ((pAC->GIni.GIMacsFound == 2 ) && (pAC->RlmtNets == 2)) {
-                       if ((dev = init_etherdev(NULL, sizeof(DEV_NET))) == 0) {
+                       if ((dev = alloc_etherdev(sizeof(DEV_NET))) == 0) {
                                printk(KERN_ERR "Unable to allocate etherdev "
                                        "structure!\n");
                                break;
@@ -814,22 +801,28 @@ static int __init skge_probe (void)
 #endif
 #endif
 
+                       if (register_netdev(dev)) {
+                               printk(KERN_ERR "SKGE: Could not register "
+                                      "second port.\n");
+                               free_netdev(dev);
+                               pAC->dev[1] = pAC->dev[0];
+                       } else {
 #ifdef CONFIG_PROC_FS
-                       if (pSkRootDir 
-                           && (pProcFile = create_proc_entry(dev->name, 
-                                                             S_IRUGO,
-                                                             pSkRootDir))) {
-                               pProcFile->proc_fops = &sk_proc_fops;
-                               pProcFile->data = dev;
-                       }
+                               if (pSkRootDir 
+                                   && (pProcFile = create_proc_entry(dev->name, 
+                                                                     S_IRUGO,
+                                                                     pSkRootDir))) {
+                                       pProcFile->proc_fops = &sk_proc_fops;
+                                       pProcFile->data = dev;
+                               }
 #endif
 
-                       memcpy((caddr_t) &dev->dev_addr,
-                       (caddr_t) &pAC->Addr.Net[1].CurrentMacAddress, 6);
+                               memcpy((caddr_t) &dev->dev_addr,
+                                      (caddr_t) &pAC->Addr.Net[1].CurrentMacAddress, 6);
        
-                       printk("%s: %s\n", dev->name, pAC->DeviceStr);
-                       printk("      PrefPort:B  RlmtMode:Dual Check Link State\n");
-
+                               printk("%s: %s\n", dev->name, pAC->DeviceStr);
+                               printk("      PrefPort:B  RlmtMode:Dual Check Link State\n");
+                       }
                }