diff options
Diffstat (limited to 'drivers/net/3c515.c')
-rw-r--r-- | drivers/net/3c515.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/drivers/net/3c515.c b/drivers/net/3c515.c index c4cf4fcd1344..91d1c4c24d9b 100644 --- a/drivers/net/3c515.c +++ b/drivers/net/3c515.c | |||
@@ -365,7 +365,7 @@ static int nopnp; | |||
365 | #endif /* __ISAPNP__ */ | 365 | #endif /* __ISAPNP__ */ |
366 | 366 | ||
367 | static struct net_device *corkscrew_scan(int unit); | 367 | static struct net_device *corkscrew_scan(int unit); |
368 | static void corkscrew_setup(struct net_device *dev, int ioaddr, | 368 | static int corkscrew_setup(struct net_device *dev, int ioaddr, |
369 | struct pnp_dev *idev, int card_number); | 369 | struct pnp_dev *idev, int card_number); |
370 | static int corkscrew_open(struct net_device *dev); | 370 | static int corkscrew_open(struct net_device *dev); |
371 | static void corkscrew_timer(unsigned long arg); | 371 | static void corkscrew_timer(unsigned long arg); |
@@ -539,10 +539,9 @@ static struct net_device *corkscrew_scan(int unit) | |||
539 | printk(KERN_INFO "3c515 Resource configuration register %#4.4x, DCR %4.4x.\n", | 539 | printk(KERN_INFO "3c515 Resource configuration register %#4.4x, DCR %4.4x.\n", |
540 | inl(ioaddr + 0x2002), inw(ioaddr + 0x2000)); | 540 | inl(ioaddr + 0x2002), inw(ioaddr + 0x2000)); |
541 | /* irq = inw(ioaddr + 0x2002) & 15; */ /* Use the irq from isapnp */ | 541 | /* irq = inw(ioaddr + 0x2002) & 15; */ /* Use the irq from isapnp */ |
542 | corkscrew_setup(dev, ioaddr, idev, cards_found++); | ||
543 | SET_NETDEV_DEV(dev, &idev->dev); | 542 | SET_NETDEV_DEV(dev, &idev->dev); |
544 | pnp_cards++; | 543 | pnp_cards++; |
545 | err = register_netdev(dev); | 544 | err = corkscrew_setup(dev, ioaddr, idev, cards_found++); |
546 | if (!err) | 545 | if (!err) |
547 | return dev; | 546 | return dev; |
548 | cleanup_card(dev); | 547 | cleanup_card(dev); |
@@ -558,8 +557,7 @@ no_pnp: | |||
558 | 557 | ||
559 | printk(KERN_INFO "3c515 Resource configuration register %#4.4x, DCR %4.4x.\n", | 558 | printk(KERN_INFO "3c515 Resource configuration register %#4.4x, DCR %4.4x.\n", |
560 | inl(ioaddr + 0x2002), inw(ioaddr + 0x2000)); | 559 | inl(ioaddr + 0x2002), inw(ioaddr + 0x2000)); |
561 | corkscrew_setup(dev, ioaddr, NULL, cards_found++); | 560 | err = corkscrew_setup(dev, ioaddr, NULL, cards_found++); |
562 | err = register_netdev(dev); | ||
563 | if (!err) | 561 | if (!err) |
564 | return dev; | 562 | return dev; |
565 | cleanup_card(dev); | 563 | cleanup_card(dev); |
@@ -568,7 +566,7 @@ no_pnp: | |||
568 | return NULL; | 566 | return NULL; |
569 | } | 567 | } |
570 | 568 | ||
571 | static void corkscrew_setup(struct net_device *dev, int ioaddr, | 569 | static int corkscrew_setup(struct net_device *dev, int ioaddr, |
572 | struct pnp_dev *idev, int card_number) | 570 | struct pnp_dev *idev, int card_number) |
573 | { | 571 | { |
574 | struct corkscrew_private *vp = netdev_priv(dev); | 572 | struct corkscrew_private *vp = netdev_priv(dev); |
@@ -691,6 +689,8 @@ static void corkscrew_setup(struct net_device *dev, int ioaddr, | |||
691 | dev->get_stats = &corkscrew_get_stats; | 689 | dev->get_stats = &corkscrew_get_stats; |
692 | dev->set_multicast_list = &set_rx_mode; | 690 | dev->set_multicast_list = &set_rx_mode; |
693 | dev->ethtool_ops = &netdev_ethtool_ops; | 691 | dev->ethtool_ops = &netdev_ethtool_ops; |
692 | |||
693 | return register_netdev(dev); | ||
694 | } | 694 | } |
695 | 695 | ||
696 | 696 | ||
@@ -822,7 +822,7 @@ static int corkscrew_open(struct net_device *dev) | |||
822 | break; /* Bad news! */ | 822 | break; /* Bad news! */ |
823 | skb->dev = dev; /* Mark as being used by this device. */ | 823 | skb->dev = dev; /* Mark as being used by this device. */ |
824 | skb_reserve(skb, 2); /* Align IP on 16 byte boundaries */ | 824 | skb_reserve(skb, 2); /* Align IP on 16 byte boundaries */ |
825 | vp->rx_ring[i].addr = isa_virt_to_bus(skb->tail); | 825 | vp->rx_ring[i].addr = isa_virt_to_bus(skb->data); |
826 | } | 826 | } |
827 | vp->rx_ring[i - 1].next = isa_virt_to_bus(&vp->rx_ring[0]); /* Wrap the ring. */ | 827 | vp->rx_ring[i - 1].next = isa_virt_to_bus(&vp->rx_ring[0]); /* Wrap the ring. */ |
828 | outl(isa_virt_to_bus(&vp->rx_ring[0]), ioaddr + UpListPtr); | 828 | outl(isa_virt_to_bus(&vp->rx_ring[0]), ioaddr + UpListPtr); |
@@ -1406,7 +1406,7 @@ static int boomerang_rx(struct net_device *dev) | |||
1406 | break; /* Bad news! */ | 1406 | break; /* Bad news! */ |
1407 | skb->dev = dev; /* Mark as being used by this device. */ | 1407 | skb->dev = dev; /* Mark as being used by this device. */ |
1408 | skb_reserve(skb, 2); /* Align IP on 16 byte boundaries */ | 1408 | skb_reserve(skb, 2); /* Align IP on 16 byte boundaries */ |
1409 | vp->rx_ring[entry].addr = isa_virt_to_bus(skb->tail); | 1409 | vp->rx_ring[entry].addr = isa_virt_to_bus(skb->data); |
1410 | vp->rx_skbuff[entry] = skb; | 1410 | vp->rx_skbuff[entry] = skb; |
1411 | } | 1411 | } |
1412 | vp->rx_ring[entry].status = 0; /* Clear complete bit. */ | 1412 | vp->rx_ring[entry].status = 0; /* Clear complete bit. */ |