提交 ffaac8f4 编写于 作者: L Luben Tuikov 提交者: James Bottomley

[SCSI] libsas: Allow expander T-T attachments

Allow expander table-to-table attachments for
expanders that support it.
Signed-off-by: NLuben Tuikov <ltuikov@yahoo.com>
Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
上级 41e9a696
...@@ -329,6 +329,7 @@ static void ex_assign_report_general(struct domain_device *dev, ...@@ -329,6 +329,7 @@ static void ex_assign_report_general(struct domain_device *dev,
dev->ex_dev.ex_change_count = be16_to_cpu(rg->change_count); dev->ex_dev.ex_change_count = be16_to_cpu(rg->change_count);
dev->ex_dev.max_route_indexes = be16_to_cpu(rg->route_indexes); dev->ex_dev.max_route_indexes = be16_to_cpu(rg->route_indexes);
dev->ex_dev.num_phys = min(rg->num_phys, (u8)MAX_EXPANDER_PHYS); dev->ex_dev.num_phys = min(rg->num_phys, (u8)MAX_EXPANDER_PHYS);
dev->ex_dev.t2t_supp = rg->t2t_supp;
dev->ex_dev.conf_route_table = rg->conf_route_table; dev->ex_dev.conf_route_table = rg->conf_route_table;
dev->ex_dev.configuring = rg->configuring; dev->ex_dev.configuring = rg->configuring;
memcpy(dev->ex_dev.enclosure_logical_id, rg->enclosure_logical_id, 8); memcpy(dev->ex_dev.enclosure_logical_id, rg->enclosure_logical_id, 8);
...@@ -1133,15 +1134,17 @@ static void sas_print_parent_topology_bug(struct domain_device *child, ...@@ -1133,15 +1134,17 @@ static void sas_print_parent_topology_bug(struct domain_device *child,
}; };
struct domain_device *parent = child->parent; struct domain_device *parent = child->parent;
sas_printk("%s ex %016llx phy 0x%x <--> %s ex %016llx phy 0x%x " sas_printk("%s ex %016llx (T2T supp:%d) phy 0x%x <--> %s ex %016llx "
"has %c:%c routing link!\n", "(T2T supp:%d) phy 0x%x has %c:%c routing link!\n",
ex_type[parent->dev_type], ex_type[parent->dev_type],
SAS_ADDR(parent->sas_addr), SAS_ADDR(parent->sas_addr),
parent->ex_dev.t2t_supp,
parent_phy->phy_id, parent_phy->phy_id,
ex_type[child->dev_type], ex_type[child->dev_type],
SAS_ADDR(child->sas_addr), SAS_ADDR(child->sas_addr),
child->ex_dev.t2t_supp,
child_phy->phy_id, child_phy->phy_id,
ra_char[parent_phy->routing_attr], ra_char[parent_phy->routing_attr],
...@@ -1238,10 +1241,15 @@ static int sas_check_parent_topology(struct domain_device *child) ...@@ -1238,10 +1241,15 @@ static int sas_check_parent_topology(struct domain_device *child)
sas_print_parent_topology_bug(child, parent_phy, child_phy); sas_print_parent_topology_bug(child, parent_phy, child_phy);
res = -ENODEV; res = -ENODEV;
} }
} else if (parent_phy->routing_attr == TABLE_ROUTING && } else if (parent_phy->routing_attr == TABLE_ROUTING) {
child_phy->routing_attr != SUBTRACTIVE_ROUTING) { if (child_phy->routing_attr == SUBTRACTIVE_ROUTING ||
sas_print_parent_topology_bug(child, parent_phy, child_phy); (child_phy->routing_attr == TABLE_ROUTING &&
res = -ENODEV; child_ex->t2t_supp && parent_ex->t2t_supp)) {
/* All good */;
} else {
sas_print_parent_topology_bug(child, parent_phy, child_phy);
res = -ENODEV;
}
} }
break; break;
case FANOUT_DEV: case FANOUT_DEV:
......
...@@ -142,8 +142,11 @@ struct expander_device { ...@@ -142,8 +142,11 @@ struct expander_device {
u16 ex_change_count; u16 ex_change_count;
u16 max_route_indexes; u16 max_route_indexes;
u8 num_phys; u8 num_phys;
u8 t2t_supp:1;
u8 configuring:1; u8 configuring:1;
u8 conf_route_table:1; u8 conf_route_table:1;
u8 enclosure_logical_id[8]; u8 enclosure_logical_id[8];
struct ex_phy *ex_phy; struct ex_phy *ex_phy;
......
...@@ -349,7 +349,12 @@ struct report_general_resp { ...@@ -349,7 +349,12 @@ struct report_general_resp {
u8 conf_route_table:1; u8 conf_route_table:1;
u8 configuring:1; u8 configuring:1;
u8 _r_b:6; u8 config_others:1;
u8 orej_retry_supp:1;
u8 stp_cont_awt:1;
u8 self_config:1;
u8 zone_config:1;
u8 t2t_supp:1;
u8 _r_c; u8 _r_c;
...@@ -536,7 +541,12 @@ struct report_general_resp { ...@@ -536,7 +541,12 @@ struct report_general_resp {
u8 _r_a; u8 _r_a;
u8 num_phys; u8 num_phys;
u8 _r_b:6; u8 t2t_supp:1;
u8 zone_config:1;
u8 self_config:1;
u8 stp_cont_awt:1;
u8 orej_retry_supp:1;
u8 config_others:1;
u8 configuring:1; u8 configuring:1;
u8 conf_route_table:1; u8 conf_route_table:1;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册