Lines Matching refs:hmp
582 struct hamachi_private *hmp; in hamachi_init_one() local
639 hmp = netdev_priv(dev); in hamachi_init_one()
640 spin_lock_init(&hmp->lock); in hamachi_init_one()
642 hmp->mii_if.dev = dev; in hamachi_init_one()
643 hmp->mii_if.mdio_read = mdio_read; in hamachi_init_one()
644 hmp->mii_if.mdio_write = mdio_write; in hamachi_init_one()
645 hmp->mii_if.phy_id_mask = 0x1f; in hamachi_init_one()
646 hmp->mii_if.reg_num_mask = 0x1f; in hamachi_init_one()
651 hmp->tx_ring = ring_space; in hamachi_init_one()
652 hmp->tx_ring_dma = ring_dma; in hamachi_init_one()
657 hmp->rx_ring = ring_space; in hamachi_init_one()
658 hmp->rx_ring_dma = ring_dma; in hamachi_init_one()
685 hmp->base = ioaddr; in hamachi_init_one()
688 hmp->chip_id = chip_id; in hamachi_init_one()
689 hmp->pci_dev = pdev; in hamachi_init_one()
693 hmp->option = option; in hamachi_init_one()
695 hmp->mii_if.full_duplex = 1; in hamachi_init_one()
697 hmp->mii_if.full_duplex = 0; in hamachi_init_one()
698 hmp->default_port = option & 15; in hamachi_init_one()
699 if (hmp->default_port) in hamachi_init_one()
700 hmp->mii_if.force_media = 1; in hamachi_init_one()
703 hmp->mii_if.full_duplex = 1; in hamachi_init_one()
706 if (hmp->mii_if.full_duplex || (option & 0x080)) in hamachi_init_one()
707 hmp->duplex_lock = 1; in hamachi_init_one()
719 hmp->rx_int_var = rx_int_var >= 0 ? rx_int_var : in hamachi_init_one()
721 hmp->tx_int_var = tx_int_var >= 0 ? tx_int_var : in hamachi_init_one()
727 dev->ethtool_ops = (chip_tbl[hmp->chip_id].flags & CanHaveMII) ? in hamachi_init_one()
749 if (chip_tbl[hmp->chip_id].flags & CanHaveMII) { in hamachi_init_one()
755 hmp->phys[phy_idx++] = phy; in hamachi_init_one()
756 hmp->mii_if.advertising = mdio_read(dev, phy, MII_ADVERTISE); in hamachi_init_one()
759 dev->name, phy, mii_status, hmp->mii_if.advertising); in hamachi_init_one()
762 hmp->mii_cnt = phy_idx; in hamachi_init_one()
763 if (hmp->mii_cnt > 0) in hamachi_init_one()
764 hmp->mii_if.phy_id = hmp->phys[0]; in hamachi_init_one()
766 memset(&hmp->mii_if, 0, sizeof(hmp->mii_if)); in hamachi_init_one()
777 pci_free_consistent(pdev, RX_TOTAL_SIZE, hmp->rx_ring, in hamachi_init_one()
778 hmp->rx_ring_dma); in hamachi_init_one()
780 pci_free_consistent(pdev, TX_TOTAL_SIZE, hmp->tx_ring, in hamachi_init_one()
781 hmp->tx_ring_dma); in hamachi_init_one()
814 struct hamachi_private *hmp = netdev_priv(dev); in mdio_read() local
815 void __iomem *ioaddr = hmp->base; in mdio_read()
832 struct hamachi_private *hmp = netdev_priv(dev); in mdio_write() local
833 void __iomem *ioaddr = hmp->base; in mdio_write()
852 struct hamachi_private *hmp = netdev_priv(dev); in hamachi_open() local
853 void __iomem *ioaddr = hmp->base; in hamachi_open()
858 i = request_irq(hmp->pci_dev->irq, hamachi_interrupt, IRQF_SHARED, in hamachi_open()
867 writel(hmp->rx_ring_dma, ioaddr + RxPtr); in hamachi_open()
868 writel(hmp->rx_ring_dma >> 32, ioaddr + RxPtr + 4); in hamachi_open()
869 writel(hmp->tx_ring_dma, ioaddr + TxPtr); in hamachi_open()
870 writel(hmp->tx_ring_dma >> 32, ioaddr + TxPtr + 4); in hamachi_open()
872 writel(hmp->rx_ring_dma, ioaddr + RxPtr); in hamachi_open()
873 writel(hmp->tx_ring_dma, ioaddr + TxPtr); in hamachi_open()
913 dev->if_port = hmp->default_port; in hamachi_open()
918 if (hmp->duplex_lock != 1) in hamachi_open()
919 hmp->mii_if.full_duplex = 1; in hamachi_open()
943 rx_int_var = hmp->rx_int_var; in hamachi_open()
944 tx_int_var = hmp->tx_int_var; in hamachi_open()
983 init_timer(&hmp->timer); in hamachi_open()
984 hmp->timer.expires = RUN_AT((24*HZ)/10); /* 2.4 sec. */ in hamachi_open()
985 hmp->timer.data = (unsigned long)dev; in hamachi_open()
986 hmp->timer.function = hamachi_timer; /* timer handler */ in hamachi_open()
987 add_timer(&hmp->timer); in hamachi_open()
994 struct hamachi_private *hmp = netdev_priv(dev); in hamachi_tx() local
998 for (; hmp->cur_tx - hmp->dirty_tx > 0; hmp->dirty_tx++) { in hamachi_tx()
999 int entry = hmp->dirty_tx % TX_RING_SIZE; in hamachi_tx()
1002 if (hmp->tx_ring[entry].status_n_length & cpu_to_le32(DescOwn)) in hamachi_tx()
1005 skb = hmp->tx_skbuff[entry]; in hamachi_tx()
1007 pci_unmap_single(hmp->pci_dev, in hamachi_tx()
1008 leXX_to_cpu(hmp->tx_ring[entry].addr), in hamachi_tx()
1011 hmp->tx_skbuff[entry] = NULL; in hamachi_tx()
1013 hmp->tx_ring[entry].status_n_length = 0; in hamachi_tx()
1015 hmp->tx_ring[TX_RING_SIZE-1].status_n_length |= in hamachi_tx()
1026 struct hamachi_private *hmp = netdev_priv(dev); in hamachi_timer() local
1027 void __iomem *ioaddr = hmp->base; in hamachi_timer()
1044 hmp->timer.expires = RUN_AT(next_tick); in hamachi_timer()
1045 add_timer(&hmp->timer); in hamachi_timer()
1051 struct hamachi_private *hmp = netdev_priv(dev); in hamachi_tx_timeout() local
1052 void __iomem *ioaddr = hmp->base; in hamachi_tx_timeout()
1058 printk(KERN_DEBUG " Rx ring %p: ", hmp->rx_ring); in hamachi_tx_timeout()
1061 le32_to_cpu(hmp->rx_ring[i].status_n_length)); in hamachi_tx_timeout()
1063 printk(KERN_DEBUG" Tx ring %p: ", hmp->tx_ring); in hamachi_tx_timeout()
1066 le32_to_cpu(hmp->tx_ring[i].status_n_length)); in hamachi_tx_timeout()
1082 hmp->rx_ring[i].status_n_length &= cpu_to_le32(~DescOwn); in hamachi_tx_timeout()
1091 hmp->tx_ring[i].status_n_length = in hamachi_tx_timeout()
1093 (hmp->tx_ring[i].status_n_length & in hamachi_tx_timeout()
1096 hmp->tx_ring[i].status_n_length &= cpu_to_le32(0x0000ffff); in hamachi_tx_timeout()
1097 skb = hmp->tx_skbuff[i]; in hamachi_tx_timeout()
1099 pci_unmap_single(hmp->pci_dev, leXX_to_cpu(hmp->tx_ring[i].addr), in hamachi_tx_timeout()
1102 hmp->tx_skbuff[i] = NULL; in hamachi_tx_timeout()
1111 hmp->tx_full = 0; in hamachi_tx_timeout()
1112 hmp->cur_rx = hmp->cur_tx = 0; in hamachi_tx_timeout()
1113 hmp->dirty_rx = hmp->dirty_tx = 0; in hamachi_tx_timeout()
1118 struct sk_buff *skb = hmp->rx_skbuff[i]; in hamachi_tx_timeout()
1121 pci_unmap_single(hmp->pci_dev, in hamachi_tx_timeout()
1122 leXX_to_cpu(hmp->rx_ring[i].addr), in hamachi_tx_timeout()
1123 hmp->rx_buf_sz, PCI_DMA_FROMDEVICE); in hamachi_tx_timeout()
1125 hmp->rx_skbuff[i] = NULL; in hamachi_tx_timeout()
1132 skb = netdev_alloc_skb_ip_align(dev, hmp->rx_buf_sz); in hamachi_tx_timeout()
1133 hmp->rx_skbuff[i] = skb; in hamachi_tx_timeout()
1137 hmp->rx_ring[i].addr = cpu_to_leXX(pci_map_single(hmp->pci_dev, in hamachi_tx_timeout()
1138 skb->data, hmp->rx_buf_sz, PCI_DMA_FROMDEVICE)); in hamachi_tx_timeout()
1139 hmp->rx_ring[i].status_n_length = cpu_to_le32(DescOwn | in hamachi_tx_timeout()
1140 DescEndPacket | DescIntr | (hmp->rx_buf_sz - 2)); in hamachi_tx_timeout()
1142 hmp->dirty_rx = (unsigned int)(i - RX_RING_SIZE); in hamachi_tx_timeout()
1144 hmp->rx_ring[RX_RING_SIZE-1].status_n_length |= cpu_to_le32(DescEndRing); in hamachi_tx_timeout()
1162 struct hamachi_private *hmp = netdev_priv(dev); in hamachi_init_ring() local
1165 hmp->tx_full = 0; in hamachi_init_ring()
1166 hmp->cur_rx = hmp->cur_tx = 0; in hamachi_init_ring()
1167 hmp->dirty_rx = hmp->dirty_tx = 0; in hamachi_init_ring()
1174 hmp->rx_buf_sz = (dev->mtu <= 1492 ? PKT_BUF_SZ : in hamachi_init_ring()
1179 hmp->rx_ring[i].status_n_length = 0; in hamachi_init_ring()
1180 hmp->rx_skbuff[i] = NULL; in hamachi_init_ring()
1184 struct sk_buff *skb = netdev_alloc_skb(dev, hmp->rx_buf_sz + 2); in hamachi_init_ring()
1185 hmp->rx_skbuff[i] = skb; in hamachi_init_ring()
1189 hmp->rx_ring[i].addr = cpu_to_leXX(pci_map_single(hmp->pci_dev, in hamachi_init_ring()
1190 skb->data, hmp->rx_buf_sz, PCI_DMA_FROMDEVICE)); in hamachi_init_ring()
1192 hmp->rx_ring[i].status_n_length = cpu_to_le32(DescOwn | in hamachi_init_ring()
1193 DescEndPacket | DescIntr | (hmp->rx_buf_sz -2)); in hamachi_init_ring()
1195 hmp->dirty_rx = (unsigned int)(i - RX_RING_SIZE); in hamachi_init_ring()
1196 hmp->rx_ring[RX_RING_SIZE-1].status_n_length |= cpu_to_le32(DescEndRing); in hamachi_init_ring()
1199 hmp->tx_skbuff[i] = NULL; in hamachi_init_ring()
1200 hmp->tx_ring[i].status_n_length = 0; in hamachi_init_ring()
1203 hmp->tx_ring[TX_RING_SIZE-1].status_n_length |= cpu_to_le32(DescEndRing); in hamachi_init_ring()
1210 struct hamachi_private *hmp = netdev_priv(dev); in hamachi_start_xmit() local
1219 if (hmp->tx_full) { in hamachi_start_xmit()
1221 printk(KERN_WARNING "%s: Hamachi transmit queue full at slot %d.\n",dev->name, hmp->cur_tx); in hamachi_start_xmit()
1225 status=readw(hmp->base + TxStatus); in hamachi_start_xmit()
1227 writew(0x0001, hmp->base + TxCmd); in hamachi_start_xmit()
1235 entry = hmp->cur_tx % TX_RING_SIZE; in hamachi_start_xmit()
1237 hmp->tx_skbuff[entry] = skb; in hamachi_start_xmit()
1239 hmp->tx_ring[entry].addr = cpu_to_leXX(pci_map_single(hmp->pci_dev, in hamachi_start_xmit()
1252 hmp->tx_ring[entry].status_n_length = cpu_to_le32(DescOwn | in hamachi_start_xmit()
1255 hmp->tx_ring[entry].status_n_length = cpu_to_le32(DescOwn | in hamachi_start_xmit()
1257 hmp->cur_tx++; in hamachi_start_xmit()
1263 status=readw(hmp->base + TxStatus); in hamachi_start_xmit()
1265 writew(0x0001, hmp->base + TxCmd); in hamachi_start_xmit()
1276 if ((hmp->cur_tx - hmp->dirty_tx) < (TX_RING_SIZE - 4)) in hamachi_start_xmit()
1279 hmp->tx_full = 1; in hamachi_start_xmit()
1285 dev->name, hmp->cur_tx, entry); in hamachi_start_xmit()
1295 struct hamachi_private *hmp = netdev_priv(dev); in hamachi_interrupt() local
1296 void __iomem *ioaddr = hmp->base; in hamachi_interrupt()
1307 spin_lock(&hmp->lock); in hamachi_interrupt()
1329 if (hmp->tx_full){ in hamachi_interrupt()
1330 for (; hmp->cur_tx - hmp->dirty_tx > 0; hmp->dirty_tx++){ in hamachi_interrupt()
1331 int entry = hmp->dirty_tx % TX_RING_SIZE; in hamachi_interrupt()
1334 if (hmp->tx_ring[entry].status_n_length & cpu_to_le32(DescOwn)) in hamachi_interrupt()
1336 skb = hmp->tx_skbuff[entry]; in hamachi_interrupt()
1339 pci_unmap_single(hmp->pci_dev, in hamachi_interrupt()
1340 leXX_to_cpu(hmp->tx_ring[entry].addr), in hamachi_interrupt()
1344 hmp->tx_skbuff[entry] = NULL; in hamachi_interrupt()
1346 hmp->tx_ring[entry].status_n_length = 0; in hamachi_interrupt()
1348 hmp->tx_ring[TX_RING_SIZE-1].status_n_length |= in hamachi_interrupt()
1352 if (hmp->cur_tx - hmp->dirty_tx < TX_RING_SIZE - 4){ in hamachi_interrupt()
1354 hmp->tx_full = 0; in hamachi_interrupt()
1392 spin_unlock(&hmp->lock); in hamachi_interrupt()
1400 struct hamachi_private *hmp = netdev_priv(dev); in hamachi_rx() local
1401 int entry = hmp->cur_rx % RX_RING_SIZE; in hamachi_rx()
1402 int boguscnt = (hmp->dirty_rx + RX_RING_SIZE) - hmp->cur_rx; in hamachi_rx()
1406 entry, hmp->rx_ring[entry].status_n_length); in hamachi_rx()
1411 struct hamachi_desc *desc = &(hmp->rx_ring[entry]); in hamachi_rx()
1419 pci_dma_sync_single_for_cpu(hmp->pci_dev, in hamachi_rx()
1421 hmp->rx_buf_sz, in hamachi_rx()
1423 buf_addr = (u8 *) hmp->rx_skbuff[entry]->data; in hamachi_rx()
1433 dev->name, hmp->cur_rx, data_size, desc_status); in hamachi_rx()
1435 dev->name, desc, &hmp->rx_ring[hmp->cur_rx % RX_RING_SIZE]); in hamachi_rx()
1438 le32_to_cpu(hmp->rx_ring[(hmp->cur_rx+1) % RX_RING_SIZE].status_n_length) & 0xffff0000, in hamachi_rx()
1439 le32_to_cpu(hmp->rx_ring[(hmp->cur_rx+1) % RX_RING_SIZE].status_n_length) & 0x0000ffff, in hamachi_rx()
1440 le32_to_cpu(hmp->rx_ring[(hmp->cur_rx-1) % RX_RING_SIZE].status_n_length)); in hamachi_rx()
1489 pci_dma_sync_single_for_cpu(hmp->pci_dev, in hamachi_rx()
1490 leXX_to_cpu(hmp->rx_ring[entry].addr), in hamachi_rx()
1491 hmp->rx_buf_sz, in hamachi_rx()
1496 hmp->rx_skbuff[entry]->data, pkt_len); in hamachi_rx()
1499 memcpy(skb_put(skb, pkt_len), hmp->rx_ring_dma in hamachi_rx()
1502 pci_dma_sync_single_for_device(hmp->pci_dev, in hamachi_rx()
1503 leXX_to_cpu(hmp->rx_ring[entry].addr), in hamachi_rx()
1504 hmp->rx_buf_sz, in hamachi_rx()
1507 pci_unmap_single(hmp->pci_dev, in hamachi_rx()
1508 leXX_to_cpu(hmp->rx_ring[entry].addr), in hamachi_rx()
1509 hmp->rx_buf_sz, PCI_DMA_FROMDEVICE); in hamachi_rx()
1510 skb_put(skb = hmp->rx_skbuff[entry], pkt_len); in hamachi_rx()
1511 hmp->rx_skbuff[entry] = NULL; in hamachi_rx()
1576 entry = (++hmp->cur_rx) % RX_RING_SIZE; in hamachi_rx()
1580 for (; hmp->cur_rx - hmp->dirty_rx > 0; hmp->dirty_rx++) { in hamachi_rx()
1583 entry = hmp->dirty_rx % RX_RING_SIZE; in hamachi_rx()
1584 desc = &(hmp->rx_ring[entry]); in hamachi_rx()
1585 if (hmp->rx_skbuff[entry] == NULL) { in hamachi_rx()
1586 struct sk_buff *skb = netdev_alloc_skb(dev, hmp->rx_buf_sz + 2); in hamachi_rx()
1588 hmp->rx_skbuff[entry] = skb; in hamachi_rx()
1592 desc->addr = cpu_to_leXX(pci_map_single(hmp->pci_dev, in hamachi_rx()
1593 skb->data, hmp->rx_buf_sz, PCI_DMA_FROMDEVICE)); in hamachi_rx()
1595 desc->status_n_length = cpu_to_le32(hmp->rx_buf_sz); in hamachi_rx()
1606 if (readw(hmp->base + RxStatus) & 0x0002) in hamachi_rx()
1607 writew(0x0001, hmp->base + RxCmd); in hamachi_rx()
1616 struct hamachi_private *hmp = netdev_priv(dev); in hamachi_error() local
1617 void __iomem *ioaddr = hmp->base; in hamachi_error()
1650 struct hamachi_private *hmp = netdev_priv(dev); in hamachi_close() local
1651 void __iomem *ioaddr = hmp->base; in hamachi_close()
1662 dev->name, hmp->cur_tx, hmp->dirty_tx, hmp->cur_rx, hmp->dirty_rx); in hamachi_close()
1675 (int)hmp->tx_ring_dma); in hamachi_close()
1678 readl(ioaddr + TxCurPtr) == (long)&hmp->tx_ring[i] ? '>' : ' ', in hamachi_close()
1679 i, hmp->tx_ring[i].status_n_length, hmp->tx_ring[i].addr); in hamachi_close()
1681 (int)hmp->rx_ring_dma); in hamachi_close()
1684 readl(ioaddr + RxCurPtr) == (long)&hmp->rx_ring[i] ? '>' : ' ', in hamachi_close()
1685 i, hmp->rx_ring[i].status_n_length, hmp->rx_ring[i].addr); in hamachi_close()
1687 if (*(u8*)hmp->rx_skbuff[i]->data != 0x69) { in hamachi_close()
1689 hmp->rx_skbuff[i]->data; in hamachi_close()
1701 free_irq(hmp->pci_dev->irq, dev); in hamachi_close()
1703 del_timer_sync(&hmp->timer); in hamachi_close()
1707 skb = hmp->rx_skbuff[i]; in hamachi_close()
1708 hmp->rx_ring[i].status_n_length = 0; in hamachi_close()
1710 pci_unmap_single(hmp->pci_dev, in hamachi_close()
1711 leXX_to_cpu(hmp->rx_ring[i].addr), in hamachi_close()
1712 hmp->rx_buf_sz, PCI_DMA_FROMDEVICE); in hamachi_close()
1714 hmp->rx_skbuff[i] = NULL; in hamachi_close()
1716 hmp->rx_ring[i].addr = cpu_to_leXX(0xBADF00D0); /* An invalid address. */ in hamachi_close()
1719 skb = hmp->tx_skbuff[i]; in hamachi_close()
1721 pci_unmap_single(hmp->pci_dev, in hamachi_close()
1722 leXX_to_cpu(hmp->tx_ring[i].addr), in hamachi_close()
1725 hmp->tx_skbuff[i] = NULL; in hamachi_close()
1736 struct hamachi_private *hmp = netdev_priv(dev); in hamachi_get_stats() local
1737 void __iomem *ioaddr = hmp->base; in hamachi_get_stats()
1772 struct hamachi_private *hmp = netdev_priv(dev); in set_rx_mode() local
1773 void __iomem *ioaddr = hmp->base; in set_rx_mode()
1901 struct hamachi_private *hmp = netdev_priv(dev); in hamachi_remove_one() local
1903 pci_free_consistent(pdev, RX_TOTAL_SIZE, hmp->rx_ring, in hamachi_remove_one()
1904 hmp->rx_ring_dma); in hamachi_remove_one()
1905 pci_free_consistent(pdev, TX_TOTAL_SIZE, hmp->tx_ring, in hamachi_remove_one()
1906 hmp->tx_ring_dma); in hamachi_remove_one()
1908 iounmap(hmp->base); in hamachi_remove_one()