Lines Matching refs:atgep
159 void atge_program_ether(atge_t *atgep);
227 void atge_tx_reclaim(atge_t *atgep, int cons);
427 atge_mac_config(atge_t *atgep) in atge_mac_config() argument
434 reg = INL(atgep, ATGE_MAC_CFG); in atge_mac_config()
438 switch (ATGE_MODEL(atgep)) { in atge_mac_config()
440 switch (ATGE_DID(atgep)) { in atge_mac_config()
450 speed = mii_get_speed(atgep->atge_mii); in atge_mac_config()
461 ld = mii_get_duplex(atgep->atge_mii); in atge_mac_config()
466 switch (ATGE_MODEL(atgep)) { in atge_mac_config()
476 OUTL(atgep, ATGE_MAC_CFG, reg); in atge_mac_config()
478 switch (ATGE_MODEL(atgep)) { in atge_mac_config()
483 OUTL(atgep, ATGE_IM_TIMER, reg); in atge_mac_config()
489 reg = ATGE_USECS(atgep->atge_int_rx_mod) << IM_TIMER_RX_SHIFT; in atge_mac_config()
490 reg |= ATGE_USECS(atgep->atge_int_tx_mod) << IM_TIMER_TX_SHIFT; in atge_mac_config()
491 OUTL(atgep, ATGE_IM_TIMER, reg); in atge_mac_config()
497 if (ATGE_USECS(atgep->atge_int_rx_mod) != 0) in atge_mac_config()
499 if (ATGE_USECS(atgep->atge_int_tx_mod) != 0) in atge_mac_config()
501 OUTL(atgep, ATGE_MASTER_CFG, reg); in atge_mac_config()
506 atgep->atge_name, __func__, INL(atgep, ATGE_MAC_CFG))); in atge_mac_config()
512 atge_t *atgep = arg; in atge_mii_notify() local
515 atgep->atge_name, __func__, atgep->atge_link_state, link)); in atge_mii_notify()
517 mac_link_update(atgep->atge_mh, link); in atge_mii_notify()
522 mutex_enter(&atgep->atge_tx_lock); in atge_mii_notify()
524 atgep->atge_link_state = LINK_STATE_UP; in atge_mii_notify()
525 atge_mac_config(atgep); in atge_mii_notify()
526 atgep->atge_tx_resched = 0; in atge_mii_notify()
528 atgep->atge_link_state = LINK_STATE_DOWN; in atge_mii_notify()
529 atgep->atge_flags |= ATGE_MII_CHECK; in atge_mii_notify()
532 mutex_exit(&atgep->atge_tx_lock); in atge_mii_notify()
535 mac_tx_update(atgep->atge_mh); in atge_mii_notify()
539 atge_tx_reclaim(atge_t *atgep, int end) in atge_tx_reclaim() argument
542 atge_ring_t *r = atgep->atge_tx_ring; in atge_tx_reclaim()
546 ASSERT(MUTEX_HELD(&atgep->atge_tx_lock)); in atge_tx_reclaim()
558 atge_error(atgep->atge_dip, in atge_tx_reclaim()
562 atge_device_stop(atgep); in atge_tx_reclaim()
582 atgep->atge_tx_ring->r_consumer = start; in atge_tx_reclaim()
592 atge_add_intr_handler(atge_t *atgep, int intr_type) in atge_add_intr_handler() argument
601 err = ddi_intr_get_nintrs(atgep->atge_dip, intr_type, &count); in atge_add_intr_handler()
603 atge_error(atgep->atge_dip, in atge_add_intr_handler()
609 atgep->atge_name, __func__, count)); in atge_add_intr_handler()
611 err = ddi_intr_get_navail(atgep->atge_dip, intr_type, &avail); in atge_add_intr_handler()
613 atge_error(atgep->atge_dip, in atge_add_intr_handler()
619 atge_error(atgep->atge_dip, "count :%d," in atge_add_intr_handler()
633 atgep->atge_intr_size = avail * sizeof (ddi_intr_handle_t); in atge_add_intr_handler()
634 atgep->atge_intr_handle = kmem_zalloc(atgep->atge_intr_size, KM_SLEEP); in atge_add_intr_handler()
637 atgep->atge_name, __func__, avail, count, in atge_add_intr_handler()
640 err = ddi_intr_alloc(atgep->atge_dip, atgep->atge_intr_handle, in atge_add_intr_handler()
641 intr_type, 0, avail, &atgep->atge_intr_cnt, flag); in atge_add_intr_handler()
644 atge_error(atgep->atge_dip, "ddi_intr_alloc failed : %d", err); in atge_add_intr_handler()
645 kmem_free(atgep->atge_intr_handle, atgep->atge_intr_size); in atge_add_intr_handler()
650 " :%d, avail : %d", atgep->atge_name, count, avail)); in atge_add_intr_handler()
652 err = ddi_intr_get_pri(atgep->atge_intr_handle[0], in atge_add_intr_handler()
653 &atgep->atge_intr_pri); in atge_add_intr_handler()
655 atge_error(atgep->atge_dip, "ddi_intr_get_pri failed:%d", err); in atge_add_intr_handler()
656 for (i = 0; i < atgep->atge_intr_cnt; i++) { in atge_add_intr_handler()
657 (void) ddi_intr_free(atgep->atge_intr_handle[i]); in atge_add_intr_handler()
659 kmem_free(atgep->atge_intr_handle, atgep->atge_intr_size); in atge_add_intr_handler()
667 for (i = 0; i < atgep->atge_intr_cnt; i++) { in atge_add_intr_handler()
668 switch (ATGE_MODEL(atgep)) { in atge_add_intr_handler()
670 err = ddi_intr_add_handler(atgep->atge_intr_handle[i], in atge_add_intr_handler()
671 atge_l1e_interrupt, atgep, (caddr_t)(uintptr_t)i); in atge_add_intr_handler()
674 err = ddi_intr_add_handler(atgep->atge_intr_handle[i], in atge_add_intr_handler()
675 atge_l1_interrupt, atgep, (caddr_t)(uintptr_t)i); in atge_add_intr_handler()
678 err = ddi_intr_add_handler(atgep->atge_intr_handle[i], in atge_add_intr_handler()
679 atge_l1c_interrupt, atgep, (caddr_t)(uintptr_t)i); in atge_add_intr_handler()
684 atge_error(atgep->atge_dip, in atge_add_intr_handler()
687 (void) ddi_intr_free(atgep->atge_intr_handle[i]); in atge_add_intr_handler()
690 atgep->atge_intr_handle[i]); in atge_add_intr_handler()
692 atgep->atge_intr_handle[i]); in atge_add_intr_handler()
695 kmem_free(atgep->atge_intr_handle, in atge_add_intr_handler()
696 atgep->atge_intr_size); in atge_add_intr_handler()
702 err = ddi_intr_get_cap(atgep->atge_intr_handle[0], in atge_add_intr_handler()
703 &atgep->atge_intr_cap); in atge_add_intr_handler()
706 atge_error(atgep->atge_dip, in atge_add_intr_handler()
708 atge_remove_intr(atgep); in atge_add_intr_handler()
713 atgep->atge_flags |= ATGE_FIXED_TYPE; in atge_add_intr_handler()
715 atgep->atge_flags |= ATGE_MSI_TYPE; in atge_add_intr_handler()
717 atgep->atge_flags |= ATGE_MSIX_TYPE; in atge_add_intr_handler()
723 atge_remove_intr(atge_t *atgep) in atge_remove_intr() argument
728 if (atgep->atge_intr_handle == NULL) in atge_remove_intr()
731 if (atgep->atge_intr_cap & DDI_INTR_FLAG_BLOCK) { in atge_remove_intr()
732 (void) ddi_intr_block_disable(atgep->atge_intr_handle, in atge_remove_intr()
733 atgep->atge_intr_cnt); in atge_remove_intr()
738 for (i = 0; i < atgep->atge_intr_cnt; i++) { in atge_remove_intr()
740 (void) ddi_intr_disable(atgep->atge_intr_handle[i]); in atge_remove_intr()
742 (void) ddi_intr_remove_handler(atgep->atge_intr_handle[i]); in atge_remove_intr()
743 (void) ddi_intr_free(atgep->atge_intr_handle[i]); in atge_remove_intr()
746 kmem_free(atgep->atge_intr_handle, atgep->atge_intr_size); in atge_remove_intr()
750 atge_enable_intrs(atge_t *atgep) in atge_enable_intrs() argument
755 if (atgep->atge_intr_cap & DDI_INTR_FLAG_BLOCK) { in atge_enable_intrs()
759 err = ddi_intr_block_enable(atgep->atge_intr_handle, in atge_enable_intrs()
760 atgep->atge_intr_cnt); in atge_enable_intrs()
763 atge_error(atgep->atge_dip, in atge_enable_intrs()
773 for (i = 0; i < atgep->atge_intr_cnt; i++) { in atge_enable_intrs()
774 err = ddi_intr_enable(atgep->atge_intr_handle[i]); in atge_enable_intrs()
776 atge_error(atgep->atge_dip, in atge_enable_intrs()
797 atge_add_intr(atge_t *atgep) in atge_add_intr() argument
804 err = ddi_intr_get_supported_types(atgep->atge_dip, in atge_add_intr()
805 &atgep->atge_intr_types); in atge_add_intr()
807 atge_error(atgep->atge_dip, in atge_add_intr()
813 atgep->atge_name, atgep->atge_intr_types)); in atge_add_intr()
816 if (atgep->atge_intr_types & DDI_INTR_TYPE_MSIX) { in atge_add_intr()
817 err = atge_add_intr_handler(atgep, DDI_INTR_TYPE_MSIX); in atge_add_intr()
820 atgep->atge_name)); in atge_add_intr()
825 if (atgep->atge_intr_types & DDI_INTR_TYPE_MSI) { in atge_add_intr()
826 err = atge_add_intr_handler(atgep, DDI_INTR_TYPE_MSI); in atge_add_intr()
829 atgep->atge_name)); in atge_add_intr()
835 if (atgep->atge_intr_types & DDI_INTR_TYPE_FIXED) { in atge_add_intr()
836 err = atge_add_intr_handler(atgep, DDI_INTR_TYPE_FIXED); in atge_add_intr()
839 atgep->atge_name)); in atge_add_intr()
848 atge_identify_hardware(atge_t *atgep) in atge_identify_hardware() argument
853 vid = pci_config_get16(atgep->atge_conf_handle, PCI_CONF_VENID); in atge_identify_hardware()
854 did = pci_config_get16(atgep->atge_conf_handle, PCI_CONF_DEVID); in atge_identify_hardware()
856 atgep->atge_model = 0; in atge_identify_hardware()
860 atgep->atge_model = atge_cards[i].model; in atge_identify_hardware()
861 atgep->atge_vid = vid; in atge_identify_hardware()
862 atgep->atge_did = did; in atge_identify_hardware()
863 atgep->atge_revid = in atge_identify_hardware()
864 pci_config_get8(atgep->atge_conf_handle, in atge_identify_hardware()
866 atge_notice(atgep->atge_dip, "PCI-ID pci%x,%x,%x: %s", in atge_identify_hardware()
867 vid, did, atgep->atge_revid, in atge_identify_hardware()
870 atgep->atge_name, __func__, vid, did, in atge_identify_hardware()
871 atgep->atge_model)); in atge_identify_hardware()
877 atge_error(atgep->atge_dip, "atge driver is attaching to unknown" in atge_identify_hardware()
883 atgep->atge_model = ATGE_CHIP_L1C; in atge_identify_hardware()
884 atgep->atge_vid = vid; in atge_identify_hardware()
885 atgep->atge_did = did; in atge_identify_hardware()
886 atgep->atge_revid = pci_config_get8(atgep->atge_conf_handle, in atge_identify_hardware()
896 atge_get_macaddr(atge_t *atgep) in atge_get_macaddr() argument
900 reg = INL(atgep, ATGE_SPI_CTRL); in atge_get_macaddr()
906 OUTL(atgep, ATGE_SPI_CTRL, reg); in atge_get_macaddr()
908 ATGE_DB(("%s: %s called Get VPD", atgep->atge_name, __func__)); in atge_get_macaddr()
911 atgep->atge_ether_addr[5] = INB(atgep, ATGE_PAR0 + 0); in atge_get_macaddr()
912 atgep->atge_ether_addr[4] = INB(atgep, ATGE_PAR0 + 1); in atge_get_macaddr()
913 atgep->atge_ether_addr[3] = INB(atgep, ATGE_PAR0 + 2); in atge_get_macaddr()
914 atgep->atge_ether_addr[2] = INB(atgep, ATGE_PAR0 + 3); in atge_get_macaddr()
915 atgep->atge_ether_addr[1] = INB(atgep, ATGE_PAR1 + 0); in atge_get_macaddr()
916 atgep->atge_ether_addr[0] = INB(atgep, ATGE_PAR1 + 1); in atge_get_macaddr()
919 atgep->atge_name, __func__, in atge_get_macaddr()
920 atgep->atge_ether_addr[0], in atge_get_macaddr()
921 atgep->atge_ether_addr[1], in atge_get_macaddr()
922 atgep->atge_ether_addr[2], in atge_get_macaddr()
923 atgep->atge_ether_addr[3], in atge_get_macaddr()
924 atgep->atge_ether_addr[4], in atge_get_macaddr()
925 atgep->atge_ether_addr[5])); in atge_get_macaddr()
927 bcopy(atgep->atge_ether_addr, atgep->atge_dev_addr, ETHERADDRL); in atge_get_macaddr()
936 atge_device_reset(atge_t *atgep) in atge_device_reset() argument
938 switch (ATGE_MODEL(atgep)) { in atge_device_reset()
942 atge_device_reset_l1_l1e(atgep); in atge_device_reset()
948 atge_device_reset_l1_l1e(atge_t *atgep) in atge_device_reset_l1_l1e() argument
952 switch (ATGE_MODEL(atgep)) { in atge_device_reset_l1_l1e()
954 OUTL(atgep, ATGE_MASTER_CFG, MASTER_RESET | 0x40); in atge_device_reset_l1_l1e()
957 OUTL(atgep, ATGE_MASTER_CFG, MASTER_RESET); in atge_device_reset_l1_l1e()
960 reg = INL(atgep, ATGE_MASTER_CFG); in atge_device_reset_l1_l1e()
963 reg = INL(atgep, ATGE_MASTER_CFG); in atge_device_reset_l1_l1e()
969 atge_error(atgep->atge_dip, " master reset timeout reg : %x", in atge_device_reset_l1_l1e()
974 if ((reg = INL(atgep, ATGE_IDLE_STATUS)) == 0) in atge_device_reset_l1_l1e()
981 atge_error(atgep->atge_dip, "device reset timeout reg : %x", in atge_device_reset_l1_l1e()
985 switch (ATGE_MODEL(atgep)) { in atge_device_reset_l1_l1e()
992 OUTL(atgep, ATGE_LTSSM_ID_CFG, 0x6500); in atge_device_reset_l1_l1e()
993 reg = INL(atgep, 0x1008) | 0x8000; in atge_device_reset_l1_l1e()
994 OUTL(atgep, 0x1008, reg); in atge_device_reset_l1_l1e()
1003 atgep->atge_chip_rev = INL(atgep, ATGE_MASTER_CFG) >> in atge_device_reset_l1_l1e()
1006 ATGE_DB(("%s: %s reset successfully rev : %x", atgep->atge_name, in atge_device_reset_l1_l1e()
1007 __func__, atgep->atge_chip_rev)); in atge_device_reset_l1_l1e()
1015 atge_alloc_dma(atge_t *atgep) in atge_alloc_dma() argument
1019 switch (ATGE_MODEL(atgep)) { in atge_alloc_dma()
1021 err = atge_l1e_alloc_dma(atgep); in atge_alloc_dma()
1024 err = atge_l1_alloc_dma(atgep); in atge_alloc_dma()
1027 err = atge_l1c_alloc_dma(atgep); in atge_alloc_dma()
1035 atge_free_dma(atge_t *atgep) in atge_free_dma() argument
1037 switch (ATGE_MODEL(atgep)) { in atge_free_dma()
1039 atge_l1e_free_dma(atgep); in atge_free_dma()
1042 atge_l1_free_dma(atgep); in atge_free_dma()
1045 atge_l1c_free_dma(atgep); in atge_free_dma()
1056 atge_t *atgep; in atge_attach() local
1078 atgep = kmem_zalloc(sizeof (atge_t), KM_SLEEP); in atge_attach()
1079 ddi_set_driver_private(devinfo, atgep); in atge_attach()
1080 atgep->atge_dip = devinfo; in atge_attach()
1086 (void) snprintf(atgep->atge_name, sizeof (atgep->atge_name), "%s%d", in atge_attach()
1093 err = pci_config_setup(devinfo, &atgep->atge_conf_handle); in atge_attach()
1099 (void) atge_identify_hardware(atgep); in atge_attach()
1105 &atgep->atge_io_regs, 0, 0, &atge_dev_attr, &atgep->atge_io_handle); in atge_attach()
1114 err = atge_add_intr(atgep); in atge_attach()
1120 mutex_init(&atgep->atge_intr_lock, NULL, MUTEX_DRIVER, in atge_attach()
1121 DDI_INTR_PRI(atgep->atge_intr_pri)); in atge_attach()
1123 mutex_init(&atgep->atge_tx_lock, NULL, MUTEX_DRIVER, in atge_attach()
1124 DDI_INTR_PRI(atgep->atge_intr_pri)); in atge_attach()
1126 mutex_init(&atgep->atge_rx_lock, NULL, MUTEX_DRIVER, in atge_attach()
1127 DDI_INTR_PRI(atgep->atge_intr_pri)); in atge_attach()
1129 mutex_init(&atgep->atge_mii_lock, NULL, MUTEX_DRIVER, NULL); in atge_attach()
1135 mutex_init(&atgep->atge_mbox_lock, NULL, MUTEX_DRIVER, in atge_attach()
1136 DDI_INTR_PRI(atgep->atge_intr_pri)); in atge_attach()
1138 atgep->atge_link_state = LINK_STATE_DOWN; in atge_attach()
1139 atgep->atge_mtu = ETHERMTU; in atge_attach()
1141 switch (ATGE_MODEL(atgep)) { in atge_attach()
1143 if (atgep->atge_revid > 0xF0) { in atge_attach()
1145 atgep->atge_flags |= ATGE_FLAG_FASTETHER; in atge_attach()
1147 if ((INL(atgep, L1E_PHY_STATUS) & in atge_attach()
1150 atgep->atge_flags |= ATGE_FLAG_JUMBO; in atge_attach()
1153 atgep->atge_flags |= ATGE_FLAG_FASTETHER; in atge_attach()
1174 switch (ATGE_DID(atgep)) { in atge_attach()
1177 atgep->atge_flags |= ATGE_FLAG_APS | in atge_attach()
1184 atgep->atge_flags |= ATGE_FLAG_APS | in atge_attach()
1189 atgep->atge_flags |= ATGE_FLAG_FASTETHER; in atge_attach()
1200 err = PCI_CAP_LOCATE(atgep->atge_conf_handle, PCI_CAP_ID_PCI_E, in atge_attach()
1204 atgep->atge_dma_rd_burst = DMA_CFG_RD_BURST_128; in atge_attach()
1205 atgep->atge_dma_wr_burst = DMA_CFG_WR_BURST_128; in atge_attach()
1207 atgep->atge_flags |= ATGE_FLAG_PCIE; in atge_attach()
1208 burst = pci_config_get16(atgep->atge_conf_handle, in atge_attach()
1214 atgep->atge_dma_rd_burst = ((burst >> 12) & 0x07) << in atge_attach()
1220 atgep->atge_dma_wr_burst = ((burst >> 5) & 0x07) << in atge_attach()
1224 atgep->atge_name, __func__, in atge_attach()
1230 switch (ATGE_MODEL(atgep)) { in atge_attach()
1236 OUTL_AND(atgep, ATGE_PEX_UNC_ERR_SEV, in atge_attach()
1238 OUTL_AND(atgep, ATGE_LTSSM_ID_CFG, ~LTSSM_ID_WRO_ENB); in atge_attach()
1239 OUTL_OR(atgep, ATGE_PCIE_PHYMISC, PCIE_PHYMISC_FORCE_RCV_DET); in atge_attach()
1246 err = atge_alloc_dma(atgep); in atge_attach()
1255 (void) atge_get_macaddr(atgep); in atge_attach()
1260 switch (ATGE_MODEL(atgep)) { in atge_attach()
1272 if ((atgep->atge_mii = mii_alloc(atgep, devinfo, in atge_attach()
1287 macreg->m_driver = atgep; in atge_attach()
1290 macreg->m_src_addr = atgep->atge_ether_addr; in atge_attach()
1293 macreg->m_max_sdu = atgep->atge_mtu; in atge_attach()
1296 if ((err = mac_register(macreg, &atgep->atge_mh)) != 0) { in atge_attach()
1305 atgep->atge_name, __func__)); in atge_attach()
1307 atge_device_reset(atgep); in atge_attach()
1309 atgep->atge_chip_state = ATGE_CHIP_INITIALIZED; in atge_attach()
1314 err = atge_enable_intrs(atgep); in atge_attach()
1322 switch (ATGE_MODEL(atgep)) { in atge_attach()
1324 atge_l1e_mii_reset(atgep); in atge_attach()
1327 atge_l1_mii_reset(atgep); in atge_attach()
1330 atge_l1c_mii_reset(atgep); in atge_attach()
1337 mii_start(atgep->atge_mii); in atge_attach()
1342 (void) mac_unregister(atgep->atge_mh); in atge_attach()
1343 atge_device_stop(atgep); in atge_attach()
1344 mii_stop(atgep->atge_mii); in atge_attach()
1345 mii_free(atgep->atge_mii); in atge_attach()
1347 atge_free_dma(atgep); in atge_attach()
1348 mutex_destroy(&atgep->atge_intr_lock); in atge_attach()
1349 mutex_destroy(&atgep->atge_tx_lock); in atge_attach()
1350 mutex_destroy(&atgep->atge_rx_lock); in atge_attach()
1351 atge_remove_intr(atgep); in atge_attach()
1353 ddi_regs_map_free(&atgep->atge_io_handle); in atge_attach()
1355 pci_config_teardown(&atgep->atge_conf_handle); in atge_attach()
1357 kmem_free(atgep, sizeof (atge_t)); in atge_attach()
1364 atge_t *atgep; in atge_detach() local
1366 atgep = ddi_get_driver_private(dip); in atge_detach()
1367 if (atgep == NULL) { in atge_detach()
1378 if (mac_disable(atgep->atge_mh) != DDI_SUCCESS) in atge_detach()
1381 mii_stop(atgep->atge_mii); in atge_detach()
1383 mutex_enter(&atgep->atge_intr_lock); in atge_detach()
1384 mutex_enter(&atgep->atge_tx_lock); in atge_detach()
1385 atge_device_stop(atgep); in atge_detach()
1386 mutex_exit(&atgep->atge_tx_lock); in atge_detach()
1387 mutex_exit(&atgep->atge_intr_lock); in atge_detach()
1389 mii_free(atgep->atge_mii); in atge_detach()
1390 atge_free_dma(atgep); in atge_detach()
1392 ddi_regs_map_free(&atgep->atge_io_handle); in atge_detach()
1393 atge_remove_intr(atgep); in atge_detach()
1394 pci_config_teardown(&atgep->atge_conf_handle); in atge_detach()
1396 (void) mac_unregister(atgep->atge_mh); in atge_detach()
1397 mutex_destroy(&atgep->atge_intr_lock); in atge_detach()
1398 mutex_destroy(&atgep->atge_tx_lock); in atge_detach()
1399 mutex_destroy(&atgep->atge_rx_lock); in atge_detach()
1400 kmem_free(atgep, sizeof (atge_t)); in atge_detach()
1407 atgep->atge_name, __func__)); in atge_detach()
1412 mii_suspend(atgep->atge_mii); in atge_detach()
1414 mutex_enter(&atgep->atge_intr_lock); in atge_detach()
1415 mutex_enter(&atgep->atge_tx_lock); in atge_detach()
1416 atgep->atge_chip_state |= ATGE_CHIP_SUSPENDED; in atge_detach()
1417 atge_device_stop(atgep); in atge_detach()
1418 mutex_exit(&atgep->atge_tx_lock); in atge_detach()
1419 mutex_exit(&atgep->atge_intr_lock); in atge_detach()
1472 atge_alloc_a_dma_blk(atge_t *atgep, ddi_dma_attr_t *attr, int size, int d) in atge_alloc_a_dma_blk() argument
1479 err = ddi_dma_alloc_handle(atgep->atge_dip, attr, in atge_alloc_a_dma_blk()
1483 atge_error(atgep->atge_dip, "%s() : failed" in atge_alloc_a_dma_blk()
1493 atge_error(atgep->atge_dip, "%s() : failed" in atge_alloc_a_dma_blk()
1504 atge_error(atgep->atge_dip, "%s() : failed" in atge_alloc_a_dma_blk()
1529 atge_buf_alloc(atge_t *atgep, size_t len, int f) in atge_buf_alloc() argument
1536 err = ddi_dma_alloc_handle(atgep->atge_dip, &atge_dma_attr_buf, in atge_buf_alloc()
1540 atge_error(atgep->atge_dip, "%s() : failed" in atge_buf_alloc()
1550 atge_error(atgep->atge_dip, "%s() : failed" in atge_buf_alloc()
1561 atge_error(atgep->atge_dip, "%s() : failed" in atge_buf_alloc()
1593 atge_t *atgep; in atge_resume() local
1595 if ((atgep = ddi_get_driver_private(dip)) == NULL) { in atge_resume()
1599 mutex_enter(&atgep->atge_intr_lock); in atge_resume()
1600 mutex_enter(&atgep->atge_tx_lock); in atge_resume()
1602 atgep->atge_chip_state &= ~ATGE_CHIP_SUSPENDED; in atge_resume()
1604 if (atgep->atge_chip_state & ATGE_CHIP_RUNNING) { in atge_resume()
1605 atge_device_restart(atgep); in atge_resume()
1607 atge_device_reset(atgep); in atge_resume()
1610 mutex_exit(&atgep->atge_tx_lock); in atge_resume()
1611 mutex_exit(&atgep->atge_intr_lock); in atge_resume()
1616 switch (ATGE_MODEL(atgep)) { in atge_resume()
1618 atge_l1e_mii_reset(atgep); in atge_resume()
1626 mii_resume(atgep->atge_mii); in atge_resume()
1629 mac_tx_update(atgep->atge_mh); in atge_resume()
1637 atge_t *atgep; in atge_quiesce() local
1639 if ((atgep = ddi_get_driver_private(dip)) == NULL) { in atge_quiesce()
1643 atge_device_stop(atgep); in atge_quiesce()
1649 atge_add_multicst(atge_t *atgep, uint8_t *macaddr) in atge_add_multicst() argument
1654 ASSERT(MUTEX_HELD(&atgep->atge_intr_lock)); in atge_add_multicst()
1655 ASSERT(MUTEX_HELD(&atgep->atge_tx_lock)); in atge_add_multicst()
1658 atgep->atge_name, __func__, macaddr[0], macaddr[1], macaddr[2], in atge_add_multicst()
1663 atgep->atge_mchash_ref_cnt[bit]++; in atge_add_multicst()
1664 atgep->atge_mchash |= (1ULL << (crc >> 26)); in atge_add_multicst()
1668 atgep->atge_name, __func__, atgep->atge_mchash, bit, in atge_add_multicst()
1669 atgep->atge_mchash_ref_cnt[bit])); in atge_add_multicst()
1673 atge_remove_multicst(atge_t *atgep, uint8_t *macaddr) in atge_remove_multicst() argument
1678 ASSERT(MUTEX_HELD(&atgep->atge_intr_lock)); in atge_remove_multicst()
1679 ASSERT(MUTEX_HELD(&atgep->atge_tx_lock)); in atge_remove_multicst()
1682 atgep->atge_name, __func__, macaddr[0], macaddr[1], macaddr[2], in atge_remove_multicst()
1687 atgep->atge_mchash_ref_cnt[bit]--; in atge_remove_multicst()
1688 if (atgep->atge_mchash_ref_cnt[bit] == 0) in atge_remove_multicst()
1689 atgep->atge_mchash &= ~(1ULL << (crc >> 26)); in atge_remove_multicst()
1693 atgep->atge_name, __func__, atgep->atge_mchash, bit, in atge_remove_multicst()
1694 atgep->atge_mchash_ref_cnt[bit])); in atge_remove_multicst()
1700 atge_t *atgep = arg; in atge_m_multicst() local
1702 mutex_enter(&atgep->atge_intr_lock); in atge_m_multicst()
1703 mutex_enter(&atgep->atge_tx_lock); in atge_m_multicst()
1706 atge_add_multicst(atgep, (uint8_t *)macaddr); in atge_m_multicst()
1708 atge_remove_multicst(atgep, (uint8_t *)macaddr); in atge_m_multicst()
1711 atge_rxfilter(atgep); in atge_m_multicst()
1713 mutex_exit(&atgep->atge_tx_lock); in atge_m_multicst()
1714 mutex_exit(&atgep->atge_intr_lock); in atge_m_multicst()
1722 atge_t *atgep = arg; in atge_m_promisc() local
1724 mutex_enter(&atgep->atge_intr_lock); in atge_m_promisc()
1725 mutex_enter(&atgep->atge_tx_lock); in atge_m_promisc()
1728 atgep->atge_filter_flags |= ATGE_PROMISC; in atge_m_promisc()
1730 atgep->atge_filter_flags &= ~ATGE_PROMISC; in atge_m_promisc()
1733 if (atgep->atge_chip_state & ATGE_CHIP_RUNNING) { in atge_m_promisc()
1734 atge_rxfilter(atgep); in atge_m_promisc()
1737 mutex_exit(&atgep->atge_tx_lock); in atge_m_promisc()
1738 mutex_exit(&atgep->atge_intr_lock); in atge_m_promisc()
1746 atge_t *atgep = arg; in atge_m_unicst() local
1748 mutex_enter(&atgep->atge_intr_lock); in atge_m_unicst()
1749 mutex_enter(&atgep->atge_tx_lock); in atge_m_unicst()
1750 bcopy(macaddr, atgep->atge_ether_addr, ETHERADDRL); in atge_m_unicst()
1751 atge_program_ether(atgep); in atge_m_unicst()
1752 atge_rxfilter(atgep); in atge_m_unicst()
1753 mutex_exit(&atgep->atge_tx_lock); in atge_m_unicst()
1754 mutex_exit(&atgep->atge_intr_lock); in atge_m_unicst()
1762 atge_t *atgep = arg; in atge_m_tx() local
1765 mutex_enter(&atgep->atge_tx_lock); in atge_m_tx()
1770 if (!(atgep->atge_link_state & LINK_STATE_UP)) { in atge_m_tx()
1771 atgep->atge_tx_resched = 1; in atge_m_tx()
1773 mutex_exit(&atgep->atge_tx_lock); in atge_m_tx()
1780 if ((atgep->atge_chip_state & ATGE_CHIP_RUNNING) == 0 || in atge_m_tx()
1781 atgep->atge_chip_state & ATGE_CHIP_SUSPENDED) { in atge_m_tx()
1782 atgep->atge_carrier_errors++; in atge_m_tx()
1783 atgep->atge_tx_resched = 1; in atge_m_tx()
1785 mutex_exit(&atgep->atge_tx_lock); in atge_m_tx()
1793 if (atge_send_a_packet(atgep, mp) == DDI_FAILURE) { in atge_m_tx()
1801 mutex_exit(&atgep->atge_tx_lock); in atge_m_tx()
1808 atge_t *atgep = arg; in atge_m_start() local
1811 ASSERT(atgep != NULL); in atge_m_start()
1814 mii_stop(atgep->atge_mii); in atge_m_start()
1816 mutex_enter(&atgep->atge_intr_lock); in atge_m_start()
1817 mutex_enter(&atgep->atge_tx_lock); in atge_m_start()
1819 if (!(atgep->atge_chip_state & ATGE_CHIP_SUSPENDED)) { in atge_m_start()
1820 atge_device_restart(atgep); in atge_m_start()
1824 mutex_exit(&atgep->atge_tx_lock); in atge_m_start()
1825 mutex_exit(&atgep->atge_intr_lock); in atge_m_start()
1827 mii_start(atgep->atge_mii); in atge_m_start()
1831 mac_tx_update(atgep->atge_mh); in atge_m_start()
1839 atge_t *atgep = arg; in atge_m_stop() local
1841 mii_stop(atgep->atge_mii); in atge_m_stop()
1846 mutex_enter(&atgep->atge_intr_lock); in atge_m_stop()
1847 atgep->atge_chip_state &= ~ATGE_CHIP_RUNNING; in atge_m_stop()
1848 if (!(atgep->atge_chip_state & ATGE_CHIP_SUSPENDED)) in atge_m_stop()
1849 atge_device_stop(atgep); in atge_m_stop()
1850 mutex_exit(&atgep->atge_intr_lock); in atge_m_stop()
1856 atge_t *atgep = arg; in atge_m_stat() local
1858 if (mii_m_getstat(atgep->atge_mii, stat, val) == 0) { in atge_m_stat()
1864 *val = atgep->atge_multircv; in atge_m_stat()
1868 *val = atgep->atge_brdcstrcv; in atge_m_stat()
1872 *val = atgep->atge_multixmt; in atge_m_stat()
1876 *val = atgep->atge_brdcstxmt; in atge_m_stat()
1880 *val = atgep->atge_ipackets; in atge_m_stat()
1884 *val = atgep->atge_rbytes; in atge_m_stat()
1888 *val = atgep->atge_opackets; in atge_m_stat()
1892 *val = atgep->atge_obytes; in atge_m_stat()
1896 *val = atgep->atge_norcvbuf; in atge_m_stat()
1904 *val = atgep->atge_collisions; in atge_m_stat()
1908 *val = atgep->atge_errrcv; in atge_m_stat()
1912 *val = atgep->atge_errxmt; in atge_m_stat()
1916 *val = atgep->atge_align_errors; in atge_m_stat()
1920 *val = atgep->atge_fcs_errors; in atge_m_stat()
1924 *val = atgep->atge_sqe_errors; in atge_m_stat()
1928 *val = atgep->atge_defer_xmts; in atge_m_stat()
1932 *val = atgep->atge_first_collisions; in atge_m_stat()
1936 *val = atgep->atge_multi_collisions; in atge_m_stat()
1940 *val = atgep->atge_tx_late_collisions; in atge_m_stat()
1944 *val = atgep->atge_ex_collisions; in atge_m_stat()
1948 *val = atgep->atge_macxmt_errors; in atge_m_stat()
1952 *val = atgep->atge_carrier_errors; in atge_m_stat()
1956 *val = atgep->atge_toolong_errors; in atge_m_stat()
1960 *val = atgep->atge_macrcv_errors; in atge_m_stat()
1964 *val = atgep->atge_overflow; in atge_m_stat()
1968 *val = atgep->atge_underflow; in atge_m_stat()
1972 *val = atgep->atge_runt; in atge_m_stat()
1976 *val = atgep->atge_jabber; in atge_m_stat()
1990 atge_t *atgep = arg; in atge_m_getprop() local
1992 return (mii_m_getprop(atgep->atge_mii, name, num, sz, val)); in atge_m_getprop()
1999 atge_t *atgep = arg; in atge_m_setprop() local
2002 r = mii_m_setprop(atgep->atge_mii, name, num, sz, val); in atge_m_setprop()
2005 mutex_enter(&atgep->atge_intr_lock); in atge_m_setprop()
2006 mutex_enter(&atgep->atge_tx_lock); in atge_m_setprop()
2008 if (atgep->atge_chip_state & ATGE_CHIP_RUNNING) { in atge_m_setprop()
2009 atge_device_restart(atgep); in atge_m_setprop()
2012 mutex_exit(&atgep->atge_tx_lock); in atge_m_setprop()
2013 mutex_exit(&atgep->atge_intr_lock); in atge_m_setprop()
2023 atge_t *atgep = arg; in atge_m_propinfo() local
2025 mii_m_propinfo(atgep->atge_mii, name, num, prh); in atge_m_propinfo()
2029 atge_program_ether(atge_t *atgep) in atge_program_ether() argument
2036 bcopy(atgep->atge_ether_addr, e, ETHERADDRL); in atge_program_ether()
2037 OUTL(atgep, ATGE_PAR0, in atge_program_ether()
2039 OUTL(atgep, ATGE_PAR1, (e[0] << 8) | e[1]); in atge_program_ether()
2046 atge_device_start(atge_t *atgep) in atge_device_start() argument
2055 atge_program_ether(atgep); in atge_device_start()
2057 switch (ATGE_MODEL(atgep)) { in atge_device_start()
2059 atge_l1e_program_dma(atgep); in atge_device_start()
2062 atge_l1_program_dma(atgep); in atge_device_start()
2065 atge_l1c_program_dma(atgep); in atge_device_start()
2069 ATGE_DB(("%s: %s() dma, counters programmed ", atgep->atge_name, in atge_device_start()
2072 switch (ATGE_MODEL(atgep)) { in atge_device_start()
2075 OUTW(atgep, ATGE_INTR_CLR_TIMER, 1*1000/2); in atge_device_start()
2082 OUTL(atgep, ATGE_INTR_RETRIG_TIMER, ATGE_USECS(0)); in atge_device_start()
2084 OUTL(atgep, ATGE_CMB_TX_TIMER, ATGE_USECS(0)); in atge_device_start()
2091 OUTL(atgep, ATGE_SMB_STAT_TIMER, ATGE_USECS(0)); in atge_device_start()
2093 atge_l1c_clear_stats(atgep); in atge_device_start()
2100 if (atgep->atge_mtu < ETHERMTU) in atge_device_start()
2101 atgep->atge_max_frame_size = ETHERMTU; in atge_device_start()
2103 atgep->atge_max_frame_size = atgep->atge_mtu; in atge_device_start()
2105 atgep->atge_max_frame_size += sizeof (struct ether_header) + in atge_device_start()
2107 OUTL(atgep, ATGE_FRAME_SIZE, atgep->atge_max_frame_size); in atge_device_start()
2109 switch (ATGE_MODEL(atgep)) { in atge_device_start()
2116 OUTL(atgep, ATGE_HDS_CFG, 0); in atge_device_start()
2123 OUTL(atgep, ATGE_IPG_IFG_CFG, in atge_device_start()
2132 OUTL(atgep, ATGE_HDPX_CFG, in atge_device_start()
2145 switch (ATGE_MODEL(atgep)) { in atge_device_start()
2147 if (atgep->atge_flags & ATGE_FLAG_JUMBO) { in atge_device_start()
2149 if (atgep->atge_mtu < ETHERMTU) in atge_device_start()
2150 reg = atgep->atge_max_frame_size; in atge_device_start()
2151 else if (atgep->atge_mtu < 6 * 1024) in atge_device_start()
2152 reg = (atgep->atge_max_frame_size * 2) / 3; in atge_device_start()
2154 reg = atgep->atge_max_frame_size / 2; in atge_device_start()
2156 OUTL(atgep, L1E_TX_JUMBO_THRESH, in atge_device_start()
2162 fsize = ROUNDUP(atgep->atge_max_frame_size, sizeof (uint64_t)); in atge_device_start()
2163 OUTL(atgep, ATGE_RXQ_JUMBO_CFG, in atge_device_start()
2179 switch (ATGE_MODEL(atgep)) { in atge_device_start()
2182 if ((atgep->atge_flags & ATGE_FLAG_PCIE) != 0) { in atge_device_start()
2186 OUTL(atgep, ATGE_LTSSM_ID_CFG, 0x6500); in atge_device_start()
2187 reg = INL(atgep, 0x1008); in atge_device_start()
2188 OUTL(atgep, 0x1008, reg | 0x8000); in atge_device_start()
2198 switch (ATGE_MODEL(atgep)) { in atge_device_start()
2200 reg = INL(atgep, L1E_SRAM_RX_FIFO_LEN); in atge_device_start()
2204 OUTL(atgep, ATGE_RXQ_FIFO_PAUSE_THRESH, in atge_device_start()
2211 switch (atgep->atge_chip_rev) { in atge_device_start()
2222 reg = INL(atgep, L1_SRAM_RX_FIFO_LEN); in atge_device_start()
2229 reg = INL(atgep, L1_SRAM_RRD_LEN); in atge_device_start()
2239 OUTL(atgep, ATGE_RXQ_FIFO_PAUSE_THRESH, in atge_device_start()
2245 OUTL(atgep, L1_RXQ_RRD_PAUSE_THRESH, in atge_device_start()
2252 switch (ATGE_DID(atgep)) { in atge_device_start()
2255 OUTL(atgep, ATGE_SERDES_LOCK, in atge_device_start()
2256 INL(atgep, ATGE_SERDES_LOCK) | in atge_device_start()
2267 reg = INL(atgep, L1C_SRAM_RX_FIFO_LEN); in atge_device_start()
2271 OUTL(atgep, ATGE_RXQ_FIFO_PAUSE_THRESH, in atge_device_start()
2281 switch (ATGE_MODEL(atgep)) { in atge_device_start()
2286 OUTL(atgep, ATGE_RXQ_CFG, reg); in atge_device_start()
2291 (atgep->atge_dma_rd_burst >> DMA_CFG_RD_BURST_SHIFT)) << in atge_device_start()
2299 OUTL(atgep, ATGE_TXQ_CFG, reg); in atge_device_start()
2301 OUTL(atgep, L1E_RSS_IDT_TABLE0, 0); in atge_device_start()
2302 OUTL(atgep, L1E_RSS_CPU, 0); in atge_device_start()
2312 OUTL(atgep, ATGE_DMA_CFG, in atge_device_start()
2314 atgep->atge_dma_rd_burst | atgep->atge_dma_wr_burst | in atge_device_start()
2323 OUTL(atgep, L1E_SMB_STAT_TIMER, 100000); in atge_device_start()
2324 atge_l1e_clear_stats(atgep); in atge_device_start()
2338 OUTL(atgep, ATGE_RXQ_CFG, reg); in atge_device_start()
2352 OUTL(atgep, ATGE_TXQ_CFG, reg); in atge_device_start()
2354 OUTL(atgep, L1_TX_JUMBO_TPD_TH_IPG, in atge_device_start()
2362 OUTL(atgep, ATGE_DMA_CFG, in atge_device_start()
2364 atgep->atge_dma_rd_burst | DMA_CFG_RD_ENB | in atge_device_start()
2365 atgep->atge_dma_wr_burst | DMA_CFG_WR_ENB); in atge_device_start()
2368 OUTL(atgep, L1_CMB_WR_THRESH, in atge_device_start()
2377 OUTL(atgep, L1_CMB_WR_TIMER, in atge_device_start()
2384 OUTL(atgep, L1_SMB_TIMER, ATGE_USECS(1000 * 1000)); in atge_device_start()
2385 OUTL(atgep, L1_CSMB_CTRL, in atge_device_start()
2393 if ((atgep->atge_flags & ATGE_FLAG_ASPM_MON) != 0) in atge_device_start()
2395 OUTL(atgep, ATGE_RXQ_CFG, reg); in atge_device_start()
2400 (atgep->atge_dma_rd_burst >> DMA_CFG_RD_BURST_SHIFT)) << in atge_device_start()
2403 switch (ATGE_DID(atgep)) { in atge_device_start()
2415 OUTL(atgep, L1C_TXQ_CFG, reg); in atge_device_start()
2417 OUTL(atgep, L1C_RSS_IDT_TABLE0, 0xe4e4e4e4); in atge_device_start()
2418 OUTL(atgep, L1C_RSS_CPU, 0); in atge_device_start()
2422 OUTL(atgep, ATGE_DMA_CFG, in atge_device_start()
2428 atgep->atge_dma_rd_burst | DMA_CFG_RD_ENB | in atge_device_start()
2429 atgep->atge_dma_wr_burst | DMA_CFG_WR_ENB); in atge_device_start()
2439 OUTL(atgep, ATGE_WOL_CFG, 0); in atge_device_start()
2462 switch (ATGE_DID(atgep)) { in atge_device_start()
2470 if ((atgep->atge_flags & ATGE_FLAG_FASTETHER) != 0) { in atge_device_start()
2472 ATGE_DB(("%s: %s() Fast Ethernet", atgep->atge_name, __func__)); in atge_device_start()
2475 ATGE_DB(("%s: %s() 1G speed", atgep->atge_name, __func__)); in atge_device_start()
2477 switch (ATGE_MODEL(atgep)) { in atge_device_start()
2483 OUTL(atgep, ATGE_MAC_CFG, reg); in atge_device_start()
2485 atgep->atge_chip_state |= ATGE_CHIP_RUNNING; in atge_device_start()
2490 atge_rxfilter(atgep); in atge_device_start()
2495 switch (ATGE_MODEL(atgep)) { in atge_device_start()
2497 OUTL(atgep, ATGE_INTR_MASK, L1E_INTRS); in atge_device_start()
2498 OUTL(atgep, ATGE_INTR_STATUS, 0xFFFFFFFF); in atge_device_start()
2499 OUTL(atgep, ATGE_INTR_STATUS, 0); in atge_device_start()
2503 OUTL(atgep, ATGE_INTR_STATUS, 0); in atge_device_start()
2504 OUTL(atgep, ATGE_INTR_MASK, atgep->atge_intrs); in atge_device_start()
2508 atge_mac_config(atgep); in atge_device_start()
2510 ATGE_DB(("%s: %s() device started", atgep->atge_name, __func__)); in atge_device_start()
2543 atge_rxfilter(atge_t *atgep) in atge_rxfilter() argument
2548 rxcfg = INL(atgep, ATGE_MAC_CFG); in atge_rxfilter()
2561 if (atgep->atge_filter_flags & (ATGE_PROMISC | ATGE_ALL_MULTICST)) { in atge_rxfilter()
2564 if (atgep->atge_filter_flags & ATGE_PROMISC) in atge_rxfilter()
2567 if (atgep->atge_filter_flags & ATGE_ALL_MULTICST) in atge_rxfilter()
2570 mchash = atgep->atge_mchash; in atge_rxfilter()
2573 atge_program_ether(atgep); in atge_rxfilter()
2575 OUTL(atgep, ATGE_MAR0, (uint32_t)mchash); in atge_rxfilter()
2576 OUTL(atgep, ATGE_MAR1, (uint32_t)(mchash >> 32)); in atge_rxfilter()
2577 OUTL(atgep, ATGE_MAC_CFG, rxcfg); in atge_rxfilter()
2580 atgep->atge_name, __func__, rxcfg, mchash)); in atge_rxfilter()
2584 atge_device_stop(atge_t *atgep) in atge_device_stop() argument
2593 if (!(atgep->atge_chip_state & ATGE_CHIP_SUSPENDED)) { in atge_device_stop()
2594 atgep->atge_chip_state |= ATGE_CHIP_STOPPED; in atge_device_stop()
2595 atgep->atge_chip_state &= ~ATGE_CHIP_RUNNING; in atge_device_stop()
2601 switch (ATGE_MODEL(atgep)) { in atge_device_stop()
2603 atge_l1e_gather_stats(atgep); in atge_device_stop()
2613 atge_disable_intrs(atgep); in atge_device_stop()
2615 switch (ATGE_MODEL(atgep)) { in atge_device_stop()
2623 reg = INL(atgep, ATGE_TXQ_CFG); in atge_device_stop()
2625 OUTL(atgep, ATGE_TXQ_CFG, reg); in atge_device_stop()
2627 reg = INL(atgep, ATGE_RXQ_CFG); in atge_device_stop()
2629 OUTL(atgep, ATGE_RXQ_CFG, reg); in atge_device_stop()
2631 reg = INL(atgep, ATGE_DMA_CFG); in atge_device_stop()
2633 OUTL(atgep, ATGE_DMA_CFG, reg); in atge_device_stop()
2635 atge_l1e_stop_mac(atgep); in atge_device_stop()
2636 OUTL(atgep, ATGE_INTR_STATUS, 0xFFFFFFFF); in atge_device_stop()
2640 OUTL(atgep, L1_CSMB_CTRL, 0); in atge_device_stop()
2642 atge_l1_stop_tx_mac(atgep); in atge_device_stop()
2643 atge_l1_stop_rx_mac(atgep); in atge_device_stop()
2644 reg = INL(atgep, ATGE_DMA_CFG); in atge_device_stop()
2646 OUTL(atgep, ATGE_DMA_CFG, reg); in atge_device_stop()
2651 reg = INL(atgep, ATGE_TXQ_CFG); in atge_device_stop()
2653 OUTL(atgep, ATGE_TXQ_CFG, reg); in atge_device_stop()
2655 reg = INL(atgep, ATGE_RXQ_CFG); in atge_device_stop()
2657 OUTL(atgep, ATGE_RXQ_CFG, reg); in atge_device_stop()
2662 atge_l1c_stop_tx_mac(atgep); in atge_device_stop()
2663 atge_l1c_stop_rx_mac(atgep); in atge_device_stop()
2664 reg = INL(atgep, ATGE_DMA_CFG); in atge_device_stop()
2666 OUTL(atgep, ATGE_DMA_CFG, reg); in atge_device_stop()
2671 reg = INL(atgep, L1C_TXQ_CFG); in atge_device_stop()
2673 OUTL(atgep, L1C_TXQ_CFG, reg); in atge_device_stop()
2675 reg = INL(atgep, ATGE_RXQ_CFG); in atge_device_stop()
2677 OUTL(atgep, ATGE_RXQ_CFG, reg); in atge_device_stop()
2682 if ((reg = INL(atgep, ATGE_IDLE_STATUS)) == 0) in atge_device_stop()
2688 atge_error(atgep->atge_dip, "%s() stopping TX/RX MAC timeout", in atge_device_stop()
2694 atge_disable_intrs(atge_t *atgep) in atge_disable_intrs() argument
2696 OUTL(atgep, ATGE_INTR_MASK, 0); in atge_disable_intrs()
2697 OUTL(atgep, ATGE_INTR_STATUS, 0xFFFFFFFF); in atge_disable_intrs()
2701 atge_device_init(atge_t *atgep) in atge_device_init() argument
2703 switch (ATGE_MODEL(atgep)) { in atge_device_init()
2705 atgep->atge_intrs = L1E_INTRS; in atge_device_init()
2706 atgep->atge_int_mod = ATGE_IM_TIMER_DEFAULT; in atge_device_init()
2708 atge_l1e_init_tx_ring(atgep); in atge_device_init()
2709 atge_l1e_init_rx_pages(atgep); in atge_device_init()
2712 atgep->atge_intrs = L1_INTRS | INTR_GPHY | INTR_PHY_LINK_DOWN | in atge_device_init()
2714 atgep->atge_int_mod = ATGE_IM_TIMER_DEFAULT; in atge_device_init()
2716 atge_l1_init_tx_ring(atgep); in atge_device_init()
2717 atge_l1_init_rx_ring(atgep); in atge_device_init()
2718 atge_l1_init_rr_ring(atgep); in atge_device_init()
2719 atge_l1_init_cmb(atgep); in atge_device_init()
2720 atge_l1_init_smb(atgep); in atge_device_init()
2723 atgep->atge_intrs = L1C_INTRS | L1C_INTR_GPHY | in atge_device_init()
2725 atgep->atge_int_rx_mod = 400/2; in atge_device_init()
2726 atgep->atge_int_tx_mod = 2000/1; in atge_device_init()
2728 atge_l1c_init_tx_ring(atgep); in atge_device_init()
2729 atge_l1c_init_rx_ring(atgep); in atge_device_init()
2730 atge_l1c_init_rr_ring(atgep); in atge_device_init()
2731 atge_l1c_init_cmb(atgep); in atge_device_init()
2732 atge_l1c_init_smb(atgep); in atge_device_init()
2735 OUTL(atgep, ATGE_CLK_GATING_CFG, 0); in atge_device_init()
2741 atge_device_restart(atge_t *atgep) in atge_device_restart() argument
2743 ASSERT(MUTEX_HELD(&atgep->atge_intr_lock)); in atge_device_restart()
2744 ASSERT(MUTEX_HELD(&atgep->atge_tx_lock)); in atge_device_restart()
2749 atge_device_stop(atgep); in atge_device_restart()
2754 atge_device_reset(atgep); in atge_device_restart()
2759 atge_device_init(atgep); in atge_device_restart()
2764 atge_device_start(atgep); in atge_device_restart()
2769 atge_send_a_packet(atge_t *atgep, mblk_t *mp) in atge_send_a_packet() argument
2778 ASSERT(MUTEX_HELD(&atgep->atge_tx_lock)); in atge_send_a_packet()
2782 if (pktlen > atgep->atge_tx_buf_len) { in atge_send_a_packet()
2783 atgep->atge_macxmt_errors++; in atge_send_a_packet()
2786 atgep->atge_name, __func__, in atge_send_a_packet()
2787 pktlen, atgep->atge_rx_buf_len)); in atge_send_a_packet()
2793 r = atgep->atge_tx_ring; in atge_send_a_packet()
2796 atgep->atge_noxmtbuf++; in atge_send_a_packet()
2797 atgep->atge_tx_resched = 1; in atge_send_a_packet()
2800 atgep->atge_name, __func__)); in atge_send_a_packet()
2820 switch (ATGE_MODEL(atgep)) { in atge_send_a_packet()
2872 switch (ATGE_MODEL(atgep)) { in atge_send_a_packet()
2888 "consumer : %d", atgep->atge_name, __func__, pktlen, in atge_send_a_packet()