Lines Matching refs:child
739 struct domain_device *child, in sas_ex_get_linkrate() argument
746 child->pathways = 0; in sas_ex_get_linkrate()
758 SAS_ADDR(child->sas_addr)) { in sas_ex_get_linkrate()
760 child->min_linkrate = min(parent->min_linkrate, in sas_ex_get_linkrate()
762 child->max_linkrate = max(parent->max_linkrate, in sas_ex_get_linkrate()
764 child->pathways++; in sas_ex_get_linkrate()
768 child->linkrate = min(parent_phy->linkrate, child->max_linkrate); in sas_ex_get_linkrate()
769 child->pathways = min(child->pathways, parent->pathways); in sas_ex_get_linkrate()
777 struct domain_device *child = NULL; in sas_ex_discover_end_dev() local
784 child = sas_alloc_device(); in sas_ex_discover_end_dev()
785 if (!child) in sas_ex_discover_end_dev()
789 child->parent = parent; in sas_ex_discover_end_dev()
790 child->port = parent->port; in sas_ex_discover_end_dev()
791 child->iproto = phy->attached_iproto; in sas_ex_discover_end_dev()
792 memcpy(child->sas_addr, phy->attached_sas_addr, SAS_ADDR_SIZE); in sas_ex_discover_end_dev()
793 sas_hash_addr(child->hashed_sas_addr, child->sas_addr); in sas_ex_discover_end_dev()
803 sas_ex_get_linkrate(parent, child, phy); in sas_ex_discover_end_dev()
804 sas_device_set_phy(child, phy->port); in sas_ex_discover_end_dev()
808 res = sas_get_ata_info(child, phy); in sas_ex_discover_end_dev()
812 sas_init_dev(child); in sas_ex_discover_end_dev()
813 res = sas_ata_init(child); in sas_ex_discover_end_dev()
820 child->rphy = rphy; in sas_ex_discover_end_dev()
823 list_add_tail(&child->disco_list_node, &parent->port->disco_list); in sas_ex_discover_end_dev()
825 res = sas_discover_sata(child); in sas_ex_discover_end_dev()
829 SAS_ADDR(child->sas_addr), in sas_ex_discover_end_dev()
836 child->dev_type = SAS_END_DEVICE; in sas_ex_discover_end_dev()
841 child->tproto = phy->attached_tproto; in sas_ex_discover_end_dev()
842 sas_init_dev(child); in sas_ex_discover_end_dev()
844 child->rphy = rphy; in sas_ex_discover_end_dev()
846 sas_fill_in_rphy(child, rphy); in sas_ex_discover_end_dev()
848 list_add_tail(&child->disco_list_node, &parent->port->disco_list); in sas_ex_discover_end_dev()
850 res = sas_discover_end_dev(child); in sas_ex_discover_end_dev()
854 SAS_ADDR(child->sas_addr), in sas_ex_discover_end_dev()
865 list_add_tail(&child->siblings, &parent_ex->children); in sas_ex_discover_end_dev()
866 return child; in sas_ex_discover_end_dev()
869 sas_rphy_free(child->rphy); in sas_ex_discover_end_dev()
870 list_del(&child->disco_list_node); in sas_ex_discover_end_dev()
872 list_del(&child->dev_list_node); in sas_ex_discover_end_dev()
878 sas_put_device(child); in sas_ex_discover_end_dev()
911 struct domain_device *child = NULL; in sas_ex_discover_expander() local
925 child = sas_alloc_device(); in sas_ex_discover_expander()
926 if (!child) in sas_ex_discover_expander()
948 child->rphy = rphy; in sas_ex_discover_expander()
951 child->dev_type = phy->attached_dev_type; in sas_ex_discover_expander()
953 child->parent = parent; in sas_ex_discover_expander()
954 child->port = port; in sas_ex_discover_expander()
955 child->iproto = phy->attached_iproto; in sas_ex_discover_expander()
956 child->tproto = phy->attached_tproto; in sas_ex_discover_expander()
957 memcpy(child->sas_addr, phy->attached_sas_addr, SAS_ADDR_SIZE); in sas_ex_discover_expander()
958 sas_hash_addr(child->hashed_sas_addr, child->sas_addr); in sas_ex_discover_expander()
959 sas_ex_get_linkrate(parent, child, phy); in sas_ex_discover_expander()
963 sas_init_dev(child); in sas_ex_discover_expander()
964 sas_fill_in_rphy(child, rphy); in sas_ex_discover_expander()
968 list_add_tail(&child->dev_list_node, &parent->port->dev_list); in sas_ex_discover_expander()
971 res = sas_discover_expander(child); in sas_ex_discover_expander()
975 list_del(&child->dev_list_node); in sas_ex_discover_expander()
977 sas_put_device(child); in sas_ex_discover_expander()
980 list_add_tail(&child->siblings, &parent->ex_dev.children); in sas_ex_discover_expander()
981 return child; in sas_ex_discover_expander()
988 struct domain_device *child = NULL; in sas_ex_discover_dev() local
1054 child = sas_ex_discover_end_dev(dev, phy_id); in sas_ex_discover_dev()
1071 child = sas_ex_discover_expander(dev, phy_id); in sas_ex_discover_dev()
1077 if (child) { in sas_ex_discover_dev()
1089 SAS_ADDR(child->sas_addr)) { in sas_ex_discover_dev()
1129 struct domain_device *child; in sas_check_level_subtractive_boundary() local
1132 list_for_each_entry(child, &ex->children, siblings) { in sas_check_level_subtractive_boundary()
1133 if (child->dev_type != SAS_EDGE_EXPANDER_DEVICE && in sas_check_level_subtractive_boundary()
1134 child->dev_type != SAS_FANOUT_EXPANDER_DEVICE) in sas_check_level_subtractive_boundary()
1137 sas_find_sub_addr(child, sub_addr); in sas_check_level_subtractive_boundary()
1142 if (sas_find_sub_addr(child, s2) && in sas_check_level_subtractive_boundary()
1149 SAS_ADDR(child->sas_addr), in sas_check_level_subtractive_boundary()
1153 sas_ex_disable_port(child, s2); in sas_check_level_subtractive_boundary()
1243 static void sas_print_parent_topology_bug(struct domain_device *child, in sas_print_parent_topology_bug() argument
1251 struct domain_device *parent = child->parent; in sas_print_parent_topology_bug()
1260 ex_type[child->dev_type], in sas_print_parent_topology_bug()
1261 SAS_ADDR(child->sas_addr), in sas_print_parent_topology_bug()
1265 sas_route_char(child, child_phy)); in sas_print_parent_topology_bug()
1268 static int sas_check_eeds(struct domain_device *child, in sas_check_eeds() argument
1273 struct domain_device *parent = child->parent; in sas_check_eeds()
1281 SAS_ADDR(child->sas_addr), in sas_check_eeds()
1287 memcpy(parent->port->disc.eeds_b, child->sas_addr, in sas_check_eeds()
1292 SAS_ADDR(child->sas_addr))) in sas_check_eeds()
1297 SAS_ADDR(child->sas_addr)))) in sas_check_eeds()
1305 SAS_ADDR(child->sas_addr), in sas_check_eeds()
1314 static int sas_check_parent_topology(struct domain_device *child) in sas_check_parent_topology() argument
1316 struct expander_device *child_ex = &child->ex_dev; in sas_check_parent_topology()
1321 if (!child->parent) in sas_check_parent_topology()
1324 if (child->parent->dev_type != SAS_EDGE_EXPANDER_DEVICE && in sas_check_parent_topology()
1325 child->parent->dev_type != SAS_FANOUT_EXPANDER_DEVICE) in sas_check_parent_topology()
1328 parent_ex = &child->parent->ex_dev; in sas_check_parent_topology()
1338 if (SAS_ADDR(parent_phy->attached_sas_addr) != SAS_ADDR(child->sas_addr)) in sas_check_parent_topology()
1343 switch (child->parent->dev_type) { in sas_check_parent_topology()
1345 if (child->dev_type == SAS_FANOUT_EXPANDER_DEVICE) { in sas_check_parent_topology()
1348 sas_print_parent_topology_bug(child, parent_phy, child_phy); in sas_check_parent_topology()
1353 res = sas_check_eeds(child, parent_phy, child_phy); in sas_check_parent_topology()
1355 sas_print_parent_topology_bug(child, parent_phy, child_phy); in sas_check_parent_topology()
1364 sas_print_parent_topology_bug(child, parent_phy, child_phy); in sas_check_parent_topology()
1372 sas_print_parent_topology_bug(child, parent_phy, child_phy); in sas_check_parent_topology()
1524 struct domain_device *child, in sas_configure_parent() argument
1549 SAS_ADDR(child->sas_addr))) { in sas_configure_parent()
1865 struct domain_device *child, *n; in sas_unregister_ex_tree() local
1867 list_for_each_entry_safe(child, n, &ex->children, siblings) { in sas_unregister_ex_tree()
1868 set_bit(SAS_DEV_GONE, &child->state); in sas_unregister_ex_tree()
1869 if (child->dev_type == SAS_EDGE_EXPANDER_DEVICE || in sas_unregister_ex_tree()
1870 child->dev_type == SAS_FANOUT_EXPANDER_DEVICE) in sas_unregister_ex_tree()
1871 sas_unregister_ex_tree(port, child); in sas_unregister_ex_tree()
1873 sas_unregister_dev(port, child); in sas_unregister_ex_tree()
1883 struct domain_device *child, *n, *found = NULL; in sas_unregister_devs_sas_addr() local
1885 list_for_each_entry_safe(child, n, in sas_unregister_devs_sas_addr()
1887 if (SAS_ADDR(child->sas_addr) == in sas_unregister_devs_sas_addr()
1889 set_bit(SAS_DEV_GONE, &child->state); in sas_unregister_devs_sas_addr()
1890 if (child->dev_type == SAS_EDGE_EXPANDER_DEVICE || in sas_unregister_devs_sas_addr()
1891 child->dev_type == SAS_FANOUT_EXPANDER_DEVICE) in sas_unregister_devs_sas_addr()
1892 sas_unregister_ex_tree(parent->port, child); in sas_unregister_devs_sas_addr()
1894 sas_unregister_dev(parent->port, child); in sas_unregister_devs_sas_addr()
1895 found = child; in sas_unregister_devs_sas_addr()
1915 struct domain_device *child; in sas_discover_bfs_by_root_level() local
1918 list_for_each_entry(child, &ex_root->children, siblings) { in sas_discover_bfs_by_root_level()
1919 if (child->dev_type == SAS_EDGE_EXPANDER_DEVICE || in sas_discover_bfs_by_root_level()
1920 child->dev_type == SAS_FANOUT_EXPANDER_DEVICE) { in sas_discover_bfs_by_root_level()
1922 rphy_to_expander_device(child->rphy); in sas_discover_bfs_by_root_level()
1925 res = sas_discover_bfs_by_root_level(child, in sas_discover_bfs_by_root_level()
1928 res = sas_ex_discover_devices(child, -1); in sas_discover_bfs_by_root_level()
1955 struct domain_device *child; in sas_discover_new() local
1970 list_for_each_entry(child, &dev->ex_dev.children, siblings) { in sas_discover_new()
1971 if (SAS_ADDR(child->sas_addr) == in sas_discover_new()
1973 if (child->dev_type == SAS_EDGE_EXPANDER_DEVICE || in sas_discover_new()
1974 child->dev_type == SAS_FANOUT_EXPANDER_DEVICE) in sas_discover_new()
1975 res = sas_discover_bfs_by_root(child); in sas_discover_new()