diff options
Diffstat (limited to 'drivers/scsi/ibmvscsi')
-rw-r--r-- | drivers/scsi/ibmvscsi/ibmvfc.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/drivers/scsi/ibmvscsi/ibmvfc.c b/drivers/scsi/ibmvscsi/ibmvfc.c index b4b805e8d7db..497a4cc4d9ef 100644 --- a/drivers/scsi/ibmvscsi/ibmvfc.c +++ b/drivers/scsi/ibmvscsi/ibmvfc.c | |||
@@ -2783,27 +2783,27 @@ static void ibmvfc_tasklet(void *data) | |||
2783 | 2783 | ||
2784 | spin_lock_irqsave(vhost->host->host_lock, flags); | 2784 | spin_lock_irqsave(vhost->host->host_lock, flags); |
2785 | while (!done) { | 2785 | while (!done) { |
2786 | /* Pull all the valid messages off the CRQ */ | ||
2787 | while ((crq = ibmvfc_next_crq(vhost)) != NULL) { | ||
2788 | ibmvfc_handle_crq(crq, vhost); | ||
2789 | crq->valid = 0; | ||
2790 | } | ||
2791 | |||
2792 | /* Pull all the valid messages off the async CRQ */ | 2786 | /* Pull all the valid messages off the async CRQ */ |
2793 | while ((async = ibmvfc_next_async_crq(vhost)) != NULL) { | 2787 | while ((async = ibmvfc_next_async_crq(vhost)) != NULL) { |
2794 | ibmvfc_handle_async(async, vhost); | 2788 | ibmvfc_handle_async(async, vhost); |
2795 | async->valid = 0; | 2789 | async->valid = 0; |
2796 | } | 2790 | } |
2797 | 2791 | ||
2798 | vio_enable_interrupts(vdev); | 2792 | /* Pull all the valid messages off the CRQ */ |
2799 | if ((crq = ibmvfc_next_crq(vhost)) != NULL) { | 2793 | while ((crq = ibmvfc_next_crq(vhost)) != NULL) { |
2800 | vio_disable_interrupts(vdev); | ||
2801 | ibmvfc_handle_crq(crq, vhost); | 2794 | ibmvfc_handle_crq(crq, vhost); |
2802 | crq->valid = 0; | 2795 | crq->valid = 0; |
2803 | } else if ((async = ibmvfc_next_async_crq(vhost)) != NULL) { | 2796 | } |
2797 | |||
2798 | vio_enable_interrupts(vdev); | ||
2799 | if ((async = ibmvfc_next_async_crq(vhost)) != NULL) { | ||
2804 | vio_disable_interrupts(vdev); | 2800 | vio_disable_interrupts(vdev); |
2805 | ibmvfc_handle_async(async, vhost); | 2801 | ibmvfc_handle_async(async, vhost); |
2806 | async->valid = 0; | 2802 | async->valid = 0; |
2803 | } else if ((crq = ibmvfc_next_crq(vhost)) != NULL) { | ||
2804 | vio_disable_interrupts(vdev); | ||
2805 | ibmvfc_handle_crq(crq, vhost); | ||
2806 | crq->valid = 0; | ||
2807 | } else | 2807 | } else |
2808 | done = 1; | 2808 | done = 1; |
2809 | } | 2809 | } |