Lines Matching refs:vp
661 static void window_set(struct vortex_private *vp, int window) in window_set() argument
663 if (window != vp->window) { in window_set()
664 iowrite16(SelectWindow + window, vp->ioaddr + EL3_CMD); in window_set()
665 vp->window = window; in window_set()
671 window_read ## size(struct vortex_private *vp, int window, int addr) \
675 spin_lock_irqsave(&vp->window_lock, flags); \
676 window_set(vp, window); \
677 ret = ioread ## size(vp->ioaddr + addr); \
678 spin_unlock_irqrestore(&vp->window_lock, flags); \
682 window_write ## size(struct vortex_private *vp, u ## size value, \
686 spin_lock_irqsave(&vp->window_lock, flags); \
687 window_set(vp, window); \
688 iowrite ## size(value, vp->ioaddr + addr); \
689 spin_unlock_irqrestore(&vp->window_lock, flags); \
701 #define VORTEX_PCI(vp) \ argument
702 ((struct pci_dev *) (((vp)->gendev) ? DEVICE_PCI((vp)->gendev) : NULL))
710 #define VORTEX_EISA(vp) \ argument
711 ((struct eisa_device *) (((vp)->gendev) ? DEVICE_EISA((vp)->gendev) : NULL))
759 static void mdio_sync(struct vortex_private *vp, int bits);
761 static void mdio_write(struct net_device *vp, int phy_id, int location, int value);
843 struct vortex_private *vp = netdev_priv(dev); in poll_vortex() local
846 (vp->full_bus_master_rx ? boomerang_interrupt:vortex_interrupt)(dev->irq,dev); in poll_vortex()
937 struct vortex_private *vp; in vortex_eisa_remove() local
948 vp = netdev_priv(dev); in vortex_eisa_remove()
949 ioaddr = vp->ioaddr; in vortex_eisa_remove()
1100 struct vortex_private *vp; in vortex_probe1() local
1127 dev = alloc_etherdev(sizeof(*vp)); in vortex_probe1()
1133 vp = netdev_priv(dev); in vortex_probe1()
1156 vp->enable_wol = 1; in vortex_probe1()
1172 vp->ioaddr = ioaddr; in vortex_probe1()
1173 vp->large_frames = mtu > 1500; in vortex_probe1()
1174 vp->drv_flags = vci->drv_flags; in vortex_probe1()
1175 vp->has_nway = (vci->drv_flags & HAS_NWAY) ? 1 : 0; in vortex_probe1()
1176 vp->io_size = vci->io_size; in vortex_probe1()
1177 vp->card_idx = card_idx; in vortex_probe1()
1178 vp->window = -1; in vortex_probe1()
1208 spin_lock_init(&vp->lock); in vortex_probe1()
1209 spin_lock_init(&vp->mii_lock); in vortex_probe1()
1210 spin_lock_init(&vp->window_lock); in vortex_probe1()
1211 vp->gendev = gendev; in vortex_probe1()
1212 vp->mii.dev = dev; in vortex_probe1()
1213 vp->mii.mdio_read = mdio_read; in vortex_probe1()
1214 vp->mii.mdio_write = mdio_write; in vortex_probe1()
1215 vp->mii.phy_id_mask = 0x1f; in vortex_probe1()
1216 vp->mii.reg_num_mask = 0x1f; in vortex_probe1()
1219 vp->rx_ring = pci_alloc_consistent(pdev, sizeof(struct boom_rx_desc) * RX_RING_SIZE in vortex_probe1()
1221 &vp->rx_ring_dma); in vortex_probe1()
1223 if (!vp->rx_ring) in vortex_probe1()
1226 vp->tx_ring = (struct boom_tx_desc *)(vp->rx_ring + RX_RING_SIZE); in vortex_probe1()
1227 vp->tx_ring_dma = vp->rx_ring_dma + sizeof(struct boom_rx_desc) * RX_RING_SIZE; in vortex_probe1()
1236 vp->media_override = 7; in vortex_probe1()
1238 vp->media_override = ((option & 7) == 2) ? 0 : option & 15; in vortex_probe1()
1239 if (vp->media_override != 7) in vortex_probe1()
1240 vp->medialock = 1; in vortex_probe1()
1241 vp->full_duplex = (option & 0x200) ? 1 : 0; in vortex_probe1()
1242 vp->bus_master = (option & 16) ? 1 : 0; in vortex_probe1()
1246 vp->full_duplex = 1; in vortex_probe1()
1248 vp->enable_wol = 1; in vortex_probe1()
1252 vp->full_duplex = 1; in vortex_probe1()
1254 vp->flow_ctrl = 1; in vortex_probe1()
1256 vp->enable_wol = 1; in vortex_probe1()
1259 vp->mii.force_media = vp->full_duplex; in vortex_probe1()
1260 vp->options = option; in vortex_probe1()
1274 window_write16(vp, base + i, 0, Wn0EepromCmd); in vortex_probe1()
1278 if ((window_read16(vp, 0, Wn0EepromCmd) & in vortex_probe1()
1282 eeprom[i] = window_read16(vp, 0, Wn0EepromData); in vortex_probe1()
1307 window_write8(vp, dev->dev_addr[i], 2, i); in vortex_probe1()
1316 step = (window_read8(vp, 4, Wn4_NetDiag) & 0x1e) >> 1; in vortex_probe1()
1327 vp->cb_fn_base = pci_iomap(pdev, 2, 0); in vortex_probe1()
1328 if (!vp->cb_fn_base) { in vortex_probe1()
1337 vp->cb_fn_base); in vortex_probe1()
1340 n = window_read16(vp, 2, Wn2_ResetOptions) & ~0x4010; in vortex_probe1()
1341 if (vp->drv_flags & INVERT_LED_PWR) in vortex_probe1()
1343 if (vp->drv_flags & INVERT_MII_PWR) in vortex_probe1()
1345 window_write16(vp, n, 2, Wn2_ResetOptions); in vortex_probe1()
1346 if (vp->drv_flags & WNO_XCVR_PWR) { in vortex_probe1()
1347 window_write16(vp, 0x0800, 0, 0); in vortex_probe1()
1352 vp->info1 = eeprom[13]; in vortex_probe1()
1353 vp->info2 = eeprom[15]; in vortex_probe1()
1354 vp->capabilities = eeprom[16]; in vortex_probe1()
1356 if (vp->info1 & 0x8000) { in vortex_probe1()
1357 vp->full_duplex = 1; in vortex_probe1()
1365 vp->available_media = window_read16(vp, 3, Wn3_Options); in vortex_probe1()
1366 if ((vp->available_media & 0xff) == 0) /* Broken 3c916 */ in vortex_probe1()
1367 vp->available_media = 0x40; in vortex_probe1()
1368 config = window_read32(vp, 3, Wn3_Config); in vortex_probe1()
1371 config, window_read16(vp, 3, Wn3_Options)); in vortex_probe1()
1380 vp->default_media = XCVR(config); in vortex_probe1()
1381 if (vp->default_media == XCVR_NWAY) in vortex_probe1()
1382 vp->has_nway = 1; in vortex_probe1()
1383 vp->autoselect = AUTOSELECT(config); in vortex_probe1()
1386 if (vp->media_override != 7) { in vortex_probe1()
1388 print_name, vp->media_override, in vortex_probe1()
1389 media_tbl[vp->media_override].name); in vortex_probe1()
1390 dev->if_port = vp->media_override; in vortex_probe1()
1392 dev->if_port = vp->default_media; in vortex_probe1()
1394 if ((vp->available_media & 0x40) || (vci->drv_flags & HAS_NWAY) || in vortex_probe1()
1398 if (vp->drv_flags & EXTRA_PREAMBLE) in vortex_probe1()
1400 mdio_sync(vp, 32); in vortex_probe1()
1417 vp->phys[phy_idx++] = phyx; in vortex_probe1()
1429 vp->phys[0] = 24; in vortex_probe1()
1431 vp->advertising = mdio_read(dev, vp->phys[0], MII_ADVERTISE); in vortex_probe1()
1432 if (vp->full_duplex) { in vortex_probe1()
1434 vp->advertising &= ~0x02A0; in vortex_probe1()
1435 mdio_write(dev, vp->phys[0], 4, vp->advertising); in vortex_probe1()
1438 vp->mii.phy_id = vp->phys[0]; in vortex_probe1()
1441 if (vp->capabilities & CapBusMaster) { in vortex_probe1()
1442 vp->full_bus_master_tx = 1; in vortex_probe1()
1445 (vp->info2 & 1) ? "early" : "whole-frame" ); in vortex_probe1()
1447 vp->full_bus_master_rx = (vp->info2 & 1) ? 1 : 2; in vortex_probe1()
1448 vp->bus_master = 0; /* AKPM: vortex only */ in vortex_probe1()
1452 if (vp->full_bus_master_tx) { in vortex_probe1()
1456 ((hw_checksums[card_idx] == -1 && (vp->drv_flags & HAS_HWCKSM)) || in vortex_probe1()
1474 vp->pm_state_valid = 1; in vortex_probe1()
1486 vp->rx_ring, in vortex_probe1()
1487 vp->rx_ring_dma); in vortex_probe1()
1498 struct vortex_private *vp = netdev_priv(dev); in issue_and_wait() local
1499 void __iomem *ioaddr = vp->ioaddr; in issue_and_wait()
1525 struct vortex_private *vp = netdev_priv(dev); in vortex_set_duplex() local
1528 dev->name, (vp->full_duplex) ? "full" : "half"); in vortex_set_duplex()
1531 window_write16(vp, in vortex_set_duplex()
1532 ((vp->info1 & 0x8000) || vp->full_duplex ? 0x20 : 0) | in vortex_set_duplex()
1533 (vp->large_frames ? 0x40 : 0) | in vortex_set_duplex()
1534 ((vp->full_duplex && vp->flow_ctrl && vp->partner_flow_ctrl) ? in vortex_set_duplex()
1541 struct vortex_private *vp = netdev_priv(dev); in vortex_check_media() local
1547 if (mii_check_media(&vp->mii, ok_to_print, init)) { in vortex_check_media()
1548 vp->full_duplex = vp->mii.full_duplex; in vortex_check_media()
1558 struct vortex_private *vp = netdev_priv(dev); in vortex_up() local
1559 void __iomem *ioaddr = vp->ioaddr; in vortex_up()
1563 if (VORTEX_PCI(vp)) { in vortex_up()
1564 pci_set_power_state(VORTEX_PCI(vp), PCI_D0); /* Go active */ in vortex_up()
1565 if (vp->pm_state_valid) in vortex_up()
1566 pci_restore_state(VORTEX_PCI(vp)); in vortex_up()
1567 err = pci_enable_device(VORTEX_PCI(vp)); in vortex_up()
1575 config = window_read32(vp, 3, Wn3_Config); in vortex_up()
1577 if (vp->media_override != 7) { in vortex_up()
1579 dev->name, vp->media_override, in vortex_up()
1580 media_tbl[vp->media_override].name); in vortex_up()
1581 dev->if_port = vp->media_override; in vortex_up()
1582 } else if (vp->autoselect) { in vortex_up()
1583 if (vp->has_nway) { in vortex_up()
1591 while (! (vp->available_media & media_tbl[dev->if_port].mask)) in vortex_up()
1598 dev->if_port = vp->default_media; in vortex_up()
1604 init_timer(&vp->timer); in vortex_up()
1605 vp->timer.expires = RUN_AT(media_tbl[dev->if_port].wait); in vortex_up()
1606 vp->timer.data = (unsigned long)dev; in vortex_up()
1607 vp->timer.function = vortex_timer; /* timer handler */ in vortex_up()
1608 add_timer(&vp->timer); in vortex_up()
1610 init_timer(&vp->rx_oom_timer); in vortex_up()
1611 vp->rx_oom_timer.data = (unsigned long)dev; in vortex_up()
1612 vp->rx_oom_timer.function = rx_oom_timer; in vortex_up()
1618 vp->full_duplex = vp->mii.force_media; in vortex_up()
1622 window_write32(vp, config, 3, Wn3_Config); in vortex_up()
1625 mii_reg1 = mdio_read(dev, vp->phys[0], MII_BMSR); in vortex_up()
1626 mii_reg5 = mdio_read(dev, vp->phys[0], MII_LPA); in vortex_up()
1627 vp->partner_flow_ctrl = ((mii_reg5 & 0x0400) != 0); in vortex_up()
1628 vp->mii.full_duplex = vp->full_duplex; in vortex_up()
1646 dev->name, dev->irq, window_read16(vp, 4, Wn4_Media)); in vortex_up()
1651 window_write8(vp, dev->dev_addr[i], 2, i); in vortex_up()
1653 window_write16(vp, 0, 2, i); in vortex_up()
1655 if (vp->cb_fn_base) { in vortex_up()
1656 unsigned short n = window_read16(vp, 2, Wn2_ResetOptions) & ~0x4010; in vortex_up()
1657 if (vp->drv_flags & INVERT_LED_PWR) in vortex_up()
1659 if (vp->drv_flags & INVERT_MII_PWR) in vortex_up()
1661 window_write16(vp, n, 2, Wn2_ResetOptions); in vortex_up()
1668 window_write16(vp, in vortex_up()
1669 (window_read16(vp, 4, Wn4_Media) & in vortex_up()
1678 window_read8(vp, 6, i); in vortex_up()
1679 window_read16(vp, 6, 10); in vortex_up()
1680 window_read16(vp, 6, 12); in vortex_up()
1682 window_read8(vp, 4, 12); in vortex_up()
1684 window_write16(vp, 0x0040, 4, Wn4_NetDiag); in vortex_up()
1686 if (vp->full_bus_master_rx) { /* Boomerang bus master. */ in vortex_up()
1687 vp->cur_rx = vp->dirty_rx = 0; in vortex_up()
1691 iowrite32(vp->rx_ring_dma, ioaddr + UpListPtr); in vortex_up()
1693 if (vp->full_bus_master_tx) { /* Boomerang bus master Tx. */ in vortex_up()
1694 vp->cur_tx = vp->dirty_tx = 0; in vortex_up()
1695 if (vp->drv_flags & IS_BOOMERANG) in vortex_up()
1699 vp->rx_ring[i].status = 0; in vortex_up()
1701 vp->tx_skbuff[i] = NULL; in vortex_up()
1713 vp->status_enable = SetStatusEnb | HostError|IntReq|StatsFull|TxComplete| in vortex_up()
1714 (vp->full_bus_master_tx ? DownComplete : TxAvailable) | in vortex_up()
1715 (vp->full_bus_master_rx ? UpComplete : RxComplete) | in vortex_up()
1716 (vp->bus_master ? DMADone : 0); in vortex_up()
1717 vp->intr_enable = SetIntrEnb | IntLatch | TxAvailable | in vortex_up()
1718 (vp->full_bus_master_rx ? 0 : RxComplete) | in vortex_up()
1720 | (vp->bus_master ? DMADone : 0) | UpComplete | DownComplete; in vortex_up()
1721 iowrite16(vp->status_enable, ioaddr + EL3_CMD); in vortex_up()
1725 iowrite16(vp->intr_enable, ioaddr + EL3_CMD); in vortex_up()
1726 if (vp->cb_fn_base) /* The PCMCIA people are idiots. */ in vortex_up()
1727 iowrite32(0x8000, vp->cb_fn_base + 4); in vortex_up()
1737 struct vortex_private *vp = netdev_priv(dev); in vortex_open() local
1742 if ((retval = request_irq(dev->irq, vp->full_bus_master_rx ? in vortex_open()
1748 if (vp->full_bus_master_rx) { /* Boomerang bus master. */ in vortex_open()
1753 vp->rx_ring[i].next = cpu_to_le32(vp->rx_ring_dma + sizeof(struct boom_rx_desc) * (i+1)); in vortex_open()
1754 vp->rx_ring[i].status = 0; /* Clear complete bit. */ in vortex_open()
1755 vp->rx_ring[i].length = cpu_to_le32(PKT_BUF_SZ | LAST_FRAG); in vortex_open()
1759 vp->rx_skbuff[i] = skb; in vortex_open()
1764 …vp->rx_ring[i].addr = cpu_to_le32(pci_map_single(VORTEX_PCI(vp), skb->data, PKT_BUF_SZ, PCI_DMA_FR… in vortex_open()
1772 vp->rx_ring[i-1].next = cpu_to_le32(vp->rx_ring_dma); in vortex_open()
1781 if (vp->rx_skbuff[i]) { in vortex_open()
1782 dev_kfree_skb(vp->rx_skbuff[i]); in vortex_open()
1783 vp->rx_skbuff[i] = NULL; in vortex_open()
1798 struct vortex_private *vp = netdev_priv(dev); in vortex_timer() local
1799 void __iomem *ioaddr = vp->ioaddr; in vortex_timer()
1810 media_status = window_read16(vp, 4, Wn4_Media); in vortex_timer()
1843 if (vp->medialock) in vortex_timer()
1849 spin_lock_irq(&vp->lock); in vortex_timer()
1853 } while ( ! (vp->available_media & media_tbl[dev->if_port].mask)); in vortex_timer()
1855 dev->if_port = vp->default_media; in vortex_timer()
1865 window_write16(vp, in vortex_timer()
1870 config = window_read32(vp, 3, Wn3_Config); in vortex_timer()
1872 window_write32(vp, config, 3, Wn3_Config); in vortex_timer()
1880 spin_unlock_irq(&vp->lock); in vortex_timer()
1888 mod_timer(&vp->timer, RUN_AT(next_tick)); in vortex_timer()
1889 if (vp->deferred) in vortex_timer()
1895 struct vortex_private *vp = netdev_priv(dev); in vortex_tx_timeout() local
1896 void __iomem *ioaddr = vp->ioaddr; in vortex_tx_timeout()
1902 window_read16(vp, 4, Wn4_NetDiag), in vortex_tx_timeout()
1903 window_read16(vp, 4, Wn4_Media), in vortex_tx_timeout()
1905 window_read16(vp, 4, Wn4_FIFODiag)); in vortex_tx_timeout()
1920 if (vp->full_bus_master_tx) in vortex_tx_timeout()
1934 if (vp->full_bus_master_tx) { in vortex_tx_timeout()
1936 if (vp->cur_tx - vp->dirty_tx > 0 && ioread32(ioaddr + DownListPtr) == 0) in vortex_tx_timeout()
1937 iowrite32(vp->tx_ring_dma + (vp->dirty_tx % TX_RING_SIZE) * sizeof(struct boom_tx_desc), in vortex_tx_timeout()
1939 if (vp->cur_tx - vp->dirty_tx < TX_RING_SIZE) { in vortex_tx_timeout()
1943 if (vp->drv_flags & IS_BOOMERANG) in vortex_tx_timeout()
1963 struct vortex_private *vp = netdev_priv(dev); in vortex_error() local
1964 void __iomem *ioaddr = vp->ioaddr; in vortex_error()
1987 if (tx_status & 0x08) vp->xstats.tx_max_collisions++; in vortex_error()
1991 } else if ((tx_status & 0x08) && (vp->drv_flags & MAX_COLLISION_RESET)) { /* maxCollisions */ in vortex_error()
2014 (window_read16(vp, 5, 10) & ~StatsFull), in vortex_error()
2016 vp->intr_enable &= ~StatsFull; in vortex_error()
2021 iowrite16(vp->status_enable, ioaddr + EL3_CMD); in vortex_error()
2022 iowrite16(vp->intr_enable, ioaddr + EL3_CMD); in vortex_error()
2026 fifo_diag = window_read16(vp, 4, Wn4_FIFODiag); in vortex_error()
2030 if (vp->full_bus_master_tx) { in vortex_error()
2059 if (!vp->full_bus_master_tx) in vortex_error()
2067 struct vortex_private *vp = netdev_priv(dev); in vortex_start_xmit() local
2068 void __iomem *ioaddr = vp->ioaddr; in vortex_start_xmit()
2073 if (vp->bus_master) { in vortex_start_xmit()
2076 vp->tx_skb_dma = pci_map_single(VORTEX_PCI(vp), skb->data, len, in vortex_start_xmit()
2078 spin_lock_irq(&vp->window_lock); in vortex_start_xmit()
2079 window_set(vp, 7); in vortex_start_xmit()
2080 iowrite32(vp->tx_skb_dma, ioaddr + Wn7_MasterAddr); in vortex_start_xmit()
2082 spin_unlock_irq(&vp->window_lock); in vortex_start_xmit()
2083 vp->tx_skb = skb; in vortex_start_xmit()
2129 struct vortex_private *vp = netdev_priv(dev); in boomerang_start_xmit() local
2130 void __iomem *ioaddr = vp->ioaddr; in boomerang_start_xmit()
2132 int entry = vp->cur_tx % TX_RING_SIZE; in boomerang_start_xmit()
2134 struct boom_tx_desc *prev_entry = &vp->tx_ring[(vp->cur_tx-1) % TX_RING_SIZE]; in boomerang_start_xmit()
2141 dev->name, vp->cur_tx); in boomerang_start_xmit()
2150 if (vp->handling_irq) in boomerang_start_xmit()
2153 if (vp->cur_tx - vp->dirty_tx >= TX_RING_SIZE) { in boomerang_start_xmit()
2161 vp->tx_skbuff[entry] = skb; in boomerang_start_xmit()
2163 vp->tx_ring[entry].next = 0; in boomerang_start_xmit()
2166 vp->tx_ring[entry].status = cpu_to_le32(skb->len | TxIntrUploaded); in boomerang_start_xmit()
2168 vp->tx_ring[entry].status = cpu_to_le32(skb->len | TxIntrUploaded | AddTCPChksum | AddUDPChksum); in boomerang_start_xmit()
2171 dma_addr = pci_map_single(VORTEX_PCI(vp), skb->data, skb->len, in boomerang_start_xmit()
2173 if (dma_mapping_error(&VORTEX_PCI(vp)->dev, dma_addr)) in boomerang_start_xmit()
2176 vp->tx_ring[entry].frag[0].addr = cpu_to_le32(dma_addr); in boomerang_start_xmit()
2177 vp->tx_ring[entry].frag[0].length = cpu_to_le32(skb->len | LAST_FRAG); in boomerang_start_xmit()
2181 dma_addr = pci_map_single(VORTEX_PCI(vp), skb->data, in boomerang_start_xmit()
2183 if (dma_mapping_error(&VORTEX_PCI(vp)->dev, dma_addr)) in boomerang_start_xmit()
2186 vp->tx_ring[entry].frag[0].addr = cpu_to_le32(dma_addr); in boomerang_start_xmit()
2187 vp->tx_ring[entry].frag[0].length = cpu_to_le32(skb_headlen(skb)); in boomerang_start_xmit()
2192 dma_addr = skb_frag_dma_map(&VORTEX_PCI(vp)->dev, frag, in boomerang_start_xmit()
2196 if (dma_mapping_error(&VORTEX_PCI(vp)->dev, dma_addr)) { in boomerang_start_xmit()
2198 dma_unmap_page(&VORTEX_PCI(vp)->dev, in boomerang_start_xmit()
2199 le32_to_cpu(vp->tx_ring[entry].frag[i+1].addr), in boomerang_start_xmit()
2200 le32_to_cpu(vp->tx_ring[entry].frag[i+1].length), in boomerang_start_xmit()
2203 pci_unmap_single(VORTEX_PCI(vp), in boomerang_start_xmit()
2204 le32_to_cpu(vp->tx_ring[entry].frag[0].addr), in boomerang_start_xmit()
2205 le32_to_cpu(vp->tx_ring[entry].frag[0].length), in boomerang_start_xmit()
2211 vp->tx_ring[entry].frag[i+1].addr = in boomerang_start_xmit()
2215 vp->tx_ring[entry].frag[i+1].length = cpu_to_le32(skb_frag_size(frag)|LAST_FRAG); in boomerang_start_xmit()
2217 vp->tx_ring[entry].frag[i+1].length = cpu_to_le32(skb_frag_size(frag)); in boomerang_start_xmit()
2221 dma_addr = pci_map_single(VORTEX_PCI(vp), skb->data, skb->len, PCI_DMA_TODEVICE); in boomerang_start_xmit()
2222 if (dma_mapping_error(&VORTEX_PCI(vp)->dev, dma_addr)) in boomerang_start_xmit()
2224 vp->tx_ring[entry].addr = cpu_to_le32(dma_addr); in boomerang_start_xmit()
2225 vp->tx_ring[entry].length = cpu_to_le32(skb->len | LAST_FRAG); in boomerang_start_xmit()
2226 vp->tx_ring[entry].status = cpu_to_le32(skb->len | TxIntrUploaded); in boomerang_start_xmit()
2229 spin_lock_irqsave(&vp->lock, flags); in boomerang_start_xmit()
2232 prev_entry->next = cpu_to_le32(vp->tx_ring_dma + entry * sizeof(struct boom_tx_desc)); in boomerang_start_xmit()
2234 iowrite32(vp->tx_ring_dma + entry * sizeof(struct boom_tx_desc), ioaddr + DownListPtr); in boomerang_start_xmit()
2235 vp->queued_packet++; in boomerang_start_xmit()
2238 vp->cur_tx++; in boomerang_start_xmit()
2241 if (vp->cur_tx - vp->dirty_tx > TX_RING_SIZE - 1) { in boomerang_start_xmit()
2253 spin_unlock_irqrestore(&vp->lock, flags); in boomerang_start_xmit()
2257 dev_err(&VORTEX_PCI(vp)->dev, "Error mapping dma buffer\n"); in boomerang_start_xmit()
2273 struct vortex_private *vp = netdev_priv(dev); in vortex_interrupt() local
2280 ioaddr = vp->ioaddr; in vortex_interrupt()
2281 spin_lock(&vp->lock); in vortex_interrupt()
2293 status |= vp->deferred; in vortex_interrupt()
2294 vp->deferred = 0; in vortex_interrupt()
2304 spin_lock(&vp->window_lock); in vortex_interrupt()
2305 window_set(vp, 7); in vortex_interrupt()
2325 pci_unmap_single(VORTEX_PCI(vp), vp->tx_skb_dma, (vp->tx_skb->len + 3) & ~3, PCI_DMA_TODEVICE); in vortex_interrupt()
2327 bytes_compl += vp->tx_skb->len; in vortex_interrupt()
2328 dev_kfree_skb_irq(vp->tx_skb); /* Release the transferred buffer */ in vortex_interrupt()
2348 spin_unlock(&vp->window_lock); in vortex_interrupt()
2350 spin_lock(&vp->window_lock); in vortex_interrupt()
2351 window_set(vp, 7); in vortex_interrupt()
2359 vp->deferred |= status; in vortex_interrupt()
2360 iowrite16(SetStatusEnb | (~vp->deferred & vp->status_enable), in vortex_interrupt()
2362 iowrite16(AckIntr | (vp->deferred & 0x7ff), ioaddr + EL3_CMD); in vortex_interrupt()
2365 mod_timer(&vp->timer, jiffies + 1*HZ); in vortex_interrupt()
2373 spin_unlock(&vp->window_lock); in vortex_interrupt()
2379 spin_unlock(&vp->lock); in vortex_interrupt()
2392 struct vortex_private *vp = netdev_priv(dev); in boomerang_interrupt() local
2399 ioaddr = vp->ioaddr; in boomerang_interrupt()
2406 spin_lock(&vp->lock); in boomerang_interrupt()
2407 vp->handling_irq = 1; in boomerang_interrupt()
2425 status |= vp->deferred; in boomerang_interrupt()
2426 vp->deferred = 0; in boomerang_interrupt()
2444 unsigned int dirty_tx = vp->dirty_tx; in boomerang_interrupt()
2447 while (vp->cur_tx - dirty_tx > 0) { in boomerang_interrupt()
2451 vp->tx_ring_dma + entry * sizeof(struct boom_tx_desc)) in boomerang_interrupt()
2454 if ((vp->tx_ring[entry].status & DN_COMPLETE) == 0) in boomerang_interrupt()
2458 if (vp->tx_skbuff[entry]) { in boomerang_interrupt()
2459 struct sk_buff *skb = vp->tx_skbuff[entry]; in boomerang_interrupt()
2463 pci_unmap_single(VORTEX_PCI(vp), in boomerang_interrupt()
2464 le32_to_cpu(vp->tx_ring[entry].frag[i].addr), in boomerang_interrupt()
2465 le32_to_cpu(vp->tx_ring[entry].frag[i].length)&0xFFF, in boomerang_interrupt()
2468 pci_unmap_single(VORTEX_PCI(vp), in boomerang_interrupt()
2469 le32_to_cpu(vp->tx_ring[entry].addr), skb->len, PCI_DMA_TODEVICE); in boomerang_interrupt()
2474 vp->tx_skbuff[entry] = NULL; in boomerang_interrupt()
2481 vp->dirty_tx = dirty_tx; in boomerang_interrupt()
2482 if (vp->cur_tx - dirty_tx <= TX_RING_SIZE - 1) { in boomerang_interrupt()
2498 vp->deferred |= status; in boomerang_interrupt()
2499 iowrite16(SetStatusEnb | (~vp->deferred & vp->status_enable), in boomerang_interrupt()
2501 iowrite16(AckIntr | (vp->deferred & 0x7ff), ioaddr + EL3_CMD); in boomerang_interrupt()
2504 mod_timer(&vp->timer, jiffies + 1*HZ); in boomerang_interrupt()
2509 if (vp->cb_fn_base) /* The PCMCIA people are idiots. */ in boomerang_interrupt()
2510 iowrite32(0x8000, vp->cb_fn_base + 4); in boomerang_interrupt()
2519 vp->handling_irq = 0; in boomerang_interrupt()
2520 spin_unlock(&vp->lock); in boomerang_interrupt()
2526 struct vortex_private *vp = netdev_priv(dev); in vortex_rx() local
2527 void __iomem *ioaddr = vp->ioaddr; in vortex_rx()
2557 if (vp->bus_master && in vortex_rx()
2559 dma_addr_t dma = pci_map_single(VORTEX_PCI(vp), skb_put(skb, pkt_len), in vortex_rx()
2566 pci_unmap_single(VORTEX_PCI(vp), dma, pkt_len, PCI_DMA_FROMDEVICE); in vortex_rx()
2595 struct vortex_private *vp = netdev_priv(dev); in boomerang_rx() local
2596 int entry = vp->cur_rx % RX_RING_SIZE; in boomerang_rx()
2597 void __iomem *ioaddr = vp->ioaddr; in boomerang_rx()
2599 int rx_work_limit = vp->dirty_rx + RX_RING_SIZE - vp->cur_rx; in boomerang_rx()
2604 while ((rx_status = le32_to_cpu(vp->rx_ring[entry].status)) & RxDComplete){ in boomerang_rx()
2621 dma_addr_t dma = le32_to_cpu(vp->rx_ring[entry].addr); in boomerang_rx()
2632 pci_dma_sync_single_for_cpu(VORTEX_PCI(vp), dma, PKT_BUF_SZ, PCI_DMA_FROMDEVICE); in boomerang_rx()
2635 vp->rx_skbuff[entry]->data, in boomerang_rx()
2637 pci_dma_sync_single_for_device(VORTEX_PCI(vp), dma, PKT_BUF_SZ, PCI_DMA_FROMDEVICE); in boomerang_rx()
2638 vp->rx_copy++; in boomerang_rx()
2641 skb = vp->rx_skbuff[entry]; in boomerang_rx()
2642 vp->rx_skbuff[entry] = NULL; in boomerang_rx()
2644 pci_unmap_single(VORTEX_PCI(vp), dma, PKT_BUF_SZ, PCI_DMA_FROMDEVICE); in boomerang_rx()
2645 vp->rx_nocopy++; in boomerang_rx()
2654 vp->rx_csumhits++; in boomerang_rx()
2660 entry = (++vp->cur_rx) % RX_RING_SIZE; in boomerang_rx()
2663 for (; vp->cur_rx - vp->dirty_rx > 0; vp->dirty_rx++) { in boomerang_rx()
2665 entry = vp->dirty_rx % RX_RING_SIZE; in boomerang_rx()
2666 if (vp->rx_skbuff[entry] == NULL) { in boomerang_rx()
2675 if ((vp->cur_rx - vp->dirty_rx) == RX_RING_SIZE) in boomerang_rx()
2676 mod_timer(&vp->rx_oom_timer, RUN_AT(HZ * 1)); in boomerang_rx()
2680 …vp->rx_ring[entry].addr = cpu_to_le32(pci_map_single(VORTEX_PCI(vp), skb->data, PKT_BUF_SZ, PCI_DM… in boomerang_rx()
2681 vp->rx_skbuff[entry] = skb; in boomerang_rx()
2683 vp->rx_ring[entry].status = 0; /* Clear complete bit. */ in boomerang_rx()
2697 struct vortex_private *vp = netdev_priv(dev); in rx_oom_timer() local
2699 spin_lock_irq(&vp->lock); in rx_oom_timer()
2700 …if ((vp->cur_rx - vp->dirty_rx) == RX_RING_SIZE) /* This test is redundant, but makes me feel good… in rx_oom_timer()
2704 ((vp->cur_rx - vp->dirty_rx) != RX_RING_SIZE) ? "succeeded" : "retrying"); in rx_oom_timer()
2706 spin_unlock_irq(&vp->lock); in rx_oom_timer()
2712 struct vortex_private *vp = netdev_priv(dev); in vortex_down() local
2713 void __iomem *ioaddr = vp->ioaddr; in vortex_down()
2718 del_timer_sync(&vp->rx_oom_timer); in vortex_down()
2719 del_timer_sync(&vp->timer); in vortex_down()
2738 if (vp->full_bus_master_rx) in vortex_down()
2740 if (vp->full_bus_master_tx) in vortex_down()
2743 if (final_down && VORTEX_PCI(vp)) { in vortex_down()
2744 vp->pm_state_valid = 1; in vortex_down()
2745 pci_save_state(VORTEX_PCI(vp)); in vortex_down()
2753 struct vortex_private *vp = netdev_priv(dev); in vortex_close() local
2754 void __iomem *ioaddr = vp->ioaddr; in vortex_close()
2765 dev->name, vp->rx_nocopy, vp->rx_copy, vp->queued_packet, vp->rx_csumhits); in vortex_close()
2769 if (vp->rx_csumhits && in vortex_close()
2770 (vp->drv_flags & HAS_HWCKSM) == 0 && in vortex_close()
2771 (vp->card_idx >= MAX_UNITS || hw_checksums[vp->card_idx] == -1)) { in vortex_close()
2779 if (vp->full_bus_master_rx) { /* Free Boomerang bus master Rx buffers. */ in vortex_close()
2781 if (vp->rx_skbuff[i]) { in vortex_close()
2782 pci_unmap_single( VORTEX_PCI(vp), le32_to_cpu(vp->rx_ring[i].addr), in vortex_close()
2784 dev_kfree_skb(vp->rx_skbuff[i]); in vortex_close()
2785 vp->rx_skbuff[i] = NULL; in vortex_close()
2788 if (vp->full_bus_master_tx) { /* Free Boomerang bus master Tx buffers. */ in vortex_close()
2790 if (vp->tx_skbuff[i]) { in vortex_close()
2791 struct sk_buff *skb = vp->tx_skbuff[i]; in vortex_close()
2796 pci_unmap_single(VORTEX_PCI(vp), in vortex_close()
2797 le32_to_cpu(vp->tx_ring[i].frag[k].addr), in vortex_close()
2798 le32_to_cpu(vp->tx_ring[i].frag[k].length)&0xFFF, in vortex_close()
2801 pci_unmap_single(VORTEX_PCI(vp), le32_to_cpu(vp->tx_ring[i].addr), skb->len, PCI_DMA_TODEVICE); in vortex_close()
2804 vp->tx_skbuff[i] = NULL; in vortex_close()
2816 struct vortex_private *vp = netdev_priv(dev); in dump_tx_ring() local
2817 void __iomem *ioaddr = vp->ioaddr; in dump_tx_ring()
2819 if (vp->full_bus_master_tx) { in dump_tx_ring()
2824 vp->full_bus_master_tx, in dump_tx_ring()
2825 vp->dirty_tx, vp->dirty_tx % TX_RING_SIZE, in dump_tx_ring()
2826 vp->cur_tx, vp->cur_tx % TX_RING_SIZE); in dump_tx_ring()
2829 &vp->tx_ring[vp->dirty_tx % TX_RING_SIZE]); in dump_tx_ring()
2835 length = le32_to_cpu(vp->tx_ring[i].frag[0].length); in dump_tx_ring()
2837 length = le32_to_cpu(vp->tx_ring[i].length); in dump_tx_ring()
2840 i, &vp->tx_ring[i], length, in dump_tx_ring()
2841 le32_to_cpu(vp->tx_ring[i].status)); in dump_tx_ring()
2851 struct vortex_private *vp = netdev_priv(dev); in vortex_get_stats() local
2852 void __iomem *ioaddr = vp->ioaddr; in vortex_get_stats()
2856 spin_lock_irqsave (&vp->lock, flags); in vortex_get_stats()
2858 spin_unlock_irqrestore (&vp->lock, flags); in vortex_get_stats()
2872 struct vortex_private *vp = netdev_priv(dev); in update_stats() local
2876 dev->stats.tx_carrier_errors += window_read8(vp, 6, 0); in update_stats()
2877 dev->stats.tx_heartbeat_errors += window_read8(vp, 6, 1); in update_stats()
2878 dev->stats.tx_window_errors += window_read8(vp, 6, 4); in update_stats()
2879 dev->stats.rx_fifo_errors += window_read8(vp, 6, 5); in update_stats()
2880 dev->stats.tx_packets += window_read8(vp, 6, 6); in update_stats()
2881 dev->stats.tx_packets += (window_read8(vp, 6, 9) & in update_stats()
2883 /* Rx packets */ window_read8(vp, 6, 7); /* Must read to clear */ in update_stats()
2887 dev->stats.rx_bytes += window_read16(vp, 6, 10); in update_stats()
2888 dev->stats.tx_bytes += window_read16(vp, 6, 12); in update_stats()
2890 vp->xstats.tx_multiple_collisions += window_read8(vp, 6, 2); in update_stats()
2891 vp->xstats.tx_single_collisions += window_read8(vp, 6, 3); in update_stats()
2892 vp->xstats.tx_deferred += window_read8(vp, 6, 8); in update_stats()
2893 vp->xstats.rx_bad_ssd += window_read8(vp, 4, 12); in update_stats()
2895 dev->stats.collisions = vp->xstats.tx_multiple_collisions in update_stats()
2896 + vp->xstats.tx_single_collisions in update_stats()
2897 + vp->xstats.tx_max_collisions; in update_stats()
2900 u8 up = window_read8(vp, 4, 13); in update_stats()
2908 struct vortex_private *vp = netdev_priv(dev); in vortex_nway_reset() local
2910 return mii_nway_restart(&vp->mii); in vortex_nway_reset()
2915 struct vortex_private *vp = netdev_priv(dev); in vortex_get_settings() local
2917 return mii_ethtool_gset(&vp->mii, cmd); in vortex_get_settings()
2922 struct vortex_private *vp = netdev_priv(dev); in vortex_set_settings() local
2924 return mii_ethtool_sset(&vp->mii, cmd); in vortex_set_settings()
2950 struct vortex_private *vp = netdev_priv(dev); in vortex_get_ethtool_stats() local
2951 void __iomem *ioaddr = vp->ioaddr; in vortex_get_ethtool_stats()
2954 spin_lock_irqsave(&vp->lock, flags); in vortex_get_ethtool_stats()
2956 spin_unlock_irqrestore(&vp->lock, flags); in vortex_get_ethtool_stats()
2958 data[0] = vp->xstats.tx_deferred; in vortex_get_ethtool_stats()
2959 data[1] = vp->xstats.tx_max_collisions; in vortex_get_ethtool_stats()
2960 data[2] = vp->xstats.tx_multiple_collisions; in vortex_get_ethtool_stats()
2961 data[3] = vp->xstats.tx_single_collisions; in vortex_get_ethtool_stats()
2962 data[4] = vp->xstats.rx_bad_ssd; in vortex_get_ethtool_stats()
2981 struct vortex_private *vp = netdev_priv(dev); in vortex_get_drvinfo() local
2984 if (VORTEX_PCI(vp)) { in vortex_get_drvinfo()
2985 strlcpy(info->bus_info, pci_name(VORTEX_PCI(vp)), in vortex_get_drvinfo()
2988 if (VORTEX_EISA(vp)) in vortex_get_drvinfo()
2989 strlcpy(info->bus_info, dev_name(vp->gendev), in vortex_get_drvinfo()
2999 struct vortex_private *vp = netdev_priv(dev); in vortex_get_wol() local
3001 if (!VORTEX_PCI(vp)) in vortex_get_wol()
3007 if (vp->enable_wol) in vortex_get_wol()
3013 struct vortex_private *vp = netdev_priv(dev); in vortex_set_wol() local
3015 if (!VORTEX_PCI(vp)) in vortex_set_wol()
3022 vp->enable_wol = 1; in vortex_set_wol()
3024 vp->enable_wol = 0; in vortex_set_wol()
3053 struct vortex_private *vp = netdev_priv(dev); in vortex_ioctl() local
3056 if(VORTEX_PCI(vp)) in vortex_ioctl()
3057 state = VORTEX_PCI(vp)->current_state; in vortex_ioctl()
3062 pci_set_power_state(VORTEX_PCI(vp), PCI_D0); in vortex_ioctl()
3063 err = generic_mii_ioctl(&vp->mii, if_mii(rq), cmd, NULL); in vortex_ioctl()
3065 pci_set_power_state(VORTEX_PCI(vp), state); in vortex_ioctl()
3077 struct vortex_private *vp = netdev_priv(dev); in set_rx_mode() local
3078 void __iomem *ioaddr = vp->ioaddr; in set_rx_mode()
3103 struct vortex_private *vp = netdev_priv(dev); in set_8021q_mode() local
3106 if ((vp->drv_flags&IS_CYCLONE) || (vp->drv_flags&IS_TORNADO)) { in set_8021q_mode()
3114 window_write16(vp, max_pkt_size, 3, Wn3_MaxPktSize); in set_8021q_mode()
3118 window_write16(vp, VLAN_ETHER_TYPE, 7, Wn7_VlanEtherType); in set_8021q_mode()
3122 vp->large_frames = dev->mtu > 1500 || enable; in set_8021q_mode()
3124 mac_ctrl = window_read16(vp, 3, Wn3_MAC_Ctrl); in set_8021q_mode()
3125 if (vp->large_frames) in set_8021q_mode()
3129 window_write16(vp, mac_ctrl, 3, Wn3_MAC_Ctrl); in set_8021q_mode()
3149 static void mdio_delay(struct vortex_private *vp) in mdio_delay() argument
3151 window_read32(vp, 4, Wn4_PhysicalMgmt); in mdio_delay()
3163 static void mdio_sync(struct vortex_private *vp, int bits) in mdio_sync() argument
3167 window_write16(vp, MDIO_DATA_WRITE1, 4, Wn4_PhysicalMgmt); in mdio_sync()
3168 mdio_delay(vp); in mdio_sync()
3169 window_write16(vp, MDIO_DATA_WRITE1 | MDIO_SHIFT_CLK, in mdio_sync()
3171 mdio_delay(vp); in mdio_sync()
3178 struct vortex_private *vp = netdev_priv(dev); in mdio_read() local
3182 spin_lock_bh(&vp->mii_lock); in mdio_read()
3185 mdio_sync(vp, 32); in mdio_read()
3190 window_write16(vp, dataval, 4, Wn4_PhysicalMgmt); in mdio_read()
3191 mdio_delay(vp); in mdio_read()
3192 window_write16(vp, dataval | MDIO_SHIFT_CLK, in mdio_read()
3194 mdio_delay(vp); in mdio_read()
3198 window_write16(vp, MDIO_ENB_IN, 4, Wn4_PhysicalMgmt); in mdio_read()
3199 mdio_delay(vp); in mdio_read()
3201 ((window_read16(vp, 4, Wn4_PhysicalMgmt) & in mdio_read()
3203 window_write16(vp, MDIO_ENB_IN | MDIO_SHIFT_CLK, in mdio_read()
3205 mdio_delay(vp); in mdio_read()
3208 spin_unlock_bh(&vp->mii_lock); in mdio_read()
3215 struct vortex_private *vp = netdev_priv(dev); in mdio_write() local
3219 spin_lock_bh(&vp->mii_lock); in mdio_write()
3222 mdio_sync(vp, 32); in mdio_write()
3227 window_write16(vp, dataval, 4, Wn4_PhysicalMgmt); in mdio_write()
3228 mdio_delay(vp); in mdio_write()
3229 window_write16(vp, dataval | MDIO_SHIFT_CLK, in mdio_write()
3231 mdio_delay(vp); in mdio_write()
3235 window_write16(vp, MDIO_ENB_IN, 4, Wn4_PhysicalMgmt); in mdio_write()
3236 mdio_delay(vp); in mdio_write()
3237 window_write16(vp, MDIO_ENB_IN | MDIO_SHIFT_CLK, in mdio_write()
3239 mdio_delay(vp); in mdio_write()
3242 spin_unlock_bh(&vp->mii_lock); in mdio_write()
3249 struct vortex_private *vp = netdev_priv(dev); in acpi_set_WOL() local
3250 void __iomem *ioaddr = vp->ioaddr; in acpi_set_WOL()
3252 device_set_wakeup_enable(vp->gendev, vp->enable_wol); in acpi_set_WOL()
3254 if (vp->enable_wol) { in acpi_set_WOL()
3256 window_write16(vp, 2, 7, 0x0c); in acpi_set_WOL()
3261 if (pci_enable_wake(VORTEX_PCI(vp), PCI_D3hot, 1)) { in acpi_set_WOL()
3262 pr_info("%s: WOL not supported.\n", pci_name(VORTEX_PCI(vp))); in acpi_set_WOL()
3264 vp->enable_wol = 0; in acpi_set_WOL()
3268 if (VORTEX_PCI(vp)->current_state < PCI_D3hot) in acpi_set_WOL()
3272 pci_set_power_state(VORTEX_PCI(vp), PCI_D3hot); in acpi_set_WOL()
3280 struct vortex_private *vp; in vortex_remove_one() local
3287 vp = netdev_priv(dev); in vortex_remove_one()
3289 if (vp->cb_fn_base) in vortex_remove_one()
3290 pci_iounmap(pdev, vp->cb_fn_base); in vortex_remove_one()
3295 if (vp->pm_state_valid) in vortex_remove_one()
3300 iowrite16(TotalReset | ((vp->drv_flags & EEPROM_RESET) ? 0x04 : 0x14), in vortex_remove_one()
3301 vp->ioaddr + EL3_CMD); in vortex_remove_one()
3303 pci_iounmap(pdev, vp->ioaddr); in vortex_remove_one()
3308 vp->rx_ring, in vortex_remove_one()
3309 vp->rx_ring_dma); in vortex_remove_one()