Lines Matching full:child
615 struct domain_device *child, in sas_ex_get_linkrate() argument
622 child->pathways = 0; in sas_ex_get_linkrate()
634 SAS_ADDR(child->sas_addr)) { in sas_ex_get_linkrate()
636 child->min_linkrate = min(parent->min_linkrate, in sas_ex_get_linkrate()
638 child->max_linkrate = max(parent->max_linkrate, in sas_ex_get_linkrate()
640 child->pathways++; in sas_ex_get_linkrate()
644 child->linkrate = min(parent_phy->linkrate, child->max_linkrate); in sas_ex_get_linkrate()
645 child->pathways = min(child->pathways, parent->pathways); in sas_ex_get_linkrate()
653 struct domain_device *child = NULL; in sas_ex_discover_end_dev() local
660 child = kzalloc(sizeof(*child), GFP_KERNEL); in sas_ex_discover_end_dev()
661 if (!child) in sas_ex_discover_end_dev()
664 child->parent = parent; in sas_ex_discover_end_dev()
665 child->port = parent->port; in sas_ex_discover_end_dev()
666 child->iproto = phy->attached_iproto; in sas_ex_discover_end_dev()
667 memcpy(child->sas_addr, phy->attached_sas_addr, SAS_ADDR_SIZE); in sas_ex_discover_end_dev()
668 sas_hash_addr(child->hashed_sas_addr, child->sas_addr); in sas_ex_discover_end_dev()
678 sas_ex_get_linkrate(parent, child, phy); in sas_ex_discover_end_dev()
682 child->dev_type = SATA_DEV; in sas_ex_discover_end_dev()
684 child->tproto = phy->attached_tproto; in sas_ex_discover_end_dev()
686 child->tproto |= SATA_DEV; in sas_ex_discover_end_dev()
688 &child->sata_dev.rps_resp); in sas_ex_discover_end_dev()
695 memcpy(child->frame_rcvd, &child->sata_dev.rps_resp.rps.fis, in sas_ex_discover_end_dev()
702 sas_init_dev(child); in sas_ex_discover_end_dev()
704 child->rphy = rphy; in sas_ex_discover_end_dev()
707 list_add_tail(&child->dev_list_node, &parent->port->dev_list); in sas_ex_discover_end_dev()
710 res = sas_discover_sata(child); in sas_ex_discover_end_dev()
714 SAS_ADDR(child->sas_addr), in sas_ex_discover_end_dev()
721 child->dev_type = SAS_END_DEV; in sas_ex_discover_end_dev()
726 child->tproto = phy->attached_tproto; in sas_ex_discover_end_dev()
727 sas_init_dev(child); in sas_ex_discover_end_dev()
729 child->rphy = rphy; in sas_ex_discover_end_dev()
730 sas_fill_in_rphy(child, rphy); in sas_ex_discover_end_dev()
733 list_add_tail(&child->dev_list_node, &parent->port->dev_list); in sas_ex_discover_end_dev()
736 res = sas_discover_end_dev(child); in sas_ex_discover_end_dev()
740 SAS_ADDR(child->sas_addr), in sas_ex_discover_end_dev()
751 list_add_tail(&child->siblings, &parent_ex->children); in sas_ex_discover_end_dev()
752 return child; in sas_ex_discover_end_dev()
755 sas_rphy_free(child->rphy); in sas_ex_discover_end_dev()
756 child->rphy = NULL; in sas_ex_discover_end_dev()
759 list_del(&child->dev_list_node); in sas_ex_discover_end_dev()
765 kfree(child); in sas_ex_discover_end_dev()
798 struct domain_device *child = NULL; in sas_ex_discover_expander() local
812 child = kzalloc(sizeof(*child), GFP_KERNEL); in sas_ex_discover_expander()
813 if (!child) in sas_ex_discover_expander()
835 child->rphy = rphy; in sas_ex_discover_expander()
837 child->dev_type = phy->attached_dev_type; in sas_ex_discover_expander()
838 child->parent = parent; in sas_ex_discover_expander()
839 child->port = port; in sas_ex_discover_expander()
840 child->iproto = phy->attached_iproto; in sas_ex_discover_expander()
841 child->tproto = phy->attached_tproto; in sas_ex_discover_expander()
842 memcpy(child->sas_addr, phy->attached_sas_addr, SAS_ADDR_SIZE); in sas_ex_discover_expander()
843 sas_hash_addr(child->hashed_sas_addr, child->sas_addr); in sas_ex_discover_expander()
844 sas_ex_get_linkrate(parent, child, phy); in sas_ex_discover_expander()
848 sas_init_dev(child); in sas_ex_discover_expander()
849 sas_fill_in_rphy(child, rphy); in sas_ex_discover_expander()
853 list_add_tail(&child->dev_list_node, &parent->port->dev_list); in sas_ex_discover_expander()
856 res = sas_discover_expander(child); in sas_ex_discover_expander()
859 list_del(&child->dev_list_node); in sas_ex_discover_expander()
861 kfree(child); in sas_ex_discover_expander()
864 list_add_tail(&child->siblings, &parent->ex_dev.children); in sas_ex_discover_expander()
865 return child; in sas_ex_discover_expander()
872 struct domain_device *child = NULL; in sas_ex_discover_dev() local
937 child = sas_ex_discover_end_dev(dev, phy_id); in sas_ex_discover_dev()
954 child = sas_ex_discover_expander(dev, phy_id); in sas_ex_discover_dev()
960 if (child) { in sas_ex_discover_dev()
972 SAS_ADDR(child->sas_addr)) { in sas_ex_discover_dev()
1013 struct domain_device *child; in sas_check_level_subtractive_boundary() local
1016 list_for_each_entry(child, &ex->children, siblings) { in sas_check_level_subtractive_boundary()
1017 if (child->dev_type != EDGE_DEV && in sas_check_level_subtractive_boundary()
1018 child->dev_type != FANOUT_DEV) in sas_check_level_subtractive_boundary()
1021 sas_find_sub_addr(child, sub_addr); in sas_check_level_subtractive_boundary()
1026 if (sas_find_sub_addr(child, s2) && in sas_check_level_subtractive_boundary()
1033 SAS_ADDR(child->sas_addr), in sas_check_level_subtractive_boundary()
1037 sas_ex_disable_port(child, s2); in sas_check_level_subtractive_boundary()
1127 static void sas_print_parent_topology_bug(struct domain_device *child, in sas_print_parent_topology_bug() argument
1140 struct domain_device *parent = child->parent; in sas_print_parent_topology_bug()
1150 ex_type[child->dev_type], in sas_print_parent_topology_bug()
1151 SAS_ADDR(child->sas_addr), in sas_print_parent_topology_bug()
1152 child->ex_dev.t2t_supp, in sas_print_parent_topology_bug()
1159 static int sas_check_eeds(struct domain_device *child, in sas_check_eeds() argument
1164 struct domain_device *parent = child->parent; in sas_check_eeds()
1172 SAS_ADDR(child->sas_addr), in sas_check_eeds()
1178 memcpy(parent->port->disc.eeds_b, child->sas_addr, in sas_check_eeds()
1183 SAS_ADDR(child->sas_addr))) in sas_check_eeds()
1188 SAS_ADDR(child->sas_addr)))) in sas_check_eeds()
1196 SAS_ADDR(child->sas_addr), in sas_check_eeds()
1205 static int sas_check_parent_topology(struct domain_device *child) in sas_check_parent_topology() argument
1207 struct expander_device *child_ex = &child->ex_dev; in sas_check_parent_topology()
1212 if (!child->parent) in sas_check_parent_topology()
1215 if (child->parent->dev_type != EDGE_DEV && in sas_check_parent_topology()
1216 child->parent->dev_type != FANOUT_DEV) in sas_check_parent_topology()
1219 parent_ex = &child->parent->ex_dev; in sas_check_parent_topology()
1229 if (SAS_ADDR(parent_phy->attached_sas_addr) != SAS_ADDR(child->sas_addr)) in sas_check_parent_topology()
1234 switch (child->parent->dev_type) { in sas_check_parent_topology()
1236 if (child->dev_type == FANOUT_DEV) { in sas_check_parent_topology()
1239 sas_print_parent_topology_bug(child, parent_phy, child_phy); in sas_check_parent_topology()
1244 res = sas_check_eeds(child, parent_phy, child_phy); in sas_check_parent_topology()
1246 sas_print_parent_topology_bug(child, parent_phy, child_phy); in sas_check_parent_topology()
1255 sas_print_parent_topology_bug(child, parent_phy, child_phy); in sas_check_parent_topology()
1263 sas_print_parent_topology_bug(child, parent_phy, child_phy); in sas_check_parent_topology()
1411 * child: child expander
1412 * sas_addr: SAS port identifier of device directly attached to child
1415 struct domain_device *child, in sas_configure_parent() argument
1440 SAS_ADDR(child->sas_addr))) { in sas_configure_parent()
1748 struct domain_device *child, *n; in sas_unregister_ex_tree() local
1750 list_for_each_entry_safe(child, n, &ex->children, siblings) { in sas_unregister_ex_tree()
1751 child->gone = 1; in sas_unregister_ex_tree()
1752 if (child->dev_type == EDGE_DEV || in sas_unregister_ex_tree()
1753 child->dev_type == FANOUT_DEV) in sas_unregister_ex_tree()
1754 sas_unregister_ex_tree(port, child); in sas_unregister_ex_tree()
1756 sas_unregister_dev(port, child); in sas_unregister_ex_tree()
1766 struct domain_device *child, *n; in sas_unregister_devs_sas_addr() local
1768 list_for_each_entry_safe(child, n, in sas_unregister_devs_sas_addr()
1770 if (SAS_ADDR(child->sas_addr) == in sas_unregister_devs_sas_addr()
1772 child->gone = 1; in sas_unregister_devs_sas_addr()
1773 if (child->dev_type == EDGE_DEV || in sas_unregister_devs_sas_addr()
1774 child->dev_type == FANOUT_DEV) in sas_unregister_devs_sas_addr()
1775 sas_unregister_ex_tree(parent->port, child); in sas_unregister_devs_sas_addr()
1777 sas_unregister_dev(parent->port, child); in sas_unregister_devs_sas_addr()
1797 struct domain_device *child; in sas_discover_bfs_by_root_level() local
1800 list_for_each_entry(child, &ex_root->children, siblings) { in sas_discover_bfs_by_root_level()
1801 if (child->dev_type == EDGE_DEV || in sas_discover_bfs_by_root_level()
1802 child->dev_type == FANOUT_DEV) { in sas_discover_bfs_by_root_level()
1804 rphy_to_expander_device(child->rphy); in sas_discover_bfs_by_root_level()
1807 res = sas_discover_bfs_by_root_level(child, in sas_discover_bfs_by_root_level()
1810 res = sas_ex_discover_devices(child, -1); in sas_discover_bfs_by_root_level()
1837 struct domain_device *child; in sas_discover_new() local
1864 list_for_each_entry(child, &dev->ex_dev.children, siblings) { in sas_discover_new()
1865 if (SAS_ADDR(child->sas_addr) == in sas_discover_new()
1867 if (child->dev_type == EDGE_DEV || in sas_discover_new()
1868 child->dev_type == FANOUT_DEV) in sas_discover_new()
1869 res = sas_discover_bfs_by_root(child); in sas_discover_new()