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()
1545 struct pcnet32_private *lp; in pcnet32_probe1() local
1695 dev = alloc_etherdev(sizeof(*lp)); in pcnet32_probe1()
1783 lp = netdev_priv(dev); in pcnet32_probe1()
1785 lp->init_block = pci_alloc_consistent(pdev, sizeof(*lp->init_block), in pcnet32_probe1()
1786 &lp->init_dma_addr); in pcnet32_probe1()
1787 if (!lp->init_block) { in pcnet32_probe1()
1793 lp->pci_dev = pdev; in pcnet32_probe1()
1795 lp->dev = dev; in pcnet32_probe1()
1797 spin_lock_init(&lp->lock); in pcnet32_probe1()
1799 lp->name = chipname; in pcnet32_probe1()
1800 lp->shared_irq = shared; in pcnet32_probe1()
1801 lp->tx_ring_size = TX_RING_SIZE; /* default tx ring size */ in pcnet32_probe1()
1802 lp->rx_ring_size = RX_RING_SIZE; /* default rx ring size */ in pcnet32_probe1()
1803 lp->tx_mod_mask = lp->tx_ring_size - 1; in pcnet32_probe1()
1804 lp->rx_mod_mask = lp->rx_ring_size - 1; in pcnet32_probe1()
1805 lp->tx_len_bits = (PCNET32_LOG_TX_BUFFERS << 12); in pcnet32_probe1()
1806 lp->rx_len_bits = (PCNET32_LOG_RX_BUFFERS << 4); in pcnet32_probe1()
1807 lp->mii_if.full_duplex = fdx; in pcnet32_probe1()
1808 lp->mii_if.phy_id_mask = 0x1f; in pcnet32_probe1()
1809 lp->mii_if.reg_num_mask = 0x1f; in pcnet32_probe1()
1810 lp->dxsuflo = dxsuflo; in pcnet32_probe1()
1811 lp->mii = mii; in pcnet32_probe1()
1812 lp->chip_version = chip_version; in pcnet32_probe1()
1813 lp->msg_enable = pcnet32_debug; in pcnet32_probe1()
1816 lp->options = PCNET32_PORT_ASEL; in pcnet32_probe1()
1818 lp->options = options_mapping[options[cards_found]]; in pcnet32_probe1()
1819 lp->mii_if.dev = dev; in pcnet32_probe1()
1820 lp->mii_if.mdio_read = mdio_read; in pcnet32_probe1()
1821 lp->mii_if.mdio_write = mdio_write; in pcnet32_probe1()
1824 lp->napi.weight = lp->rx_ring_size / 2; in pcnet32_probe1()
1826 netif_napi_add(dev, &lp->napi, pcnet32_poll, lp->rx_ring_size / 2); in pcnet32_probe1()
1828 if (fdx && !(lp->options & PCNET32_PORT_ASEL) && in pcnet32_probe1()
1830 lp->options |= PCNET32_PORT_FD; in pcnet32_probe1()
1832 lp->a = a; in pcnet32_probe1()
1835 if (pcnet32_alloc_ring(dev, pci_name(lp->pci_dev))) { in pcnet32_probe1()
1842 lp->options = PCNET32_PORT_FD | PCNET32_PORT_GPSI; in pcnet32_probe1()
1844 lp->init_block->mode = cpu_to_le16(0x0003); /* Disable Rx and Tx. */ in pcnet32_probe1()
1845 lp->init_block->tlen_rlen = in pcnet32_probe1()
1846 cpu_to_le16(lp->tx_len_bits | lp->rx_len_bits); in pcnet32_probe1()
1848 lp->init_block->phys_addr[i] = dev->dev_addr[i]; in pcnet32_probe1()
1849 lp->init_block->filter[0] = 0x00000000; in pcnet32_probe1()
1850 lp->init_block->filter[1] = 0x00000000; in pcnet32_probe1()
1851 lp->init_block->rx_ring = cpu_to_le32(lp->rx_ring_dma_addr); in pcnet32_probe1()
1852 lp->init_block->tx_ring = cpu_to_le32(lp->tx_ring_dma_addr); in pcnet32_probe1()
1857 a->write_csr(ioaddr, 1, (lp->init_dma_addr & 0xffff)); in pcnet32_probe1()
1858 a->write_csr(ioaddr, 2, (lp->init_dma_addr >> 16)); in pcnet32_probe1()
1888 if (lp->mii) { in pcnet32_probe1()
1891 lp->mii_if.phy_id = ((lp->a->read_bcr(ioaddr, 33)) >> 5) & 0x1f; in pcnet32_probe1()
1904 lp->phycount++; in pcnet32_probe1()
1905 lp->phymask |= (1 << i); in pcnet32_probe1()
1906 lp->mii_if.phy_id = i; in pcnet32_probe1()
1911 lp->a->write_bcr(ioaddr, 33, (lp->mii_if.phy_id) << 5); in pcnet32_probe1()
1912 if (lp->phycount > 1) in pcnet32_probe1()
1913 lp->options |= PCNET32_PORT_MII; in pcnet32_probe1()
1916 init_timer(&lp->watchdog_timer); in pcnet32_probe1()
1917 lp->watchdog_timer.data = (unsigned long)dev; in pcnet32_probe1()
1918 lp->watchdog_timer.function = (void *)&pcnet32_watchdog; in pcnet32_probe1()
1932 lp->next = pcnet32_dev; in pcnet32_probe1()
1937 pr_info("%s: registered as %s\n", dev->name, lp->name); in pcnet32_probe1()
1947 pci_free_consistent(lp->pci_dev, sizeof(*lp->init_block), in pcnet32_probe1()
1948 lp->init_block, lp->init_dma_addr); in pcnet32_probe1()
1959 struct pcnet32_private *lp = netdev_priv(dev); in pcnet32_alloc_ring() local
1961 lp->tx_ring = pci_alloc_consistent(lp->pci_dev, in pcnet32_alloc_ring()
1963 lp->tx_ring_size, in pcnet32_alloc_ring()
1964 &lp->tx_ring_dma_addr); in pcnet32_alloc_ring()
1965 if (lp->tx_ring == NULL) { in pcnet32_alloc_ring()
1966 netif_err(lp, drv, dev, "Consistent memory allocation failed\n"); in pcnet32_alloc_ring()
1970 lp->rx_ring = pci_alloc_consistent(lp->pci_dev, in pcnet32_alloc_ring()
1972 lp->rx_ring_size, in pcnet32_alloc_ring()
1973 &lp->rx_ring_dma_addr); in pcnet32_alloc_ring()
1974 if (lp->rx_ring == NULL) { in pcnet32_alloc_ring()
1975 netif_err(lp, drv, dev, "Consistent memory allocation failed\n"); in pcnet32_alloc_ring()
1979 lp->tx_dma_addr = kcalloc(lp->tx_ring_size, sizeof(dma_addr_t), in pcnet32_alloc_ring()
1981 if (!lp->tx_dma_addr) in pcnet32_alloc_ring()
1984 lp->rx_dma_addr = kcalloc(lp->rx_ring_size, sizeof(dma_addr_t), in pcnet32_alloc_ring()
1986 if (!lp->rx_dma_addr) in pcnet32_alloc_ring()
1989 lp->tx_skbuff = kcalloc(lp->tx_ring_size, sizeof(struct sk_buff *), in pcnet32_alloc_ring()
1991 if (!lp->tx_skbuff) in pcnet32_alloc_ring()
1994 lp->rx_skbuff = kcalloc(lp->rx_ring_size, sizeof(struct sk_buff *), in pcnet32_alloc_ring()
1996 if (!lp->rx_skbuff) in pcnet32_alloc_ring()
2004 struct pcnet32_private *lp = netdev_priv(dev); in pcnet32_free_ring() local
2006 kfree(lp->tx_skbuff); in pcnet32_free_ring()
2007 lp->tx_skbuff = NULL; in pcnet32_free_ring()
2009 kfree(lp->rx_skbuff); in pcnet32_free_ring()
2010 lp->rx_skbuff = NULL; in pcnet32_free_ring()
2012 kfree(lp->tx_dma_addr); in pcnet32_free_ring()
2013 lp->tx_dma_addr = NULL; in pcnet32_free_ring()
2015 kfree(lp->rx_dma_addr); in pcnet32_free_ring()
2016 lp->rx_dma_addr = NULL; in pcnet32_free_ring()
2018 if (lp->tx_ring) { in pcnet32_free_ring()
2019 pci_free_consistent(lp->pci_dev, in pcnet32_free_ring()
2021 lp->tx_ring_size, lp->tx_ring, in pcnet32_free_ring()
2022 lp->tx_ring_dma_addr); in pcnet32_free_ring()
2023 lp->tx_ring = NULL; in pcnet32_free_ring()
2026 if (lp->rx_ring) { in pcnet32_free_ring()
2027 pci_free_consistent(lp->pci_dev, in pcnet32_free_ring()
2029 lp->rx_ring_size, lp->rx_ring, in pcnet32_free_ring()
2030 lp->rx_ring_dma_addr); in pcnet32_free_ring()
2031 lp->rx_ring = NULL; in pcnet32_free_ring()
2037 struct pcnet32_private *lp = netdev_priv(dev); in pcnet32_open() local
2038 struct pci_dev *pdev = lp->pci_dev; in pcnet32_open()
2046 lp->shared_irq ? IRQF_SHARED : 0, dev->name, in pcnet32_open()
2051 spin_lock_irqsave(&lp->lock, flags); in pcnet32_open()
2059 lp->a->reset(ioaddr); in pcnet32_open()
2062 lp->a->write_bcr(ioaddr, 20, 2); in pcnet32_open()
2064 netif_printk(lp, ifup, KERN_DEBUG, dev, in pcnet32_open()
2066 __func__, dev->irq, (u32) (lp->tx_ring_dma_addr), in pcnet32_open()
2067 (u32) (lp->rx_ring_dma_addr), in pcnet32_open()
2068 (u32) (lp->init_dma_addr)); in pcnet32_open()
2071 val = lp->a->read_bcr(ioaddr, 2) & ~2; in pcnet32_open()
2072 if (lp->options & PCNET32_PORT_ASEL) in pcnet32_open()
2074 lp->a->write_bcr(ioaddr, 2, val); in pcnet32_open()
2077 if (lp->mii_if.full_duplex) { in pcnet32_open()
2078 val = lp->a->read_bcr(ioaddr, 9) & ~3; in pcnet32_open()
2079 if (lp->options & PCNET32_PORT_FD) { in pcnet32_open()
2081 if (lp->options == (PCNET32_PORT_FD | PCNET32_PORT_AUI)) in pcnet32_open()
2083 } else if (lp->options & PCNET32_PORT_ASEL) { in pcnet32_open()
2085 if (lp->chip_version == 0x2627) in pcnet32_open()
2088 lp->a->write_bcr(ioaddr, 9, val); in pcnet32_open()
2092 val = lp->a->read_csr(ioaddr, 124) & ~0x10; in pcnet32_open()
2093 if ((lp->options & PCNET32_PORT_PORTSEL) == PCNET32_PORT_GPSI) in pcnet32_open()
2095 lp->a->write_csr(ioaddr, 124, val); in pcnet32_open()
2101 if (lp->options & PCNET32_PORT_ASEL) { in pcnet32_open()
2102 lp->options = PCNET32_PORT_FD | PCNET32_PORT_100; in pcnet32_open()
2103 netif_printk(lp, link, KERN_DEBUG, dev, in pcnet32_open()
2107 if (lp->phycount < 2) { in pcnet32_open()
2113 if (lp->mii && !(lp->options & PCNET32_PORT_ASEL)) { in pcnet32_open()
2114 lp->a->write_bcr(ioaddr, 32, in pcnet32_open()
2115 lp->a->read_bcr(ioaddr, 32) | 0x0080); in pcnet32_open()
2117 val = lp->a->read_bcr(ioaddr, 32) & ~0xb8; in pcnet32_open()
2118 if (lp->options & PCNET32_PORT_FD) in pcnet32_open()
2120 if (lp->options & PCNET32_PORT_100) in pcnet32_open()
2122 lp->a->write_bcr(ioaddr, 32, val); in pcnet32_open()
2124 if (lp->options & PCNET32_PORT_ASEL) { in pcnet32_open()
2125 lp->a->write_bcr(ioaddr, 32, in pcnet32_open()
2126 lp->a->read_bcr(ioaddr, in pcnet32_open()
2129 val = lp->a->read_bcr(ioaddr, 32) & ~0x98; in pcnet32_open()
2131 lp->a->write_bcr(ioaddr, 32, val); in pcnet32_open()
2144 val = lp->a->read_bcr(ioaddr, 2); in pcnet32_open()
2145 lp->a->write_bcr(ioaddr, 2, val & ~2); in pcnet32_open()
2146 val = lp->a->read_bcr(ioaddr, 32); in pcnet32_open()
2147 lp->a->write_bcr(ioaddr, 32, val & ~(1 << 7)); /* stop MII manager */ in pcnet32_open()
2149 if (!(lp->options & PCNET32_PORT_ASEL)) { in pcnet32_open()
2155 (lp->options & PCNET32_PORT_100) ? in pcnet32_open()
2157 bcr9 = lp->a->read_bcr(ioaddr, 9); in pcnet32_open()
2159 if (lp->options & PCNET32_PORT_FD) { in pcnet32_open()
2166 lp->a->write_bcr(ioaddr, 9, bcr9); in pcnet32_open()
2170 if (lp->phymask & (1 << i)) { in pcnet32_open()
2182 lp->mii_if.phy_id = i; in pcnet32_open()
2184 if (lp->options & PCNET32_PORT_ASEL) { in pcnet32_open()
2185 mii_ethtool_gset(&lp->mii_if, &ecmd); in pcnet32_open()
2188 mii_ethtool_sset(&lp->mii_if, &ecmd); in pcnet32_open()
2191 lp->mii_if.phy_id = first_phy; in pcnet32_open()
2192 netif_info(lp, link, dev, "Using PHY number %d\n", first_phy); in pcnet32_open()
2196 if (lp->dxsuflo) { /* Disable transmit stop on underflow */ in pcnet32_open()
2197 val = lp->a->read_csr(ioaddr, CSR3); in pcnet32_open()
2199 lp->a->write_csr(ioaddr, CSR3, val); in pcnet32_open()
2203 lp->init_block->mode = in pcnet32_open()
2204 cpu_to_le16((lp->options & PCNET32_PORT_PORTSEL) << 7); in pcnet32_open()
2212 napi_enable(&lp->napi); in pcnet32_open()
2215 lp->a->write_csr(ioaddr, 1, (lp->init_dma_addr & 0xffff)); in pcnet32_open()
2216 lp->a->write_csr(ioaddr, 2, (lp->init_dma_addr >> 16)); in pcnet32_open()
2218 lp->a->write_csr(ioaddr, CSR4, 0x0915); /* auto tx pad */ in pcnet32_open()
2219 lp->a->write_csr(ioaddr, CSR0, CSR0_INIT); in pcnet32_open()
2223 if (lp->chip_version >= PCNET32_79C970A) { in pcnet32_open()
2226 mod_timer(&lp->watchdog_timer, PCNET32_WATCHDOG_TIMEOUT); in pcnet32_open()
2231 if (lp->a->read_csr(ioaddr, CSR0) & CSR0_IDON) in pcnet32_open()
2237 lp->a->write_csr(ioaddr, CSR0, CSR0_NORMAL); in pcnet32_open()
2239 netif_printk(lp, ifup, KERN_DEBUG, dev, in pcnet32_open()
2242 (u32) (lp->init_dma_addr), in pcnet32_open()
2243 lp->a->read_csr(ioaddr, CSR0)); in pcnet32_open()
2245 spin_unlock_irqrestore(&lp->lock, flags); in pcnet32_open()
2257 lp->a->write_bcr(ioaddr, 20, 4); in pcnet32_open()
2260 spin_unlock_irqrestore(&lp->lock, flags); in pcnet32_open()
2280 struct pcnet32_private *lp = netdev_priv(dev); in pcnet32_purge_tx_ring() local
2283 for (i = 0; i < lp->tx_ring_size; i++) { in pcnet32_purge_tx_ring()
2284 lp->tx_ring[i].status = 0; /* CPU owns buffer */ in pcnet32_purge_tx_ring()
2286 if (lp->tx_skbuff[i]) { in pcnet32_purge_tx_ring()
2287 if (!pci_dma_mapping_error(lp->pci_dev, in pcnet32_purge_tx_ring()
2288 lp->tx_dma_addr[i])) in pcnet32_purge_tx_ring()
2289 pci_unmap_single(lp->pci_dev, in pcnet32_purge_tx_ring()
2290 lp->tx_dma_addr[i], in pcnet32_purge_tx_ring()
2291 lp->tx_skbuff[i]->len, in pcnet32_purge_tx_ring()
2293 dev_kfree_skb_any(lp->tx_skbuff[i]); in pcnet32_purge_tx_ring()
2295 lp->tx_skbuff[i] = NULL; in pcnet32_purge_tx_ring()
2296 lp->tx_dma_addr[i] = 0; in pcnet32_purge_tx_ring()
2303 struct pcnet32_private *lp = netdev_priv(dev); in pcnet32_init_ring() local
2306 lp->tx_full = 0; in pcnet32_init_ring()
2307 lp->cur_rx = lp->cur_tx = 0; in pcnet32_init_ring()
2308 lp->dirty_rx = lp->dirty_tx = 0; in pcnet32_init_ring()
2310 for (i = 0; i < lp->rx_ring_size; i++) { in pcnet32_init_ring()
2311 struct sk_buff *rx_skbuff = lp->rx_skbuff[i]; in pcnet32_init_ring()
2313 lp->rx_skbuff[i] = netdev_alloc_skb(dev, PKT_BUF_SKB); in pcnet32_init_ring()
2314 rx_skbuff = lp->rx_skbuff[i]; in pcnet32_init_ring()
2317 netif_err(lp, drv, dev, "%s netdev_alloc_skb failed\n", in pcnet32_init_ring()
2325 if (lp->rx_dma_addr[i] == 0) { in pcnet32_init_ring()
2326 lp->rx_dma_addr[i] = in pcnet32_init_ring()
2327 pci_map_single(lp->pci_dev, rx_skbuff->data, in pcnet32_init_ring()
2329 if (pci_dma_mapping_error(lp->pci_dev, in pcnet32_init_ring()
2330 lp->rx_dma_addr[i])) { in pcnet32_init_ring()
2332 netif_err(lp, drv, dev, in pcnet32_init_ring()
2338 lp->rx_ring[i].base = cpu_to_le32(lp->rx_dma_addr[i]); in pcnet32_init_ring()
2339 lp->rx_ring[i].buf_length = cpu_to_le16(NEG_BUF_SIZE); in pcnet32_init_ring()
2341 lp->rx_ring[i].status = cpu_to_le16(0x8000); in pcnet32_init_ring()
2345 for (i = 0; i < lp->tx_ring_size; i++) { in pcnet32_init_ring()
2346 lp->tx_ring[i].status = 0; /* CPU owns buffer */ in pcnet32_init_ring()
2348 lp->tx_ring[i].base = 0; in pcnet32_init_ring()
2349 lp->tx_dma_addr[i] = 0; in pcnet32_init_ring()
2352 lp->init_block->tlen_rlen = in pcnet32_init_ring()
2353 cpu_to_le16(lp->tx_len_bits | lp->rx_len_bits); in pcnet32_init_ring()
2355 lp->init_block->phys_addr[i] = dev->dev_addr[i]; in pcnet32_init_ring()
2356 lp->init_block->rx_ring = cpu_to_le32(lp->rx_ring_dma_addr); in pcnet32_init_ring()
2357 lp->init_block->tx_ring = cpu_to_le32(lp->tx_ring_dma_addr); in pcnet32_init_ring()
2368 struct pcnet32_private *lp = netdev_priv(dev); in pcnet32_restart() local
2374 if (lp->a->read_csr(ioaddr, CSR0) & CSR0_STOP) in pcnet32_restart()
2378 netif_err(lp, drv, dev, "%s timed out waiting for stop\n", in pcnet32_restart()
2386 lp->a->write_csr(ioaddr, CSR0, CSR0_INIT); in pcnet32_restart()
2389 if (lp->a->read_csr(ioaddr, CSR0) & CSR0_IDON) in pcnet32_restart()
2392 lp->a->write_csr(ioaddr, CSR0, csr0_bits); in pcnet32_restart()
2397 struct pcnet32_private *lp = netdev_priv(dev); in pcnet32_tx_timeout() local
2400 spin_lock_irqsave(&lp->lock, flags); in pcnet32_tx_timeout()
2404 dev->name, lp->a->read_csr(ioaddr, CSR0)); in pcnet32_tx_timeout()
2405 lp->a->write_csr(ioaddr, CSR0, CSR0_STOP); in pcnet32_tx_timeout()
2407 if (netif_msg_tx_err(lp)) { in pcnet32_tx_timeout()
2411 lp->dirty_tx, lp->cur_tx, lp->tx_full ? " (full)" : "", in pcnet32_tx_timeout()
2412 lp->cur_rx); in pcnet32_tx_timeout()
2413 for (i = 0; i < lp->rx_ring_size; i++) in pcnet32_tx_timeout()
2415 le32_to_cpu(lp->rx_ring[i].base), in pcnet32_tx_timeout()
2416 (-le16_to_cpu(lp->rx_ring[i].buf_length)) & in pcnet32_tx_timeout()
2417 0xffff, le32_to_cpu(lp->rx_ring[i].msg_length), in pcnet32_tx_timeout()
2418 le16_to_cpu(lp->rx_ring[i].status)); in pcnet32_tx_timeout()
2419 for (i = 0; i < lp->tx_ring_size; i++) in pcnet32_tx_timeout()
2421 le32_to_cpu(lp->tx_ring[i].base), in pcnet32_tx_timeout()
2422 (-le16_to_cpu(lp->tx_ring[i].length)) & 0xffff, in pcnet32_tx_timeout()
2423 le32_to_cpu(lp->tx_ring[i].misc), in pcnet32_tx_timeout()
2424 le16_to_cpu(lp->tx_ring[i].status)); in pcnet32_tx_timeout()
2432 spin_unlock_irqrestore(&lp->lock, flags); in pcnet32_tx_timeout()
2438 struct pcnet32_private *lp = netdev_priv(dev); in pcnet32_start_xmit() local
2444 spin_lock_irqsave(&lp->lock, flags); in pcnet32_start_xmit()
2446 netif_printk(lp, tx_queued, KERN_DEBUG, dev, in pcnet32_start_xmit()
2448 __func__, lp->a->read_csr(ioaddr, CSR0)); in pcnet32_start_xmit()
2458 entry = lp->cur_tx & lp->tx_mod_mask; in pcnet32_start_xmit()
2463 lp->tx_ring[entry].length = cpu_to_le16(-skb->len); in pcnet32_start_xmit()
2465 lp->tx_ring[entry].misc = 0x00000000; in pcnet32_start_xmit()
2467 lp->tx_dma_addr[entry] = in pcnet32_start_xmit()
2468 pci_map_single(lp->pci_dev, skb->data, skb->len, PCI_DMA_TODEVICE); in pcnet32_start_xmit()
2469 if (pci_dma_mapping_error(lp->pci_dev, lp->tx_dma_addr[entry])) { in pcnet32_start_xmit()
2474 lp->tx_skbuff[entry] = skb; in pcnet32_start_xmit()
2475 lp->tx_ring[entry].base = cpu_to_le32(lp->tx_dma_addr[entry]); in pcnet32_start_xmit()
2477 lp->tx_ring[entry].status = cpu_to_le16(status); in pcnet32_start_xmit()
2479 lp->cur_tx++; in pcnet32_start_xmit()
2483 lp->a->write_csr(ioaddr, CSR0, CSR0_INTEN | CSR0_TXPOLL); in pcnet32_start_xmit()
2485 if (lp->tx_ring[(entry + 1) & lp->tx_mod_mask].base != 0) { in pcnet32_start_xmit()
2486 lp->tx_full = 1; in pcnet32_start_xmit()
2490 spin_unlock_irqrestore(&lp->lock, flags); in pcnet32_start_xmit()
2499 struct pcnet32_private *lp; in pcnet32_interrupt() local
2505 lp = netdev_priv(dev); in pcnet32_interrupt()
2507 spin_lock(&lp->lock); in pcnet32_interrupt()
2509 csr0 = lp->a->read_csr(ioaddr, CSR0); in pcnet32_interrupt()
2514 lp->a->write_csr(ioaddr, CSR0, csr0 & ~0x004f); in pcnet32_interrupt()
2516 netif_printk(lp, intr, KERN_DEBUG, dev, in pcnet32_interrupt()
2518 csr0, lp->a->read_csr(ioaddr, CSR0)); in pcnet32_interrupt()
2538 netif_err(lp, drv, dev, "Bus master arbitration failure, status %4.4x\n", in pcnet32_interrupt()
2542 if (napi_schedule_prep(&lp->napi)) { in pcnet32_interrupt()
2545 val = lp->a->read_csr(ioaddr, CSR3); in pcnet32_interrupt()
2547 lp->a->write_csr(ioaddr, CSR3, val); in pcnet32_interrupt()
2549 __napi_schedule(&lp->napi); in pcnet32_interrupt()
2552 csr0 = lp->a->read_csr(ioaddr, CSR0); in pcnet32_interrupt()
2555 netif_printk(lp, intr, KERN_DEBUG, dev, in pcnet32_interrupt()
2557 lp->a->read_csr(ioaddr, CSR0)); in pcnet32_interrupt()
2559 spin_unlock(&lp->lock); in pcnet32_interrupt()
2567 struct pcnet32_private *lp = netdev_priv(dev); in pcnet32_close() local
2570 del_timer_sync(&lp->watchdog_timer); in pcnet32_close()
2573 napi_disable(&lp->napi); in pcnet32_close()
2575 spin_lock_irqsave(&lp->lock, flags); in pcnet32_close()
2577 dev->stats.rx_missed_errors = lp->a->read_csr(ioaddr, 112); in pcnet32_close()
2579 netif_printk(lp, ifdown, KERN_DEBUG, dev, in pcnet32_close()
2581 lp->a->read_csr(ioaddr, CSR0)); in pcnet32_close()
2584 lp->a->write_csr(ioaddr, CSR0, CSR0_STOP); in pcnet32_close()
2590 lp->a->write_bcr(ioaddr, 20, 4); in pcnet32_close()
2592 spin_unlock_irqrestore(&lp->lock, flags); in pcnet32_close()
2596 spin_lock_irqsave(&lp->lock, flags); in pcnet32_close()
2601 spin_unlock_irqrestore(&lp->lock, flags); in pcnet32_close()
2608 struct pcnet32_private *lp = netdev_priv(dev); in pcnet32_get_stats() local
2612 spin_lock_irqsave(&lp->lock, flags); in pcnet32_get_stats()
2613 dev->stats.rx_missed_errors = lp->a->read_csr(ioaddr, 112); in pcnet32_get_stats()
2614 spin_unlock_irqrestore(&lp->lock, flags); in pcnet32_get_stats()
2622 struct pcnet32_private *lp = netdev_priv(dev); in pcnet32_load_multicast() local
2623 volatile struct pcnet32_init_block *ib = lp->init_block; in pcnet32_load_multicast()
2634 lp->a->write_csr(ioaddr, PCNET32_MC_FILTER, 0xffff); in pcnet32_load_multicast()
2635 lp->a->write_csr(ioaddr, PCNET32_MC_FILTER+1, 0xffff); in pcnet32_load_multicast()
2636 lp->a->write_csr(ioaddr, PCNET32_MC_FILTER+2, 0xffff); in pcnet32_load_multicast()
2637 lp->a->write_csr(ioaddr, PCNET32_MC_FILTER+3, 0xffff); in pcnet32_load_multicast()
2651 lp->a->write_csr(ioaddr, PCNET32_MC_FILTER + i, in pcnet32_load_multicast()
2661 struct pcnet32_private *lp = netdev_priv(dev); in pcnet32_set_multicast_list() local
2664 spin_lock_irqsave(&lp->lock, flags); in pcnet32_set_multicast_list()
2666 csr15 = lp->a->read_csr(ioaddr, CSR15); in pcnet32_set_multicast_list()
2669 netif_info(lp, hw, dev, "Promiscuous mode enabled\n"); in pcnet32_set_multicast_list()
2670 lp->init_block->mode = in pcnet32_set_multicast_list()
2671 cpu_to_le16(0x8000 | (lp->options & PCNET32_PORT_PORTSEL) << in pcnet32_set_multicast_list()
2673 lp->a->write_csr(ioaddr, CSR15, csr15 | 0x8000); in pcnet32_set_multicast_list()
2675 lp->init_block->mode = in pcnet32_set_multicast_list()
2676 cpu_to_le16((lp->options & PCNET32_PORT_PORTSEL) << 7); in pcnet32_set_multicast_list()
2677 lp->a->write_csr(ioaddr, CSR15, csr15 & 0x7fff); in pcnet32_set_multicast_list()
2684 csr5 = lp->a->read_csr(ioaddr, CSR5); in pcnet32_set_multicast_list()
2685 lp->a->write_csr(ioaddr, CSR5, csr5 & (~CSR5_SUSPEND)); in pcnet32_set_multicast_list()
2687 lp->a->write_csr(ioaddr, CSR0, CSR0_STOP); in pcnet32_set_multicast_list()
2692 spin_unlock_irqrestore(&lp->lock, flags); in pcnet32_set_multicast_list()
2698 struct pcnet32_private *lp = netdev_priv(dev); in mdio_read() local
2702 if (!lp->mii) in mdio_read()
2705 lp->a->write_bcr(ioaddr, 33, ((phy_id & 0x1f) << 5) | (reg_num & 0x1f)); in mdio_read()
2706 val_out = lp->a->read_bcr(ioaddr, 34); in mdio_read()
2714 struct pcnet32_private *lp = netdev_priv(dev); in mdio_write() local
2717 if (!lp->mii) in mdio_write()
2720 lp->a->write_bcr(ioaddr, 33, ((phy_id & 0x1f) << 5) | (reg_num & 0x1f)); in mdio_write()
2721 lp->a->write_bcr(ioaddr, 34, val); in mdio_write()
2726 struct pcnet32_private *lp = netdev_priv(dev); in pcnet32_ioctl() local
2731 if (lp->mii) { in pcnet32_ioctl()
2732 spin_lock_irqsave(&lp->lock, flags); in pcnet32_ioctl()
2733 rc = generic_mii_ioctl(&lp->mii_if, if_mii(rq), cmd, NULL); in pcnet32_ioctl()
2734 spin_unlock_irqrestore(&lp->lock, flags); in pcnet32_ioctl()
2744 struct pcnet32_private *lp = netdev_priv(dev); in pcnet32_check_otherphy() local
2745 struct mii_if_info mii = lp->mii_if; in pcnet32_check_otherphy()
2750 if (i == lp->mii_if.phy_id) in pcnet32_check_otherphy()
2752 if (lp->phymask & (1 << i)) { in pcnet32_check_otherphy()
2756 netif_info(lp, link, dev, "Using PHY number %d\n", in pcnet32_check_otherphy()
2761 mdio_read(dev, lp->mii_if.phy_id, MII_BMCR); in pcnet32_check_otherphy()
2762 mdio_write(dev, lp->mii_if.phy_id, MII_BMCR, in pcnet32_check_otherphy()
2771 lp->mii_if.phy_id = i; in pcnet32_check_otherphy()
2789 struct pcnet32_private *lp = netdev_priv(dev); in pcnet32_check_media() local
2794 if (lp->mii) { in pcnet32_check_media()
2795 curr_link = mii_link_ok(&lp->mii_if); in pcnet32_check_media()
2798 curr_link = (lp->a->read_bcr(ioaddr, 4) != 0xc0); in pcnet32_check_media()
2803 netif_info(lp, link, dev, "link down\n"); in pcnet32_check_media()
2805 if (lp->phycount > 1) { in pcnet32_check_media()
2811 if (lp->mii) { in pcnet32_check_media()
2812 if (netif_msg_link(lp)) { in pcnet32_check_media()
2815 mii_ethtool_gset(&lp->mii_if, &ecmd); in pcnet32_check_media()
2821 bcr9 = lp->a->read_bcr(dev->base_addr, 9); in pcnet32_check_media()
2822 if ((bcr9 & (1 << 0)) != lp->mii_if.full_duplex) { in pcnet32_check_media()
2823 if (lp->mii_if.full_duplex) in pcnet32_check_media()
2827 lp->a->write_bcr(dev->base_addr, 9, bcr9); in pcnet32_check_media()
2830 netif_info(lp, link, dev, "link up\n"); in pcnet32_check_media()
2842 struct pcnet32_private *lp = netdev_priv(dev); in pcnet32_watchdog() local
2846 spin_lock_irqsave(&lp->lock, flags); in pcnet32_watchdog()
2848 spin_unlock_irqrestore(&lp->lock, flags); in pcnet32_watchdog()
2850 mod_timer(&lp->watchdog_timer, round_jiffies(PCNET32_WATCHDOG_TIMEOUT)); in pcnet32_watchdog()
2885 struct pcnet32_private *lp = netdev_priv(dev); in pcnet32_remove_one() local
2890 pci_free_consistent(lp->pci_dev, sizeof(*lp->init_block), in pcnet32_remove_one()
2891 lp->init_block, lp->init_dma_addr); in pcnet32_remove_one()
2967 struct pcnet32_private *lp = netdev_priv(pcnet32_dev); in pcnet32_cleanup_module() local
2968 next_dev = lp->next; in pcnet32_cleanup_module()
2972 pci_free_consistent(lp->pci_dev, sizeof(*lp->init_block), in pcnet32_cleanup_module()
2973 lp->init_block, lp->init_dma_addr); in pcnet32_cleanup_module()