Mercurial > illumos > nfs4.1
changeset 5470:345bfcc39c2b onnv_78
6614078 update_drv hangs when IB HCA has F/W version it cannot support
author | pramodbg |
---|---|
date | Mon, 12 Nov 2007 20:16:20 -0800 |
parents | 00848a4efb9d |
children | 848fe3e65dbe |
files | usr/src/uts/common/io/ib/ibnex/ibnex.c |
diffstat | 1 files changed, 23 insertions(+), 21 deletions(-) [+] |
line wrap: on
line diff
--- a/usr/src/uts/common/io/ib/ibnex/ibnex.c Mon Nov 12 20:15:08 2007 -0800 +++ b/usr/src/uts/common/io/ib/ibnex/ibnex.c Mon Nov 12 20:16:20 2007 -0800 @@ -812,14 +812,14 @@ * and put IB nexus default busops vector in its place. */ hca_dev_ops = ((struct modldrv *) - (cb_args->cb_modlp->ml_linkage[0]))->drv_dev_ops; + (cb_args->cb_modlp->ml_linkage[0]))->drv_dev_ops; ASSERT((hca_dev_ops) && (hca_dev_ops->devo_bus_ops == NULL)); hca_dev_ops->devo_bus_ops = &ibnex_ci_busops; break; case IBTL_IBNEX_IBC_FINI: hca_dev_ops = ((struct modldrv *) - (cb_args->cb_modlp->ml_linkage[0]))->drv_dev_ops; + (cb_args->cb_modlp->ml_linkage[0]))->drv_dev_ops; hca_dev_ops->devo_bus_ops = NULL; break; @@ -1454,13 +1454,15 @@ ndi_devi_enter(parent, &circ); hca_guid = ibtl_ibnex_hcadip2guid(parent); wait_time = ibdm_ibnex_get_waittime( - hca_guid, &ibnex_port_settling_time); + hca_guid, &ibnex_port_settling_time); if (wait_time) { delay(drv_usectohz(wait_time * 1000000)); } hca_list = ibdm_ibnex_get_hca_info_by_guid(hca_guid); - if (hca_list == NULL) + if (hca_list == NULL) { + ndi_devi_exit(parent, circ); return; + } ibnex_create_hcasvc_nodes(parent, hca_list->hl_hca_port_attr); for (ii = 0; ii < hca_list->hl_nports; ii++) { ibnex_create_port_nodes( @@ -1481,7 +1483,7 @@ /* Enumerate all the IOC's */ wait_time = ibdm_ibnex_get_waittime( - 0, &ibnex_port_settling_time); + 0, &ibnex_port_settling_time); if (wait_time) delay(drv_usectohz(wait_time * 1000000)); @@ -1570,8 +1572,8 @@ port_attr->pa_port_guid, idx, pkey, &dip); if (rval != IBNEX_SUCCESS) { (void) ibnex_commsvc_initnode(parent, port_attr, - idx, IBNEX_VPPA_COMMSVC_NODE, - pkey, &rval, IBNEX_CFGADM_ENUMERATE); + idx, IBNEX_VPPA_COMMSVC_NODE, + pkey, &rval, IBNEX_CFGADM_ENUMERATE); IBTF_DPRINTF_L5("ibnex", "\tcreate_vppa_nodes: " "commsvc_initnode failed rval %x", rval); } @@ -1704,7 +1706,7 @@ if (port_attr->pa_state != IBT_PORT_ACTIVE) { wait_time = ibdm_ibnex_get_waittime( - hca_guid, &ibnex_port_settling_time); + hca_guid, &ibnex_port_settling_time); if (wait_time) { delay(drv_usectohz(wait_time * 1000000)); } @@ -1821,7 +1823,7 @@ } for (index = 0; index < ibnex.ibnex_nvppa_comm_svcs; index++) { if (strcmp(ibnex.ibnex_vppa_comm_svc_names[index], - "ipib") == 0) { + "ipib") == 0) { break; } } @@ -1923,7 +1925,7 @@ int ii, ncommsvcs, ret; if (ibnex_devname_to_portnum(device_name, port_num) != - IBNEX_SUCCESS) { + IBNEX_SUCCESS) { IBTF_DPRINTF_L2("ibnex", "\tget_pkey_commsvc_index_portnum: Invalid PortGuid"); return (NULL); @@ -2376,10 +2378,10 @@ IBTF_DPRINTF_L4("ibnex", "\tibnex_ioc_create_pi Begin"); (void) snprintf(ioc_guid, 33, "%llX", - (longlong_t)ioc_info->ioc_profile.ioc_guid); + (longlong_t)ioc_info->ioc_profile.ioc_guid); (void) snprintf(phci_guid, 66, "%llX,%llX", - (longlong_t)ioc_info->ioc_profile.ioc_guid, - (longlong_t)ioc_info->ioc_iou_guid); + (longlong_t)ioc_info->ioc_profile.ioc_guid, + (longlong_t)ioc_info->ioc_iou_guid); hca_list = ioc_info->ioc_hca_list; @@ -2505,7 +2507,7 @@ capabilities = (ioc_profile->ioc_ctrl_opcap_mask << 8); if (ndi_prop_update_int(DDI_DEV_T_NONE, cdip, - "capabilities", capabilities) != DDI_PROP_SUCCESS) { + "capabilities", capabilities) != DDI_PROP_SUCCESS) { IBTF_DPRINTF_L2("ibnex", "\tcreate_ioc_node_prop: capabilities create failed"); return (IBNEX_FAILURE); @@ -3220,14 +3222,14 @@ */ if (port_attr->pa_port_num != 0) { if (ndi_prop_update_int(DDI_DEV_T_NONE, child_dip, - "port-number", port_attr->pa_port_num) != + "port-number", port_attr->pa_port_num) != DDI_PROP_SUCCESS) { IBTF_DPRINTF_L2("ibnex", "\tcreate_port_node_prop: port-num update failed"); return (IBNEX_FAILURE); } if (ndi_prop_update_int64(DDI_DEV_T_NONE, child_dip, - "port-guid", port_attr->pa_port_guid) != + "port-guid", port_attr->pa_port_guid) != DDI_PROP_SUCCESS) { IBTF_DPRINTF_L2("ibnex", "\tcreate_port_node_prop: port-guid update failed"); @@ -3283,7 +3285,7 @@ } if (ndi_prop_update_int(DDI_DEV_T_NONE, child_dip, - "num-ports", hca_list->hl_nports) != DDI_PROP_SUCCESS) { + "num-ports", hca_list->hl_nports) != DDI_PROP_SUCCESS) { IBTF_DPRINTF_L2("ibnex", "\tcreate_port_node_prop: num-ports update failed"); ibdm_ibnex_free_hca_list(hca_list); @@ -3293,19 +3295,19 @@ } if (ndi_prop_update_int64(DDI_DEV_T_NONE, child_dip, - "hca-guid", port_attr->pa_hca_guid) != DDI_PROP_SUCCESS) { + "hca-guid", port_attr->pa_hca_guid) != DDI_PROP_SUCCESS) { IBTF_DPRINTF_L2("ibnex", "\tcreate_port_node_prop: hca-guid update failed"); return (IBNEX_FAILURE); } if (ndi_prop_update_int(DDI_DEV_T_NONE, child_dip, - "product-id", port_attr->pa_productid) != DDI_PROP_SUCCESS) { + "product-id", port_attr->pa_productid) != DDI_PROP_SUCCESS) { IBTF_DPRINTF_L2("ibnex", "\tcreate_port_node_prop: product-id update failed"); return (IBNEX_FAILURE); } if (ndi_prop_update_int(DDI_DEV_T_NONE, child_dip, - "vendor-id", port_attr->pa_vendorid) != DDI_PROP_SUCCESS) { + "vendor-id", port_attr->pa_vendorid) != DDI_PROP_SUCCESS) { IBTF_DPRINTF_L2("ibnex", "\tcreate_port_node_prop: vendor-id update failed"); return (IBNEX_FAILURE); @@ -3921,7 +3923,7 @@ (node_data->node_reprobe_state & IBNEX_NODE_REPROBE_NOTIFY_ALWAYS)) && ((node_data->node_state == IBNEX_CFGADM_CONFIGURED) && - (evt_cookie != NULL))) { + (evt_cookie != NULL))) { mutex_exit(&ibnex.ibnex_mutex); if (ndi_post_event(ibnex.ibnex_dip, dip,