aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/scsi/ibmvscsi/ibmvscsi.c28
1 files changed, 16 insertions, 12 deletions
diff --git a/drivers/scsi/ibmvscsi/ibmvscsi.c b/drivers/scsi/ibmvscsi/ibmvscsi.c
index 9804b42dcd94..6038c0491f8a 100644
--- a/drivers/scsi/ibmvscsi/ibmvscsi.c
+++ b/drivers/scsi/ibmvscsi/ibmvscsi.c
@@ -87,7 +87,11 @@
87 */ 87 */
88static int max_id = 64; 88static int max_id = 64;
89static int max_channel = 3; 89static int max_channel = 3;
90static int init_timeout = 5; 90static int init_timeout = 300;
91static int login_timeout = 60;
92static int info_timeout = 30;
93static int abort_timeout = 60;
94static int reset_timeout = 60;
91static int max_requests = IBMVSCSI_MAX_REQUESTS_DEFAULT; 95static int max_requests = IBMVSCSI_MAX_REQUESTS_DEFAULT;
92static int max_events = IBMVSCSI_MAX_REQUESTS_DEFAULT + 2; 96static int max_events = IBMVSCSI_MAX_REQUESTS_DEFAULT + 2;
93 97
@@ -849,7 +853,7 @@ static void send_mad_adapter_info(struct ibmvscsi_host_data *hostdata)
849 init_event_struct(evt_struct, 853 init_event_struct(evt_struct,
850 adapter_info_rsp, 854 adapter_info_rsp,
851 VIOSRP_MAD_FORMAT, 855 VIOSRP_MAD_FORMAT,
852 init_timeout); 856 info_timeout);
853 857
854 req = &evt_struct->iu.mad.adapter_info; 858 req = &evt_struct->iu.mad.adapter_info;
855 memset(req, 0x00, sizeof(*req)); 859 memset(req, 0x00, sizeof(*req));
@@ -871,7 +875,7 @@ static void send_mad_adapter_info(struct ibmvscsi_host_data *hostdata)
871 } 875 }
872 876
873 spin_lock_irqsave(hostdata->host->host_lock, flags); 877 spin_lock_irqsave(hostdata->host->host_lock, flags);
874 if (ibmvscsi_send_srp_event(evt_struct, hostdata, init_timeout * 2)) { 878 if (ibmvscsi_send_srp_event(evt_struct, hostdata, info_timeout * 2)) {
875 dev_err(hostdata->dev, "couldn't send ADAPTER_INFO_REQ!\n"); 879 dev_err(hostdata->dev, "couldn't send ADAPTER_INFO_REQ!\n");
876 dma_unmap_single(hostdata->dev, 880 dma_unmap_single(hostdata->dev,
877 addr, 881 addr,
@@ -944,7 +948,7 @@ static int send_srp_login(struct ibmvscsi_host_data *hostdata)
944 init_event_struct(evt_struct, 948 init_event_struct(evt_struct,
945 login_rsp, 949 login_rsp,
946 VIOSRP_SRP_FORMAT, 950 VIOSRP_SRP_FORMAT,
947 init_timeout); 951 login_timeout);
948 952
949 login = &evt_struct->iu.srp.login_req; 953 login = &evt_struct->iu.srp.login_req;
950 memset(login, 0x00, sizeof(struct srp_login_req)); 954 memset(login, 0x00, sizeof(struct srp_login_req));
@@ -959,7 +963,7 @@ static int send_srp_login(struct ibmvscsi_host_data *hostdata)
959 */ 963 */
960 atomic_set(&hostdata->request_limit, 0); 964 atomic_set(&hostdata->request_limit, 0);
961 965
962 rc = ibmvscsi_send_srp_event(evt_struct, hostdata, init_timeout * 2); 966 rc = ibmvscsi_send_srp_event(evt_struct, hostdata, login_timeout * 2);
963 spin_unlock_irqrestore(hostdata->host->host_lock, flags); 967 spin_unlock_irqrestore(hostdata->host->host_lock, flags);
964 dev_info(hostdata->dev, "sent SRP login\n"); 968 dev_info(hostdata->dev, "sent SRP login\n");
965 return rc; 969 return rc;
@@ -1026,7 +1030,7 @@ static int ibmvscsi_eh_abort_handler(struct scsi_cmnd *cmd)
1026 init_event_struct(evt, 1030 init_event_struct(evt,
1027 sync_completion, 1031 sync_completion,
1028 VIOSRP_SRP_FORMAT, 1032 VIOSRP_SRP_FORMAT,
1029 init_timeout); 1033 abort_timeout);
1030 1034
1031 tsk_mgmt = &evt->iu.srp.tsk_mgmt; 1035 tsk_mgmt = &evt->iu.srp.tsk_mgmt;
1032 1036
@@ -1040,7 +1044,7 @@ static int ibmvscsi_eh_abort_handler(struct scsi_cmnd *cmd)
1040 evt->sync_srp = &srp_rsp; 1044 evt->sync_srp = &srp_rsp;
1041 1045
1042 init_completion(&evt->comp); 1046 init_completion(&evt->comp);
1043 rsp_rc = ibmvscsi_send_srp_event(evt, hostdata, init_timeout * 2); 1047 rsp_rc = ibmvscsi_send_srp_event(evt, hostdata, abort_timeout * 2);
1044 1048
1045 if (rsp_rc != SCSI_MLQUEUE_HOST_BUSY) 1049 if (rsp_rc != SCSI_MLQUEUE_HOST_BUSY)
1046 break; 1050 break;
@@ -1149,7 +1153,7 @@ static int ibmvscsi_eh_device_reset_handler(struct scsi_cmnd *cmd)
1149 init_event_struct(evt, 1153 init_event_struct(evt,
1150 sync_completion, 1154 sync_completion,
1151 VIOSRP_SRP_FORMAT, 1155 VIOSRP_SRP_FORMAT,
1152 init_timeout); 1156 reset_timeout);
1153 1157
1154 tsk_mgmt = &evt->iu.srp.tsk_mgmt; 1158 tsk_mgmt = &evt->iu.srp.tsk_mgmt;
1155 1159
@@ -1162,7 +1166,7 @@ static int ibmvscsi_eh_device_reset_handler(struct scsi_cmnd *cmd)
1162 evt->sync_srp = &srp_rsp; 1166 evt->sync_srp = &srp_rsp;
1163 1167
1164 init_completion(&evt->comp); 1168 init_completion(&evt->comp);
1165 rsp_rc = ibmvscsi_send_srp_event(evt, hostdata, init_timeout * 2); 1169 rsp_rc = ibmvscsi_send_srp_event(evt, hostdata, reset_timeout * 2);
1166 1170
1167 if (rsp_rc != SCSI_MLQUEUE_HOST_BUSY) 1171 if (rsp_rc != SCSI_MLQUEUE_HOST_BUSY)
1168 break; 1172 break;
@@ -1394,7 +1398,7 @@ static int ibmvscsi_do_host_config(struct ibmvscsi_host_data *hostdata,
1394 init_event_struct(evt_struct, 1398 init_event_struct(evt_struct,
1395 sync_completion, 1399 sync_completion,
1396 VIOSRP_MAD_FORMAT, 1400 VIOSRP_MAD_FORMAT,
1397 init_timeout); 1401 info_timeout);
1398 1402
1399 host_config = &evt_struct->iu.mad.host_config; 1403 host_config = &evt_struct->iu.mad.host_config;
1400 1404
@@ -1416,7 +1420,7 @@ static int ibmvscsi_do_host_config(struct ibmvscsi_host_data *hostdata,
1416 1420
1417 init_completion(&evt_struct->comp); 1421 init_completion(&evt_struct->comp);
1418 spin_lock_irqsave(hostdata->host->host_lock, flags); 1422 spin_lock_irqsave(hostdata->host->host_lock, flags);
1419 rc = ibmvscsi_send_srp_event(evt_struct, hostdata, init_timeout * 2); 1423 rc = ibmvscsi_send_srp_event(evt_struct, hostdata, info_timeout * 2);
1420 spin_unlock_irqrestore(hostdata->host->host_lock, flags); 1424 spin_unlock_irqrestore(hostdata->host->host_lock, flags);
1421 if (rc == 0) 1425 if (rc == 0)
1422 wait_for_completion(&evt_struct->comp); 1426 wait_for_completion(&evt_struct->comp);
@@ -1441,7 +1445,7 @@ static int ibmvscsi_slave_configure(struct scsi_device *sdev)
1441 spin_lock_irqsave(shost->host_lock, lock_flags); 1445 spin_lock_irqsave(shost->host_lock, lock_flags);
1442 if (sdev->type == TYPE_DISK) { 1446 if (sdev->type == TYPE_DISK) {
1443 sdev->allow_restart = 1; 1447 sdev->allow_restart = 1;
1444 blk_queue_rq_timeout(sdev->request_queue, 60 * HZ); 1448 blk_queue_rq_timeout(sdev->request_queue, 120 * HZ);
1445 } 1449 }
1446 scsi_adjust_queue_depth(sdev, 0, shost->cmd_per_lun); 1450 scsi_adjust_queue_depth(sdev, 0, shost->cmd_per_lun);
1447 spin_unlock_irqrestore(shost->host_lock, lock_flags); 1451 spin_unlock_irqrestore(shost->host_lock, lock_flags);