[PATCH] powerpc/pseries: Change H_StudlyCaps to H_SHOUTING_CAPS
[cascardo/linux.git] / drivers / scsi / ibmvscsi / rpa_vscsi.c
index 75db2f5..892e8ed 100644 (file)
@@ -80,7 +80,7 @@ void ibmvscsi_release_crq_queue(struct crq_queue *queue,
        tasklet_kill(&hostdata->srp_task);
        do {
                rc = plpar_hcall_norets(H_FREE_CRQ, vdev->unit_address);
-       } while ((rc == H_Busy) || (H_isLongBusy(rc)));
+       } while ((rc == H_BUSY) || (H_IS_LONG_BUSY(rc)));
        dma_unmap_single(hostdata->dev,
                         queue->msg_token,
                         queue->size * sizeof(*queue->msgs), DMA_BIDIRECTIONAL);
@@ -230,7 +230,7 @@ int ibmvscsi_init_crq_queue(struct crq_queue *queue,
        rc = plpar_hcall_norets(H_REG_CRQ,
                                vdev->unit_address,
                                queue->msg_token, PAGE_SIZE);
-       if (rc == H_Resource) 
+       if (rc == H_RESOURCE)
                /* maybe kexecing and resource is busy. try a reset */
                rc = ibmvscsi_reset_crq_queue(queue,
                                              hostdata);
@@ -269,7 +269,7 @@ int ibmvscsi_init_crq_queue(struct crq_queue *queue,
       req_irq_failed:
        do {
                rc = plpar_hcall_norets(H_FREE_CRQ, vdev->unit_address);
-       } while ((rc == H_Busy) || (H_isLongBusy(rc)));
+       } while ((rc == H_BUSY) || (H_IS_LONG_BUSY(rc)));
       reg_crq_failed:
        dma_unmap_single(hostdata->dev,
                         queue->msg_token,
@@ -280,6 +280,28 @@ int ibmvscsi_init_crq_queue(struct crq_queue *queue,
        return -1;
 }
 
+/**
+ * reenable_crq_queue: - reenables a crq after
+ * @queue:     crq_queue to initialize and register
+ * @hostdata:  ibmvscsi_host_data of host
+ *
+ */
+int ibmvscsi_reenable_crq_queue(struct crq_queue *queue,
+                                struct ibmvscsi_host_data *hostdata)
+{
+       int rc;
+       struct vio_dev *vdev = to_vio_dev(hostdata->dev);
+
+       /* Re-enable the CRQ */
+       do {
+               rc = plpar_hcall_norets(H_ENABLE_CRQ, vdev->unit_address);
+       } while ((rc == H_IN_PROGRESS) || (rc == H_BUSY) || (H_IS_LONG_BUSY(rc)));
+
+       if (rc)
+               printk(KERN_ERR "ibmvscsi: Error %d enabling adapter\n", rc);
+       return rc;
+}
+
 /**
  * reset_crq_queue: - resets a crq after a failure
  * @queue:     crq_queue to initialize and register
@@ -295,7 +317,7 @@ int ibmvscsi_reset_crq_queue(struct crq_queue *queue,
        /* Close the CRQ */
        do {
                rc = plpar_hcall_norets(H_FREE_CRQ, vdev->unit_address);
-       } while ((rc == H_Busy) || (H_isLongBusy(rc)));
+       } while ((rc == H_BUSY) || (H_IS_LONG_BUSY(rc)));
 
        /* Clean out the queue */
        memset(queue->msgs, 0x00, PAGE_SIZE);