Lines Matching refs:child

82 static int	scsi_hba_remove_node(dev_info_t *child);
219 dev_info_t *child,
226 dev_info_t *child,
237 dev_info_t *child,
243 dev_info_t *child,
259 dev_info_t *child,
278 dev_info_t *child,
386 * self/child context. Filtering of messages is provided based on logging
481 scsi_hba_log(int level, const char *func, dev_info_t *self, dev_info_t *child,
491 /* derive self from child's parent */
492 if ((self == NULL) && child)
493 self = ddi_get_parent(child);
554 if ((scsi_hba_log_info & 0x0004) && (child || self)) {
556 (void *)(child ? child : self));
560 (void) ddi_pathname(child ? child : self, info);
565 /* always provide 'default' information about self &child */
569 if (child) {
570 ua = ddi_get_name_addr(child);
572 ddi_node_name(child), (ua && *ua) ? ua : "");
614 scsi_enumeration_failed(dev_info_t *child, scsi_enum_t se,
617 /* If 'se' is -1 the 'se' value comes from child. */
619 ASSERT(child);
620 se = ndi_dev_is_hotplug_node(child) ? SE_HP : SE_BUSCONFIG;
625 SCSI_HBA_LOG((_LOG(PANIC), NULL, child,
630 SCSI_HBA_LOG((_LOG(WARN), NULL, child,
635 SCSI_HBA_LOG((_LOG(2), NULL, child,
687 scsi_hba_dev_is_sid(dev_info_t *child)
693 return (ndi_dev_is_persistent_node(child));
1480 * SMP child flavored functions
1483 smp_busctl_ua(dev_info_t *child, char *addr, int maxlen)
1489 if (ndi_flavor_get(child) != SCSA_FLAVOR_SMP)
1492 if (ddi_prop_lookup_string(DDI_DEV_T_ANY, child,
1504 if (ddi_prop_lookup_string(DDI_DEV_T_ANY, child,
1515 smp_busctl_reportdev(dev_info_t *child)
1517 dev_info_t *self = ddi_get_parent(child);
1521 if (ddi_prop_lookup_string(DDI_DEV_T_ANY, child,
1525 ddi_driver_name(child), ddi_get_instance(child),
1535 if (ddi_prop_lookup_string(DDI_DEV_T_ANY, child,
1539 ddi_driver_name(child), ddi_get_instance(child),
1548 smp_busctl_initchild(dev_info_t *child)
1550 dev_info_t *self = ddi_get_parent(child);
1562 if (smp_busctl_ua(child, addr, sizeof (addr)) != DDI_SUCCESS)
1568 dup = ndi_devi_findchild_by_callback(self, ddi_node_name(child), addr,
1573 SCSI_HBA_LOG((_LOG(1), NULL, child,
1575 ddi_node_name(child), addr));
1578 if (dup != child) {
1579 SCSI_HBA_LOG((_LOG(4), NULL, child,
1581 ddi_node_name(child), addr, (void *)dup));
1588 ddi_set_name_addr(child, addr);
1592 smp_sd->smp_sd_dev = child;
1596 ddi_set_driver_private(child, smp_sd);
1598 if (tran->smp_tran_init && ((*tran->smp_tran_init)(self, child,
1601 scsi_enumeration_failed(child, -1, NULL, "smp_tran_init");
1602 ddi_set_driver_private(child, NULL);
1603 ddi_set_name_addr(child, NULL);
1612 smp_busctl_uninitchild(dev_info_t *child)
1614 dev_info_t *self = ddi_get_parent(child);
1615 struct smp_device *smp_sd = ddi_get_driver_private(child);
1624 (*tran->smp_tran_free) (self, child, tran, smp_sd);
1627 ddi_set_driver_private(child, NULL);
1628 ddi_set_name_addr(child, NULL);
1632 /* Find an "smp" child at the specified address. */
1636 dev_info_t *child;
1638 /* Search "smp" devinfo child at specified address. */
1640 for (child = ddi_get_child(self); child;
1641 child = ddi_get_next_sibling(child)) {
1643 if (ndi_flavor_get(child) != SCSA_FLAVOR_SMP)
1647 if (i_ddi_node_state(child) < DS_INITIALIZED)
1648 (void) ddi_initchild(self, child);
1651 if ((i_ddi_node_state(child) < DS_INITIALIZED) ||
1652 (ddi_get_name_addr(child) == NULL))
1655 /* Return "smp" child if unit-address matches. */
1656 if (strcmp(ddi_get_name_addr(child), addr) == 0)
1657 return (child);
1663 * Search for "smp" child of self at the specified address. If found, online
1671 dev_info_t *child;
1677 /* Search for "smp" child. */
1679 if ((child = smp_findchild(self, addr)) == NULL) {
1685 if (ndi_devi_online(child, 0) != NDI_SUCCESS) {
1691 ndi_hold_devi(child);
1693 *childp = child;
1699 /* Create "smp" child devinfo node at specified unit-address. */
1703 dev_info_t *child;
1713 /* Search for "smp" child. */
1715 child = smp_findchild(self, addr);
1716 if (child) {
1718 if (ndi_devi_device_insert(child))
1726 /* Allocate "smp" child devinfo node and establish flavor of child. */
1727 ndi_devi_alloc_sleep(self, "smp", DEVI_SID_HP_NODEID, &child);
1728 ASSERT(child);
1729 ndi_flavor_set(child, SCSA_FLAVOR_SMP);
1731 /* Add unit-address property to child. */
1732 if (ndi_prop_update_string(DDI_DEV_T_NONE, child,
1734 (void) ndi_devi_free(child);
1740 (void) ndi_devi_online(child, 0);
1751 scsi_busctl_ua(dev_info_t *child, char *addr, int maxlen)
1756 if (ndi_flavor_get(child) != SCSA_FLAVOR_SCSI_DEVICE)
1760 sd = ddi_get_driver_private(child);
1768 scsi_busctl_reportdev(dev_info_t *child)
1770 dev_info_t *self = ddi_get_parent(child);
1771 struct scsi_device *sd = ddi_get_driver_private(child);
1776 SCSI_HBA_LOG((_LOG_TRACE, NULL, child, __func__));
1786 SCSI_HBA_LOG((_LOG(WARN), NULL, child, "REPORTDEV failure"));
1792 ddi_driver_name(child), ddi_get_instance(child),
1797 ddi_driver_name(child), ddi_get_instance(child),
1802 ddi_driver_name(child), ddi_get_instance(child),
1811 * communication with a particular child scsi target device. Successful
1817 * The child may be one of the following types of devinfo nodes:
1832 * new child devinfo node or to further decorate (via merge) a SID
1833 * child with properties. In our case we use the nodes for *both*
1854 scsi_busctl_initchild(dev_info_t *child)
1856 dev_info_t *self = ddi_get_parent(child);
1869 SCSI_HBA_LOG((_LOG(4), NULL, child, "init begin"));
1894 if ((DEVI(child)->devi_hw_prop_ptr == NULL) &&
1895 (DEVI(child)->devi_drv_prop_ptr == NULL) &&
1896 (DEVI(child)->devi_sys_prop_ptr == NULL)) {
1897 SCSI_HBA_LOG((_LOG(4), NULL, child,
1899 ndi_devi_set_hidden(child);
1904 if ((tgt = ddi_prop_get_int(DDI_DEV_T_ANY, child,
1916 if (!scsi_hba_dev_is_sid(child)) {
1917 SCSI_HBA_LOG((_LOG(4), NULL, child,
1919 ndi_devi_set_hidden(child);
1923 lun = ddi_prop_get_int(DDI_DEV_T_ANY, child,
1925 sfunc = ddi_prop_get_int(DDI_DEV_T_ANY, child,
1936 SCSI_HBA_LOG((_LOG(1), NULL, child,
1938 ndi_devi_set_hidden(child);
1950 sd->sd_dev = child;
1953 ddi_set_driver_private(child, sd);
2024 if (ddi_prop_lookup_string(DDI_DEV_T_ANY, child,
2028 } else if (ndi_prop_update_string(DDI_DEV_T_NONE, child,
2030 SCSI_HBA_LOG((_LOG(2), NULL, child, "init failed: class"));
2031 ndi_devi_set_hidden(child);
2036 /* Establish the @addr name of the child. */
2038 if (scsi_busctl_ua(child, addr, sizeof (addr)) != DDI_SUCCESS) {
2044 SCSI_HBA_LOG((_LOG(3), NULL, child,
2046 ndi_devi_set_hidden(child);
2051 SCSI_HBA_LOG((_LOG(2), NULL, child, "init failed: ua"));
2052 ndi_devi_set_hidden(child);
2058 dup = ndi_devi_findchild_by_callback(self, ddi_node_name(child), addr,
2063 SCSI_HBA_LOG((_LOG(1), NULL, child,
2065 ddi_node_name(child), addr));
2068 if (dup != child) {
2069 SCSI_HBA_LOG((_LOG(4), NULL, child,
2071 ddi_node_name(child), addr, (void *)dup));
2077 ddi_set_name_addr(child, addr);
2081 SCSI_HBA_LOG((_LOG(4), NULL, child, "init tran_tgt_init"));
2084 (self, child, tran, sd) != DDI_SUCCESS) {
2085 scsi_enumeration_failed(child, -1, NULL,
2091 SCSI_HBA_LOG((_LOG(3), NULL, child, "init successful"));
2099 ddi_set_driver_private(child, NULL);
2100 ddi_set_name_addr(child, NULL);
2106 scsi_busctl_uninitchild(dev_info_t *child)
2108 dev_info_t *self = ddi_get_parent(child);
2109 struct scsi_device *sd = ddi_get_driver_private(child);
2126 SCSI_HBA_LOG((_LOG(2), NULL, child, "uninit prevented"));
2133 if (MDI_CLIENT(child) && mdi_client_get_path_count(child)) {
2134 SCSI_HBA_LOG((_LOG(2), NULL, child,
2139 SCSI_HBA_LOG((_LOG(3), NULL, child, "uninit begin"));
2179 SCSI_HBA_LOG((_LOG(4), NULL, child,
2181 (*tran->tran_tgt_free) (self, child, tran, sd);
2184 SCSI_HBA_LOG((_LOG(4), NULL, child,
2210 ddi_set_driver_private(child, NULL);
2211 SCSI_HBA_LOG((_LOG(3), NULL, child, "uninit complete"));
2212 ddi_set_name_addr(child, NULL);
2217 iport_busctl_ua(dev_info_t *child, char *addr, int maxlen)
2222 if (ndi_flavor_get(child) != SCSA_FLAVOR_IPORT)
2225 if (ddi_prop_lookup_string(DDI_DEV_T_ANY, child,
2237 iport_busctl_reportdev(dev_info_t *child)
2239 dev_info_t *self = ddi_get_parent(child);
2243 if (ddi_prop_lookup_string(DDI_DEV_T_ANY, child,
2248 (void) ddi_prop_lookup_string(DDI_DEV_T_ANY, child,
2255 ddi_driver_name(child), ddi_get_instance(child),
2262 ddi_driver_name(child), ddi_get_instance(child),
2270 /* initchild SCSA iport 'child' node */
2272 iport_busctl_initchild(dev_info_t *child)
2274 dev_info_t *self = ddi_get_parent(child);
2278 if (iport_busctl_ua(child, addr, sizeof (addr)) != DDI_SUCCESS)
2282 dup = ndi_devi_findchild_by_callback(self, ddi_node_name(child), addr,
2287 SCSI_HBA_LOG((_LOG(1), NULL, child,
2289 ddi_node_name(child), addr));
2292 if (dup != child) {
2293 SCSI_HBA_LOG((_LOG(4), NULL, child,
2295 ddi_node_name(child), addr, (void *)dup));
2301 ddi_set_name_addr(child, addr);
2306 /* uninitchild SCSA iport 'child' node */
2308 iport_busctl_uninitchild(dev_info_t *child)
2310 ddi_set_name_addr(child, NULL);
2314 /* Uninitialize scsi_device flavor of transport on SCSA iport 'child' node. */
2316 iport_postdetach_tran_scsi_device(dev_info_t *child)
2320 tran = ndi_flavorv_get(child, SCSA_FLAVOR_SCSI_DEVICE);
2324 scsa_tran_teardown(child, tran);
2325 scsa_nexus_teardown(child, tran);
2327 ndi_flavorv_set(child, SCSA_FLAVOR_SCSI_DEVICE, NULL);
2331 /* Initialize scsi_device flavor of transport on SCSA iport 'child' node. */
2333 iport_preattach_tran_scsi_device(dev_info_t *child)
2335 dev_info_t *hba = ddi_get_parent(child);
2343 /* Allocate iport child's scsi_device transport vector */
2344 tran = scsi_hba_tran_alloc(child, SCSI_HBA_CANSLEEP);
2358 tran->tran_iport_dip = child;
2367 ndi_flavorv_set(child, SCSA_FLAVOR_SCSI_DEVICE, tran);
2370 if ((scsa_nexus_setup(child, tran) != DDI_SUCCESS) ||
2371 (scsa_tran_setup(child, tran) != DDI_SUCCESS))
2372 iport_postdetach_tran_scsi_device(child);
2375 /* Uninitialize smp_device flavor of transport on SCSA iport 'child' node. */
2377 iport_postdetach_tran_smp_device(dev_info_t *child)
2381 tran = ndi_flavorv_get(child, SCSA_FLAVOR_SMP);
2385 ndi_flavorv_set(child, SCSA_FLAVOR_SMP, NULL);
2389 /* Initialize smp_device flavor of transport on SCSA iport 'child' node. */
2391 iport_preattach_tran_smp_device(dev_info_t *child)
2393 dev_info_t *hba = ddi_get_parent(child);
2400 ndi_flavorv_set(child, SCSA_FLAVOR_SMP, NULL);
2404 /* Allocate iport child's smp_device transport vector */
2405 tran = smp_hba_tran_alloc(child);
2411 ndi_flavorv_set(child, SCSA_FLAVOR_SMP, tran);
2422 dev_info_t *child,
2434 /* For some ops, child is 'arg'. */
2436 child = (dev_info_t *)arg;
2438 /* Determine the flavor of the child: scsi, smp, iport */
2439 child_flavor = ndi_flavor_get(child);
2445 return (scsi_busctl_initchild(child));
2447 return (smp_busctl_initchild(child));
2449 return (iport_busctl_initchild(child));
2458 return (scsi_busctl_uninitchild(child));
2460 return (smp_busctl_uninitchild(child));
2462 return (iport_busctl_uninitchild(child));
2471 return (scsi_busctl_reportdev(child));
2473 return (smp_busctl_reportdev(child));
2475 return (iport_busctl_reportdev(child));
2490 iport_preattach_tran_scsi_device(child);
2491 iport_preattach_tran_smp_device(child);
2495 iport_postdetach_tran_scsi_device(child);
2496 iport_postdetach_tran_smp_device(child);
2510 iport_postdetach_tran_scsi_device(child);
2511 iport_postdetach_tran_smp_device(child);
2534 return (ddi_ctlops(self, child, op, arg, result));
2537 return (ndi_dev_is_persistent_node(child) ?
2564 return (ddi_ctlops(self, child, op, arg, result));
2879 dev_info_t *child,
2894 dev_info_t *child,
2903 child, name, eventp) == DDI_SUCCESS)) {
2907 return (ndi_busop_get_eventcookie(self, child, name, eventp));
2913 dev_info_t *child,
2927 ((*tran->tran_add_eventcall)(self, child,
2954 dev_info_t *child,
2963 child, event, bus_impldata) == DDI_SUCCESS)) {
3088 dev_info_t *child = NULL;
3123 /* Ioctls that require child identification */
3138 * Find child with name@addr - might find a devinfo
3139 * child (child), a pathinfo child (path), or nothing.
3143 (void) scsi_findchild(self, name, addr, 1, &child, &path, NULL);
3146 ASSERT(path && (child == NULL));
3150 } else if (child) {
3152 ASSERT(child && (path == NULL));
3154 /* verify scsi_device of child */
3155 if (ndi_flavor_get(child) == SCSA_FLAVOR_SCSI_DEVICE)
3156 sd = ddi_get_driver_private(child);
3160 ASSERT((path == NULL) && (child == NULL));
3167 case DEVCTL_BUS_RESETALL: /* ioctl that operate on any child */
3169 * Find a child's scsi_address so we can invoke tran_reset.
3171 * Future: If no child exists, we could fake a child. This will
3176 child = ddi_get_child(self);
3178 while (child) {
3179 /* verify scsi_device of child */
3180 if (ndi_flavor_get(child) == SCSA_FLAVOR_SCSI_DEVICE)
3181 sd = ddi_get_driver_private(child);
3187 ndi_hold_devi(child);
3190 child = ddi_get_next_sibling(child);
3201 } else if (child) {
3202 if (ndi_dc_return_dev_state(child, dcp) != NDI_SUCCESS)
3285 ASSERT(child || path);
3290 if (ndi_devi_online(child, 0) != NDI_SUCCESS)
3296 ASSERT(child || path);
3303 if (ndi_devi_offline(child,
3310 ASSERT(child || path);
3326 if (ndi_devi_offline(child,
3345 if (path || child)
3361 scsi_hba_fm_init_child(dev_info_t *self, dev_info_t *child, int cap,
4889 * Private ndi_devi_find/mdi_pi_find implementation - find the child
4897 * If pchildp is NULL and we find a pathinfo child, we return the client
4910 dev_info_t *dchild; /* devinfo child */
4911 mdi_pathinfo_t *pchild; /* pathinfo child */
4926 /* Walk devinfo child list to find a match */
4963 * Walk pathinfo child list to find a match.
5059 * Given information about a child device (contained on probe node) construct
5429 dev_info_t *child;
5450 child = NULL;
5496 * For now, we ndi_devi_online() the child because some other
5505 * find the child with an @addr search, but does not incur
5522 child = dchild;
5525 return (child);
5635 * node to real child hand-off by calling scsi_hba_barrier_tran_tgt_free
5731 scsi_hba_remove_node(dev_info_t *child)
5733 dev_info_t *self = ddi_get_parent(child);
5743 if (scsi_hba_devi_is_barrier(child)) {
5744 sd = ddi_get_driver_private(child);
5750 (void) ddi_deviname(child, na);
5751 if (ddi_remove_child(child, 0) != DDI_SUCCESS) {
5752 SCSI_HBA_LOG((_LOG(2), NULL, child,
5755 child = NULL; /* child is gone */
5761 SCSI_HBA_LOG((_LOG(4), NULL, child, "remove_node prevented"));
5769 * to expire, then deletes the barrier (removes it as a child).
6009 * Enumerate a child at the specified @addr. If a device exists @addr then
6015 * parent. We return the scsi_device structure for the child device. This
6017 * parent. The caller can add do ndi_hold_devi of the child prior to the
6018 * scsi_hba_devi_exit to extend the validity of the child.
6053 dev_info_t *child = NULL;
6086 * and placing a hold on the child (directly via ndi_hold_devi or
6099 child = dsearch;
6232 child = dsearch;
6243 * initialized child "@addr".
6245 * o If we find an initialized SID child and name is NULL or matches
6285 child = dsearch;
6468 /* Create the child node from the inquiry data in the probe node. */
6469 if ((child = scsi_device_configchild(self, addr, se, sdprobe,
6477 0, &child, NULL, &pi);
6478 if (child)
6479 SCSI_HBA_LOG((_LOG(2), NULL, child,
6482 if (child == NULL) {
6490 * Transfer the inquiry data from the probe node to the child
6494 sdchild = ddi_get_driver_private(child);
6505 if (name && (strcmp(ddi_node_name(child), name) != 0) &&
6506 (strcmp(ddi_driver_name(child), name) != 0)) {
6510 SCSI_HBA_LOG((_LOG(2), NULL, child,
6519 (void) scsi_hba_remove_node(child);
6520 child = NULL;
6526 child = dsearch;
6531 SCSI_HBA_LOG((_LOG(3), NULL, child, "device configured"));
6533 if (child) {
6534 done: ASSERT(child);
6535 sdchild = ddi_get_driver_private(child);
6547 ((pi == NULL) && ndi_devi_device_isremoved(child))) {
6550 if ((se == SE_HP) || !ndi_dev_is_hotplug_node(child)) {
6551 SCSI_HBA_LOG((_LOG(3), NULL, child,
6560 * Devinfo child exists and we are
6565 chg = ndi_devi_device_insert(child);
6566 SCSI_HBA_LOG((_LOGCFG, NULL, child,
6571 scsi_enumeration_failed(child, se,
6574 chg = ndi_devi_device_remove(child);
6575 SCSI_HBA_LOG((_LOG(2), NULL, child,
6582 child = NULL;
6586 SCSI_HBA_LOG((_LOG(2), NULL, child,
6589 child = NULL;
6594 fail: ASSERT(child == NULL);
6635 (mdi_pi_get_client(psearch) == child));
6649 SCSI_HBA_LOG((_LOG(3), NULL, child,
6657 * Pathinfo child exists and we are
6676 chg = ndi_devi_device_insert(child);
6677 SCSI_HBA_LOG((_LOGCFG, NULL, child,
6683 scsi_enumeration_failed(child, se,
6686 child = NULL;
6691 SCSI_HBA_LOG((_LOG(2), NULL, child,
6695 child = NULL;
6711 dev_info_t *child = NULL;
6724 (void) scsi_findchild(self, name, addr, 0, &child, &path, NULL);
6726 if ((child == NULL) && (path == NULL)) {
6727 child = ndi_devi_findchild_by_callback(self, name, addr,
6729 if (child) {
6733 ASSERT(ndi_flavor_get(child) ==
6735 if (ndi_flavor_get(child) != SCSA_FLAVOR_SCSI_DEVICE) {
6739 child = NULL;
6744 if (child) {
6745 ASSERT(child && (path == NULL));
6748 if (scsi_hba_devi_is_barrier(child)) {
6756 if (ndi_devi_offline(child,
6761 } else if (ndi_devi_device_remove(child)) {
6768 ASSERT(path && (child == NULL));
6798 ASSERT((path == NULL) && (child == NULL));
7000 dev_info_t *child;
7005 * NOTE: child should only be used in SCSI_HBA_LOG context since with
7006 * vHCI enumeration it may be the vHCI 'client' devinfo child instead
7007 * of a child of the 'self' pHCI we are enumerating.
7009 child = sd0->sd_dev;
7020 SCSI_HBA_LOG((_LOG(1), NULL, child, "failed alloc"));
7029 SCSI_HBA_LOG((_LOG(1), NULL, child, "failed init"));
7050 SCSI_HBA_LOG((_LOG(2), NULL, child, "reportlun not supported"));
7068 SCSI_HBA_LOG((_LOG(1), NULL, child, "illegal tluns of zero"));
7083 SCSI_HBA_LOG((_LOG(1), NULL, child,
7100 SCSI_HBA_LOG((_LOG(1), NULL, child, "NULL lunarray"));
7110 SCSI_HBA_LOG((_LOG(3), NULL, child,
7118 * with a child of the vHCI instead of 'self' - in this case the 'pi'
7146 dev_info_t *child;
7184 * NOTE: child should only be used in SCSI_HBA_LOG context since with
7185 * vHCI enumeration it may be the vHCI 'client' devinfo child instead
7186 * of a child of the 'self' pHCI we are enumerating.
7188 child = sd0->sd_dev;
7222 SCSI_HBA_LOG((_LOG(2), NULL, child,
7272 scsi_enumeration_failed(child, se, taddr, "report_lun");
7285 SCSI_HBA_LOG((_LOG(2), NULL, child,
7289 SCSI_HBA_LOG((_LOG(2), NULL, child,
7598 * Configure the child, and if we're successful return with
7840 case BUS_CONFIG_ONE: /* enumerate the named child */
7947 * looking for one form of child and then doing "fallback" to
7948 * look for other form of child).
8088 dev_info_t *child;
8110 * looking for one form of child and then doing "fallback" to
8111 * look for other form of child).
8179 /* create the iport node child */
8181 if ((child = scsi_hba_bus_config_port(self, (char *)arg,
8184 ndi_hold_devi(child);
8185 *childp = child;
8453 dev_info_t *child;
8462 if ((child = ndi_devi_findchild(self, nameaddr)) == NULL) {
8467 if (ndi_devi_offline(child,
8471 } else if (ndi_devi_device_remove(child)) {
8951 * created the SCSA HBA node (PCI) as a child.
9100 dev_info_t *child = NULL;
9119 child = NULL;
9125 rval = ndi_devi_config_one(self, addr, &child, NDI_NO_EVENT);
9129 child = NULL;
9133 return (child);
9142 dev_info_t *child; /* iport child of HBA node */
9151 if (child = ndi_devi_findchild(self, nameaddr)) {
9152 if (ndi_devi_device_isremoved(child)) {
9153 if ((se == SE_HP) || !ndi_dev_is_hotplug_node(child)) {
9154 if (ndi_devi_device_insert(child))
9161 return (child);
9177 &child);
9178 ASSERT(child);
9180 * Set the flavor of the child to be IPORT flavored
9182 ndi_flavor_set(child, SCSA_FLAVOR_IPORT);
9185 * Add the SCSI_ADDR_PROP_IPORTUA addressing property for this child.
9201 if ((ndi_prop_update_string(DDI_DEV_T_NONE, child,
9203 (ndi_prop_update_string_array(DDI_DEV_T_NONE, child,
9205 ddi_pathname_obp_set(child, NULL) != DDI_SUCCESS) {
9208 (void) ddi_remove_child(child, 0);
9209 child = NULL;
9215 ndi_hold_devi(child);
9216 if (ndi_devi_online(child, 0) != NDI_SUCCESS) {
9217 ndi_rele_devi(child);
9218 ndi_prop_remove_all(child);
9219 (void) ndi_devi_free(child);
9220 child = NULL;
9222 ndi_rele_devi(child);
9225 return (child);
9232 * a scsi_hba_bus_config(BUS_CONFIG_ONE) on each child of self (each iport).
9276 * Try to configure child under iport see wehter
9277 * request node is the child of the iport node
9349 /* create the iport node child */
9416 dev_info_t *childp; /* iport child of HBA node */