Lines Matching full:ap
91 #define ACE_IS_TIGON_I(ap) 0 argument
92 #define ACE_TX_RING_ENTRIES(ap) MAX_TX_RING_ENTRIES argument
94 #define ACE_IS_TIGON_I(ap) (ap->version == 1) argument
95 #define ACE_TX_RING_ENTRIES(ap) ap->tx_ring_entries argument
462 struct ace_private *ap; in acenic_probe_one() local
471 ap = netdev_priv(dev); in acenic_probe_one()
472 ap->pdev = pdev; in acenic_probe_one()
473 ap->name = pci_name(pdev); in acenic_probe_one()
499 pci_read_config_word(pdev, PCI_COMMAND, &ap->pci_command); in acenic_probe_one()
502 if (!(ap->pci_command & PCI_COMMAND_MEMORY)) { in acenic_probe_one()
505 ap->name); in acenic_probe_one()
506 ap->pci_command = ap->pci_command | PCI_COMMAND_MEMORY; in acenic_probe_one()
507 pci_write_config_word(ap->pdev, PCI_COMMAND, in acenic_probe_one()
508 ap->pci_command); in acenic_probe_one()
512 pci_read_config_byte(pdev, PCI_LATENCY_TIMER, &ap->pci_latency); in acenic_probe_one()
513 if (ap->pci_latency <= 0x40) { in acenic_probe_one()
514 ap->pci_latency = 0x40; in acenic_probe_one()
515 pci_write_config_byte(pdev, PCI_LATENCY_TIMER, ap->pci_latency); in acenic_probe_one()
524 ap->regs = ioremap(dev->base_addr, 0x4000); in acenic_probe_one()
525 if (!ap->regs) { in acenic_probe_one()
528 ap->name, boards_found); in acenic_probe_one()
536 ap->name); in acenic_probe_one()
539 ap->name); in acenic_probe_one()
543 printk(KERN_INFO "%s: 3Com 3C985 ", ap->name); in acenic_probe_one()
546 printk(KERN_INFO "%s: NetGear GA620 ", ap->name); in acenic_probe_one()
551 ap->name); in acenic_probe_one()
556 printk(KERN_INFO "%s: SGI AceNIC ", ap->name); in acenic_probe_one()
559 printk(KERN_INFO "%s: Unknown AceNIC ", ap->name); in acenic_probe_one()
567 if ((readl(&ap->regs->HostCtrl) >> 28) == 4) { in acenic_probe_one()
579 ap->board_idx = BOARD_IDX_OVERFLOW; in acenic_probe_one()
581 ap->board_idx = boards_found; in acenic_probe_one()
583 ap->board_idx = BOARD_IDX_STATIC; in acenic_probe_one()
593 ap->name = dev->name; in acenic_probe_one()
595 if (ap->pci_using_dac) in acenic_probe_one()
613 struct ace_private *ap = netdev_priv(dev); in acenic_remove_one() local
614 struct ace_regs __iomem *regs = ap->regs; in acenic_remove_one()
620 if (ap->version >= 2) in acenic_remove_one()
641 struct sk_buff *skb = ap->skb->rx_std_skbuff[i].skb; in acenic_remove_one()
647 ringp = &ap->skb->rx_std_skbuff[i]; in acenic_remove_one()
649 pci_unmap_page(ap->pdev, mapping, in acenic_remove_one()
653 ap->rx_std_ring[i].size = 0; in acenic_remove_one()
654 ap->skb->rx_std_skbuff[i].skb = NULL; in acenic_remove_one()
659 if (ap->version >= 2) { in acenic_remove_one()
661 struct sk_buff *skb = ap->skb->rx_mini_skbuff[i].skb; in acenic_remove_one()
667 ringp = &ap->skb->rx_mini_skbuff[i]; in acenic_remove_one()
669 pci_unmap_page(ap->pdev, mapping, in acenic_remove_one()
673 ap->rx_mini_ring[i].size = 0; in acenic_remove_one()
674 ap->skb->rx_mini_skbuff[i].skb = NULL; in acenic_remove_one()
681 struct sk_buff *skb = ap->skb->rx_jumbo_skbuff[i].skb; in acenic_remove_one()
686 ringp = &ap->skb->rx_jumbo_skbuff[i]; in acenic_remove_one()
688 pci_unmap_page(ap->pdev, mapping, in acenic_remove_one()
692 ap->rx_jumbo_ring[i].size = 0; in acenic_remove_one()
693 ap->skb->rx_jumbo_skbuff[i].skb = NULL; in acenic_remove_one()
711 struct ace_private *ap = netdev_priv(dev); in ace_free_descriptors() local
714 if (ap->rx_std_ring != NULL) { in ace_free_descriptors()
720 pci_free_consistent(ap->pdev, size, ap->rx_std_ring, in ace_free_descriptors()
721 ap->rx_ring_base_dma); in ace_free_descriptors()
722 ap->rx_std_ring = NULL; in ace_free_descriptors()
723 ap->rx_jumbo_ring = NULL; in ace_free_descriptors()
724 ap->rx_mini_ring = NULL; in ace_free_descriptors()
725 ap->rx_return_ring = NULL; in ace_free_descriptors()
727 if (ap->evt_ring != NULL) { in ace_free_descriptors()
729 pci_free_consistent(ap->pdev, size, ap->evt_ring, in ace_free_descriptors()
730 ap->evt_ring_dma); in ace_free_descriptors()
731 ap->evt_ring = NULL; in ace_free_descriptors()
733 if (ap->tx_ring != NULL && !ACE_IS_TIGON_I(ap)) { in ace_free_descriptors()
735 pci_free_consistent(ap->pdev, size, ap->tx_ring, in ace_free_descriptors()
736 ap->tx_ring_dma); in ace_free_descriptors()
738 ap->tx_ring = NULL; in ace_free_descriptors()
740 if (ap->evt_prd != NULL) { in ace_free_descriptors()
741 pci_free_consistent(ap->pdev, sizeof(u32), in ace_free_descriptors()
742 (void *)ap->evt_prd, ap->evt_prd_dma); in ace_free_descriptors()
743 ap->evt_prd = NULL; in ace_free_descriptors()
745 if (ap->rx_ret_prd != NULL) { in ace_free_descriptors()
746 pci_free_consistent(ap->pdev, sizeof(u32), in ace_free_descriptors()
747 (void *)ap->rx_ret_prd, in ace_free_descriptors()
748 ap->rx_ret_prd_dma); in ace_free_descriptors()
749 ap->rx_ret_prd = NULL; in ace_free_descriptors()
751 if (ap->tx_csm != NULL) { in ace_free_descriptors()
752 pci_free_consistent(ap->pdev, sizeof(u32), in ace_free_descriptors()
753 (void *)ap->tx_csm, ap->tx_csm_dma); in ace_free_descriptors()
754 ap->tx_csm = NULL; in ace_free_descriptors()
761 struct ace_private *ap = netdev_priv(dev); in ace_allocate_descriptors() local
770 ap->rx_std_ring = pci_alloc_consistent(ap->pdev, size, in ace_allocate_descriptors()
771 &ap->rx_ring_base_dma); in ace_allocate_descriptors()
772 if (ap->rx_std_ring == NULL) in ace_allocate_descriptors()
775 ap->rx_jumbo_ring = ap->rx_std_ring + RX_STD_RING_ENTRIES; in ace_allocate_descriptors()
776 ap->rx_mini_ring = ap->rx_jumbo_ring + RX_JUMBO_RING_ENTRIES; in ace_allocate_descriptors()
777 ap->rx_return_ring = ap->rx_mini_ring + RX_MINI_RING_ENTRIES; in ace_allocate_descriptors()
781 ap->evt_ring = pci_alloc_consistent(ap->pdev, size, &ap->evt_ring_dma); in ace_allocate_descriptors()
783 if (ap->evt_ring == NULL) in ace_allocate_descriptors()
790 if (!ACE_IS_TIGON_I(ap)) { in ace_allocate_descriptors()
793 ap->tx_ring = pci_alloc_consistent(ap->pdev, size, in ace_allocate_descriptors()
794 &ap->tx_ring_dma); in ace_allocate_descriptors()
796 if (ap->tx_ring == NULL) in ace_allocate_descriptors()
800 ap->evt_prd = pci_alloc_consistent(ap->pdev, sizeof(u32), in ace_allocate_descriptors()
801 &ap->evt_prd_dma); in ace_allocate_descriptors()
802 if (ap->evt_prd == NULL) in ace_allocate_descriptors()
805 ap->rx_ret_prd = pci_alloc_consistent(ap->pdev, sizeof(u32), in ace_allocate_descriptors()
806 &ap->rx_ret_prd_dma); in ace_allocate_descriptors()
807 if (ap->rx_ret_prd == NULL) in ace_allocate_descriptors()
810 ap->tx_csm = pci_alloc_consistent(ap->pdev, sizeof(u32), in ace_allocate_descriptors()
811 &ap->tx_csm_dma); in ace_allocate_descriptors()
812 if (ap->tx_csm == NULL) in ace_allocate_descriptors()
830 struct ace_private *ap; in ace_init_cleanup() local
832 ap = netdev_priv(dev); in ace_init_cleanup()
836 if (ap->info) in ace_init_cleanup()
837 pci_free_consistent(ap->pdev, sizeof(struct ace_info), in ace_init_cleanup()
838 ap->info, ap->info_dma); in ace_init_cleanup()
839 kfree(ap->skb); in ace_init_cleanup()
840 kfree(ap->trace_buf); in ace_init_cleanup()
845 iounmap(ap->regs); in ace_init_cleanup()
867 struct ace_private *ap; in ace_init() local
878 ap = netdev_priv(dev); in ace_init()
879 regs = ap->regs; in ace_init()
881 board_idx = ap->board_idx; in ace_init()
922 tig_ver, ap->firmware_major, ap->firmware_minor, in ace_init()
923 ap->firmware_fix); in ace_init()
925 ap->version = 1; in ace_init()
926 ap->tx_ring_entries = TIGON_I_TX_RING_ENTRIES; in ace_init()
931 tig_ver, ap->firmware_major, ap->firmware_minor, in ace_init()
932 ap->firmware_fix); in ace_init()
942 ap->version = 2; in ace_init()
943 ap->tx_ring_entries = MAX_TX_RING_ENTRIES; in ace_init()
1011 pdev = ap->pdev; in ace_init()
1031 ap->pci_latency); in ace_init()
1044 if (ap->version >= 2) { in ace_init()
1051 if (ap->pci_command & PCI_COMMAND_INVALIDATE) { in ace_init()
1052 ap->pci_command &= ~PCI_COMMAND_INVALIDATE; in ace_init()
1054 ap->pci_command); in ace_init()
1058 } else if (ap->pci_command & PCI_COMMAND_INVALIDATE) { in ace_init()
1079 ap->pci_command &= ~PCI_COMMAND_INVALIDATE; in ace_init()
1081 ap->pci_command); in ace_init()
1126 if (!(ap->pci_command & PCI_COMMAND_FAST_BACK)) { in ace_init()
1128 ap->pci_command |= PCI_COMMAND_FAST_BACK; in ace_init()
1129 pci_write_config_word(pdev, PCI_COMMAND, ap->pci_command); in ace_init()
1137 ap->pci_using_dac = 1; in ace_init()
1139 ap->pci_using_dac = 0; in ace_init()
1150 if (!(info = pci_alloc_consistent(ap->pdev, sizeof(struct ace_info), in ace_init()
1151 &ap->info_dma))) { in ace_init()
1155 ap->info = info; in ace_init()
1160 if (!(ap->skb = kmalloc(sizeof(struct ace_skb), GFP_KERNEL))) { in ace_init()
1175 spin_lock_init(&ap->debug_lock); in ace_init()
1176 ap->last_tx = ACE_TX_RING_ENTRIES(ap) - 1; in ace_init()
1177 ap->last_std_rx = 0; in ace_init()
1178 ap->last_mini_rx = 0; in ace_init()
1181 memset(ap->info, 0, sizeof(struct ace_info)); in ace_init()
1182 memset(ap->skb, 0, sizeof(struct ace_skb)); in ace_init()
1188 ap->fw_running = 0; in ace_init()
1190 tmp_ptr = ap->info_dma; in ace_init()
1194 memset(ap->evt_ring, 0, EVT_RING_ENTRIES * sizeof(struct event)); in ace_init()
1196 set_aceaddr(&info->evt_ctrl.rngptr, ap->evt_ring_dma); in ace_init()
1199 *(ap->evt_prd) = 0; in ace_init()
1201 set_aceaddr(&info->evt_prd_ptr, ap->evt_prd_dma); in ace_init()
1214 tmp_ptr = ap->info_dma; in ace_init()
1218 set_aceaddr(&info->rx_std_ctrl.rngptr, ap->rx_ring_base_dma); in ace_init()
1223 memset(ap->rx_std_ring, 0, in ace_init()
1227 ap->rx_std_ring[i].flags = BD_FLG_TCP_UDP_SUM; in ace_init()
1229 ap->rx_std_skbprd = 0; in ace_init()
1230 atomic_set(&ap->cur_rx_bufs, 0); in ace_init()
1233 (ap->rx_ring_base_dma + in ace_init()
1239 memset(ap->rx_jumbo_ring, 0, in ace_init()
1243 ap->rx_jumbo_ring[i].flags = BD_FLG_TCP_UDP_SUM | BD_FLG_JUMBO; in ace_init()
1245 ap->rx_jumbo_skbprd = 0; in ace_init()
1246 atomic_set(&ap->cur_jumbo_bufs, 0); in ace_init()
1248 memset(ap->rx_mini_ring, 0, in ace_init()
1251 if (ap->version >= 2) { in ace_init()
1253 (ap->rx_ring_base_dma + in ace_init()
1262 ap->rx_mini_ring[i].flags = in ace_init()
1270 ap->rx_mini_skbprd = 0; in ace_init()
1271 atomic_set(&ap->cur_mini_bufs, 0); in ace_init()
1274 (ap->rx_ring_base_dma + in ace_init()
1282 memset(ap->rx_return_ring, 0, in ace_init()
1285 set_aceaddr(&info->rx_ret_prd_ptr, ap->rx_ret_prd_dma); in ace_init()
1286 *(ap->rx_ret_prd) = 0; in ace_init()
1290 if (ACE_IS_TIGON_I(ap)) { in ace_init()
1291 ap->tx_ring = (__force struct tx_desc *) regs->Window; in ace_init()
1294 writel(0, (__force void __iomem *)ap->tx_ring + i * 4); in ace_init()
1298 memset(ap->tx_ring, 0, in ace_init()
1301 set_aceaddr(&info->tx_ctrl.rngptr, ap->tx_ring_dma); in ace_init()
1304 info->tx_ctrl.max_len = ACE_TX_RING_ENTRIES(ap); in ace_init()
1310 if (!ACE_IS_TIGON_I(ap)) in ace_init()
1317 set_aceaddr(&info->tx_csm_ptr, ap->tx_csm_dma); in ace_init()
1348 ap->name, ACE_MAX_MOD_PARMS); in ace_init()
1374 if(ap->version >= 2) in ace_init()
1387 ap->name); in ace_init()
1400 "forcing auto negotiation\n", ap->name); in ace_init()
1408 "negotiation\n", ap->name); in ace_init()
1411 if ((option & 0x400) && (ap->version >= 2)) { in ace_init()
1413 ap->name); in ace_init()
1418 ap->link = tmp; in ace_init()
1420 if (ap->version >= 2) in ace_init()
1423 writel(ap->firmware_start, ®s->Pc); in ace_init()
1433 ap->cur_rx = 0; in ace_init()
1434 ap->tx_prd = *(ap->tx_csm) = ap->tx_ret_csm = 0; in ace_init()
1437 ace_set_txprd(regs, ap, 0); in ace_init()
1458 while (time_before(jiffies, myjif) && !ap->fw_running) in ace_init()
1461 if (!ap->fw_running) { in ace_init()
1462 printk(KERN_ERR "%s: Firmware NOT running!\n", ap->name); in ace_init()
1464 ace_dump_trace(ap); in ace_init()
1477 if (ap->version >= 2) in ace_init()
1491 if (!test_and_set_bit(0, &ap->std_refill_busy)) in ace_init()
1495 ap->name); in ace_init()
1496 if (ap->version >= 2) { in ace_init()
1497 if (!test_and_set_bit(0, &ap->mini_refill_busy)) in ace_init()
1501 "the RX mini ring\n", ap->name); in ace_init()
1513 struct ace_private *ap = netdev_priv(dev); in ace_set_rxtx_parms() local
1514 struct ace_regs __iomem *regs = ap->regs; in ace_set_rxtx_parms()
1515 int board_idx = ap->board_idx; in ace_set_rxtx_parms()
1552 struct ace_private *ap = netdev_priv(dev); in ace_watchdog() local
1553 struct ace_regs __iomem *regs = ap->regs; in ace_watchdog()
1560 if (*ap->tx_csm != ap->tx_ret_csm) { in ace_watchdog()
1577 struct ace_private *ap = netdev_priv(dev); in ace_tasklet() local
1580 cur_size = atomic_read(&ap->cur_rx_bufs); in ace_tasklet()
1582 !test_and_set_bit(0, &ap->std_refill_busy)) { in ace_tasklet()
1589 if (ap->version >= 2) { in ace_tasklet()
1590 cur_size = atomic_read(&ap->cur_mini_bufs); in ace_tasklet()
1592 !test_and_set_bit(0, &ap->mini_refill_busy)) { in ace_tasklet()
1601 cur_size = atomic_read(&ap->cur_jumbo_bufs); in ace_tasklet()
1602 if (ap->jumbo && (cur_size < RX_LOW_JUMBO_THRES) && in ace_tasklet()
1603 !test_and_set_bit(0, &ap->jumbo_refill_busy)) { in ace_tasklet()
1609 ap->tasklet_pending = 0; in ace_tasklet()
1616 static void ace_dump_trace(struct ace_private *ap) in ace_dump_trace() argument
1619 if (!ap->trace_buf) in ace_dump_trace()
1620 if (!(ap->trace_buf = kmalloc(ACE_TRACE_SIZE, GFP_KERNEL))) in ace_dump_trace()
1635 struct ace_private *ap = netdev_priv(dev); in ace_load_std_rx_ring() local
1636 struct ace_regs __iomem *regs = ap->regs; in ace_load_std_rx_ring()
1640 prefetchw(&ap->cur_rx_bufs); in ace_load_std_rx_ring()
1642 idx = ap->rx_std_skbprd; in ace_load_std_rx_ring()
1653 mapping = pci_map_page(ap->pdev, virt_to_page(skb->data), in ace_load_std_rx_ring()
1657 ap->skb->rx_std_skbuff[idx].skb = skb; in ace_load_std_rx_ring()
1658 dma_unmap_addr_set(&ap->skb->rx_std_skbuff[idx], in ace_load_std_rx_ring()
1661 rd = &ap->rx_std_ring[idx]; in ace_load_std_rx_ring()
1671 atomic_add(i, &ap->cur_rx_bufs); in ace_load_std_rx_ring()
1672 ap->rx_std_skbprd = idx; in ace_load_std_rx_ring()
1674 if (ACE_IS_TIGON_I(ap)) { in ace_load_std_rx_ring()
1678 cmd.idx = ap->rx_std_skbprd; in ace_load_std_rx_ring()
1686 clear_bit(0, &ap->std_refill_busy); in ace_load_std_rx_ring()
1698 struct ace_private *ap = netdev_priv(dev); in ace_load_mini_rx_ring() local
1699 struct ace_regs __iomem *regs = ap->regs; in ace_load_mini_rx_ring()
1702 prefetchw(&ap->cur_mini_bufs); in ace_load_mini_rx_ring()
1704 idx = ap->rx_mini_skbprd; in ace_load_mini_rx_ring()
1714 mapping = pci_map_page(ap->pdev, virt_to_page(skb->data), in ace_load_mini_rx_ring()
1718 ap->skb->rx_mini_skbuff[idx].skb = skb; in ace_load_mini_rx_ring()
1719 dma_unmap_addr_set(&ap->skb->rx_mini_skbuff[idx], in ace_load_mini_rx_ring()
1722 rd = &ap->rx_mini_ring[idx]; in ace_load_mini_rx_ring()
1732 atomic_add(i, &ap->cur_mini_bufs); in ace_load_mini_rx_ring()
1734 ap->rx_mini_skbprd = idx; in ace_load_mini_rx_ring()
1740 clear_bit(0, &ap->mini_refill_busy); in ace_load_mini_rx_ring()
1755 struct ace_private *ap = netdev_priv(dev); in ace_load_jumbo_rx_ring() local
1756 struct ace_regs __iomem *regs = ap->regs; in ace_load_jumbo_rx_ring()
1759 idx = ap->rx_jumbo_skbprd; in ace_load_jumbo_rx_ring()
1770 mapping = pci_map_page(ap->pdev, virt_to_page(skb->data), in ace_load_jumbo_rx_ring()
1774 ap->skb->rx_jumbo_skbuff[idx].skb = skb; in ace_load_jumbo_rx_ring()
1775 dma_unmap_addr_set(&ap->skb->rx_jumbo_skbuff[idx], in ace_load_jumbo_rx_ring()
1778 rd = &ap->rx_jumbo_ring[idx]; in ace_load_jumbo_rx_ring()
1788 atomic_add(i, &ap->cur_jumbo_bufs); in ace_load_jumbo_rx_ring()
1789 ap->rx_jumbo_skbprd = idx; in ace_load_jumbo_rx_ring()
1791 if (ACE_IS_TIGON_I(ap)) { in ace_load_jumbo_rx_ring()
1795 cmd.idx = ap->rx_jumbo_skbprd; in ace_load_jumbo_rx_ring()
1803 clear_bit(0, &ap->jumbo_refill_busy); in ace_load_jumbo_rx_ring()
1820 struct ace_private *ap; in ace_handle_event() local
1822 ap = netdev_priv(dev); in ace_handle_event()
1825 switch (ap->evt_ring[evtcsm].evt) { in ace_handle_event()
1828 ap->name); in ace_handle_event()
1829 ap->fw_running = 1; in ace_handle_event()
1836 u16 code = ap->evt_ring[evtcsm].code; in ace_handle_event()
1840 u32 state = readl(&ap->regs->GigLnkState); in ace_handle_event()
1843 ap->name, in ace_handle_event()
1851 ap->name); in ace_handle_event()
1855 "UP\n", ap->name); in ace_handle_event()
1859 "state %02x\n", ap->name, code); in ace_handle_event()
1864 switch(ap->evt_ring[evtcsm].code) { in ace_handle_event()
1867 ap->name); in ace_handle_event()
1871 "error\n", ap->name); in ace_handle_event()
1875 ap->name); in ace_handle_event()
1879 ap->name, ap->evt_ring[evtcsm].code); in ace_handle_event()
1886 if (ap->skb->rx_jumbo_skbuff[i].skb) { in ace_handle_event()
1887 ap->rx_jumbo_ring[i].size = 0; in ace_handle_event()
1888 set_aceaddr(&ap->rx_jumbo_ring[i].addr, 0); in ace_handle_event()
1889 dev_kfree_skb(ap->skb->rx_jumbo_skbuff[i].skb); in ace_handle_event()
1890 ap->skb->rx_jumbo_skbuff[i].skb = NULL; in ace_handle_event()
1894 if (ACE_IS_TIGON_I(ap)) { in ace_handle_event()
1899 ace_issue_cmd(ap->regs, &cmd); in ace_handle_event()
1901 writel(0, &((ap->regs)->RxJumboPrd)); in ace_handle_event()
1905 ap->jumbo = 0; in ace_handle_event()
1906 ap->rx_jumbo_skbprd = 0; in ace_handle_event()
1908 ap->name); in ace_handle_event()
1909 clear_bit(0, &ap->jumbo_refill_busy); in ace_handle_event()
1914 ap->name, ap->evt_ring[evtcsm].evt); in ace_handle_event()
1925 struct ace_private *ap = netdev_priv(dev); in ace_rx_int() local
1931 prefetchw(&ap->cur_rx_bufs); in ace_rx_int()
1932 prefetchw(&ap->cur_mini_bufs); in ace_rx_int()
1947 retdesc = &ap->rx_return_ring[idx]; in ace_rx_int()
1961 rip = &ap->skb->rx_std_skbuff[skbidx]; in ace_rx_int()
1966 rip = &ap->skb->rx_jumbo_skbuff[skbidx]; in ace_rx_int()
1968 atomic_dec(&ap->cur_jumbo_bufs); in ace_rx_int()
1971 rip = &ap->skb->rx_mini_skbuff[skbidx]; in ace_rx_int()
1984 pci_unmap_page(ap->pdev, in ace_rx_int()
2019 atomic_sub(std_count, &ap->cur_rx_bufs); in ace_rx_int()
2020 if (!ACE_IS_TIGON_I(ap)) in ace_rx_int()
2021 atomic_sub(mini_count, &ap->cur_mini_bufs); in ace_rx_int()
2028 if (ACE_IS_TIGON_I(ap)) { in ace_rx_int()
2029 writel(idx, &ap->regs->RxRetCsm); in ace_rx_int()
2031 ap->cur_rx = idx; in ace_rx_int()
2043 struct ace_private *ap = netdev_priv(dev); in ace_tx_int() local
2049 info = ap->skb->tx_skbuff + idx; in ace_tx_int()
2053 pci_unmap_page(ap->pdev, dma_unmap_addr(info, mapping), in ace_tx_int()
2066 idx = (idx + 1) % ACE_TX_RING_ENTRIES(ap); in ace_tx_int()
2073 ap->tx_ret_csm = txcsm; in ace_tx_int()
2108 struct ace_private *ap = netdev_priv(dev); in ace_interrupt() local
2109 struct ace_regs __iomem *regs = ap->regs; in ace_interrupt()
2124 * which happened _after_ rxretprd = *ap->rx_ret_prd; but before in ace_interrupt()
2140 rxretprd = *ap->rx_ret_prd; in ace_interrupt()
2141 rxretcsm = ap->cur_rx; in ace_interrupt()
2146 txcsm = *ap->tx_csm; in ace_interrupt()
2147 idx = ap->tx_ret_csm; in ace_interrupt()
2157 if (!tx_ring_full(ap, txcsm, ap->tx_prd)) in ace_interrupt()
2162 evtprd = *ap->evt_prd; in ace_interrupt()
2177 cur_size = atomic_read(&ap->cur_rx_bufs); in ace_interrupt()
2180 !test_and_set_bit(0, &ap->std_refill_busy)) { in ace_interrupt()
2190 if (!ACE_IS_TIGON_I(ap)) { in ace_interrupt()
2191 cur_size = atomic_read(&ap->cur_mini_bufs); in ace_interrupt()
2195 &ap->mini_refill_busy)) { in ace_interrupt()
2207 if (ap->jumbo) { in ace_interrupt()
2208 cur_size = atomic_read(&ap->cur_jumbo_bufs); in ace_interrupt()
2212 &ap->jumbo_refill_busy)){ in ace_interrupt()
2223 if (run_tasklet && !ap->tasklet_pending) { in ace_interrupt()
2224 ap->tasklet_pending = 1; in ace_interrupt()
2225 tasklet_schedule(&ap->ace_tasklet); in ace_interrupt()
2234 struct ace_private *ap = netdev_priv(dev); in ace_open() local
2235 struct ace_regs __iomem *regs = ap->regs; in ace_open()
2238 if (!(ap->fw_running)) { in ace_open()
2255 if (ap->jumbo && in ace_open()
2256 !test_and_set_bit(0, &ap->jumbo_refill_busy)) in ace_open()
2265 ap->promisc = 1; in ace_open()
2267 ap->promisc = 0; in ace_open()
2268 ap->mcast_all = 0; in ace_open()
2282 tasklet_init(&ap->ace_tasklet, ace_tasklet, (unsigned long)dev); in ace_open()
2289 struct ace_private *ap = netdev_priv(dev); in ace_close() local
2290 struct ace_regs __iomem *regs = ap->regs; in ace_close()
2303 if (ap->promisc) { in ace_close()
2308 ap->promisc = 0; in ace_close()
2316 tasklet_kill(&ap->ace_tasklet); in ace_close()
2326 for (i = 0; i < ACE_TX_RING_ENTRIES(ap); i++) { in ace_close()
2330 info = ap->skb->tx_skbuff + i; in ace_close()
2334 if (ACE_IS_TIGON_I(ap)) { in ace_close()
2337 tx = (__force struct tx_desc __iomem *) &ap->tx_ring[i]; in ace_close()
2342 memset(ap->tx_ring + i, 0, in ace_close()
2344 pci_unmap_page(ap->pdev, dma_unmap_addr(info, mapping), in ace_close()
2355 if (ap->jumbo) { in ace_close()
2370 ace_map_tx_skb(struct ace_private *ap, struct sk_buff *skb, in ace_map_tx_skb() argument
2376 mapping = pci_map_page(ap->pdev, virt_to_page(skb->data), in ace_map_tx_skb()
2380 info = ap->skb->tx_skbuff + idx; in ace_map_tx_skb()
2389 ace_load_tx_bd(struct ace_private *ap, struct tx_desc *desc, u64 addr, in ace_load_tx_bd() argument
2396 if (ACE_IS_TIGON_I(ap)) { in ace_load_tx_bd()
2414 struct ace_private *ap = netdev_priv(dev); in ace_start_xmit() local
2415 struct ace_regs __iomem *regs = ap->regs; in ace_start_xmit()
2421 idx = ap->tx_prd; in ace_start_xmit()
2423 if (tx_ring_full(ap, ap->tx_ret_csm, idx)) in ace_start_xmit()
2430 mapping = ace_map_tx_skb(ap, skb, skb, idx); in ace_start_xmit()
2438 desc = ap->tx_ring + idx; in ace_start_xmit()
2439 idx = (idx + 1) % ACE_TX_RING_ENTRIES(ap); in ace_start_xmit()
2442 if (tx_ring_full(ap, ap->tx_ret_csm, idx)) in ace_start_xmit()
2445 ace_load_tx_bd(ap, desc, mapping, flagsize, vlan_tag); in ace_start_xmit()
2451 mapping = ace_map_tx_skb(ap, skb, NULL, idx); in ace_start_xmit()
2460 ace_load_tx_bd(ap, ap->tx_ring + idx, mapping, flagsize, vlan_tag); in ace_start_xmit()
2462 idx = (idx + 1) % ACE_TX_RING_ENTRIES(ap); in ace_start_xmit()
2469 info = ap->skb->tx_skbuff + idx; in ace_start_xmit()
2470 desc = ap->tx_ring + idx; in ace_start_xmit()
2472 mapping = skb_frag_dma_map(&ap->pdev->dev, frag, 0, in ace_start_xmit()
2479 idx = (idx + 1) % ACE_TX_RING_ENTRIES(ap); in ace_start_xmit()
2483 if (tx_ring_full(ap, ap->tx_ret_csm, idx)) in ace_start_xmit()
2496 ace_load_tx_bd(ap, desc, mapping, flagsize, vlan_tag); in ace_start_xmit()
2501 ap->tx_prd = idx; in ace_start_xmit()
2502 ace_set_txprd(regs, ap, idx); in ace_start_xmit()
2513 if (!tx_ring_full(ap, ap->tx_ret_csm, idx)) in ace_start_xmit()
2550 struct ace_private *ap = netdev_priv(dev); in ace_change_mtu() local
2551 struct ace_regs __iomem *regs = ap->regs; in ace_change_mtu()
2557 if (!(ap->jumbo)) { in ace_change_mtu()
2560 ap->jumbo = 1; in ace_change_mtu()
2561 if (!test_and_set_bit(0, &ap->jumbo_refill_busy)) in ace_change_mtu()
2566 while (test_and_set_bit(0, &ap->jumbo_refill_busy)); in ace_change_mtu()
2569 if (ap->jumbo) { in ace_change_mtu()
2585 struct ace_private *ap = netdev_priv(dev); in ace_get_link_ksettings() local
2586 struct ace_regs __iomem *regs = ap->regs; in ace_get_link_ksettings()
2640 struct ace_private *ap = netdev_priv(dev); in ace_set_link_ksettings() local
2641 struct ace_regs __iomem *regs = ap->regs; in ace_set_link_ksettings()
2659 if (!ACE_IS_TIGON_I(ap)) in ace_set_link_ksettings()
2681 if (link != ap->link) { in ace_set_link_ksettings()
2686 ap->link = link; in ace_set_link_ksettings()
2688 if (!ACE_IS_TIGON_I(ap)) in ace_set_link_ksettings()
2703 struct ace_private *ap = netdev_priv(dev); in ace_get_drvinfo() local
2707 ap->firmware_major, ap->firmware_minor, in ace_get_drvinfo()
2708 ap->firmware_fix); in ace_get_drvinfo()
2710 if (ap->pdev) in ace_get_drvinfo()
2711 strlcpy(info->bus_info, pci_name(ap->pdev), in ace_get_drvinfo()
2721 struct ace_private *ap = netdev_priv(dev); in ace_set_mac_addr() local
2722 struct ace_regs __iomem *regs = ap->regs; in ace_set_mac_addr()
2749 struct ace_private *ap = netdev_priv(dev); in ace_set_multicast_list() local
2750 struct ace_regs __iomem *regs = ap->regs; in ace_set_multicast_list()
2753 if ((dev->flags & IFF_ALLMULTI) && !(ap->mcast_all)) { in ace_set_multicast_list()
2758 ap->mcast_all = 1; in ace_set_multicast_list()
2759 } else if (ap->mcast_all) { in ace_set_multicast_list()
2764 ap->mcast_all = 0; in ace_set_multicast_list()
2767 if ((dev->flags & IFF_PROMISC) && !(ap->promisc)) { in ace_set_multicast_list()
2772 ap->promisc = 1; in ace_set_multicast_list()
2773 }else if (!(dev->flags & IFF_PROMISC) && (ap->promisc)) { in ace_set_multicast_list()
2778 ap->promisc = 0; in ace_set_multicast_list()
2787 if (!netdev_mc_empty(dev) && !ap->mcast_all) { in ace_set_multicast_list()
2792 }else if (!ap->mcast_all) { in ace_set_multicast_list()
2803 struct ace_private *ap = netdev_priv(dev); in ace_get_stats() local
2805 (struct ace_mac_stats __iomem *)ap->regs->Stats; in ace_get_stats()
2877 struct ace_private *ap = netdev_priv(dev); in ace_load_firmware() local
2878 struct ace_regs __iomem *regs = ap->regs; in ace_load_firmware()
2885 "CPU is running!\n", ap->name); in ace_load_firmware()
2889 if (ACE_IS_TIGON_I(ap)) in ace_load_firmware()
2892 ret = request_firmware(&fw, fw_name, &ap->pdev->dev); in ace_load_firmware()
2895 ap->name, fw_name); in ace_load_firmware()
2906 ap->firmware_major = fw->data[0]; in ace_load_firmware()
2907 ap->firmware_minor = fw->data[1]; in ace_load_firmware()
2908 ap->firmware_fix = fw->data[2]; in ace_load_firmware()
2910 ap->firmware_start = be32_to_cpu(fw_data[1]); in ace_load_firmware()
2911 if (ap->firmware_start < 0x4000 || ap->firmware_start >= 0x80000) { in ace_load_firmware()
2913 ap->name, ap->firmware_start, fw_name); in ace_load_firmware()
2921 ap->name, load_addr, fw_name); in ace_load_firmware()
3084 struct ace_private *ap = netdev_priv(dev); in read_eeprom_byte() local
3085 struct ace_regs __iomem *regs = ap->regs; in read_eeprom_byte()
3102 printk(KERN_ERR "%s: Unable to sync eeprom\n", ap->name); in read_eeprom_byte()
3111 ap->name); in read_eeprom_byte()
3120 ap->name); in read_eeprom_byte()
3130 ap->name); in read_eeprom_byte()
3187 ap->name, offset); in read_eeprom_byte()