diff options
author | Andrea Bastoni <bastoni@cs.unc.edu> | 2010-05-30 19:16:45 -0400 |
---|---|---|
committer | Andrea Bastoni <bastoni@cs.unc.edu> | 2010-05-30 19:16:45 -0400 |
commit | ada47b5fe13d89735805b566185f4885f5a3f750 (patch) | |
tree | 644b88f8a71896307d71438e9b3af49126ffb22b /drivers/net/tulip/dmfe.c | |
parent | 43e98717ad40a4ae64545b5ba047c7b86aa44f4f (diff) | |
parent | 3280f21d43ee541f97f8cda5792150d2dbec20d5 (diff) |
Merge branch 'wip-2.6.34' into old-private-masterarchived-private-master
Diffstat (limited to 'drivers/net/tulip/dmfe.c')
-rw-r--r-- | drivers/net/tulip/dmfe.c | 123 |
1 files changed, 69 insertions, 54 deletions
diff --git a/drivers/net/tulip/dmfe.c b/drivers/net/tulip/dmfe.c index a45ded0538b8..9568156dea98 100644 --- a/drivers/net/tulip/dmfe.c +++ b/drivers/net/tulip/dmfe.c | |||
@@ -61,6 +61,8 @@ | |||
61 | Test and make sure PCI latency is now correct for all cases. | 61 | Test and make sure PCI latency is now correct for all cases. |
62 | */ | 62 | */ |
63 | 63 | ||
64 | #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt | ||
65 | |||
64 | #define DRV_NAME "dmfe" | 66 | #define DRV_NAME "dmfe" |
65 | #define DRV_VERSION "1.36.4" | 67 | #define DRV_VERSION "1.36.4" |
66 | #define DRV_RELDATE "2002-01-17" | 68 | #define DRV_RELDATE "2002-01-17" |
@@ -72,7 +74,6 @@ | |||
72 | #include <linux/ptrace.h> | 74 | #include <linux/ptrace.h> |
73 | #include <linux/errno.h> | 75 | #include <linux/errno.h> |
74 | #include <linux/ioport.h> | 76 | #include <linux/ioport.h> |
75 | #include <linux/slab.h> | ||
76 | #include <linux/interrupt.h> | 77 | #include <linux/interrupt.h> |
77 | #include <linux/pci.h> | 78 | #include <linux/pci.h> |
78 | #include <linux/dma-mapping.h> | 79 | #include <linux/dma-mapping.h> |
@@ -92,6 +93,10 @@ | |||
92 | #include <asm/uaccess.h> | 93 | #include <asm/uaccess.h> |
93 | #include <asm/irq.h> | 94 | #include <asm/irq.h> |
94 | 95 | ||
96 | #ifdef CONFIG_TULIP_DM910X | ||
97 | #include <linux/of.h> | ||
98 | #endif | ||
99 | |||
95 | 100 | ||
96 | /* Board/System/Debug information/definition ---------------- */ | 101 | /* Board/System/Debug information/definition ---------------- */ |
97 | #define PCI_DM9132_ID 0x91321282 /* Davicom DM9132 ID */ | 102 | #define PCI_DM9132_ID 0x91321282 /* Davicom DM9132 ID */ |
@@ -145,16 +150,17 @@ | |||
145 | #define DMFE_TX_TIMEOUT ((3*HZ)/2) /* tx packet time-out time 1.5 s" */ | 150 | #define DMFE_TX_TIMEOUT ((3*HZ)/2) /* tx packet time-out time 1.5 s" */ |
146 | #define DMFE_TX_KICK (HZ/2) /* tx packet Kick-out time 0.5 s" */ | 151 | #define DMFE_TX_KICK (HZ/2) /* tx packet Kick-out time 0.5 s" */ |
147 | 152 | ||
148 | #define DMFE_DBUG(dbug_now, msg, value) \ | 153 | #define DMFE_DBUG(dbug_now, msg, value) \ |
149 | do { \ | 154 | do { \ |
150 | if (dmfe_debug || (dbug_now)) \ | 155 | if (dmfe_debug || (dbug_now)) \ |
151 | printk(KERN_ERR DRV_NAME ": %s %lx\n",\ | 156 | pr_err("%s %lx\n", \ |
152 | (msg), (long) (value)); \ | 157 | (msg), (long) (value)); \ |
153 | } while (0) | 158 | } while (0) |
154 | 159 | ||
155 | #define SHOW_MEDIA_TYPE(mode) \ | 160 | #define SHOW_MEDIA_TYPE(mode) \ |
156 | printk (KERN_INFO DRV_NAME ": Change Speed to %sMhz %s duplex\n" , \ | 161 | pr_info("Change Speed to %sMhz %s duplex\n" , \ |
157 | (mode & 1) ? "100":"10", (mode & 4) ? "full":"half"); | 162 | (mode & 1) ? "100":"10", \ |
163 | (mode & 4) ? "full":"half"); | ||
158 | 164 | ||
159 | 165 | ||
160 | /* CR9 definition: SROM/MII */ | 166 | /* CR9 definition: SROM/MII */ |
@@ -323,8 +329,8 @@ static void poll_dmfe (struct net_device *dev); | |||
323 | static void dmfe_descriptor_init(struct dmfe_board_info *, unsigned long); | 329 | static void dmfe_descriptor_init(struct dmfe_board_info *, unsigned long); |
324 | static void allocate_rx_buffer(struct dmfe_board_info *); | 330 | static void allocate_rx_buffer(struct dmfe_board_info *); |
325 | static void update_cr6(u32, unsigned long); | 331 | static void update_cr6(u32, unsigned long); |
326 | static void send_filter_frame(struct DEVICE * ,int); | 332 | static void send_filter_frame(struct DEVICE *); |
327 | static void dm9132_id_table(struct DEVICE * ,int); | 333 | static void dm9132_id_table(struct DEVICE *); |
328 | static u16 phy_read(unsigned long, u8, u8, u32); | 334 | static u16 phy_read(unsigned long, u8, u8, u32); |
329 | static void phy_write(unsigned long, u8, u8, u16, u32); | 335 | static void phy_write(unsigned long, u8, u8, u16, u32); |
330 | static void phy_write_1bit(unsigned long, u32); | 336 | static void phy_write_1bit(unsigned long, u32); |
@@ -377,6 +383,22 @@ static int __devinit dmfe_init_one (struct pci_dev *pdev, | |||
377 | if (!printed_version++) | 383 | if (!printed_version++) |
378 | printk(version); | 384 | printk(version); |
379 | 385 | ||
386 | /* | ||
387 | * SPARC on-board DM910x chips should be handled by the main | ||
388 | * tulip driver, except for early DM9100s. | ||
389 | */ | ||
390 | #ifdef CONFIG_TULIP_DM910X | ||
391 | if ((ent->driver_data == PCI_DM9100_ID && pdev->revision >= 0x30) || | ||
392 | ent->driver_data == PCI_DM9102_ID) { | ||
393 | struct device_node *dp = pci_device_to_OF_node(pdev); | ||
394 | |||
395 | if (dp && of_get_property(dp, "local-mac-address", NULL)) { | ||
396 | pr_info("skipping on-board DM910x (use tulip)\n"); | ||
397 | return -ENODEV; | ||
398 | } | ||
399 | } | ||
400 | #endif | ||
401 | |||
380 | /* Init network device */ | 402 | /* Init network device */ |
381 | dev = alloc_etherdev(sizeof(*db)); | 403 | dev = alloc_etherdev(sizeof(*db)); |
382 | if (dev == NULL) | 404 | if (dev == NULL) |
@@ -384,8 +406,7 @@ static int __devinit dmfe_init_one (struct pci_dev *pdev, | |||
384 | SET_NETDEV_DEV(dev, &pdev->dev); | 406 | SET_NETDEV_DEV(dev, &pdev->dev); |
385 | 407 | ||
386 | if (pci_set_dma_mask(pdev, DMA_BIT_MASK(32))) { | 408 | if (pci_set_dma_mask(pdev, DMA_BIT_MASK(32))) { |
387 | printk(KERN_WARNING DRV_NAME | 409 | pr_warning("32-bit PCI DMA not available\n"); |
388 | ": 32-bit PCI DMA not available.\n"); | ||
389 | err = -ENODEV; | 410 | err = -ENODEV; |
390 | goto err_out_free; | 411 | goto err_out_free; |
391 | } | 412 | } |
@@ -396,13 +417,13 @@ static int __devinit dmfe_init_one (struct pci_dev *pdev, | |||
396 | goto err_out_free; | 417 | goto err_out_free; |
397 | 418 | ||
398 | if (!pci_resource_start(pdev, 0)) { | 419 | if (!pci_resource_start(pdev, 0)) { |
399 | printk(KERN_ERR DRV_NAME ": I/O base is zero\n"); | 420 | pr_err("I/O base is zero\n"); |
400 | err = -ENODEV; | 421 | err = -ENODEV; |
401 | goto err_out_disable; | 422 | goto err_out_disable; |
402 | } | 423 | } |
403 | 424 | ||
404 | if (pci_resource_len(pdev, 0) < (CHK_IO_SIZE(pdev)) ) { | 425 | if (pci_resource_len(pdev, 0) < (CHK_IO_SIZE(pdev)) ) { |
405 | printk(KERN_ERR DRV_NAME ": Allocated I/O size too small\n"); | 426 | pr_err("Allocated I/O size too small\n"); |
406 | err = -ENODEV; | 427 | err = -ENODEV; |
407 | goto err_out_disable; | 428 | goto err_out_disable; |
408 | } | 429 | } |
@@ -417,7 +438,7 @@ static int __devinit dmfe_init_one (struct pci_dev *pdev, | |||
417 | #endif | 438 | #endif |
418 | 439 | ||
419 | if (pci_request_regions(pdev, DRV_NAME)) { | 440 | if (pci_request_regions(pdev, DRV_NAME)) { |
420 | printk(KERN_ERR DRV_NAME ": Failed to request PCI regions\n"); | 441 | pr_err("Failed to request PCI regions\n"); |
421 | err = -ENODEV; | 442 | err = -ENODEV; |
422 | goto err_out_disable; | 443 | goto err_out_disable; |
423 | } | 444 | } |
@@ -476,12 +497,9 @@ static int __devinit dmfe_init_one (struct pci_dev *pdev, | |||
476 | if (err) | 497 | if (err) |
477 | goto err_out_free_buf; | 498 | goto err_out_free_buf; |
478 | 499 | ||
479 | printk(KERN_INFO "%s: Davicom DM%04lx at pci%s, %pM, irq %d.\n", | 500 | dev_info(&dev->dev, "Davicom DM%04lx at pci%s, %pM, irq %d\n", |
480 | dev->name, | 501 | ent->driver_data >> 16, |
481 | ent->driver_data >> 16, | 502 | pci_name(pdev), dev->dev_addr, dev->irq); |
482 | pci_name(pdev), | ||
483 | dev->dev_addr, | ||
484 | dev->irq); | ||
485 | 503 | ||
486 | pci_set_master(pdev); | 504 | pci_set_master(pdev); |
487 | 505 | ||
@@ -543,7 +561,7 @@ static int dmfe_open(struct DEVICE *dev) | |||
543 | 561 | ||
544 | DMFE_DBUG(0, "dmfe_open", 0); | 562 | DMFE_DBUG(0, "dmfe_open", 0); |
545 | 563 | ||
546 | ret = request_irq(dev->irq, &dmfe_interrupt, | 564 | ret = request_irq(dev->irq, dmfe_interrupt, |
547 | IRQF_SHARED, dev->name, dev); | 565 | IRQF_SHARED, dev->name, dev); |
548 | if (ret) | 566 | if (ret) |
549 | return ret; | 567 | return ret; |
@@ -639,9 +657,9 @@ static void dmfe_init_dm910x(struct DEVICE *dev) | |||
639 | 657 | ||
640 | /* Send setup frame */ | 658 | /* Send setup frame */ |
641 | if (db->chip_id == PCI_DM9132_ID) | 659 | if (db->chip_id == PCI_DM9132_ID) |
642 | dm9132_id_table(dev, dev->mc_count); /* DM9132 */ | 660 | dm9132_id_table(dev); /* DM9132 */ |
643 | else | 661 | else |
644 | send_filter_frame(dev, dev->mc_count); /* DM9102/DM9102A */ | 662 | send_filter_frame(dev); /* DM9102/DM9102A */ |
645 | 663 | ||
646 | /* Init CR7, interrupt active bit */ | 664 | /* Init CR7, interrupt active bit */ |
647 | db->cr7_data = CR7_DEFAULT; | 665 | db->cr7_data = CR7_DEFAULT; |
@@ -675,7 +693,7 @@ static netdev_tx_t dmfe_start_xmit(struct sk_buff *skb, | |||
675 | 693 | ||
676 | /* Too large packet check */ | 694 | /* Too large packet check */ |
677 | if (skb->len > MAX_PACKET_SIZE) { | 695 | if (skb->len > MAX_PACKET_SIZE) { |
678 | printk(KERN_ERR DRV_NAME ": big packet = %d\n", (u16)skb->len); | 696 | pr_err("big packet = %d\n", (u16)skb->len); |
679 | dev_kfree_skb(skb); | 697 | dev_kfree_skb(skb); |
680 | return NETDEV_TX_OK; | 698 | return NETDEV_TX_OK; |
681 | } | 699 | } |
@@ -685,8 +703,7 @@ static netdev_tx_t dmfe_start_xmit(struct sk_buff *skb, | |||
685 | /* No Tx resource check, it never happen nromally */ | 703 | /* No Tx resource check, it never happen nromally */ |
686 | if (db->tx_queue_cnt >= TX_FREE_DESC_CNT) { | 704 | if (db->tx_queue_cnt >= TX_FREE_DESC_CNT) { |
687 | spin_unlock_irqrestore(&db->lock, flags); | 705 | spin_unlock_irqrestore(&db->lock, flags); |
688 | printk(KERN_ERR DRV_NAME ": No Tx resource %ld\n", | 706 | pr_err("No Tx resource %ld\n", db->tx_queue_cnt); |
689 | db->tx_queue_cnt); | ||
690 | return NETDEV_TX_BUSY; | 707 | return NETDEV_TX_BUSY; |
691 | } | 708 | } |
692 | 709 | ||
@@ -758,12 +775,11 @@ static int dmfe_stop(struct DEVICE *dev) | |||
758 | 775 | ||
759 | #if 0 | 776 | #if 0 |
760 | /* show statistic counter */ | 777 | /* show statistic counter */ |
761 | printk(DRV_NAME ": FU:%lx EC:%lx LC:%lx NC:%lx" | 778 | printk("FU:%lx EC:%lx LC:%lx NC:%lx LOC:%lx TXJT:%lx RESET:%lx RCR8:%lx FAL:%lx TT:%lx\n", |
762 | " LOC:%lx TXJT:%lx RESET:%lx RCR8:%lx FAL:%lx TT:%lx\n", | 779 | db->tx_fifo_underrun, db->tx_excessive_collision, |
763 | db->tx_fifo_underrun, db->tx_excessive_collision, | 780 | db->tx_late_collision, db->tx_no_carrier, db->tx_loss_carrier, |
764 | db->tx_late_collision, db->tx_no_carrier, db->tx_loss_carrier, | 781 | db->tx_jabber_timeout, db->reset_count, db->reset_cr8, |
765 | db->tx_jabber_timeout, db->reset_count, db->reset_cr8, | 782 | db->reset_fatal, db->reset_TXtimeout); |
766 | db->reset_fatal, db->reset_TXtimeout); | ||
767 | #endif | 783 | #endif |
768 | 784 | ||
769 | return 0; | 785 | return 0; |
@@ -864,7 +880,7 @@ static void dmfe_free_tx_pkt(struct DEVICE *dev, struct dmfe_board_info * db) | |||
864 | txptr = db->tx_remove_ptr; | 880 | txptr = db->tx_remove_ptr; |
865 | while(db->tx_packet_cnt) { | 881 | while(db->tx_packet_cnt) { |
866 | tdes0 = le32_to_cpu(txptr->tdes0); | 882 | tdes0 = le32_to_cpu(txptr->tdes0); |
867 | /* printk(DRV_NAME ": tdes0=%x\n", tdes0); */ | 883 | pr_debug("tdes0=%x\n", tdes0); |
868 | if (tdes0 & 0x80000000) | 884 | if (tdes0 & 0x80000000) |
869 | break; | 885 | break; |
870 | 886 | ||
@@ -874,7 +890,7 @@ static void dmfe_free_tx_pkt(struct DEVICE *dev, struct dmfe_board_info * db) | |||
874 | 890 | ||
875 | /* Transmit statistic counter */ | 891 | /* Transmit statistic counter */ |
876 | if ( tdes0 != 0x7fffffff ) { | 892 | if ( tdes0 != 0x7fffffff ) { |
877 | /* printk(DRV_NAME ": tdes0=%x\n", tdes0); */ | 893 | pr_debug("tdes0=%x\n", tdes0); |
878 | dev->stats.collisions += (tdes0 >> 3) & 0xf; | 894 | dev->stats.collisions += (tdes0 >> 3) & 0xf; |
879 | dev->stats.tx_bytes += le32_to_cpu(txptr->tdes1) & 0x7ff; | 895 | dev->stats.tx_bytes += le32_to_cpu(txptr->tdes1) & 0x7ff; |
880 | if (tdes0 & TDES0_ERR_MASK) { | 896 | if (tdes0 & TDES0_ERR_MASK) { |
@@ -971,7 +987,7 @@ static void dmfe_rx_packet(struct DEVICE *dev, struct dmfe_board_info * db) | |||
971 | /* error summary bit check */ | 987 | /* error summary bit check */ |
972 | if (rdes0 & 0x8000) { | 988 | if (rdes0 & 0x8000) { |
973 | /* This is a error packet */ | 989 | /* This is a error packet */ |
974 | //printk(DRV_NAME ": rdes0: %lx\n", rdes0); | 990 | pr_debug("rdes0: %x\n", rdes0); |
975 | dev->stats.rx_errors++; | 991 | dev->stats.rx_errors++; |
976 | if (rdes0 & 1) | 992 | if (rdes0 & 1) |
977 | dev->stats.rx_fifo_errors++; | 993 | dev->stats.rx_fifo_errors++; |
@@ -1035,6 +1051,7 @@ static void dmfe_set_filter_mode(struct DEVICE * dev) | |||
1035 | { | 1051 | { |
1036 | struct dmfe_board_info *db = netdev_priv(dev); | 1052 | struct dmfe_board_info *db = netdev_priv(dev); |
1037 | unsigned long flags; | 1053 | unsigned long flags; |
1054 | int mc_count = netdev_mc_count(dev); | ||
1038 | 1055 | ||
1039 | DMFE_DBUG(0, "dmfe_set_filter_mode()", 0); | 1056 | DMFE_DBUG(0, "dmfe_set_filter_mode()", 0); |
1040 | spin_lock_irqsave(&db->lock, flags); | 1057 | spin_lock_irqsave(&db->lock, flags); |
@@ -1047,19 +1064,19 @@ static void dmfe_set_filter_mode(struct DEVICE * dev) | |||
1047 | return; | 1064 | return; |
1048 | } | 1065 | } |
1049 | 1066 | ||
1050 | if (dev->flags & IFF_ALLMULTI || dev->mc_count > DMFE_MAX_MULTICAST) { | 1067 | if (dev->flags & IFF_ALLMULTI || mc_count > DMFE_MAX_MULTICAST) { |
1051 | DMFE_DBUG(0, "Pass all multicast address", dev->mc_count); | 1068 | DMFE_DBUG(0, "Pass all multicast address", mc_count); |
1052 | db->cr6_data &= ~(CR6_PM | CR6_PBF); | 1069 | db->cr6_data &= ~(CR6_PM | CR6_PBF); |
1053 | db->cr6_data |= CR6_PAM; | 1070 | db->cr6_data |= CR6_PAM; |
1054 | spin_unlock_irqrestore(&db->lock, flags); | 1071 | spin_unlock_irqrestore(&db->lock, flags); |
1055 | return; | 1072 | return; |
1056 | } | 1073 | } |
1057 | 1074 | ||
1058 | DMFE_DBUG(0, "Set multicast address", dev->mc_count); | 1075 | DMFE_DBUG(0, "Set multicast address", mc_count); |
1059 | if (db->chip_id == PCI_DM9132_ID) | 1076 | if (db->chip_id == PCI_DM9132_ID) |
1060 | dm9132_id_table(dev, dev->mc_count); /* DM9132 */ | 1077 | dm9132_id_table(dev); /* DM9132 */ |
1061 | else | 1078 | else |
1062 | send_filter_frame(dev, dev->mc_count); /* DM9102/DM9102A */ | 1079 | send_filter_frame(dev); /* DM9102/DM9102A */ |
1063 | spin_unlock_irqrestore(&db->lock, flags); | 1080 | spin_unlock_irqrestore(&db->lock, flags); |
1064 | } | 1081 | } |
1065 | 1082 | ||
@@ -1170,8 +1187,7 @@ static void dmfe_timer(unsigned long data) | |||
1170 | if ( time_after(jiffies, dev->trans_start + DMFE_TX_TIMEOUT) ) { | 1187 | if ( time_after(jiffies, dev->trans_start + DMFE_TX_TIMEOUT) ) { |
1171 | db->reset_TXtimeout++; | 1188 | db->reset_TXtimeout++; |
1172 | db->wait_reset = 1; | 1189 | db->wait_reset = 1; |
1173 | printk(KERN_WARNING "%s: Tx timeout - resetting\n", | 1190 | dev_warn(&dev->dev, "Tx timeout - resetting\n"); |
1174 | dev->name); | ||
1175 | } | 1191 | } |
1176 | } | 1192 | } |
1177 | 1193 | ||
@@ -1435,7 +1451,7 @@ static void update_cr6(u32 cr6_data, unsigned long ioaddr) | |||
1435 | * This setup frame initilize DM910X address filter mode | 1451 | * This setup frame initilize DM910X address filter mode |
1436 | */ | 1452 | */ |
1437 | 1453 | ||
1438 | static void dm9132_id_table(struct DEVICE *dev, int mc_cnt) | 1454 | static void dm9132_id_table(struct DEVICE *dev) |
1439 | { | 1455 | { |
1440 | struct dev_mc_list *mcptr; | 1456 | struct dev_mc_list *mcptr; |
1441 | u16 * addrptr; | 1457 | u16 * addrptr; |
@@ -1455,15 +1471,14 @@ static void dm9132_id_table(struct DEVICE *dev, int mc_cnt) | |||
1455 | ioaddr += 4; | 1471 | ioaddr += 4; |
1456 | 1472 | ||
1457 | /* Clear Hash Table */ | 1473 | /* Clear Hash Table */ |
1458 | for (i = 0; i < 4; i++) | 1474 | memset(hash_table, 0, sizeof(hash_table)); |
1459 | hash_table[i] = 0x0; | ||
1460 | 1475 | ||
1461 | /* broadcast address */ | 1476 | /* broadcast address */ |
1462 | hash_table[3] = 0x8000; | 1477 | hash_table[3] = 0x8000; |
1463 | 1478 | ||
1464 | /* the multicast address in Hash Table : 64 bits */ | 1479 | /* the multicast address in Hash Table : 64 bits */ |
1465 | for (mcptr = dev->mc_list, i = 0; i < mc_cnt; i++, mcptr = mcptr->next) { | 1480 | netdev_for_each_mc_addr(mcptr, dev) { |
1466 | hash_val = cal_CRC( (char *) mcptr->dmi_addr, 6, 0) & 0x3f; | 1481 | hash_val = cal_CRC((char *) mcptr->dmi_addr, 6, 0) & 0x3f; |
1467 | hash_table[hash_val / 16] |= (u16) 1 << (hash_val % 16); | 1482 | hash_table[hash_val / 16] |= (u16) 1 << (hash_val % 16); |
1468 | } | 1483 | } |
1469 | 1484 | ||
@@ -1478,7 +1493,7 @@ static void dm9132_id_table(struct DEVICE *dev, int mc_cnt) | |||
1478 | * This setup frame initilize DM910X address filter mode | 1493 | * This setup frame initilize DM910X address filter mode |
1479 | */ | 1494 | */ |
1480 | 1495 | ||
1481 | static void send_filter_frame(struct DEVICE *dev, int mc_cnt) | 1496 | static void send_filter_frame(struct DEVICE *dev) |
1482 | { | 1497 | { |
1483 | struct dmfe_board_info *db = netdev_priv(dev); | 1498 | struct dmfe_board_info *db = netdev_priv(dev); |
1484 | struct dev_mc_list *mcptr; | 1499 | struct dev_mc_list *mcptr; |
@@ -1504,14 +1519,14 @@ static void send_filter_frame(struct DEVICE *dev, int mc_cnt) | |||
1504 | *suptr++ = 0xffff; | 1519 | *suptr++ = 0xffff; |
1505 | 1520 | ||
1506 | /* fit the multicast address */ | 1521 | /* fit the multicast address */ |
1507 | for (mcptr = dev->mc_list, i = 0; i < mc_cnt; i++, mcptr = mcptr->next) { | 1522 | netdev_for_each_mc_addr(mcptr, dev) { |
1508 | addrptr = (u16 *) mcptr->dmi_addr; | 1523 | addrptr = (u16 *) mcptr->dmi_addr; |
1509 | *suptr++ = addrptr[0]; | 1524 | *suptr++ = addrptr[0]; |
1510 | *suptr++ = addrptr[1]; | 1525 | *suptr++ = addrptr[1]; |
1511 | *suptr++ = addrptr[2]; | 1526 | *suptr++ = addrptr[2]; |
1512 | } | 1527 | } |
1513 | 1528 | ||
1514 | for (; i<14; i++) { | 1529 | for (i = netdev_mc_count(dev); i < 14; i++) { |
1515 | *suptr++ = 0xffff; | 1530 | *suptr++ = 0xffff; |
1516 | *suptr++ = 0xffff; | 1531 | *suptr++ = 0xffff; |
1517 | *suptr++ = 0xffff; | 1532 | *suptr++ = 0xffff; |
@@ -1625,7 +1640,7 @@ static u8 dmfe_sense_speed(struct dmfe_board_info * db) | |||
1625 | else /* DM9102/DM9102A */ | 1640 | else /* DM9102/DM9102A */ |
1626 | phy_mode = phy_read(db->ioaddr, | 1641 | phy_mode = phy_read(db->ioaddr, |
1627 | db->phy_addr, 17, db->chip_id) & 0xf000; | 1642 | db->phy_addr, 17, db->chip_id) & 0xf000; |
1628 | /* printk(DRV_NAME ": Phy_mode %x ",phy_mode); */ | 1643 | pr_debug("Phy_mode %x\n", phy_mode); |
1629 | switch (phy_mode) { | 1644 | switch (phy_mode) { |
1630 | case 0x1000: db->op_mode = DMFE_10MHF; break; | 1645 | case 0x1000: db->op_mode = DMFE_10MHF; break; |
1631 | case 0x2000: db->op_mode = DMFE_10MFD; break; | 1646 | case 0x2000: db->op_mode = DMFE_10MFD; break; |
@@ -2068,7 +2083,7 @@ static void dmfe_HPNA_remote_cmd_chk(struct dmfe_board_info * db) | |||
2068 | 2083 | ||
2069 | 2084 | ||
2070 | 2085 | ||
2071 | static struct pci_device_id dmfe_pci_tbl[] = { | 2086 | static DEFINE_PCI_DEVICE_TABLE(dmfe_pci_tbl) = { |
2072 | { 0x1282, 0x9132, PCI_ANY_ID, PCI_ANY_ID, 0, 0, PCI_DM9132_ID }, | 2087 | { 0x1282, 0x9132, PCI_ANY_ID, PCI_ANY_ID, 0, 0, PCI_DM9132_ID }, |
2073 | { 0x1282, 0x9102, PCI_ANY_ID, PCI_ANY_ID, 0, 0, PCI_DM9102_ID }, | 2088 | { 0x1282, 0x9102, PCI_ANY_ID, PCI_ANY_ID, 0, 0, PCI_DM9102_ID }, |
2074 | { 0x1282, 0x9100, PCI_ANY_ID, PCI_ANY_ID, 0, 0, PCI_DM9100_ID }, | 2089 | { 0x1282, 0x9100, PCI_ANY_ID, PCI_ANY_ID, 0, 0, PCI_DM9100_ID }, |