From a74bdf4661441d79a700f7ab3fc6d225ea2cf409 Mon Sep 17 00:00:00 2001 From: Mike Christie Date: Fri, 6 Aug 2010 03:02:38 -0500 Subject: [PATCH] [SCSI] qla2xxx: do not reset dev_loss_tmo in slave callout This fixes a bug where the driver was resetting the rport dev_loss_tmo when devices were added by adding support for the get_host_def_dev_loss_tmo callout. Signed-off-by: Mike Christie Signed-off-by: James Bottomley --- drivers/scsi/qla2xxx/qla_attr.c | 11 +++++++++++ drivers/scsi/qla2xxx/qla_os.c | 5 ----- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/drivers/scsi/qla2xxx/qla_attr.c b/drivers/scsi/qla2xxx/qla_attr.c index 420238cc794e..679a4326811c 100644 --- a/drivers/scsi/qla2xxx/qla_attr.c +++ b/drivers/scsi/qla2xxx/qla_attr.c @@ -1529,6 +1529,15 @@ qla2x00_set_rport_loss_tmo(struct fc_rport *rport, uint32_t timeout) rport->dev_loss_tmo = 1; } +static void +qla2x00_get_host_def_loss_tmo(struct Scsi_Host *shost) +{ + scsi_qla_host_t *vha = shost_priv(shost); + struct qla_hw_data *ha = vha->hw; + + fc_host_def_dev_loss_tmo(shost) = ha->port_down_retry_count; +} + static void qla2x00_dev_loss_tmo_callbk(struct fc_rport *rport) { @@ -1903,6 +1912,7 @@ struct fc_function_template qla2xxx_transport_functions = { .show_host_fabric_name = 1, .get_host_port_state = qla2x00_get_host_port_state, .show_host_port_state = 1, + .get_host_def_dev_loss_tmo = qla2x00_get_host_def_loss_tmo, .dd_fcrport_size = sizeof(struct fc_port *), .show_rport_supported_classes = 1, @@ -1949,6 +1959,7 @@ struct fc_function_template qla2xxx_transport_vport_functions = { .show_host_fabric_name = 1, .get_host_port_state = qla2x00_get_host_port_state, .show_host_port_state = 1, + .get_host_def_dev_loss_tmo = qla2x00_get_host_def_loss_tmo, .dd_fcrport_size = sizeof(struct fc_port *), .show_rport_supported_classes = 1, diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c index 8c80b49ac1c4..30b05229af26 100644 --- a/drivers/scsi/qla2xxx/qla_os.c +++ b/drivers/scsi/qla2xxx/qla_os.c @@ -1295,17 +1295,12 @@ static int qla2xxx_slave_configure(struct scsi_device *sdev) { scsi_qla_host_t *vha = shost_priv(sdev->host); - struct qla_hw_data *ha = vha->hw; - struct fc_rport *rport = starget_to_rport(sdev->sdev_target); struct req_que *req = vha->req; if (sdev->tagged_supported) scsi_activate_tcq(sdev, req->max_q_depth); else scsi_deactivate_tcq(sdev, req->max_q_depth); - - rport->dev_loss_tmo = ha->port_down_retry_count; - return 0; }