From 265838534b56a57bf642e2c9cf01d86b8d666698 Mon Sep 17 00:00:00 2001 From: Sven Schuetz Date: Tue, 10 Jun 2008 18:20:59 +0200 Subject: [PATCH] --- yaml --- r: 101545 b: refs/heads/master c: 85a82392fe6fe7620d8fe0eb694f926cefe62e1f h: refs/heads/master i: 101543: dea4dd1abbc195bd49bc698532bc05d1e274366d v: v3 --- [refs] | 2 +- trunk/drivers/s390/scsi/zfcp_scsi.c | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 43e068ae50fc..2cc3450921bc 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 553448f6c4838a1e4bed2bc9301c748278d7d9ce +refs/heads/master: 85a82392fe6fe7620d8fe0eb694f926cefe62e1f diff --git a/trunk/drivers/s390/scsi/zfcp_scsi.c b/trunk/drivers/s390/scsi/zfcp_scsi.c index a96e5c3b9460..446fb1da25df 100644 --- a/trunk/drivers/s390/scsi/zfcp_scsi.c +++ b/trunk/drivers/s390/scsi/zfcp_scsi.c @@ -704,6 +704,23 @@ zfcp_reset_fc_host_stats(struct Scsi_Host *shost) } } +static void zfcp_get_host_port_state(struct Scsi_Host *shost) +{ + struct zfcp_adapter *adapter = + (struct zfcp_adapter *)shost->hostdata[0]; + int status = atomic_read(&adapter->status); + + if ((status & ZFCP_STATUS_COMMON_RUNNING) && + !(status & ZFCP_STATUS_ADAPTER_LINK_UNPLUGGED)) + fc_host_port_state(shost) = FC_PORTSTATE_ONLINE; + else if (status & ZFCP_STATUS_ADAPTER_LINK_UNPLUGGED) + fc_host_port_state(shost) = FC_PORTSTATE_LINKDOWN; + else if (status & ZFCP_STATUS_COMMON_ERP_FAILED) + fc_host_port_state(shost) = FC_PORTSTATE_ERROR; + else + fc_host_port_state(shost) = FC_PORTSTATE_UNKNOWN; +} + static void zfcp_set_rport_dev_loss_tmo(struct fc_rport *rport, u32 timeout) { rport->dev_loss_tmo = timeout; @@ -726,6 +743,8 @@ struct fc_function_template zfcp_transport_functions = { .get_fc_host_stats = zfcp_get_fc_host_stats, .reset_fc_host_stats = zfcp_reset_fc_host_stats, .set_rport_dev_loss_tmo = zfcp_set_rport_dev_loss_tmo, + .get_host_port_state = zfcp_get_host_port_state, + .show_host_port_state = 1, /* no functions registered for following dynamic attributes but directly set by LLDD */ .show_host_port_type = 1,