diff options
author | Andreas Herrmann <aherrman@de.ibm.com> | 2006-01-12 20:16:54 -0500 |
---|---|---|
committer | James Bottomley <jejb@mulgrave.(none)> | 2006-01-14 11:54:48 -0500 |
commit | 6b7281d0a0f8f99d39808088a036459f6f7906a6 (patch) | |
tree | e2fa5f1ac6fe615723015ba154d06c2845b60d0c | |
parent | a09c6311217e8fb079c967427d009fe23f2e420e (diff) |
[SCSI] fc transport: add permanent_port_name fc_host attribute
Add fc_host attribute permanent_port_name which is
used to show the port name of the primary port -
the port that initially logged into the fabric.
For a virtual port (registered via the primary port with
FDISC command) it is useful to know not only its (virtual)
port name but also the permanent port name.
Signed-off-by: Andreas Herrmann <aherrman@de.ibm.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
-rw-r--r-- | drivers/scsi/scsi_transport_fc.c | 4 | ||||
-rw-r--r-- | include/scsi/scsi_transport_fc.h | 4 |
2 files changed, 8 insertions, 0 deletions
diff --git a/drivers/scsi/scsi_transport_fc.c b/drivers/scsi/scsi_transport_fc.c index 685b997306cf..625f4a664d06 100644 --- a/drivers/scsi/scsi_transport_fc.c +++ b/drivers/scsi/scsi_transport_fc.c | |||
@@ -295,6 +295,7 @@ static int fc_host_setup(struct transport_container *tc, struct device *dev, | |||
295 | */ | 295 | */ |
296 | fc_host_node_name(shost) = -1; | 296 | fc_host_node_name(shost) = -1; |
297 | fc_host_port_name(shost) = -1; | 297 | fc_host_port_name(shost) = -1; |
298 | fc_host_permanent_port_name(shost) = -1; | ||
298 | fc_host_supported_classes(shost) = FC_COS_UNSPECIFIED; | 299 | fc_host_supported_classes(shost) = FC_COS_UNSPECIFIED; |
299 | memset(fc_host_supported_fc4s(shost), 0, | 300 | memset(fc_host_supported_fc4s(shost), 0, |
300 | sizeof(fc_host_supported_fc4s(shost))); | 301 | sizeof(fc_host_supported_fc4s(shost))); |
@@ -795,6 +796,8 @@ static FC_CLASS_DEVICE_ATTR(host, supported_speeds, S_IRUGO, | |||
795 | 796 | ||
796 | fc_private_host_rd_attr_cast(node_name, "0x%llx\n", 20, unsigned long long); | 797 | fc_private_host_rd_attr_cast(node_name, "0x%llx\n", 20, unsigned long long); |
797 | fc_private_host_rd_attr_cast(port_name, "0x%llx\n", 20, unsigned long long); | 798 | fc_private_host_rd_attr_cast(port_name, "0x%llx\n", 20, unsigned long long); |
799 | fc_private_host_rd_attr_cast(permanent_port_name, "0x%llx\n", 20, | ||
800 | unsigned long long); | ||
798 | fc_private_host_rd_attr(symbolic_name, "%s\n", (FC_SYMBOLIC_NAME_SIZE +1)); | 801 | fc_private_host_rd_attr(symbolic_name, "%s\n", (FC_SYMBOLIC_NAME_SIZE +1)); |
799 | fc_private_host_rd_attr(maxframe_size, "%u bytes\n", 20); | 802 | fc_private_host_rd_attr(maxframe_size, "%u bytes\n", 20); |
800 | fc_private_host_rd_attr(serial_number, "%s\n", (FC_SERIAL_NUMBER_SIZE +1)); | 803 | fc_private_host_rd_attr(serial_number, "%s\n", (FC_SERIAL_NUMBER_SIZE +1)); |
@@ -1160,6 +1163,7 @@ fc_attach_transport(struct fc_function_template *ft) | |||
1160 | count=0; | 1163 | count=0; |
1161 | SETUP_HOST_ATTRIBUTE_RD(node_name); | 1164 | SETUP_HOST_ATTRIBUTE_RD(node_name); |
1162 | SETUP_HOST_ATTRIBUTE_RD(port_name); | 1165 | SETUP_HOST_ATTRIBUTE_RD(port_name); |
1166 | SETUP_HOST_ATTRIBUTE_RD(permanent_port_name); | ||
1163 | SETUP_HOST_ATTRIBUTE_RD(supported_classes); | 1167 | SETUP_HOST_ATTRIBUTE_RD(supported_classes); |
1164 | SETUP_HOST_ATTRIBUTE_RD(supported_fc4s); | 1168 | SETUP_HOST_ATTRIBUTE_RD(supported_fc4s); |
1165 | SETUP_HOST_ATTRIBUTE_RD(symbolic_name); | 1169 | SETUP_HOST_ATTRIBUTE_RD(symbolic_name); |
diff --git a/include/scsi/scsi_transport_fc.h b/include/scsi/scsi_transport_fc.h index 394f14a5b7cb..cf3fec8be1e3 100644 --- a/include/scsi/scsi_transport_fc.h +++ b/include/scsi/scsi_transport_fc.h | |||
@@ -303,6 +303,7 @@ struct fc_host_attrs { | |||
303 | /* Fixed Attributes */ | 303 | /* Fixed Attributes */ |
304 | u64 node_name; | 304 | u64 node_name; |
305 | u64 port_name; | 305 | u64 port_name; |
306 | u64 permanent_port_name; | ||
306 | u32 supported_classes; | 307 | u32 supported_classes; |
307 | u8 supported_fc4s[FC_FC4_LIST_SIZE]; | 308 | u8 supported_fc4s[FC_FC4_LIST_SIZE]; |
308 | char symbolic_name[FC_SYMBOLIC_NAME_SIZE]; | 309 | char symbolic_name[FC_SYMBOLIC_NAME_SIZE]; |
@@ -338,6 +339,8 @@ struct fc_host_attrs { | |||
338 | (((struct fc_host_attrs *)(x)->shost_data)->node_name) | 339 | (((struct fc_host_attrs *)(x)->shost_data)->node_name) |
339 | #define fc_host_port_name(x) \ | 340 | #define fc_host_port_name(x) \ |
340 | (((struct fc_host_attrs *)(x)->shost_data)->port_name) | 341 | (((struct fc_host_attrs *)(x)->shost_data)->port_name) |
342 | #define fc_host_permanent_port_name(x) \ | ||
343 | (((struct fc_host_attrs *)(x)->shost_data)->permanent_port_name) | ||
341 | #define fc_host_supported_classes(x) \ | 344 | #define fc_host_supported_classes(x) \ |
342 | (((struct fc_host_attrs *)(x)->shost_data)->supported_classes) | 345 | (((struct fc_host_attrs *)(x)->shost_data)->supported_classes) |
343 | #define fc_host_supported_fc4s(x) \ | 346 | #define fc_host_supported_fc4s(x) \ |
@@ -426,6 +429,7 @@ struct fc_function_template { | |||
426 | /* host fixed attributes */ | 429 | /* host fixed attributes */ |
427 | unsigned long show_host_node_name:1; | 430 | unsigned long show_host_node_name:1; |
428 | unsigned long show_host_port_name:1; | 431 | unsigned long show_host_port_name:1; |
432 | unsigned long show_host_permanent_port_name:1; | ||
429 | unsigned long show_host_supported_classes:1; | 433 | unsigned long show_host_supported_classes:1; |
430 | unsigned long show_host_supported_fc4s:1; | 434 | unsigned long show_host_supported_fc4s:1; |
431 | unsigned long show_host_symbolic_name:1; | 435 | unsigned long show_host_symbolic_name:1; |