Lines Matching refs:child
745 struct domain_device *child,
752 child->pathways = 0;
764 SAS_ADDR(child->sas_addr)) {
766 child->min_linkrate = min(parent->min_linkrate,
768 child->max_linkrate = max(parent->max_linkrate,
770 child->pathways++;
774 child->linkrate = min(parent_phy->linkrate, child->max_linkrate);
775 child->pathways = min(child->pathways, parent->pathways);
783 struct domain_device *child = NULL;
790 child = sas_alloc_device();
791 if (!child)
795 child->parent = parent;
796 child->port = parent->port;
797 child->iproto = phy->attached_iproto;
798 memcpy(child->sas_addr, phy->attached_sas_addr, SAS_ADDR_SIZE);
799 sas_hash_addr(child->hashed_sas_addr, child->sas_addr);
809 sas_ex_get_linkrate(parent, child, phy);
810 sas_device_set_phy(child, phy->port);
814 if (child->linkrate > parent->min_linkrate) {
815 struct sas_phy *cphy = child->phy;
827 SAS_ADDR(child->sas_addr), phy_id);
832 SAS_ADDR(child->sas_addr), phy_id, ret);
836 SAS_ADDR(child->sas_addr), phy_id);
837 child->linkrate = child->min_linkrate;
839 res = sas_get_ata_info(child, phy);
843 sas_init_dev(child);
844 res = sas_ata_init(child);
852 child->rphy = rphy;
855 list_add_tail(&child->disco_list_node, &parent->port->disco_list);
857 res = sas_discover_sata(child);
860 SAS_ADDR(child->sas_addr),
867 child->dev_type = SAS_END_DEVICE;
872 child->tproto = phy->attached_tproto;
873 sas_init_dev(child);
875 child->rphy = rphy;
878 sas_fill_in_rphy(child, rphy);
880 list_add_tail(&child->disco_list_node, &parent->port->disco_list);
882 res = sas_discover_end_dev(child);
885 SAS_ADDR(child->sas_addr),
896 list_add_tail(&child->siblings, &parent_ex->children);
897 return child;
900 sas_rphy_free(child->rphy);
901 list_del(&child->disco_list_node);
903 list_del(&child->dev_list_node);
909 sas_put_device(child);
942 struct domain_device *child = NULL;
955 child = sas_alloc_device();
956 if (!child)
978 child->rphy = rphy;
981 child->dev_type = phy->attached_dev_type;
983 child->parent = parent;
984 child->port = port;
985 child->iproto = phy->attached_iproto;
986 child->tproto = phy->attached_tproto;
987 memcpy(child->sas_addr, phy->attached_sas_addr, SAS_ADDR_SIZE);
988 sas_hash_addr(child->hashed_sas_addr, child->sas_addr);
989 sas_ex_get_linkrate(parent, child, phy);
993 sas_init_dev(child);
994 sas_fill_in_rphy(child, rphy);
998 list_add_tail(&child->dev_list_node, &parent->port->dev_list);
1001 res = sas_discover_expander(child);
1005 list_del(&child->dev_list_node);
1007 sas_put_device(child);
1012 list_add_tail(&child->siblings, &parent->ex_dev.children);
1013 return child;
1020 struct domain_device *child = NULL;
1085 child = sas_ex_discover_end_dev(dev, phy_id);
1101 child = sas_ex_discover_expander(dev, phy_id);
1107 if (!child)
1139 struct domain_device *child;
1142 list_for_each_entry(child, &ex->children, siblings) {
1143 if (!dev_is_expander(child->dev_type))
1146 sas_find_sub_addr(child, sub_addr);
1151 if (sas_find_sub_addr(child, s2) &&
1156 SAS_ADDR(child->sas_addr),
1160 sas_ex_disable_port(child, s2);
1247 static void sas_print_parent_topology_bug(struct domain_device *child,
1255 struct domain_device *parent = child->parent;
1262 ex_type[child->dev_type],
1263 SAS_ADDR(child->sas_addr),
1267 sas_route_char(child, child_phy));
1270 static int sas_check_eeds(struct domain_device *child,
1275 struct domain_device *parent = child->parent;
1282 SAS_ADDR(child->sas_addr),
1288 memcpy(parent->port->disc.eeds_b, child->sas_addr,
1293 SAS_ADDR(child->sas_addr)))
1298 SAS_ADDR(child->sas_addr))))
1305 SAS_ADDR(child->sas_addr),
1314 static int sas_check_parent_topology(struct domain_device *child)
1316 struct expander_device *child_ex = &child->ex_dev;
1321 if (!child->parent)
1324 if (!dev_is_expander(child->parent->dev_type))
1327 parent_ex = &child->parent->ex_dev;
1337 if (SAS_ADDR(parent_phy->attached_sas_addr) != SAS_ADDR(child->sas_addr))
1342 switch (child->parent->dev_type) {
1344 if (child->dev_type == SAS_FANOUT_EXPANDER_DEVICE) {
1347 sas_print_parent_topology_bug(child, parent_phy, child_phy);
1352 res = sas_check_eeds(child, parent_phy, child_phy);
1354 sas_print_parent_topology_bug(child, parent_phy, child_phy);
1363 sas_print_parent_topology_bug(child, parent_phy, child_phy);
1371 sas_print_parent_topology_bug(child, parent_phy, child_phy);
1517 * @child: child expander
1518 * @sas_addr: SAS port identifier of device directly attached to child
1519 * @include: whether or not to include @child in the expander routing table
1522 struct domain_device *child,
1547 SAS_ADDR(child->sas_addr))) {
1865 struct domain_device *child, *n;
1867 list_for_each_entry_safe(child, n, &ex->children, siblings) {
1868 set_bit(SAS_DEV_GONE, &child->state);
1869 if (dev_is_expander(child->dev_type))
1870 sas_unregister_ex_tree(port, child);
1872 sas_unregister_dev(port, child);
1882 struct domain_device *child, *n, *found = NULL;
1884 list_for_each_entry_safe(child, n,
1886 if (SAS_ADDR(child->sas_addr) ==
1888 set_bit(SAS_DEV_GONE, &child->state);
1889 if (dev_is_expander(child->dev_type))
1890 sas_unregister_ex_tree(parent->port, child);
1892 sas_unregister_dev(parent->port, child);
1893 found = child;
1914 struct domain_device *child;
1917 list_for_each_entry(child, &ex_root->children, siblings) {
1918 if (dev_is_expander(child->dev_type)) {
1920 rphy_to_expander_device(child->rphy);
1923 res = sas_discover_bfs_by_root_level(child,
1926 res = sas_ex_discover_devices(child, -1);
1953 struct domain_device *child;
1968 list_for_each_entry(child, &dev->ex_dev.children, siblings) {
1969 if (SAS_ADDR(child->sas_addr) ==
1971 if (dev_is_expander(child->dev_type))
1972 res = sas_discover_bfs_by_root(child);