diff options
Diffstat (limited to 'drivers/scsi/ibmvscsi/rpa_vscsi.c')
-rw-r--r-- | drivers/scsi/ibmvscsi/rpa_vscsi.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/drivers/scsi/ibmvscsi/rpa_vscsi.c b/drivers/scsi/ibmvscsi/rpa_vscsi.c index 75db2f5c545e..f47dd87c05e7 100644 --- a/drivers/scsi/ibmvscsi/rpa_vscsi.c +++ b/drivers/scsi/ibmvscsi/rpa_vscsi.c | |||
@@ -281,6 +281,28 @@ int ibmvscsi_init_crq_queue(struct crq_queue *queue, | |||
281 | } | 281 | } |
282 | 282 | ||
283 | /** | 283 | /** |
284 | * reenable_crq_queue: - reenables a crq after | ||
285 | * @queue: crq_queue to initialize and register | ||
286 | * @hostdata: ibmvscsi_host_data of host | ||
287 | * | ||
288 | */ | ||
289 | int ibmvscsi_reenable_crq_queue(struct crq_queue *queue, | ||
290 | struct ibmvscsi_host_data *hostdata) | ||
291 | { | ||
292 | int rc; | ||
293 | struct vio_dev *vdev = to_vio_dev(hostdata->dev); | ||
294 | |||
295 | /* Re-enable the CRQ */ | ||
296 | do { | ||
297 | rc = plpar_hcall_norets(H_ENABLE_CRQ, vdev->unit_address); | ||
298 | } while ((rc == H_InProgress) || (rc == H_Busy) || (H_isLongBusy(rc))); | ||
299 | |||
300 | if (rc) | ||
301 | printk(KERN_ERR "ibmvscsi: Error %d enabling adapter\n", rc); | ||
302 | return rc; | ||
303 | } | ||
304 | |||
305 | /** | ||
284 | * reset_crq_queue: - resets a crq after a failure | 306 | * reset_crq_queue: - resets a crq after a failure |
285 | * @queue: crq_queue to initialize and register | 307 | * @queue: crq_queue to initialize and register |
286 | * @hostdata: ibmvscsi_host_data of host | 308 | * @hostdata: ibmvscsi_host_data of host |