|
@@ -2783,27 +2783,27 @@ static void ibmvfc_tasklet(void *data)
|
|
|
|
|
|
spin_lock_irqsave(vhost->host->host_lock, flags);
|
|
spin_lock_irqsave(vhost->host->host_lock, flags);
|
|
while (!done) {
|
|
while (!done) {
|
|
- /* Pull all the valid messages off the CRQ */
|
|
|
|
- while ((crq = ibmvfc_next_crq(vhost)) != NULL) {
|
|
|
|
- ibmvfc_handle_crq(crq, vhost);
|
|
|
|
- crq->valid = 0;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
/* Pull all the valid messages off the async CRQ */
|
|
/* Pull all the valid messages off the async CRQ */
|
|
while ((async = ibmvfc_next_async_crq(vhost)) != NULL) {
|
|
while ((async = ibmvfc_next_async_crq(vhost)) != NULL) {
|
|
ibmvfc_handle_async(async, vhost);
|
|
ibmvfc_handle_async(async, vhost);
|
|
async->valid = 0;
|
|
async->valid = 0;
|
|
}
|
|
}
|
|
|
|
|
|
- vio_enable_interrupts(vdev);
|
|
|
|
- if ((crq = ibmvfc_next_crq(vhost)) != NULL) {
|
|
|
|
- vio_disable_interrupts(vdev);
|
|
|
|
|
|
+ /* Pull all the valid messages off the CRQ */
|
|
|
|
+ while ((crq = ibmvfc_next_crq(vhost)) != NULL) {
|
|
ibmvfc_handle_crq(crq, vhost);
|
|
ibmvfc_handle_crq(crq, vhost);
|
|
crq->valid = 0;
|
|
crq->valid = 0;
|
|
- } else if ((async = ibmvfc_next_async_crq(vhost)) != NULL) {
|
|
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ vio_enable_interrupts(vdev);
|
|
|
|
+ if ((async = ibmvfc_next_async_crq(vhost)) != NULL) {
|
|
vio_disable_interrupts(vdev);
|
|
vio_disable_interrupts(vdev);
|
|
ibmvfc_handle_async(async, vhost);
|
|
ibmvfc_handle_async(async, vhost);
|
|
async->valid = 0;
|
|
async->valid = 0;
|
|
|
|
+ } else if ((crq = ibmvfc_next_crq(vhost)) != NULL) {
|
|
|
|
+ vio_disable_interrupts(vdev);
|
|
|
|
+ ibmvfc_handle_crq(crq, vhost);
|
|
|
|
+ crq->valid = 0;
|
|
} else
|
|
} else
|
|
done = 1;
|
|
done = 1;
|
|
}
|
|
}
|