Lines Matching refs:lp
449 struct pcnet32_private *lp = netdev_priv(dev); in pcnet32_netif_stop() local
452 napi_disable(&lp->napi); in pcnet32_netif_stop()
458 struct pcnet32_private *lp = netdev_priv(dev); in pcnet32_netif_start() local
463 val = lp->a->read_csr(ioaddr, CSR3); in pcnet32_netif_start()
465 lp->a->write_csr(ioaddr, CSR3, val); in pcnet32_netif_start()
466 napi_enable(&lp->napi); in pcnet32_netif_start()
477 struct pcnet32_private *lp, in pcnet32_realloc_tx_ring() argument
489 pci_zalloc_consistent(lp->pci_dev, in pcnet32_realloc_tx_ring()
503 kfree(lp->tx_skbuff); in pcnet32_realloc_tx_ring()
504 kfree(lp->tx_dma_addr); in pcnet32_realloc_tx_ring()
505 pci_free_consistent(lp->pci_dev, in pcnet32_realloc_tx_ring()
506 sizeof(struct pcnet32_tx_head) * lp->tx_ring_size, in pcnet32_realloc_tx_ring()
507 lp->tx_ring, lp->tx_ring_dma_addr); in pcnet32_realloc_tx_ring()
509 lp->tx_ring_size = entries; in pcnet32_realloc_tx_ring()
510 lp->tx_mod_mask = lp->tx_ring_size - 1; in pcnet32_realloc_tx_ring()
511 lp->tx_len_bits = (size << 12); in pcnet32_realloc_tx_ring()
512 lp->tx_ring = new_tx_ring; in pcnet32_realloc_tx_ring()
513 lp->tx_ring_dma_addr = new_ring_dma_addr; in pcnet32_realloc_tx_ring()
514 lp->tx_dma_addr = new_dma_addr_list; in pcnet32_realloc_tx_ring()
515 lp->tx_skbuff = new_skb_list; in pcnet32_realloc_tx_ring()
521 pci_free_consistent(lp->pci_dev, in pcnet32_realloc_tx_ring()
538 struct pcnet32_private *lp, in pcnet32_realloc_rx_ring() argument
549 pci_zalloc_consistent(lp->pci_dev, in pcnet32_realloc_rx_ring()
564 overlap = min(entries, lp->rx_ring_size); in pcnet32_realloc_rx_ring()
566 new_rx_ring[new] = lp->rx_ring[new]; in pcnet32_realloc_rx_ring()
567 new_dma_addr_list[new] = lp->rx_dma_addr[new]; in pcnet32_realloc_rx_ring()
568 new_skb_list[new] = lp->rx_skbuff[new]; in pcnet32_realloc_rx_ring()
577 netif_err(lp, drv, dev, "%s netdev_alloc_skb failed\n", in pcnet32_realloc_rx_ring()
584 pci_map_single(lp->pci_dev, rx_skbuff->data, in pcnet32_realloc_rx_ring()
586 if (pci_dma_mapping_error(lp->pci_dev, in pcnet32_realloc_rx_ring()
588 netif_err(lp, drv, dev, "%s dma mapping failed\n", in pcnet32_realloc_rx_ring()
598 for (; new < lp->rx_ring_size; new++) { in pcnet32_realloc_rx_ring()
599 if (lp->rx_skbuff[new]) { in pcnet32_realloc_rx_ring()
600 if (!pci_dma_mapping_error(lp->pci_dev, in pcnet32_realloc_rx_ring()
601 lp->rx_dma_addr[new])) in pcnet32_realloc_rx_ring()
602 pci_unmap_single(lp->pci_dev, in pcnet32_realloc_rx_ring()
603 lp->rx_dma_addr[new], in pcnet32_realloc_rx_ring()
606 dev_kfree_skb(lp->rx_skbuff[new]); in pcnet32_realloc_rx_ring()
610 kfree(lp->rx_skbuff); in pcnet32_realloc_rx_ring()
611 kfree(lp->rx_dma_addr); in pcnet32_realloc_rx_ring()
612 pci_free_consistent(lp->pci_dev, in pcnet32_realloc_rx_ring()
614 lp->rx_ring_size, lp->rx_ring, in pcnet32_realloc_rx_ring()
615 lp->rx_ring_dma_addr); in pcnet32_realloc_rx_ring()
617 lp->rx_ring_size = entries; in pcnet32_realloc_rx_ring()
618 lp->rx_mod_mask = lp->rx_ring_size - 1; in pcnet32_realloc_rx_ring()
619 lp->rx_len_bits = (size << 4); in pcnet32_realloc_rx_ring()
620 lp->rx_ring = new_rx_ring; in pcnet32_realloc_rx_ring()
621 lp->rx_ring_dma_addr = new_ring_dma_addr; in pcnet32_realloc_rx_ring()
622 lp->rx_dma_addr = new_dma_addr_list; in pcnet32_realloc_rx_ring()
623 lp->rx_skbuff = new_skb_list; in pcnet32_realloc_rx_ring()
627 while (--new >= lp->rx_ring_size) { in pcnet32_realloc_rx_ring()
629 if (!pci_dma_mapping_error(lp->pci_dev, in pcnet32_realloc_rx_ring()
631 pci_unmap_single(lp->pci_dev, in pcnet32_realloc_rx_ring()
642 pci_free_consistent(lp->pci_dev, in pcnet32_realloc_rx_ring()
650 struct pcnet32_private *lp = netdev_priv(dev); in pcnet32_purge_rx_ring() local
654 for (i = 0; i < lp->rx_ring_size; i++) { in pcnet32_purge_rx_ring()
655 lp->rx_ring[i].status = 0; /* CPU owns buffer */ in pcnet32_purge_rx_ring()
657 if (lp->rx_skbuff[i]) { in pcnet32_purge_rx_ring()
658 if (!pci_dma_mapping_error(lp->pci_dev, in pcnet32_purge_rx_ring()
659 lp->rx_dma_addr[i])) in pcnet32_purge_rx_ring()
660 pci_unmap_single(lp->pci_dev, in pcnet32_purge_rx_ring()
661 lp->rx_dma_addr[i], in pcnet32_purge_rx_ring()
664 dev_kfree_skb_any(lp->rx_skbuff[i]); in pcnet32_purge_rx_ring()
666 lp->rx_skbuff[i] = NULL; in pcnet32_purge_rx_ring()
667 lp->rx_dma_addr[i] = 0; in pcnet32_purge_rx_ring()
682 struct pcnet32_private *lp = netdev_priv(dev); in pcnet32_get_settings() local
686 if (lp->mii) { in pcnet32_get_settings()
687 spin_lock_irqsave(&lp->lock, flags); in pcnet32_get_settings()
688 mii_ethtool_gset(&lp->mii_if, cmd); in pcnet32_get_settings()
689 spin_unlock_irqrestore(&lp->lock, flags); in pcnet32_get_settings()
697 struct pcnet32_private *lp = netdev_priv(dev); in pcnet32_set_settings() local
701 if (lp->mii) { in pcnet32_set_settings()
702 spin_lock_irqsave(&lp->lock, flags); in pcnet32_set_settings()
703 r = mii_ethtool_sset(&lp->mii_if, cmd); in pcnet32_set_settings()
704 spin_unlock_irqrestore(&lp->lock, flags); in pcnet32_set_settings()
712 struct pcnet32_private *lp = netdev_priv(dev); in pcnet32_get_drvinfo() local
716 if (lp->pci_dev) in pcnet32_get_drvinfo()
717 strlcpy(info->bus_info, pci_name(lp->pci_dev), in pcnet32_get_drvinfo()
726 struct pcnet32_private *lp = netdev_priv(dev); in pcnet32_get_link() local
730 spin_lock_irqsave(&lp->lock, flags); in pcnet32_get_link()
731 if (lp->mii) { in pcnet32_get_link()
732 r = mii_link_ok(&lp->mii_if); in pcnet32_get_link()
733 } else if (lp->chip_version >= PCNET32_79C970A) { in pcnet32_get_link()
735 r = (lp->a->read_bcr(ioaddr, 4) != 0xc0); in pcnet32_get_link()
739 spin_unlock_irqrestore(&lp->lock, flags); in pcnet32_get_link()
746 struct pcnet32_private *lp = netdev_priv(dev); in pcnet32_get_msglevel() local
747 return lp->msg_enable; in pcnet32_get_msglevel()
752 struct pcnet32_private *lp = netdev_priv(dev); in pcnet32_set_msglevel() local
753 lp->msg_enable = value; in pcnet32_set_msglevel()
758 struct pcnet32_private *lp = netdev_priv(dev); in pcnet32_nway_reset() local
762 if (lp->mii) { in pcnet32_nway_reset()
763 spin_lock_irqsave(&lp->lock, flags); in pcnet32_nway_reset()
764 r = mii_nway_restart(&lp->mii_if); in pcnet32_nway_reset()
765 spin_unlock_irqrestore(&lp->lock, flags); in pcnet32_nway_reset()
773 struct pcnet32_private *lp = netdev_priv(dev); in pcnet32_get_ringparam() local
776 ering->tx_pending = lp->tx_ring_size; in pcnet32_get_ringparam()
778 ering->rx_pending = lp->rx_ring_size; in pcnet32_get_ringparam()
784 struct pcnet32_private *lp = netdev_priv(dev); in pcnet32_set_ringparam() local
796 spin_lock_irqsave(&lp->lock, flags); in pcnet32_set_ringparam()
797 lp->a->write_csr(ioaddr, CSR0, CSR0_STOP); /* stop the chip */ in pcnet32_set_ringparam()
808 if ((1 << i) != lp->tx_ring_size) in pcnet32_set_ringparam()
809 pcnet32_realloc_tx_ring(dev, lp, i); in pcnet32_set_ringparam()
816 if ((1 << i) != lp->rx_ring_size) in pcnet32_set_ringparam()
817 pcnet32_realloc_rx_ring(dev, lp, i); in pcnet32_set_ringparam()
819 lp->napi.weight = lp->rx_ring_size / 2; in pcnet32_set_ringparam()
826 spin_unlock_irqrestore(&lp->lock, flags); in pcnet32_set_ringparam()
828 netif_info(lp, drv, dev, "Ring Param Settings: RX: %d, TX: %d\n", in pcnet32_set_ringparam()
829 lp->rx_ring_size, lp->tx_ring_size); in pcnet32_set_ringparam()
853 struct pcnet32_private *lp = netdev_priv(dev); in pcnet32_ethtool_test() local
859 netif_printk(lp, hw, KERN_DEBUG, dev, in pcnet32_ethtool_test()
863 netif_printk(lp, hw, KERN_DEBUG, dev, in pcnet32_ethtool_test()
866 netif_printk(lp, hw, KERN_DEBUG, dev, in pcnet32_ethtool_test()
872 struct pcnet32_private *lp = netdev_priv(dev); in pcnet32_loopback_test() local
873 const struct pcnet32_access *a = lp->a; /* access to registers */ in pcnet32_loopback_test()
892 spin_lock_irqsave(&lp->lock, flags); in pcnet32_loopback_test()
893 lp->a->write_csr(ioaddr, CSR0, CSR0_STOP); /* stop the chip */ in pcnet32_loopback_test()
895 numbuffs = min(numbuffs, (int)min(lp->rx_ring_size, lp->tx_ring_size)); in pcnet32_loopback_test()
898 lp->a->reset(ioaddr); in pcnet32_loopback_test()
899 lp->a->write_csr(ioaddr, CSR4, 0x0915); /* auto tx pad */ in pcnet32_loopback_test()
902 lp->a->write_bcr(ioaddr, 20, 2); in pcnet32_loopback_test()
907 lp->a->write_csr(ioaddr, CSR0, CSR0_STOP); /* Set STOP bit */ in pcnet32_loopback_test()
914 netif_printk(lp, hw, KERN_DEBUG, dev, in pcnet32_loopback_test()
921 lp->tx_skbuff[x] = skb; in pcnet32_loopback_test()
922 lp->tx_ring[x].length = cpu_to_le16(-skb->len); in pcnet32_loopback_test()
923 lp->tx_ring[x].misc = 0; in pcnet32_loopback_test()
939 lp->tx_dma_addr[x] = in pcnet32_loopback_test()
940 pci_map_single(lp->pci_dev, skb->data, skb->len, in pcnet32_loopback_test()
942 if (pci_dma_mapping_error(lp->pci_dev, lp->tx_dma_addr[x])) { in pcnet32_loopback_test()
943 netif_printk(lp, hw, KERN_DEBUG, dev, in pcnet32_loopback_test()
948 lp->tx_ring[x].base = cpu_to_le32(lp->tx_dma_addr[x]); in pcnet32_loopback_test()
950 lp->tx_ring[x].status = cpu_to_le16(status); in pcnet32_loopback_test()
958 lp->a->write_csr(ioaddr, CSR15, x | 0x0044); in pcnet32_loopback_test()
961 lp->a->write_csr(ioaddr, CSR0, CSR0_START); /* Set STRT bit */ in pcnet32_loopback_test()
967 while ((lp->rx_ring[x].status & teststatus) && (ticks < 200)) { in pcnet32_loopback_test()
968 spin_unlock_irqrestore(&lp->lock, flags); in pcnet32_loopback_test()
970 spin_lock_irqsave(&lp->lock, flags); in pcnet32_loopback_test()
975 netif_err(lp, hw, dev, "Desc %d failed to reset!\n", x); in pcnet32_loopback_test()
980 lp->a->write_csr(ioaddr, CSR0, CSR0_STOP); /* Set STOP bit */ in pcnet32_loopback_test()
982 if (netif_msg_hw(lp) && netif_msg_pktdata(lp)) { in pcnet32_loopback_test()
987 skb = lp->rx_skbuff[x]; in pcnet32_loopback_test()
997 skb = lp->rx_skbuff[x]; in pcnet32_loopback_test()
998 packet = lp->tx_skbuff[x]->data; in pcnet32_loopback_test()
1001 netif_printk(lp, hw, KERN_DEBUG, dev, in pcnet32_loopback_test()
1026 lp->a->write_bcr(ioaddr, 20, 4); /* return to 16bit mode */ in pcnet32_loopback_test()
1028 spin_unlock_irqrestore(&lp->lock, flags); in pcnet32_loopback_test()
1036 struct pcnet32_private *lp = netdev_priv(dev); in pcnet32_set_phys_id() local
1037 const struct pcnet32_access *a = lp->a; in pcnet32_set_phys_id()
1045 spin_lock_irqsave(&lp->lock, flags); in pcnet32_set_phys_id()
1047 lp->save_regs[i - 4] = a->read_bcr(ioaddr, i); in pcnet32_set_phys_id()
1048 spin_unlock_irqrestore(&lp->lock, flags); in pcnet32_set_phys_id()
1054 spin_lock_irqsave(&lp->lock, flags); in pcnet32_set_phys_id()
1057 spin_unlock_irqrestore(&lp->lock, flags); in pcnet32_set_phys_id()
1062 spin_lock_irqsave(&lp->lock, flags); in pcnet32_set_phys_id()
1064 a->write_bcr(ioaddr, i, lp->save_regs[i - 4]); in pcnet32_set_phys_id()
1065 spin_unlock_irqrestore(&lp->lock, flags); in pcnet32_set_phys_id()
1077 struct pcnet32_private *lp = netdev_priv(dev); in pcnet32_suspend() local
1078 const struct pcnet32_access *a = lp->a; in pcnet32_suspend()
1083 if (lp->chip_version < PCNET32_79C970A) in pcnet32_suspend()
1093 spin_unlock_irqrestore(&lp->lock, *flags); in pcnet32_suspend()
1098 spin_lock_irqsave(&lp->lock, *flags); in pcnet32_suspend()
1101 netif_printk(lp, hw, KERN_DEBUG, dev, in pcnet32_suspend()
1114 struct pcnet32_private *lp, in pcnet32_rx_entry() argument
1147 netif_err(lp, drv, dev, "Impossible packet size %d!\n", in pcnet32_rx_entry()
1153 netif_err(lp, rx_err, dev, "Runt packet!\n"); in pcnet32_rx_entry()
1169 new_dma_addr = pci_map_single(lp->pci_dev, in pcnet32_rx_entry()
1173 if (pci_dma_mapping_error(lp->pci_dev, new_dma_addr)) { in pcnet32_rx_entry()
1174 netif_err(lp, rx_err, dev, in pcnet32_rx_entry()
1179 skb = lp->rx_skbuff[entry]; in pcnet32_rx_entry()
1180 pci_unmap_single(lp->pci_dev, in pcnet32_rx_entry()
1181 lp->rx_dma_addr[entry], in pcnet32_rx_entry()
1185 lp->rx_skbuff[entry] = newskb; in pcnet32_rx_entry()
1186 lp->rx_dma_addr[entry] = new_dma_addr; in pcnet32_rx_entry()
1202 pci_dma_sync_single_for_cpu(lp->pci_dev, in pcnet32_rx_entry()
1203 lp->rx_dma_addr[entry], in pcnet32_rx_entry()
1207 (unsigned char *)(lp->rx_skbuff[entry]->data), in pcnet32_rx_entry()
1209 pci_dma_sync_single_for_device(lp->pci_dev, in pcnet32_rx_entry()
1210 lp->rx_dma_addr[entry], in pcnet32_rx_entry()
1222 struct pcnet32_private *lp = netdev_priv(dev); in pcnet32_rx() local
1223 int entry = lp->cur_rx & lp->rx_mod_mask; in pcnet32_rx()
1224 struct pcnet32_rx_head *rxp = &lp->rx_ring[entry]; in pcnet32_rx()
1229 pcnet32_rx_entry(dev, lp, rxp, entry); in pcnet32_rx()
1238 entry = (++lp->cur_rx) & lp->rx_mod_mask; in pcnet32_rx()
1239 rxp = &lp->rx_ring[entry]; in pcnet32_rx()
1247 struct pcnet32_private *lp = netdev_priv(dev); in pcnet32_tx() local
1248 unsigned int dirty_tx = lp->dirty_tx; in pcnet32_tx()
1252 while (dirty_tx != lp->cur_tx) { in pcnet32_tx()
1253 int entry = dirty_tx & lp->tx_mod_mask; in pcnet32_tx()
1254 int status = (short)le16_to_cpu(lp->tx_ring[entry].status); in pcnet32_tx()
1259 lp->tx_ring[entry].base = 0; in pcnet32_tx()
1263 int err_status = le32_to_cpu(lp->tx_ring[entry].misc); in pcnet32_tx()
1265 netif_err(lp, tx_err, dev, in pcnet32_tx()
1279 netif_err(lp, tx_err, dev, "Tx FIFO error!\n"); in pcnet32_tx()
1285 if (!lp->dxsuflo) { /* If controller doesn't recover ... */ in pcnet32_tx()
1288 netif_err(lp, tx_err, dev, "Tx FIFO error!\n"); in pcnet32_tx()
1300 if (lp->tx_skbuff[entry]) { in pcnet32_tx()
1301 pci_unmap_single(lp->pci_dev, in pcnet32_tx()
1302 lp->tx_dma_addr[entry], in pcnet32_tx()
1303 lp->tx_skbuff[entry]-> in pcnet32_tx()
1305 dev_kfree_skb_any(lp->tx_skbuff[entry]); in pcnet32_tx()
1306 lp->tx_skbuff[entry] = NULL; in pcnet32_tx()
1307 lp->tx_dma_addr[entry] = 0; in pcnet32_tx()
1312 delta = (lp->cur_tx - dirty_tx) & (lp->tx_mod_mask + lp->tx_ring_size); in pcnet32_tx()
1313 if (delta > lp->tx_ring_size) { in pcnet32_tx()
1314 netif_err(lp, drv, dev, "out-of-sync dirty pointer, %d vs. %d, full=%d\n", in pcnet32_tx()
1315 dirty_tx, lp->cur_tx, lp->tx_full); in pcnet32_tx()
1316 dirty_tx += lp->tx_ring_size; in pcnet32_tx()
1317 delta -= lp->tx_ring_size; in pcnet32_tx()
1320 if (lp->tx_full && in pcnet32_tx()
1322 delta < lp->tx_ring_size - 2) { in pcnet32_tx()
1324 lp->tx_full = 0; in pcnet32_tx()
1327 lp->dirty_tx = dirty_tx; in pcnet32_tx()
1334 struct pcnet32_private *lp = container_of(napi, struct pcnet32_private, napi); in pcnet32_poll() local
1335 struct net_device *dev = lp->dev; in pcnet32_poll()
1343 spin_lock_irqsave(&lp->lock, flags); in pcnet32_poll()
1346 lp->a->reset(ioaddr); in pcnet32_poll()
1347 lp->a->write_csr(ioaddr, CSR4, 0x0915); /* auto tx pad */ in pcnet32_poll()
1351 spin_unlock_irqrestore(&lp->lock, flags); in pcnet32_poll()
1354 spin_lock_irqsave(&lp->lock, flags); in pcnet32_poll()
1359 val = lp->a->read_csr(ioaddr, CSR3); in pcnet32_poll()
1361 lp->a->write_csr(ioaddr, CSR3, val); in pcnet32_poll()
1364 lp->a->write_csr(ioaddr, CSR0, CSR0_INTEN); in pcnet32_poll()
1366 spin_unlock_irqrestore(&lp->lock, flags); in pcnet32_poll()
1375 struct pcnet32_private *lp = netdev_priv(dev); in pcnet32_get_regs_len() local
1376 int j = lp->phycount * PCNET32_REGS_PER_PHY; in pcnet32_get_regs_len()
1386 struct pcnet32_private *lp = netdev_priv(dev); in pcnet32_get_regs() local
1387 const struct pcnet32_access *a = lp->a; in pcnet32_get_regs()
1391 spin_lock_irqsave(&lp->lock, flags); in pcnet32_get_regs()
1418 if (lp->mii) { in pcnet32_get_regs()
1421 if (lp->phymask & (1 << j)) { in pcnet32_get_regs()
1423 lp->a->write_bcr(ioaddr, 33, in pcnet32_get_regs()
1425 *buff++ = lp->a->read_bcr(ioaddr, 34); in pcnet32_get_regs()
1439 spin_unlock_irqrestore(&lp->lock, flags); in pcnet32_get_regs()
1544 struct pcnet32_private *lp; in pcnet32_probe1() local
1694 dev = alloc_etherdev(sizeof(*lp)); in pcnet32_probe1()
1782 lp = netdev_priv(dev); in pcnet32_probe1()
1784 lp->init_block = pci_alloc_consistent(pdev, sizeof(*lp->init_block), in pcnet32_probe1()
1785 &lp->init_dma_addr); in pcnet32_probe1()
1786 if (!lp->init_block) { in pcnet32_probe1()
1792 lp->pci_dev = pdev; in pcnet32_probe1()
1794 lp->dev = dev; in pcnet32_probe1()
1796 spin_lock_init(&lp->lock); in pcnet32_probe1()
1798 lp->name = chipname; in pcnet32_probe1()
1799 lp->shared_irq = shared; in pcnet32_probe1()
1800 lp->tx_ring_size = TX_RING_SIZE; /* default tx ring size */ in pcnet32_probe1()
1801 lp->rx_ring_size = RX_RING_SIZE; /* default rx ring size */ in pcnet32_probe1()
1802 lp->tx_mod_mask = lp->tx_ring_size - 1; in pcnet32_probe1()
1803 lp->rx_mod_mask = lp->rx_ring_size - 1; in pcnet32_probe1()
1804 lp->tx_len_bits = (PCNET32_LOG_TX_BUFFERS << 12); in pcnet32_probe1()
1805 lp->rx_len_bits = (PCNET32_LOG_RX_BUFFERS << 4); in pcnet32_probe1()
1806 lp->mii_if.full_duplex = fdx; in pcnet32_probe1()
1807 lp->mii_if.phy_id_mask = 0x1f; in pcnet32_probe1()
1808 lp->mii_if.reg_num_mask = 0x1f; in pcnet32_probe1()
1809 lp->dxsuflo = dxsuflo; in pcnet32_probe1()
1810 lp->mii = mii; in pcnet32_probe1()
1811 lp->chip_version = chip_version; in pcnet32_probe1()
1812 lp->msg_enable = pcnet32_debug; in pcnet32_probe1()
1815 lp->options = PCNET32_PORT_ASEL; in pcnet32_probe1()
1817 lp->options = options_mapping[options[cards_found]]; in pcnet32_probe1()
1818 lp->mii_if.dev = dev; in pcnet32_probe1()
1819 lp->mii_if.mdio_read = mdio_read; in pcnet32_probe1()
1820 lp->mii_if.mdio_write = mdio_write; in pcnet32_probe1()
1823 lp->napi.weight = lp->rx_ring_size / 2; in pcnet32_probe1()
1825 netif_napi_add(dev, &lp->napi, pcnet32_poll, lp->rx_ring_size / 2); in pcnet32_probe1()
1827 if (fdx && !(lp->options & PCNET32_PORT_ASEL) && in pcnet32_probe1()
1829 lp->options |= PCNET32_PORT_FD; in pcnet32_probe1()
1831 lp->a = a; in pcnet32_probe1()
1834 if (pcnet32_alloc_ring(dev, pci_name(lp->pci_dev))) { in pcnet32_probe1()
1841 lp->options = PCNET32_PORT_FD | PCNET32_PORT_GPSI; in pcnet32_probe1()
1843 lp->init_block->mode = cpu_to_le16(0x0003); /* Disable Rx and Tx. */ in pcnet32_probe1()
1844 lp->init_block->tlen_rlen = in pcnet32_probe1()
1845 cpu_to_le16(lp->tx_len_bits | lp->rx_len_bits); in pcnet32_probe1()
1847 lp->init_block->phys_addr[i] = dev->dev_addr[i]; in pcnet32_probe1()
1848 lp->init_block->filter[0] = 0x00000000; in pcnet32_probe1()
1849 lp->init_block->filter[1] = 0x00000000; in pcnet32_probe1()
1850 lp->init_block->rx_ring = cpu_to_le32(lp->rx_ring_dma_addr); in pcnet32_probe1()
1851 lp->init_block->tx_ring = cpu_to_le32(lp->tx_ring_dma_addr); in pcnet32_probe1()
1856 a->write_csr(ioaddr, 1, (lp->init_dma_addr & 0xffff)); in pcnet32_probe1()
1857 a->write_csr(ioaddr, 2, (lp->init_dma_addr >> 16)); in pcnet32_probe1()
1887 if (lp->mii) { in pcnet32_probe1()
1890 lp->mii_if.phy_id = ((lp->a->read_bcr(ioaddr, 33)) >> 5) & 0x1f; in pcnet32_probe1()
1903 lp->phycount++; in pcnet32_probe1()
1904 lp->phymask |= (1 << i); in pcnet32_probe1()
1905 lp->mii_if.phy_id = i; in pcnet32_probe1()
1910 lp->a->write_bcr(ioaddr, 33, (lp->mii_if.phy_id) << 5); in pcnet32_probe1()
1911 if (lp->phycount > 1) in pcnet32_probe1()
1912 lp->options |= PCNET32_PORT_MII; in pcnet32_probe1()
1915 init_timer(&lp->watchdog_timer); in pcnet32_probe1()
1916 lp->watchdog_timer.data = (unsigned long)dev; in pcnet32_probe1()
1917 lp->watchdog_timer.function = (void *)&pcnet32_watchdog; in pcnet32_probe1()
1931 lp->next = pcnet32_dev; in pcnet32_probe1()
1936 pr_info("%s: registered as %s\n", dev->name, lp->name); in pcnet32_probe1()
1946 pci_free_consistent(lp->pci_dev, sizeof(*lp->init_block), in pcnet32_probe1()
1947 lp->init_block, lp->init_dma_addr); in pcnet32_probe1()
1958 struct pcnet32_private *lp = netdev_priv(dev); in pcnet32_alloc_ring() local
1960 lp->tx_ring = pci_alloc_consistent(lp->pci_dev, in pcnet32_alloc_ring()
1962 lp->tx_ring_size, in pcnet32_alloc_ring()
1963 &lp->tx_ring_dma_addr); in pcnet32_alloc_ring()
1964 if (lp->tx_ring == NULL) { in pcnet32_alloc_ring()
1965 netif_err(lp, drv, dev, "Consistent memory allocation failed\n"); in pcnet32_alloc_ring()
1969 lp->rx_ring = pci_alloc_consistent(lp->pci_dev, in pcnet32_alloc_ring()
1971 lp->rx_ring_size, in pcnet32_alloc_ring()
1972 &lp->rx_ring_dma_addr); in pcnet32_alloc_ring()
1973 if (lp->rx_ring == NULL) { in pcnet32_alloc_ring()
1974 netif_err(lp, drv, dev, "Consistent memory allocation failed\n"); in pcnet32_alloc_ring()
1978 lp->tx_dma_addr = kcalloc(lp->tx_ring_size, sizeof(dma_addr_t), in pcnet32_alloc_ring()
1980 if (!lp->tx_dma_addr) in pcnet32_alloc_ring()
1983 lp->rx_dma_addr = kcalloc(lp->rx_ring_size, sizeof(dma_addr_t), in pcnet32_alloc_ring()
1985 if (!lp->rx_dma_addr) in pcnet32_alloc_ring()
1988 lp->tx_skbuff = kcalloc(lp->tx_ring_size, sizeof(struct sk_buff *), in pcnet32_alloc_ring()
1990 if (!lp->tx_skbuff) in pcnet32_alloc_ring()
1993 lp->rx_skbuff = kcalloc(lp->rx_ring_size, sizeof(struct sk_buff *), in pcnet32_alloc_ring()
1995 if (!lp->rx_skbuff) in pcnet32_alloc_ring()
2003 struct pcnet32_private *lp = netdev_priv(dev); in pcnet32_free_ring() local
2005 kfree(lp->tx_skbuff); in pcnet32_free_ring()
2006 lp->tx_skbuff = NULL; in pcnet32_free_ring()
2008 kfree(lp->rx_skbuff); in pcnet32_free_ring()
2009 lp->rx_skbuff = NULL; in pcnet32_free_ring()
2011 kfree(lp->tx_dma_addr); in pcnet32_free_ring()
2012 lp->tx_dma_addr = NULL; in pcnet32_free_ring()
2014 kfree(lp->rx_dma_addr); in pcnet32_free_ring()
2015 lp->rx_dma_addr = NULL; in pcnet32_free_ring()
2017 if (lp->tx_ring) { in pcnet32_free_ring()
2018 pci_free_consistent(lp->pci_dev, in pcnet32_free_ring()
2020 lp->tx_ring_size, lp->tx_ring, in pcnet32_free_ring()
2021 lp->tx_ring_dma_addr); in pcnet32_free_ring()
2022 lp->tx_ring = NULL; in pcnet32_free_ring()
2025 if (lp->rx_ring) { in pcnet32_free_ring()
2026 pci_free_consistent(lp->pci_dev, in pcnet32_free_ring()
2028 lp->rx_ring_size, lp->rx_ring, in pcnet32_free_ring()
2029 lp->rx_ring_dma_addr); in pcnet32_free_ring()
2030 lp->rx_ring = NULL; in pcnet32_free_ring()
2036 struct pcnet32_private *lp = netdev_priv(dev); in pcnet32_open() local
2037 struct pci_dev *pdev = lp->pci_dev; in pcnet32_open()
2045 lp->shared_irq ? IRQF_SHARED : 0, dev->name, in pcnet32_open()
2050 spin_lock_irqsave(&lp->lock, flags); in pcnet32_open()
2058 lp->a->reset(ioaddr); in pcnet32_open()
2061 lp->a->write_bcr(ioaddr, 20, 2); in pcnet32_open()
2063 netif_printk(lp, ifup, KERN_DEBUG, dev, in pcnet32_open()
2065 __func__, dev->irq, (u32) (lp->tx_ring_dma_addr), in pcnet32_open()
2066 (u32) (lp->rx_ring_dma_addr), in pcnet32_open()
2067 (u32) (lp->init_dma_addr)); in pcnet32_open()
2070 val = lp->a->read_bcr(ioaddr, 2) & ~2; in pcnet32_open()
2071 if (lp->options & PCNET32_PORT_ASEL) in pcnet32_open()
2073 lp->a->write_bcr(ioaddr, 2, val); in pcnet32_open()
2076 if (lp->mii_if.full_duplex) { in pcnet32_open()
2077 val = lp->a->read_bcr(ioaddr, 9) & ~3; in pcnet32_open()
2078 if (lp->options & PCNET32_PORT_FD) { in pcnet32_open()
2080 if (lp->options == (PCNET32_PORT_FD | PCNET32_PORT_AUI)) in pcnet32_open()
2082 } else if (lp->options & PCNET32_PORT_ASEL) { in pcnet32_open()
2084 if (lp->chip_version == 0x2627) in pcnet32_open()
2087 lp->a->write_bcr(ioaddr, 9, val); in pcnet32_open()
2091 val = lp->a->read_csr(ioaddr, 124) & ~0x10; in pcnet32_open()
2092 if ((lp->options & PCNET32_PORT_PORTSEL) == PCNET32_PORT_GPSI) in pcnet32_open()
2094 lp->a->write_csr(ioaddr, 124, val); in pcnet32_open()
2100 if (lp->options & PCNET32_PORT_ASEL) { in pcnet32_open()
2101 lp->options = PCNET32_PORT_FD | PCNET32_PORT_100; in pcnet32_open()
2102 netif_printk(lp, link, KERN_DEBUG, dev, in pcnet32_open()
2106 if (lp->phycount < 2) { in pcnet32_open()
2112 if (lp->mii && !(lp->options & PCNET32_PORT_ASEL)) { in pcnet32_open()
2113 lp->a->write_bcr(ioaddr, 32, in pcnet32_open()
2114 lp->a->read_bcr(ioaddr, 32) | 0x0080); in pcnet32_open()
2116 val = lp->a->read_bcr(ioaddr, 32) & ~0xb8; in pcnet32_open()
2117 if (lp->options & PCNET32_PORT_FD) in pcnet32_open()
2119 if (lp->options & PCNET32_PORT_100) in pcnet32_open()
2121 lp->a->write_bcr(ioaddr, 32, val); in pcnet32_open()
2123 if (lp->options & PCNET32_PORT_ASEL) { in pcnet32_open()
2124 lp->a->write_bcr(ioaddr, 32, in pcnet32_open()
2125 lp->a->read_bcr(ioaddr, in pcnet32_open()
2128 val = lp->a->read_bcr(ioaddr, 32) & ~0x98; in pcnet32_open()
2130 lp->a->write_bcr(ioaddr, 32, val); in pcnet32_open()
2143 val = lp->a->read_bcr(ioaddr, 2); in pcnet32_open()
2144 lp->a->write_bcr(ioaddr, 2, val & ~2); in pcnet32_open()
2145 val = lp->a->read_bcr(ioaddr, 32); in pcnet32_open()
2146 lp->a->write_bcr(ioaddr, 32, val & ~(1 << 7)); /* stop MII manager */ in pcnet32_open()
2148 if (!(lp->options & PCNET32_PORT_ASEL)) { in pcnet32_open()
2154 (lp->options & PCNET32_PORT_100) ? in pcnet32_open()
2156 bcr9 = lp->a->read_bcr(ioaddr, 9); in pcnet32_open()
2158 if (lp->options & PCNET32_PORT_FD) { in pcnet32_open()
2165 lp->a->write_bcr(ioaddr, 9, bcr9); in pcnet32_open()
2169 if (lp->phymask & (1 << i)) { in pcnet32_open()
2181 lp->mii_if.phy_id = i; in pcnet32_open()
2183 if (lp->options & PCNET32_PORT_ASEL) { in pcnet32_open()
2184 mii_ethtool_gset(&lp->mii_if, &ecmd); in pcnet32_open()
2187 mii_ethtool_sset(&lp->mii_if, &ecmd); in pcnet32_open()
2190 lp->mii_if.phy_id = first_phy; in pcnet32_open()
2191 netif_info(lp, link, dev, "Using PHY number %d\n", first_phy); in pcnet32_open()
2195 if (lp->dxsuflo) { /* Disable transmit stop on underflow */ in pcnet32_open()
2196 val = lp->a->read_csr(ioaddr, CSR3); in pcnet32_open()
2198 lp->a->write_csr(ioaddr, CSR3, val); in pcnet32_open()
2202 lp->init_block->mode = in pcnet32_open()
2203 cpu_to_le16((lp->options & PCNET32_PORT_PORTSEL) << 7); in pcnet32_open()
2211 napi_enable(&lp->napi); in pcnet32_open()
2214 lp->a->write_csr(ioaddr, 1, (lp->init_dma_addr & 0xffff)); in pcnet32_open()
2215 lp->a->write_csr(ioaddr, 2, (lp->init_dma_addr >> 16)); in pcnet32_open()
2217 lp->a->write_csr(ioaddr, CSR4, 0x0915); /* auto tx pad */ in pcnet32_open()
2218 lp->a->write_csr(ioaddr, CSR0, CSR0_INIT); in pcnet32_open()
2222 if (lp->chip_version >= PCNET32_79C970A) { in pcnet32_open()
2225 mod_timer(&lp->watchdog_timer, PCNET32_WATCHDOG_TIMEOUT); in pcnet32_open()
2230 if (lp->a->read_csr(ioaddr, CSR0) & CSR0_IDON) in pcnet32_open()
2236 lp->a->write_csr(ioaddr, CSR0, CSR0_NORMAL); in pcnet32_open()
2238 netif_printk(lp, ifup, KERN_DEBUG, dev, in pcnet32_open()
2241 (u32) (lp->init_dma_addr), in pcnet32_open()
2242 lp->a->read_csr(ioaddr, CSR0)); in pcnet32_open()
2244 spin_unlock_irqrestore(&lp->lock, flags); in pcnet32_open()
2256 lp->a->write_bcr(ioaddr, 20, 4); in pcnet32_open()
2259 spin_unlock_irqrestore(&lp->lock, flags); in pcnet32_open()
2279 struct pcnet32_private *lp = netdev_priv(dev); in pcnet32_purge_tx_ring() local
2282 for (i = 0; i < lp->tx_ring_size; i++) { in pcnet32_purge_tx_ring()
2283 lp->tx_ring[i].status = 0; /* CPU owns buffer */ in pcnet32_purge_tx_ring()
2285 if (lp->tx_skbuff[i]) { in pcnet32_purge_tx_ring()
2286 if (!pci_dma_mapping_error(lp->pci_dev, in pcnet32_purge_tx_ring()
2287 lp->tx_dma_addr[i])) in pcnet32_purge_tx_ring()
2288 pci_unmap_single(lp->pci_dev, in pcnet32_purge_tx_ring()
2289 lp->tx_dma_addr[i], in pcnet32_purge_tx_ring()
2290 lp->tx_skbuff[i]->len, in pcnet32_purge_tx_ring()
2292 dev_kfree_skb_any(lp->tx_skbuff[i]); in pcnet32_purge_tx_ring()
2294 lp->tx_skbuff[i] = NULL; in pcnet32_purge_tx_ring()
2295 lp->tx_dma_addr[i] = 0; in pcnet32_purge_tx_ring()
2302 struct pcnet32_private *lp = netdev_priv(dev); in pcnet32_init_ring() local
2305 lp->tx_full = 0; in pcnet32_init_ring()
2306 lp->cur_rx = lp->cur_tx = 0; in pcnet32_init_ring()
2307 lp->dirty_rx = lp->dirty_tx = 0; in pcnet32_init_ring()
2309 for (i = 0; i < lp->rx_ring_size; i++) { in pcnet32_init_ring()
2310 struct sk_buff *rx_skbuff = lp->rx_skbuff[i]; in pcnet32_init_ring()
2312 lp->rx_skbuff[i] = netdev_alloc_skb(dev, PKT_BUF_SKB); in pcnet32_init_ring()
2313 rx_skbuff = lp->rx_skbuff[i]; in pcnet32_init_ring()
2316 netif_err(lp, drv, dev, "%s netdev_alloc_skb failed\n", in pcnet32_init_ring()
2324 if (lp->rx_dma_addr[i] == 0) { in pcnet32_init_ring()
2325 lp->rx_dma_addr[i] = in pcnet32_init_ring()
2326 pci_map_single(lp->pci_dev, rx_skbuff->data, in pcnet32_init_ring()
2328 if (pci_dma_mapping_error(lp->pci_dev, in pcnet32_init_ring()
2329 lp->rx_dma_addr[i])) { in pcnet32_init_ring()
2331 netif_err(lp, drv, dev, in pcnet32_init_ring()
2337 lp->rx_ring[i].base = cpu_to_le32(lp->rx_dma_addr[i]); in pcnet32_init_ring()
2338 lp->rx_ring[i].buf_length = cpu_to_le16(NEG_BUF_SIZE); in pcnet32_init_ring()
2340 lp->rx_ring[i].status = cpu_to_le16(0x8000); in pcnet32_init_ring()
2344 for (i = 0; i < lp->tx_ring_size; i++) { in pcnet32_init_ring()
2345 lp->tx_ring[i].status = 0; /* CPU owns buffer */ in pcnet32_init_ring()
2347 lp->tx_ring[i].base = 0; in pcnet32_init_ring()
2348 lp->tx_dma_addr[i] = 0; in pcnet32_init_ring()
2351 lp->init_block->tlen_rlen = in pcnet32_init_ring()
2352 cpu_to_le16(lp->tx_len_bits | lp->rx_len_bits); in pcnet32_init_ring()
2354 lp->init_block->phys_addr[i] = dev->dev_addr[i]; in pcnet32_init_ring()
2355 lp->init_block->rx_ring = cpu_to_le32(lp->rx_ring_dma_addr); in pcnet32_init_ring()
2356 lp->init_block->tx_ring = cpu_to_le32(lp->tx_ring_dma_addr); in pcnet32_init_ring()
2367 struct pcnet32_private *lp = netdev_priv(dev); in pcnet32_restart() local
2373 if (lp->a->read_csr(ioaddr, CSR0) & CSR0_STOP) in pcnet32_restart()
2377 netif_err(lp, drv, dev, "%s timed out waiting for stop\n", in pcnet32_restart()
2385 lp->a->write_csr(ioaddr, CSR0, CSR0_INIT); in pcnet32_restart()
2388 if (lp->a->read_csr(ioaddr, CSR0) & CSR0_IDON) in pcnet32_restart()
2391 lp->a->write_csr(ioaddr, CSR0, csr0_bits); in pcnet32_restart()
2396 struct pcnet32_private *lp = netdev_priv(dev); in pcnet32_tx_timeout() local
2399 spin_lock_irqsave(&lp->lock, flags); in pcnet32_tx_timeout()
2403 dev->name, lp->a->read_csr(ioaddr, CSR0)); in pcnet32_tx_timeout()
2404 lp->a->write_csr(ioaddr, CSR0, CSR0_STOP); in pcnet32_tx_timeout()
2406 if (netif_msg_tx_err(lp)) { in pcnet32_tx_timeout()
2410 lp->dirty_tx, lp->cur_tx, lp->tx_full ? " (full)" : "", in pcnet32_tx_timeout()
2411 lp->cur_rx); in pcnet32_tx_timeout()
2412 for (i = 0; i < lp->rx_ring_size; i++) in pcnet32_tx_timeout()
2414 le32_to_cpu(lp->rx_ring[i].base), in pcnet32_tx_timeout()
2415 (-le16_to_cpu(lp->rx_ring[i].buf_length)) & in pcnet32_tx_timeout()
2416 0xffff, le32_to_cpu(lp->rx_ring[i].msg_length), in pcnet32_tx_timeout()
2417 le16_to_cpu(lp->rx_ring[i].status)); in pcnet32_tx_timeout()
2418 for (i = 0; i < lp->tx_ring_size; i++) in pcnet32_tx_timeout()
2420 le32_to_cpu(lp->tx_ring[i].base), in pcnet32_tx_timeout()
2421 (-le16_to_cpu(lp->tx_ring[i].length)) & 0xffff, in pcnet32_tx_timeout()
2422 le32_to_cpu(lp->tx_ring[i].misc), in pcnet32_tx_timeout()
2423 le16_to_cpu(lp->tx_ring[i].status)); in pcnet32_tx_timeout()
2431 spin_unlock_irqrestore(&lp->lock, flags); in pcnet32_tx_timeout()
2437 struct pcnet32_private *lp = netdev_priv(dev); in pcnet32_start_xmit() local
2443 spin_lock_irqsave(&lp->lock, flags); in pcnet32_start_xmit()
2445 netif_printk(lp, tx_queued, KERN_DEBUG, dev, in pcnet32_start_xmit()
2447 __func__, lp->a->read_csr(ioaddr, CSR0)); in pcnet32_start_xmit()
2457 entry = lp->cur_tx & lp->tx_mod_mask; in pcnet32_start_xmit()
2462 lp->tx_ring[entry].length = cpu_to_le16(-skb->len); in pcnet32_start_xmit()
2464 lp->tx_ring[entry].misc = 0x00000000; in pcnet32_start_xmit()
2466 lp->tx_dma_addr[entry] = in pcnet32_start_xmit()
2467 pci_map_single(lp->pci_dev, skb->data, skb->len, PCI_DMA_TODEVICE); in pcnet32_start_xmit()
2468 if (pci_dma_mapping_error(lp->pci_dev, lp->tx_dma_addr[entry])) { in pcnet32_start_xmit()
2473 lp->tx_skbuff[entry] = skb; in pcnet32_start_xmit()
2474 lp->tx_ring[entry].base = cpu_to_le32(lp->tx_dma_addr[entry]); in pcnet32_start_xmit()
2476 lp->tx_ring[entry].status = cpu_to_le16(status); in pcnet32_start_xmit()
2478 lp->cur_tx++; in pcnet32_start_xmit()
2482 lp->a->write_csr(ioaddr, CSR0, CSR0_INTEN | CSR0_TXPOLL); in pcnet32_start_xmit()
2484 if (lp->tx_ring[(entry + 1) & lp->tx_mod_mask].base != 0) { in pcnet32_start_xmit()
2485 lp->tx_full = 1; in pcnet32_start_xmit()
2489 spin_unlock_irqrestore(&lp->lock, flags); in pcnet32_start_xmit()
2498 struct pcnet32_private *lp; in pcnet32_interrupt() local
2504 lp = netdev_priv(dev); in pcnet32_interrupt()
2506 spin_lock(&lp->lock); in pcnet32_interrupt()
2508 csr0 = lp->a->read_csr(ioaddr, CSR0); in pcnet32_interrupt()
2513 lp->a->write_csr(ioaddr, CSR0, csr0 & ~0x004f); in pcnet32_interrupt()
2515 netif_printk(lp, intr, KERN_DEBUG, dev, in pcnet32_interrupt()
2517 csr0, lp->a->read_csr(ioaddr, CSR0)); in pcnet32_interrupt()
2537 netif_err(lp, drv, dev, "Bus master arbitration failure, status %4.4x\n", in pcnet32_interrupt()
2541 if (napi_schedule_prep(&lp->napi)) { in pcnet32_interrupt()
2544 val = lp->a->read_csr(ioaddr, CSR3); in pcnet32_interrupt()
2546 lp->a->write_csr(ioaddr, CSR3, val); in pcnet32_interrupt()
2548 __napi_schedule(&lp->napi); in pcnet32_interrupt()
2551 csr0 = lp->a->read_csr(ioaddr, CSR0); in pcnet32_interrupt()
2554 netif_printk(lp, intr, KERN_DEBUG, dev, in pcnet32_interrupt()
2556 lp->a->read_csr(ioaddr, CSR0)); in pcnet32_interrupt()
2558 spin_unlock(&lp->lock); in pcnet32_interrupt()
2566 struct pcnet32_private *lp = netdev_priv(dev); in pcnet32_close() local
2569 del_timer_sync(&lp->watchdog_timer); in pcnet32_close()
2572 napi_disable(&lp->napi); in pcnet32_close()
2574 spin_lock_irqsave(&lp->lock, flags); in pcnet32_close()
2576 dev->stats.rx_missed_errors = lp->a->read_csr(ioaddr, 112); in pcnet32_close()
2578 netif_printk(lp, ifdown, KERN_DEBUG, dev, in pcnet32_close()
2580 lp->a->read_csr(ioaddr, CSR0)); in pcnet32_close()
2583 lp->a->write_csr(ioaddr, CSR0, CSR0_STOP); in pcnet32_close()
2589 lp->a->write_bcr(ioaddr, 20, 4); in pcnet32_close()
2591 spin_unlock_irqrestore(&lp->lock, flags); in pcnet32_close()
2595 spin_lock_irqsave(&lp->lock, flags); in pcnet32_close()
2600 spin_unlock_irqrestore(&lp->lock, flags); in pcnet32_close()
2607 struct pcnet32_private *lp = netdev_priv(dev); in pcnet32_get_stats() local
2611 spin_lock_irqsave(&lp->lock, flags); in pcnet32_get_stats()
2612 dev->stats.rx_missed_errors = lp->a->read_csr(ioaddr, 112); in pcnet32_get_stats()
2613 spin_unlock_irqrestore(&lp->lock, flags); in pcnet32_get_stats()
2621 struct pcnet32_private *lp = netdev_priv(dev); in pcnet32_load_multicast() local
2622 volatile struct pcnet32_init_block *ib = lp->init_block; in pcnet32_load_multicast()
2633 lp->a->write_csr(ioaddr, PCNET32_MC_FILTER, 0xffff); in pcnet32_load_multicast()
2634 lp->a->write_csr(ioaddr, PCNET32_MC_FILTER+1, 0xffff); in pcnet32_load_multicast()
2635 lp->a->write_csr(ioaddr, PCNET32_MC_FILTER+2, 0xffff); in pcnet32_load_multicast()
2636 lp->a->write_csr(ioaddr, PCNET32_MC_FILTER+3, 0xffff); in pcnet32_load_multicast()
2650 lp->a->write_csr(ioaddr, PCNET32_MC_FILTER + i, in pcnet32_load_multicast()
2660 struct pcnet32_private *lp = netdev_priv(dev); in pcnet32_set_multicast_list() local
2663 spin_lock_irqsave(&lp->lock, flags); in pcnet32_set_multicast_list()
2665 csr15 = lp->a->read_csr(ioaddr, CSR15); in pcnet32_set_multicast_list()
2668 netif_info(lp, hw, dev, "Promiscuous mode enabled\n"); in pcnet32_set_multicast_list()
2669 lp->init_block->mode = in pcnet32_set_multicast_list()
2670 cpu_to_le16(0x8000 | (lp->options & PCNET32_PORT_PORTSEL) << in pcnet32_set_multicast_list()
2672 lp->a->write_csr(ioaddr, CSR15, csr15 | 0x8000); in pcnet32_set_multicast_list()
2674 lp->init_block->mode = in pcnet32_set_multicast_list()
2675 cpu_to_le16((lp->options & PCNET32_PORT_PORTSEL) << 7); in pcnet32_set_multicast_list()
2676 lp->a->write_csr(ioaddr, CSR15, csr15 & 0x7fff); in pcnet32_set_multicast_list()
2683 csr5 = lp->a->read_csr(ioaddr, CSR5); in pcnet32_set_multicast_list()
2684 lp->a->write_csr(ioaddr, CSR5, csr5 & (~CSR5_SUSPEND)); in pcnet32_set_multicast_list()
2686 lp->a->write_csr(ioaddr, CSR0, CSR0_STOP); in pcnet32_set_multicast_list()
2691 spin_unlock_irqrestore(&lp->lock, flags); in pcnet32_set_multicast_list()
2697 struct pcnet32_private *lp = netdev_priv(dev); in mdio_read() local
2701 if (!lp->mii) in mdio_read()
2704 lp->a->write_bcr(ioaddr, 33, ((phy_id & 0x1f) << 5) | (reg_num & 0x1f)); in mdio_read()
2705 val_out = lp->a->read_bcr(ioaddr, 34); in mdio_read()
2713 struct pcnet32_private *lp = netdev_priv(dev); in mdio_write() local
2716 if (!lp->mii) in mdio_write()
2719 lp->a->write_bcr(ioaddr, 33, ((phy_id & 0x1f) << 5) | (reg_num & 0x1f)); in mdio_write()
2720 lp->a->write_bcr(ioaddr, 34, val); in mdio_write()
2725 struct pcnet32_private *lp = netdev_priv(dev); in pcnet32_ioctl() local
2730 if (lp->mii) { in pcnet32_ioctl()
2731 spin_lock_irqsave(&lp->lock, flags); in pcnet32_ioctl()
2732 rc = generic_mii_ioctl(&lp->mii_if, if_mii(rq), cmd, NULL); in pcnet32_ioctl()
2733 spin_unlock_irqrestore(&lp->lock, flags); in pcnet32_ioctl()
2743 struct pcnet32_private *lp = netdev_priv(dev); in pcnet32_check_otherphy() local
2744 struct mii_if_info mii = lp->mii_if; in pcnet32_check_otherphy()
2749 if (i == lp->mii_if.phy_id) in pcnet32_check_otherphy()
2751 if (lp->phymask & (1 << i)) { in pcnet32_check_otherphy()
2755 netif_info(lp, link, dev, "Using PHY number %d\n", in pcnet32_check_otherphy()
2760 mdio_read(dev, lp->mii_if.phy_id, MII_BMCR); in pcnet32_check_otherphy()
2761 mdio_write(dev, lp->mii_if.phy_id, MII_BMCR, in pcnet32_check_otherphy()
2770 lp->mii_if.phy_id = i; in pcnet32_check_otherphy()
2788 struct pcnet32_private *lp = netdev_priv(dev); in pcnet32_check_media() local
2793 if (lp->mii) { in pcnet32_check_media()
2794 curr_link = mii_link_ok(&lp->mii_if); in pcnet32_check_media()
2797 curr_link = (lp->a->read_bcr(ioaddr, 4) != 0xc0); in pcnet32_check_media()
2802 netif_info(lp, link, dev, "link down\n"); in pcnet32_check_media()
2804 if (lp->phycount > 1) { in pcnet32_check_media()
2810 if (lp->mii) { in pcnet32_check_media()
2811 if (netif_msg_link(lp)) { in pcnet32_check_media()
2814 mii_ethtool_gset(&lp->mii_if, &ecmd); in pcnet32_check_media()
2820 bcr9 = lp->a->read_bcr(dev->base_addr, 9); in pcnet32_check_media()
2821 if ((bcr9 & (1 << 0)) != lp->mii_if.full_duplex) { in pcnet32_check_media()
2822 if (lp->mii_if.full_duplex) in pcnet32_check_media()
2826 lp->a->write_bcr(dev->base_addr, 9, bcr9); in pcnet32_check_media()
2829 netif_info(lp, link, dev, "link up\n"); in pcnet32_check_media()
2841 struct pcnet32_private *lp = netdev_priv(dev); in pcnet32_watchdog() local
2845 spin_lock_irqsave(&lp->lock, flags); in pcnet32_watchdog()
2847 spin_unlock_irqrestore(&lp->lock, flags); in pcnet32_watchdog()
2849 mod_timer(&lp->watchdog_timer, round_jiffies(PCNET32_WATCHDOG_TIMEOUT)); in pcnet32_watchdog()
2884 struct pcnet32_private *lp = netdev_priv(dev); in pcnet32_remove_one() local
2889 pci_free_consistent(lp->pci_dev, sizeof(*lp->init_block), in pcnet32_remove_one()
2890 lp->init_block, lp->init_dma_addr); in pcnet32_remove_one()
2966 struct pcnet32_private *lp = netdev_priv(pcnet32_dev); in pcnet32_cleanup_module() local
2967 next_dev = lp->next; in pcnet32_cleanup_module()
2971 pci_free_consistent(lp->pci_dev, sizeof(*lp->init_block), in pcnet32_cleanup_module()
2972 lp->init_block, lp->init_dma_addr); in pcnet32_cleanup_module()