Lines Matching refs:hba

38 static void emlxs_handle_async_event(emlxs_hba_t *hba, CHANNEL *cp,
41 static void emlxs_pci_cap_offsets(emlxs_hba_t *hba);
130 emlxs_msi_init(emlxs_hba_t *hba, uint32_t max) in emlxs_msi_init() argument
151 if (!(hba->intr_flags & EMLXS_MSI_ENABLED)) { in emlxs_msi_init()
152 return (emlxs_intx_init(hba, max)); in emlxs_msi_init()
155 if (hba->intr_flags & EMLXS_MSI_INITED) { in emlxs_msi_init()
170 if (hba->model_info.intr_limit && (max > hba->model_info.intr_limit)) { in emlxs_msi_init()
171 max = hba->model_info.intr_limit; in emlxs_msi_init()
176 ret = ddi_intr_get_supported_types(hba->dip, &types); in emlxs_msi_init()
204 (hba->model_info.flags & EMLXS_MSIX_SUPPORTED)) { in emlxs_msi_init()
208 ddi_intr_get_nintrs(hba->dip, DDI_INTR_TYPE_MSIX, in emlxs_msi_init()
220 (hba->model_info.flags & EMLXS_MSI_SUPPORTED)) { in emlxs_msi_init()
224 ddi_intr_get_nintrs(hba->dip, DDI_INTR_TYPE_MSI, &nintrs); in emlxs_msi_init()
235 (hba->model_info.flags & EMLXS_INTX_SUPPORTED)) { in emlxs_msi_init()
239 ddi_intr_get_nintrs(hba->dip, DDI_INTR_TYPE_FIXED, in emlxs_msi_init()
288 ddi_intr_alloc(hba->dip, htable, type, EMLXS_MSI_INUMBER, count, in emlxs_msi_init()
411 hba->intr_htable = htable; in emlxs_msi_init()
412 hba->intr_count = count; in emlxs_msi_init()
413 hba->intr_pri = intr_pri; in emlxs_msi_init()
414 hba->intr_cap = intr_cap; in emlxs_msi_init()
415 hba->intr_type = type; in emlxs_msi_init()
416 hba->intr_arg = (void *)((unsigned long)intr_pri[0]); in emlxs_msi_init()
417 hba->intr_mask = emlxs_msi_mask[mode]; in emlxs_msi_init()
419 hba->intr_cond = 0; in emlxs_msi_init()
422 if (hba->sli_mode == EMLXS_HBA_SLI4_MODE) { in emlxs_msi_init()
423 hba->chan_count = hba->intr_count * cfg[CFG_NUM_WQ].current; in emlxs_msi_init()
427 hba->intr_map[i] = emlxs_msi_map[mode][i]; in emlxs_msi_init()
428 hba->intr_cond |= emlxs_msi_map[mode][i]; in emlxs_msi_init()
430 mutex_init(&hba->intr_lock[i], NULL, MUTEX_DRIVER, in emlxs_msi_init()
431 DDI_INTR_PRI(hba->intr_arg)); in emlxs_msi_init()
435 hba->intr_flags |= EMLXS_MSI_INITED; in emlxs_msi_init()
438 for (i = 0; i < hba->chan_count; i++) { in emlxs_msi_init()
439 mutex_init(&hba->chan[i].rsp_lock, NULL, MUTEX_DRIVER, in emlxs_msi_init()
440 DDI_INTR_PRI(hba->intr_arg)); in emlxs_msi_init()
442 emlxs_thread_create(hba, &hba->chan[i].intr_thread); in emlxs_msi_init()
468 hba->intr_htable = NULL; in emlxs_msi_init()
469 hba->intr_count = 0; in emlxs_msi_init()
470 hba->intr_pri = NULL; in emlxs_msi_init()
471 hba->intr_cap = NULL; in emlxs_msi_init()
472 hba->intr_type = 0; in emlxs_msi_init()
473 hba->intr_arg = NULL; in emlxs_msi_init()
474 hba->intr_cond = 0; in emlxs_msi_init()
475 bzero(hba->intr_map, sizeof (hba->intr_map)); in emlxs_msi_init()
476 bzero(hba->intr_lock, sizeof (hba->intr_lock)); in emlxs_msi_init()
497 emlxs_msi_uninit(emlxs_hba_t *hba) in emlxs_msi_uninit() argument
506 if (!(hba->intr_flags & EMLXS_MSI_ENABLED)) { in emlxs_msi_uninit()
507 return (emlxs_intx_uninit(hba)); in emlxs_msi_uninit()
517 if ((hba->intr_flags & EMLXS_MSI_ADDED)) { in emlxs_msi_uninit()
518 ret = emlxs_msi_remove(hba); in emlxs_msi_uninit()
526 if (!(hba->intr_flags & EMLXS_MSI_INITED)) { in emlxs_msi_uninit()
529 hba->intr_flags &= ~EMLXS_MSI_INITED; in emlxs_msi_uninit()
532 htable = hba->intr_htable; in emlxs_msi_uninit()
533 count = hba->intr_count; in emlxs_msi_uninit()
534 intr_pri = hba->intr_pri; in emlxs_msi_uninit()
535 intr_cap = hba->intr_cap; in emlxs_msi_uninit()
538 hba->intr_count = 0; in emlxs_msi_uninit()
539 hba->intr_htable = NULL; in emlxs_msi_uninit()
540 hba->intr_pri = NULL; in emlxs_msi_uninit()
541 hba->intr_cap = NULL; in emlxs_msi_uninit()
542 hba->intr_type = 0; in emlxs_msi_uninit()
543 hba->intr_arg = NULL; in emlxs_msi_uninit()
544 hba->intr_cond = 0; in emlxs_msi_uninit()
545 bzero(hba->intr_map, sizeof (hba->intr_map)); in emlxs_msi_uninit()
567 mutex_destroy(&hba->intr_lock[i]); in emlxs_msi_uninit()
571 for (i = 0; i < hba->chan_count; i++) { in emlxs_msi_uninit()
572 emlxs_thread_destroy(&hba->chan[i].intr_thread); in emlxs_msi_uninit()
573 mutex_destroy(&hba->chan[i].rsp_lock); in emlxs_msi_uninit()
589 emlxs_msi_add(emlxs_hba_t *hba) in emlxs_msi_add() argument
598 if (!(hba->intr_flags & EMLXS_MSI_ENABLED)) { in emlxs_msi_add()
599 return (emlxs_intx_add(hba)); in emlxs_msi_add()
603 if (hba->intr_flags & EMLXS_MSI_ADDED) { in emlxs_msi_add()
608 if (!(hba->intr_flags & EMLXS_MSI_INITED)) { in emlxs_msi_add()
609 ret = emlxs_msi_init(hba, 0); in emlxs_msi_add()
617 htable = hba->intr_htable; in emlxs_msi_add()
618 count = hba->intr_count; in emlxs_msi_add()
619 intr_cap = hba->intr_cap; in emlxs_msi_add()
626 (char *)hba, (char *)((unsigned long)i)); in emlxs_msi_add()
684 hba->intr_flags |= EMLXS_MSI_ADDED; in emlxs_msi_add()
694 emlxs_msi_remove(emlxs_hba_t *hba) in emlxs_msi_remove() argument
703 if (!(hba->intr_flags & EMLXS_MSI_ENABLED)) { in emlxs_msi_remove()
704 return (emlxs_intx_remove(hba)); in emlxs_msi_remove()
714 if (!(hba->intr_flags & EMLXS_MSI_ADDED)) { in emlxs_msi_remove()
717 hba->intr_flags &= ~EMLXS_MSI_ADDED; in emlxs_msi_remove()
720 EMLXS_SLI_DISABLE_INTR(hba, 0); in emlxs_msi_remove()
723 htable = hba->intr_htable; in emlxs_msi_remove()
724 count = hba->intr_count; in emlxs_msi_remove()
725 intr_cap = hba->intr_cap; in emlxs_msi_remove()
779 emlxs_intx_init(emlxs_hba_t *hba, uint32_t max) in emlxs_intx_init() argument
787 if (hba->intr_flags & EMLXS_INTX_INITED) { in emlxs_intx_init()
792 if (!(hba->model_info.flags & EMLXS_INTX_SUPPORTED)) { in emlxs_intx_init()
795 hba->model_info.model, hba->model_info.flags); in emlxs_intx_init()
806 if (ddi_intr_hilevel(hba->dip, EMLXS_INUMBER) != 0) { in emlxs_intx_init()
815 ddi_get_iblock_cookie(hba->dip, (uint32_t)EMLXS_INUMBER, in emlxs_intx_init()
816 (ddi_iblock_cookie_t *)&hba->intr_arg); in emlxs_intx_init()
824 hba->intr_flags |= EMLXS_INTX_INITED; in emlxs_intx_init()
826 hba->intr_count = 1; in emlxs_intx_init()
828 if (hba->sli_mode == EMLXS_HBA_SLI4_MODE) { in emlxs_intx_init()
829 hba->chan_count = cfg[CFG_NUM_WQ].current; in emlxs_intx_init()
833 for (i = 0; i < hba->chan_count; i++) { in emlxs_intx_init()
834 mutex_init(&hba->chan[i].rsp_lock, NULL, MUTEX_DRIVER, in emlxs_intx_init()
835 DDI_INTR_PRI(hba->intr_arg)); in emlxs_intx_init()
837 emlxs_thread_create(hba, &hba->chan[i].intr_thread); in emlxs_intx_init()
847 emlxs_intx_uninit(emlxs_hba_t *hba) in emlxs_intx_uninit() argument
853 if ((hba->intr_flags & EMLXS_INTX_ADDED)) { in emlxs_intx_uninit()
854 ret = emlxs_intx_remove(hba); in emlxs_intx_uninit()
862 if (!(hba->intr_flags & EMLXS_INTX_INITED)) { in emlxs_intx_uninit()
865 hba->intr_flags &= ~EMLXS_INTX_INITED; in emlxs_intx_uninit()
867 hba->intr_arg = NULL; in emlxs_intx_uninit()
870 for (i = 0; i < hba->chan_count; i++) { in emlxs_intx_uninit()
871 emlxs_thread_destroy(&hba->chan[i].intr_thread); in emlxs_intx_uninit()
872 mutex_destroy(&hba->chan[i].rsp_lock); in emlxs_intx_uninit()
885 emlxs_intx_add(emlxs_hba_t *hba) in emlxs_intx_add() argument
891 if (hba->intr_flags & EMLXS_INTX_ADDED) { in emlxs_intx_add()
896 if (!(hba->intr_flags & EMLXS_INTX_INITED)) { in emlxs_intx_add()
897 ret = emlxs_intx_init(hba, 0); in emlxs_intx_add()
905 ret = ddi_add_intr((void *)hba->dip, in emlxs_intx_add()
907 (ddi_iblock_cookie_t *)&hba->intr_arg, in emlxs_intx_add()
909 (uint_t(*)())EMLXS_SLI_INTX_INTR, (caddr_t)hba); in emlxs_intx_add()
918 hba->intr_flags |= EMLXS_INTX_ADDED; in emlxs_intx_add()
927 emlxs_intx_remove(emlxs_hba_t *hba) in emlxs_intx_remove() argument
930 if (!(hba->intr_flags & EMLXS_INTX_ADDED)) { in emlxs_intx_remove()
933 hba->intr_flags &= ~EMLXS_INTX_ADDED; in emlxs_intx_remove()
936 EMLXS_SLI_DISABLE_INTR(hba, 0); in emlxs_intx_remove()
939 (void) ddi_remove_intr((void *)hba->dip, (uint_t)EMLXS_INUMBER, in emlxs_intx_remove()
940 hba->intr_arg); in emlxs_intx_remove()
948 emlxs_process_link_speed(emlxs_hba_t *hba) in emlxs_process_link_speed() argument
959 cfg = &hba->config[CFG_LINK_SPEED]; in emlxs_process_link_speed()
1004 cfg->current = emlxs_check_parm(hba, CFG_LINK_SPEED, cfg->current); in emlxs_process_link_speed()
1017 emlxs_parse_vpd(emlxs_hba_t *hba, uint8_t *vpd_buf, uint32_t size) in emlxs_parse_vpd() argument
1264 emlxs_parse_fcoe(emlxs_hba_t *hba, uint8_t *fcoep, uint32_t size) in emlxs_parse_fcoe() argument
1292 bcopy((uint8_t *)fcoelist, (uint8_t *)&hba->sli.sli4.cfgFCOE, in emlxs_parse_fcoe()
1308 bcopy((uint8_t *)fcflist, (uint8_t *)&hba->sli.sli4.cfgFCF, in emlxs_parse_fcoe()
1312 entry_count = (hba->sli.sli4.cfgFCF.length * in emlxs_parse_fcoe()
1319 flags = *(uint32_t *)&hba->sli.sli4.cfgFCF.entry[i]; in emlxs_parse_fcoe()
1321 hba->sli.sli4.cfgFCF.entry[i].FabricName); in emlxs_parse_fcoe()
1323 hba->sli.sli4.cfgFCF.entry[i].SwitchName); in emlxs_parse_fcoe()
1337 emlxs_decode_firmware_rev(emlxs_hba_t *hba, emlxs_vpd_t *vpd) in emlxs_decode_firmware_rev() argument
1340 switch (hba->sli_mode) { in emlxs_decode_firmware_rev()
1576 emlxs_parse_prog_types(emlxs_hba_t *hba, char *prog_types) in emlxs_parse_prog_types() argument
1588 model = &hba->model_info; in emlxs_parse_prog_types()
1800 emlxs_build_prog_types(emlxs_hba_t *hba, emlxs_vpd_t *vpd) in emlxs_build_prog_types() argument
1809 if (hba->model_info.pt_2[0]) { in emlxs_build_prog_types()
1815 while ((i < 8) && (hba->model_info.pt_2[i])) { in emlxs_build_prog_types()
1817 hba->model_info.pt_2[i]); in emlxs_build_prog_types()
1824 if (hba->model_info.pt_3[0]) { in emlxs_build_prog_types()
1830 while ((i < 8) && (hba->model_info.pt_3[i])) { in emlxs_build_prog_types()
1832 hba->model_info.pt_3[i]); in emlxs_build_prog_types()
1840 if (hba->model_info.pt_6[0]) { in emlxs_build_prog_types()
1846 while ((i < 8) && (hba->model_info.pt_6[i])) { in emlxs_build_prog_types()
1848 hba->model_info.pt_6[i]); in emlxs_build_prog_types()
1855 if (hba->model_info.pt_7[0]) { in emlxs_build_prog_types()
1861 while ((i < 8) && (hba->model_info.pt_7[i])) { in emlxs_build_prog_types()
1863 hba->model_info.pt_7[i]); in emlxs_build_prog_types()
1870 if (hba->model_info.pt_A[0]) { in emlxs_build_prog_types()
1876 while ((i < 8) && (hba->model_info.pt_A[i])) { in emlxs_build_prog_types()
1878 hba->model_info.pt_A[i]); in emlxs_build_prog_types()
1886 if (hba->model_info.pt_B[0]) { in emlxs_build_prog_types()
1892 while ((i < 8) && (hba->model_info.pt_B[i])) { in emlxs_build_prog_types()
1894 hba->model_info.pt_B[i]); in emlxs_build_prog_types()
1901 if (hba->model_info.pt_20[0]) { in emlxs_build_prog_types()
1907 while ((i < 8) && (hba->model_info.pt_20[i])) { in emlxs_build_prog_types()
1909 hba->model_info.pt_20[i]); in emlxs_build_prog_types()
1916 if (hba->model_info.pt_FF[0]) { in emlxs_build_prog_types()
1922 while ((i < 8) && (hba->model_info.pt_FF[i])) { in emlxs_build_prog_types()
1924 hba->model_info.pt_FF[i]); in emlxs_build_prog_types()
1942 emlxs_init_adapter_info(emlxs_hba_t *hba) in emlxs_init_adapter_info() argument
1956 if (hba->bus_type == SBUS_FC) { in emlxs_init_adapter_info()
1957 if (hba->pci_acc_handle == NULL) { in emlxs_init_adapter_info()
1958 bcopy(&emlxs_sbus_model[0], &hba->model_info, in emlxs_init_adapter_info()
1961 hba->model_info.vendor_id = 0; in emlxs_init_adapter_info()
1962 hba->model_info.device_id = 0; in emlxs_init_adapter_info()
1969 ddi_get32(hba->pci_acc_handle, in emlxs_init_adapter_info()
1970 (uint32_t *)(hba->pci_addr + PCI_VENDOR_ID_REGISTER)); in emlxs_init_adapter_info()
1978 bcopy(&emlxs_sbus_model[i], &hba->model_info, in emlxs_init_adapter_info()
1987 bcopy(&emlxs_sbus_model[0], &hba->model_info, in emlxs_init_adapter_info()
1990 hba->model_info.vendor_id = vendor_id; in emlxs_init_adapter_info()
1991 hba->model_info.device_id = device_id; in emlxs_init_adapter_info()
1997 if (hba->pci_acc_handle == NULL) { in emlxs_init_adapter_info()
1998 bcopy(&emlxs_pci_model[0], &hba->model_info, in emlxs_init_adapter_info()
2001 hba->model_info.vendor_id = 0; in emlxs_init_adapter_info()
2002 hba->model_info.device_id = 0; in emlxs_init_adapter_info()
2009 ddi_get16(hba->pci_acc_handle, in emlxs_init_adapter_info()
2010 (uint16_t *)(hba->pci_addr + PCI_VENDOR_ID_REGISTER)); in emlxs_init_adapter_info()
2013 ddi_get16(hba->pci_acc_handle, in emlxs_init_adapter_info()
2014 (uint16_t *)(hba->pci_addr + PCI_DEVICE_ID_REGISTER)); in emlxs_init_adapter_info()
2018 ddi_get16(hba->pci_acc_handle, in emlxs_init_adapter_info()
2019 (uint16_t *)(hba->pci_addr + PCI_SSDID_REGISTER)); in emlxs_init_adapter_info()
2027 ddi_get32(hba->pci_acc_handle, in emlxs_init_adapter_info()
2028 (uint32_t *)(hba->pci_addr + PCI_CACHE_LINE_REGISTER)); in emlxs_init_adapter_info()
2054 &hba->model_info, in emlxs_init_adapter_info()
2073 &hba->model_info, in emlxs_init_adapter_info()
2091 &hba->model_info, in emlxs_init_adapter_info()
2101 bcopy(&emlxs_pci_model[0], &hba->model_info, in emlxs_init_adapter_info()
2104 hba->model_info.vendor_id = vendor_id; in emlxs_init_adapter_info()
2105 hba->model_info.device_id = device_id; in emlxs_init_adapter_info()
2106 hba->model_info.ssdid = ssdid; in emlxs_init_adapter_info()
2116 if (hba->model_info.chip == EMLXS_SATURN_CHIP) { in emlxs_init_adapter_info()
2117 hba->model_info.flags &= in emlxs_init_adapter_info()
2123 emlxs_pci_cap_offsets(hba); in emlxs_init_adapter_info()
2127 if ((hba->model_info.flags & EMLXS_MSI_SUPPORTED) && in emlxs_init_adapter_info()
2128 !hba->pci_cap_offset[PCI_CAP_ID_MSI]) { in emlxs_init_adapter_info()
2129 hba->model_info.flags &= ~EMLXS_MSI_SUPPORTED; in emlxs_init_adapter_info()
2133 if ((hba->model_info.flags & EMLXS_MSIX_SUPPORTED) && in emlxs_init_adapter_info()
2134 !hba->pci_cap_offset[PCI_CAP_ID_MSI_X]) { in emlxs_init_adapter_info()
2135 hba->model_info.flags &= ~EMLXS_MSIX_SUPPORTED; in emlxs_init_adapter_info()
2140 if (hba->pci_cap_offset[PCI_CAP_ID_VS]) { in emlxs_init_adapter_info()
2144 hba->sli_intf = in emlxs_init_adapter_info()
2145 ddi_get32(hba->pci_acc_handle, in emlxs_init_adapter_info()
2146 (uint32_t *)(hba->pci_addr + in emlxs_init_adapter_info()
2147 hba->pci_cap_offset[PCI_CAP_ID_VS] + in emlxs_init_adapter_info()
2153 hba->sli_intf); in emlxs_init_adapter_info()
2156 if ((hba->sli_intf & SLI_INTF_VALID_MASK) != in emlxs_init_adapter_info()
2158 hba->sli_intf = 0; in emlxs_init_adapter_info()
2163 if (ddi_prop_lookup_int_array(DDI_DEV_T_ANY, hba->dip, 0, in emlxs_init_adapter_info()
2166 hba->pci_function_number = in emlxs_init_adapter_info()
2168 hba->pci_device_number = in emlxs_init_adapter_info()
2170 hba->pci_bus_number = in emlxs_init_adapter_info()
2175 switch (hba->sli_intf & SLI_INTF_SLI_REV_MASK) { in emlxs_init_adapter_info()
2177 if (hba->model_info.sli_mask & EMLXS_SLI4_MASK) { in emlxs_init_adapter_info()
2178 hba->sli_api = emlxs_sli4_api; in emlxs_init_adapter_info()
2180 hba->sli_api = emlxs_sli3_api; in emlxs_init_adapter_info()
2185 if (!(hba->model_info.sli_mask & EMLXS_SLI3_MASK)) { in emlxs_init_adapter_info()
2190 hba->sli_intf, hba->model_info.sli_mask); in emlxs_init_adapter_info()
2193 hba->sli_api = emlxs_sli3_api; in emlxs_init_adapter_info()
2197 if (!(hba->model_info.sli_mask & EMLXS_SLI4_MASK)) { in emlxs_init_adapter_info()
2202 hba->sli_intf, hba->model_info.sli_mask); in emlxs_init_adapter_info()
2205 hba->sli_api = emlxs_sli4_api; in emlxs_init_adapter_info()
2213 hba->sli_intf, hba->model_info.sli_mask); in emlxs_init_adapter_info()
2218 if (emlxs_fm_check_acc_handle(hba, hba->pci_acc_handle) in emlxs_init_adapter_info()
2233 emlxs_handle_async_event(emlxs_hba_t *hba, CHANNEL *cp, IOCBQ *iocbq) in emlxs_handle_async_event() argument
2253 hba->temperature = iocb->ULPCONTEXT; in emlxs_handle_async_event()
2266 hba->temperature = iocb->ULPCONTEXT; in emlxs_handle_async_event()
2290 emlxs_reset_link_thread(emlxs_hba_t *hba, void *arg1, void *arg2) in emlxs_reset_link_thread() argument
2304 emlxs_restart_thread(emlxs_hba_t *hba, void *arg1, void *arg2) in emlxs_restart_thread() argument
2312 EMLXS_STATE_CHANGE(hba, FC_ERROR); in emlxs_restart_thread()
2314 emlxs_shutdown_thread(hba, arg1, arg2); in emlxs_restart_thread()
2324 emlxs_shutdown_thread(emlxs_hba_t *hba, void *arg1, void *arg2) in emlxs_shutdown_thread() argument
2329 if (hba->flag & FC_SHUTDOWN) { in emlxs_shutdown_thread()
2333 hba->flag |= FC_SHUTDOWN; in emlxs_shutdown_thread()
2340 (void) emlxs_offline(hba, 0); in emlxs_shutdown_thread()
2342 if (hba->sli_mode == EMLXS_HBA_SLI4_MODE) { in emlxs_shutdown_thread()
2347 EMLXS_SLI_HBA_RESET(hba, 1, 1, 0); in emlxs_shutdown_thread()
2350 if (hba->flag & FC_OVERTEMP_EVENT) { in emlxs_shutdown_thread()
2352 hba->temperature); in emlxs_shutdown_thread()
2367 emlxs_proc_channel(emlxs_hba_t *hba, CHANNEL *cp, void *arg2) in emlxs_proc_channel() argument
2388 emlxs_proc_channel_event(hba, cp, iocbq); in emlxs_proc_channel()
2396 EMLXS_SLI_ISSUE_IOCB_CMD(hba, cp, 0); in emlxs_proc_channel()
2407 emlxs_proc_channel_event(emlxs_hba_t *hba, CHANNEL *cp, IOCBQ *iocbq) in emlxs_proc_channel_event() argument
2484 emlxs_handle_fcp_event(hba, cp, iocbq); in emlxs_proc_channel_event()
2495 (void) emlxs_fct_handle_fcp_event(hba, cp, iocbq); in emlxs_proc_channel_event()
2505 (void) emlxs_ip_handle_event(hba, cp, iocbq); in emlxs_proc_channel_event()
2514 (void) emlxs_ip_handle_event(hba, cp, iocbq); in emlxs_proc_channel_event()
2518 (void) emlxs_ct_handle_event(hba, cp, iocbq); in emlxs_proc_channel_event()
2536 if (hba->sli_mode <= EMLXS_HBA_SLI3_MODE) { in emlxs_proc_channel_event()
2537 (void) emlxs_handle_rcv_seq(hba, cp, iocbq); in emlxs_proc_channel_event()
2542 (void) emlxs_ip_handle_rcv_seq_list(hba, cp, iocbq); in emlxs_proc_channel_event()
2547 (void) emlxs_handle_create_xri(hba, cp, iocbq); in emlxs_proc_channel_event()
2557 (void) emlxs_els_handle_event(hba, cp, iocbq); in emlxs_proc_channel_event()
2566 (void) emlxs_menlo_handle_event(hba, cp, iocbq); in emlxs_proc_channel_event()
2571 (void) emlxs_ct_handle_event(hba, cp, iocbq); in emlxs_proc_channel_event()
2593 (void) emlxs_fct_handle_abort(hba, cp, iocbq); in emlxs_proc_channel_event()
2608 (void) emlxs_fct_handle_abort(hba, cp, iocbq); in emlxs_proc_channel_event()
2623 (void) emlxs_fct_handle_abort(hba, cp, iocbq); in emlxs_proc_channel_event()
2638 (void) emlxs_fct_handle_abort(hba, cp, iocbq); in emlxs_proc_channel_event()
2653 (void) emlxs_fct_handle_abort(hba, cp, iocbq); in emlxs_proc_channel_event()
2672 emlxs_handle_async_event(hba, cp, iocbq); in emlxs_proc_channel_event()
2785 emlxs_pcix_mxr_update(emlxs_hba_t *hba, uint32_t verbose) in emlxs_pcix_mxr_update() argument
2831 emlxs_mb_set_var(hba, mbq, 0x00100506, value); in emlxs_pcix_mxr_update()
2833 if (EMLXS_SLI_ISSUE_MBOX_CMD(hba, mbq, MBX_WAIT, 0) != MBX_SUCCESS) { in emlxs_pcix_mxr_update()
2860 emlxs_get_key(emlxs_hba_t *hba, MAILBOXQ *mbq) in emlxs_get_key() argument
2873 if (hba->bus_type != SBUS_FC) { in emlxs_get_key()
2878 EMLXS_STATE_CHANGE(hba, FC_INIT_NVPARAMS); in emlxs_get_key()
2880 emlxs_mb_read_nv(hba, mbq); in emlxs_get_key()
2881 if (EMLXS_SLI_ISSUE_MBOX_CMD(hba, mbq, MBX_WAIT, 0) != MBX_SUCCESS) { in emlxs_get_key()
2908 emlxs_fw_show(emlxs_hba_t *hba) in emlxs_fw_show() argument
2926 emlxs_fw_load(emlxs_hba_t *hba, emlxs_firmware_t *fw) in emlxs_fw_load() argument
2934 emlxs_fw_unload(hba, fw); in emlxs_fw_load()
2937 hba->fw_modhandle = in emlxs_fw_load()
2939 if (!hba->fw_modhandle) { in emlxs_fw_load()
2952 (int (*)())ddi_modsym(hba->fw_modhandle, name, &err); in emlxs_fw_load()
2957 emlxs_fw_unload(hba, fw); in emlxs_fw_load()
2965 emlxs_fw_unload(hba, fw); in emlxs_fw_load()
2975 emlxs_fw_unload(emlxs_hba_t *hba, emlxs_firmware_t *fw) in emlxs_fw_unload() argument
2983 if (hba->fw_modhandle) { in emlxs_fw_unload()
2985 (void) ddi_modclose(hba->fw_modhandle); in emlxs_fw_unload()
2986 hba->fw_modhandle = NULL; in emlxs_fw_unload()
2999 emlxs_pci_cap_offsets(emlxs_hba_t *hba) in emlxs_pci_cap_offsets() argument
3013 bzero(hba->pci_cap_offset, sizeof (hba->pci_cap_offset)); in emlxs_pci_cap_offsets()
3017 offset = ddi_get8(hba->pci_acc_handle, in emlxs_pci_cap_offsets()
3018 (uint8_t *)(hba->pci_addr + offset)); in emlxs_pci_cap_offsets()
3022 reg = ddi_get32(hba->pci_acc_handle, in emlxs_pci_cap_offsets()
3023 (uint32_t *)(hba->pci_addr + offset)); in emlxs_pci_cap_offsets()
3030 (hba->pci_cap_offset[id] == 0)) { in emlxs_pci_cap_offsets()
3031 hba->pci_cap_offset[id] = offset; in emlxs_pci_cap_offsets()
3042 if ((hba->pci_cap_offset[PCI_CAP_ID_VS] == 0) && in emlxs_pci_cap_offsets()
3043 (hba->model_info.chip & EMLXS_BE_CHIPS)) { in emlxs_pci_cap_offsets()
3044 hba->pci_cap_offset[PCI_CAP_ID_VS] = 0x54; in emlxs_pci_cap_offsets()
3049 hba->pci_cap_offset[PCI_CAP_ID_VS]); in emlxs_pci_cap_offsets()
3052 if (! hba->pci_cap_offset[PCI_CAP_ID_PCI_E]) { in emlxs_pci_cap_offsets()
3059 bzero(hba->pci_ecap_offset, sizeof (hba->pci_ecap_offset)); in emlxs_pci_cap_offsets()
3066 reg = ddi_get32(hba->pci_acc_handle, in emlxs_pci_cap_offsets()
3067 (uint32_t *)(hba->pci_addr + eoffset)); in emlxs_pci_cap_offsets()
3076 (hba->pci_ecap_offset[eid] == 0)) { in emlxs_pci_cap_offsets()
3077 hba->pci_ecap_offset[eid] = eoffset; in emlxs_pci_cap_offsets()