diff options
Diffstat (limited to 'drivers/s390/char/sclp.c')
-rw-r--r-- | drivers/s390/char/sclp.c | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/drivers/s390/char/sclp.c b/drivers/s390/char/sclp.c index ceb0e474fde4..4138564402b8 100644 --- a/drivers/s390/char/sclp.c +++ b/drivers/s390/char/sclp.c | |||
@@ -85,11 +85,10 @@ static volatile enum sclp_mask_state_t { | |||
85 | /* Maximum retry counts */ | 85 | /* Maximum retry counts */ |
86 | #define SCLP_INIT_RETRY 3 | 86 | #define SCLP_INIT_RETRY 3 |
87 | #define SCLP_MASK_RETRY 3 | 87 | #define SCLP_MASK_RETRY 3 |
88 | #define SCLP_REQUEST_RETRY 3 | ||
89 | 88 | ||
90 | /* Timeout intervals in seconds.*/ | 89 | /* Timeout intervals in seconds.*/ |
91 | #define SCLP_BUSY_INTERVAL 2 | 90 | #define SCLP_BUSY_INTERVAL 10 |
92 | #define SCLP_RETRY_INTERVAL 5 | 91 | #define SCLP_RETRY_INTERVAL 15 |
93 | 92 | ||
94 | static void sclp_process_queue(void); | 93 | static void sclp_process_queue(void); |
95 | static int sclp_init_mask(int calculate); | 94 | static int sclp_init_mask(int calculate); |
@@ -153,11 +152,9 @@ __sclp_start_request(struct sclp_req *req) | |||
153 | if (sclp_running_state != sclp_running_state_idle) | 152 | if (sclp_running_state != sclp_running_state_idle) |
154 | return 0; | 153 | return 0; |
155 | del_timer(&sclp_request_timer); | 154 | del_timer(&sclp_request_timer); |
156 | if (req->start_count <= SCLP_REQUEST_RETRY) { | 155 | rc = service_call(req->command, req->sccb); |
157 | rc = service_call(req->command, req->sccb); | 156 | req->start_count++; |
158 | req->start_count++; | 157 | |
159 | } else | ||
160 | rc = -EIO; | ||
161 | if (rc == 0) { | 158 | if (rc == 0) { |
162 | /* Sucessfully started request */ | 159 | /* Sucessfully started request */ |
163 | req->status = SCLP_REQ_RUNNING; | 160 | req->status = SCLP_REQ_RUNNING; |