Reduce irq handler indentation level.

The previous patch replaced an always-true test with "if (1)",
a function change.

This patch simply eliminates the "if (1)", and reduces the indentation
level of the entire [rather large] interrupt handler code.

No code changes other than eliminating the "if (1)" test.

Signed-off-by: Jeff Garzik <[EMAIL PROTECTED]>

diff -Nru a/drivers/scsi/3w-9xxx.c b/drivers/scsi/3w-9xxx.c
--- a/drivers/scsi/3w-9xxx.c    2005-03-02 02:14:58 -05:00
+++ b/drivers/scsi/3w-9xxx.c    2005-03-02 02:14:58 -05:00
@@ -1173,138 +1173,136 @@
        /* Get the per adapter lock */
        spin_lock(tw_dev->host->host_lock);
 
-       if (1) {
+       /* Read the registers */
+       status_reg_value = readl(TW_STATUS_REG_ADDR(tw_dev));
 
-               /* Read the registers */
-               status_reg_value = readl(TW_STATUS_REG_ADDR(tw_dev));
-
-               /* Check if this is our interrupt, otherwise bail */
-               if (!(status_reg_value & TW_STATUS_VALID_INTERRUPT))
+       /* Check if this is our interrupt, otherwise bail */
+       if (!(status_reg_value & TW_STATUS_VALID_INTERRUPT))
+               goto twa_interrupt_bail;
+
+       handled = 1;
+
+       /* Check controller for errors */
+       if (twa_check_bits(status_reg_value)) {
+               if (twa_decode_bits(tw_dev, status_reg_value)) {
+                       TW_CLEAR_ALL_INTERRUPTS(tw_dev);
                        goto twa_interrupt_bail;
-
-               handled = 1;
-
-               /* Check controller for errors */
-               if (twa_check_bits(status_reg_value)) {
-                       if (twa_decode_bits(tw_dev, status_reg_value)) {
-                               TW_CLEAR_ALL_INTERRUPTS(tw_dev);
-                               goto twa_interrupt_bail;
-                       }
                }
+       }
 
-               /* Handle host interrupt */
-               if (status_reg_value & TW_STATUS_HOST_INTERRUPT)
-                       TW_CLEAR_HOST_INTERRUPT(tw_dev);
-
-               /* Handle attention interrupt */
-               if (status_reg_value & TW_STATUS_ATTENTION_INTERRUPT) {
-                       TW_CLEAR_ATTENTION_INTERRUPT(tw_dev);
-                       if (!(test_and_set_bit(TW_IN_ATTENTION_LOOP, 
&tw_dev->flags))) {
-                               twa_get_request_id(tw_dev, &request_id);
-
-                               error = twa_aen_read_queue(tw_dev, request_id);
-                               if (error) {
-                                       tw_dev->state[request_id] = 
TW_S_COMPLETED;
-                                       twa_free_request_id(tw_dev, request_id);
-                                       clear_bit(TW_IN_ATTENTION_LOOP, 
&tw_dev->flags);
-                               }
+       /* Handle host interrupt */
+       if (status_reg_value & TW_STATUS_HOST_INTERRUPT)
+               TW_CLEAR_HOST_INTERRUPT(tw_dev);
+
+       /* Handle attention interrupt */
+       if (status_reg_value & TW_STATUS_ATTENTION_INTERRUPT) {
+               TW_CLEAR_ATTENTION_INTERRUPT(tw_dev);
+               if (!(test_and_set_bit(TW_IN_ATTENTION_LOOP, &tw_dev->flags))) {
+                       twa_get_request_id(tw_dev, &request_id);
+
+                       error = twa_aen_read_queue(tw_dev, request_id);
+                       if (error) {
+                               tw_dev->state[request_id] = TW_S_COMPLETED;
+                               twa_free_request_id(tw_dev, request_id);
+                               clear_bit(TW_IN_ATTENTION_LOOP, &tw_dev->flags);
                        }
                }
+       }
 
-               /* Handle command interrupt */
-               if (status_reg_value & TW_STATUS_COMMAND_INTERRUPT) {
-                       TW_MASK_COMMAND_INTERRUPT(tw_dev);
-                       /* Drain as many pending commands as we can */
-                       while (tw_dev->pending_request_count > 0) {
-                               request_id = 
tw_dev->pending_queue[tw_dev->pending_head];
-                               if (tw_dev->state[request_id] != TW_S_PENDING) {
-                                       TW_PRINTK(tw_dev->host, TW_DRIVER, 
0x19, "Found request id that wasn't pending");
-                                       TW_CLEAR_ALL_INTERRUPTS(tw_dev);
-                                       goto twa_interrupt_bail;
-                               }
-                               if (twa_post_command_packet(tw_dev, request_id, 
1)==0) {
-                                       tw_dev->pending_head = 
(tw_dev->pending_head + 1) % TW_Q_LENGTH;
-                                       tw_dev->pending_request_count--;
-                               } else {
-                                       /* If we get here, we will continue 
re-posting on the next command interrupt */
-                                       break;
-                               }
+       /* Handle command interrupt */
+       if (status_reg_value & TW_STATUS_COMMAND_INTERRUPT) {
+               TW_MASK_COMMAND_INTERRUPT(tw_dev);
+               /* Drain as many pending commands as we can */
+               while (tw_dev->pending_request_count > 0) {
+                       request_id = 
tw_dev->pending_queue[tw_dev->pending_head];
+                       if (tw_dev->state[request_id] != TW_S_PENDING) {
+                               TW_PRINTK(tw_dev->host, TW_DRIVER, 0x19, "Found 
request id that wasn't pending");
+                               TW_CLEAR_ALL_INTERRUPTS(tw_dev);
+                               goto twa_interrupt_bail;
+                       }
+                       if (twa_post_command_packet(tw_dev, request_id, 1)==0) {
+                               tw_dev->pending_head = (tw_dev->pending_head + 
1) % TW_Q_LENGTH;
+                               tw_dev->pending_request_count--;
+                       } else {
+                               /* If we get here, we will continue re-posting 
on the next command interrupt */
+                               break;
                        }
                }
+       }
 
-               /* Handle response interrupt */
-               if (status_reg_value & TW_STATUS_RESPONSE_INTERRUPT) {
+       /* Handle response interrupt */
+       if (status_reg_value & TW_STATUS_RESPONSE_INTERRUPT) {
 
-                       /* Drain the response queue from the board */
-                       while ((status_reg_value & 
TW_STATUS_RESPONSE_QUEUE_EMPTY) == 0) {
-                               /* Complete the response */
-                               response_que.value = 
readl(TW_RESPONSE_QUEUE_REG_ADDR(tw_dev));
-                               request_id = 
TW_RESID_OUT(response_que.response_id);
-                               full_command_packet = 
tw_dev->command_packet_virt[request_id];
-                               error = 0;
-                               command_packet = 
&full_command_packet->command.oldcommand;
-                               /* Check for command packet errors */
-                               if 
(full_command_packet->command.newcommand.status != 0) {
-                                       if (tw_dev->srb[request_id] != 0) {
-                                               error = twa_fill_sense(tw_dev, 
request_id, 1, 1);
-                                       } else {
-                                               /* Skip ioctl error prints */
-                                               if (request_id != 
tw_dev->chrdev_request_id) {
-                                                       error = 
twa_fill_sense(tw_dev, request_id, 0, 1);
-                                               }
+               /* Drain the response queue from the board */
+               while ((status_reg_value & TW_STATUS_RESPONSE_QUEUE_EMPTY) == 
0) {
+                       /* Complete the response */
+                       response_que.value = 
readl(TW_RESPONSE_QUEUE_REG_ADDR(tw_dev));
+                       request_id = TW_RESID_OUT(response_que.response_id);
+                       full_command_packet = 
tw_dev->command_packet_virt[request_id];
+                       error = 0;
+                       command_packet = 
&full_command_packet->command.oldcommand;
+                       /* Check for command packet errors */
+                       if (full_command_packet->command.newcommand.status != 
0) {
+                               if (tw_dev->srb[request_id] != 0) {
+                                       error = twa_fill_sense(tw_dev, 
request_id, 1, 1);
+                               } else {
+                                       /* Skip ioctl error prints */
+                                       if (request_id != 
tw_dev->chrdev_request_id) {
+                                               error = twa_fill_sense(tw_dev, 
request_id, 0, 1);
                                        }
                                }
+                       }
 
-                               /* Check for correct state */
-                               if (tw_dev->state[request_id] != TW_S_POSTED) {
-                                       if (tw_dev->srb[request_id] != 0) {
-                                               TW_PRINTK(tw_dev->host, 
TW_DRIVER, 0x1a, "Received a request id that wasn't posted");
-                                               TW_CLEAR_ALL_INTERRUPTS(tw_dev);
-                                               goto twa_interrupt_bail;
-                                       }
+                       /* Check for correct state */
+                       if (tw_dev->state[request_id] != TW_S_POSTED) {
+                               if (tw_dev->srb[request_id] != 0) {
+                                       TW_PRINTK(tw_dev->host, TW_DRIVER, 
0x1a, "Received a request id that wasn't posted");
+                                       TW_CLEAR_ALL_INTERRUPTS(tw_dev);
+                                       goto twa_interrupt_bail;
                                }
+                       }
 
-                               /* Check for internal command completion */
-                               if (tw_dev->srb[request_id] == 0) {
-                                       if (request_id != 
tw_dev->chrdev_request_id) {
-                                               if (twa_aen_complete(tw_dev, 
request_id))
-                                                       TW_PRINTK(tw_dev->host, 
TW_DRIVER, 0x1b, "Error completing AEN during attention interrupt");
-                                       } else {
-                                               tw_dev->chrdev_request_id = 
TW_IOCTL_CHRDEV_FREE;
-                                               wake_up(&tw_dev->ioctl_wqueue);
-                                       }
+                       /* Check for internal command completion */
+                       if (tw_dev->srb[request_id] == 0) {
+                               if (request_id != tw_dev->chrdev_request_id) {
+                                       if (twa_aen_complete(tw_dev, 
request_id))
+                                               TW_PRINTK(tw_dev->host, 
TW_DRIVER, 0x1b, "Error completing AEN during attention interrupt");
                                } else {
-                                       
twa_scsiop_execute_scsi_complete(tw_dev, request_id);
-                                       /* If no error command was a success */
-                                       if (error == 0) {
-                                               tw_dev->srb[request_id]->result 
= (DID_OK << 16);
-                                       }
-
-                                       /* If error, command failed */
-                                       if (error == 1) {
-                                               /* Ask for a host reset */
-                                               tw_dev->srb[request_id]->result 
= (DID_OK << 16) | (CHECK_CONDITION << 1);
-                                       }
-
-                                       /* Now complete the io */
-                                       tw_dev->state[request_id] = 
TW_S_COMPLETED;
-                                       twa_free_request_id(tw_dev, request_id);
-                                       tw_dev->posted_request_count--;
-                                       
tw_dev->srb[request_id]->scsi_done(tw_dev->srb[request_id]);
-                                       twa_unmap_scsi_data(tw_dev, request_id);
+                                       tw_dev->chrdev_request_id = 
TW_IOCTL_CHRDEV_FREE;
+                                       wake_up(&tw_dev->ioctl_wqueue);
                                }
+                       } else {
+                               twa_scsiop_execute_scsi_complete(tw_dev, 
request_id);
+                               /* If no error command was a success */
+                               if (error == 0) {
+                                       tw_dev->srb[request_id]->result = 
(DID_OK << 16);
+                               }
+
+                               /* If error, command failed */
+                               if (error == 1) {
+                                       /* Ask for a host reset */
+                                       tw_dev->srb[request_id]->result = 
(DID_OK << 16) | (CHECK_CONDITION << 1);
+                               }
+
+                               /* Now complete the io */
+                               tw_dev->state[request_id] = TW_S_COMPLETED;
+                               twa_free_request_id(tw_dev, request_id);
+                               tw_dev->posted_request_count--;
+                               
tw_dev->srb[request_id]->scsi_done(tw_dev->srb[request_id]);
+                               twa_unmap_scsi_data(tw_dev, request_id);
+                       }
 
-                               /* Check for valid status after each drain */
-                               status_reg_value = 
readl(TW_STATUS_REG_ADDR(tw_dev));
-                               if (twa_check_bits(status_reg_value)) {
-                                       if (twa_decode_bits(tw_dev, 
status_reg_value)) {
-                                               TW_CLEAR_ALL_INTERRUPTS(tw_dev);
-                                               goto twa_interrupt_bail;
-                                       }
+                       /* Check for valid status after each drain */
+                       status_reg_value = readl(TW_STATUS_REG_ADDR(tw_dev));
+                       if (twa_check_bits(status_reg_value)) {
+                               if (twa_decode_bits(tw_dev, status_reg_value)) {
+                                       TW_CLEAR_ALL_INTERRUPTS(tw_dev);
+                                       goto twa_interrupt_bail;
                                }
                        }
                }
        }
+
 twa_interrupt_bail:
        spin_unlock(tw_dev->host->host_lock);
        return IRQ_RETVAL(handled);
diff -Nru a/drivers/scsi/3w-xxxx.c b/drivers/scsi/3w-xxxx.c
--- a/drivers/scsi/3w-xxxx.c    2005-03-02 02:14:58 -05:00
+++ b/drivers/scsi/3w-xxxx.c    2005-03-02 02:14:58 -05:00
@@ -2088,182 +2088,180 @@
        /* Get the host lock for io completions */
        spin_lock(tw_dev->host->host_lock);
 
-       if (1) {
+       /* Read the registers */
+       status_reg_value = inl(TW_STATUS_REG_ADDR(tw_dev));
 
-               /* Read the registers */
-               status_reg_value = inl(TW_STATUS_REG_ADDR(tw_dev));
-
-               /* Check if this is our interrupt, otherwise bail */
-               if (!(status_reg_value & TW_STATUS_VALID_INTERRUPT))
+       /* Check if this is our interrupt, otherwise bail */
+       if (!(status_reg_value & TW_STATUS_VALID_INTERRUPT))
+               goto tw_interrupt_bail;
+
+       handled = 1;
+
+       /* Check controller for errors */
+       if (tw_check_bits(status_reg_value)) {
+               dprintk(KERN_WARNING "3w-xxxx: tw_interrupt(): Unexpected 
bits.\n");
+               if (tw_decode_bits(tw_dev, status_reg_value, 1)) {
+                       TW_CLEAR_ALL_INTERRUPTS(tw_dev);
                        goto tw_interrupt_bail;
-
-               handled = 1;
-
-               /* Check controller for errors */
-               if (tw_check_bits(status_reg_value)) {
-                       dprintk(KERN_WARNING "3w-xxxx: tw_interrupt(): 
Unexpected bits.\n");
-                       if (tw_decode_bits(tw_dev, status_reg_value, 1)) {
-                               TW_CLEAR_ALL_INTERRUPTS(tw_dev);
-                               goto tw_interrupt_bail;
-                       }
                }
+       }
 
-               /* Handle host interrupt */
-               if (status_reg_value & TW_STATUS_HOST_INTERRUPT) {
-                       dprintk(KERN_NOTICE "3w-xxxx: tw_interrupt(): Received 
host interrupt.\n");
-                       TW_CLEAR_HOST_INTERRUPT(tw_dev);
-               }
+       /* Handle host interrupt */
+       if (status_reg_value & TW_STATUS_HOST_INTERRUPT) {
+               dprintk(KERN_NOTICE "3w-xxxx: tw_interrupt(): Received host 
interrupt.\n");
+               TW_CLEAR_HOST_INTERRUPT(tw_dev);
+       }
 
-               /* Handle attention interrupt */
-               if (status_reg_value & TW_STATUS_ATTENTION_INTERRUPT) {
-                       dprintk(KERN_NOTICE "3w-xxxx: tw_interrupt(): Received 
attention interrupt.\n");
-                       TW_CLEAR_ATTENTION_INTERRUPT(tw_dev);
-                       tw_state_request_start(tw_dev, &request_id);
-                       error = tw_aen_read_queue(tw_dev, request_id);
-                       if (error) {
-                               printk(KERN_WARNING "3w-xxxx: scsi%d: Error 
reading aen queue.\n", tw_dev->host->host_no);
-                               tw_dev->state[request_id] = TW_S_COMPLETED;
-                               tw_state_request_finish(tw_dev, request_id);
-                       }
+       /* Handle attention interrupt */
+       if (status_reg_value & TW_STATUS_ATTENTION_INTERRUPT) {
+               dprintk(KERN_NOTICE "3w-xxxx: tw_interrupt(): Received 
attention interrupt.\n");
+               TW_CLEAR_ATTENTION_INTERRUPT(tw_dev);
+               tw_state_request_start(tw_dev, &request_id);
+               error = tw_aen_read_queue(tw_dev, request_id);
+               if (error) {
+                       printk(KERN_WARNING "3w-xxxx: scsi%d: Error reading aen 
queue.\n", tw_dev->host->host_no);
+                       tw_dev->state[request_id] = TW_S_COMPLETED;
+                       tw_state_request_finish(tw_dev, request_id);
                }
+       }
 
-               /* Handle command interrupt */
-               if (status_reg_value & TW_STATUS_COMMAND_INTERRUPT) {
-                       /* Drain as many pending commands as we can */
-                       while (tw_dev->pending_request_count > 0) {
-                               request_id = 
tw_dev->pending_queue[tw_dev->pending_head];
-                               if (tw_dev->state[request_id] != TW_S_PENDING) {
-                                       printk(KERN_WARNING "3w-xxxx: scsi%d: 
Found request id that wasn't pending.\n", tw_dev->host->host_no);
-                                       break;
-                               }
-                               if (tw_post_command_packet(tw_dev, 
request_id)==0) {
-                                       if (tw_dev->pending_head == 
TW_Q_LENGTH-1) {
-                                               tw_dev->pending_head = 
TW_Q_START;
-                                       } else {
-                                               tw_dev->pending_head = 
tw_dev->pending_head + 1;
-                                       }
-                                       tw_dev->pending_request_count--;
+       /* Handle command interrupt */
+       if (status_reg_value & TW_STATUS_COMMAND_INTERRUPT) {
+               /* Drain as many pending commands as we can */
+               while (tw_dev->pending_request_count > 0) {
+                       request_id = 
tw_dev->pending_queue[tw_dev->pending_head];
+                       if (tw_dev->state[request_id] != TW_S_PENDING) {
+                               printk(KERN_WARNING "3w-xxxx: scsi%d: Found 
request id that wasn't pending.\n", tw_dev->host->host_no);
+                               break;
+                       }
+                       if (tw_post_command_packet(tw_dev, request_id)==0) {
+                               if (tw_dev->pending_head == TW_Q_LENGTH-1) {
+                                       tw_dev->pending_head = TW_Q_START;
                                } else {
-                                       /* If we get here, we will continue 
re-posting on the next command interrupt */
-                                       break;
+                                       tw_dev->pending_head = 
tw_dev->pending_head + 1;
                                }
+                               tw_dev->pending_request_count--;
+                       } else {
+                               /* If we get here, we will continue re-posting 
on the next command interrupt */
+                               break;
                        }
-                       /* If there are no more pending requests, we mask 
command interrupt */
-                       if (tw_dev->pending_request_count == 0) 
-                               TW_MASK_COMMAND_INTERRUPT(tw_dev);
                }
+               /* If there are no more pending requests, we mask command 
interrupt */
+               if (tw_dev->pending_request_count == 0) 
+                       TW_MASK_COMMAND_INTERRUPT(tw_dev);
+       }
 
-               /* Handle response interrupt */
-               if (status_reg_value & TW_STATUS_RESPONSE_INTERRUPT) {
-                       /* Drain the response queue from the board */
-                       while ((status_reg_value & 
TW_STATUS_RESPONSE_QUEUE_EMPTY) == 0) {
-                               /* Read response queue register */
-                               response_que.value = 
inl(TW_RESPONSE_QUEUE_REG_ADDR(tw_dev));
-                               request_id = 
TW_RESID_OUT(response_que.response_id);
-                               command_packet = (TW_Command 
*)tw_dev->command_packet_virtual_address[request_id];
-                               error = 0;
-
-                               /* Check for bad response */
-                               if (command_packet->status != 0) {
-                                       /* If internal command, don't error, 
don't fill sense */
-                                       if (tw_dev->srb[request_id] == NULL) {
-                                               tw_decode_sense(tw_dev, 
request_id, 0);
-                                       } else {
-                                               error = tw_decode_sense(tw_dev, 
request_id, 1);
-                                       }
+       /* Handle response interrupt */
+       if (status_reg_value & TW_STATUS_RESPONSE_INTERRUPT) {
+               /* Drain the response queue from the board */
+               while ((status_reg_value & TW_STATUS_RESPONSE_QUEUE_EMPTY) == 
0) {
+                       /* Read response queue register */
+                       response_que.value = 
inl(TW_RESPONSE_QUEUE_REG_ADDR(tw_dev));
+                       request_id = TW_RESID_OUT(response_que.response_id);
+                       command_packet = (TW_Command 
*)tw_dev->command_packet_virtual_address[request_id];
+                       error = 0;
+
+                       /* Check for bad response */
+                       if (command_packet->status != 0) {
+                               /* If internal command, don't error, don't fill 
sense */
+                               if (tw_dev->srb[request_id] == NULL) {
+                                       tw_decode_sense(tw_dev, request_id, 0);
+                               } else {
+                                       error = tw_decode_sense(tw_dev, 
request_id, 1);
                                }
+                       }
 
-                               /* Check for correct state */
-                               if (tw_dev->state[request_id] != TW_S_POSTED) {
-                                       if (tw_dev->srb[request_id] != NULL) {
-                                               printk(KERN_WARNING "3w-xxxx: 
scsi%d: Received a request id that wasn't posted.\n", tw_dev->host->host_no);
-                                               error = 1;
-                                       }
+                       /* Check for correct state */
+                       if (tw_dev->state[request_id] != TW_S_POSTED) {
+                               if (tw_dev->srb[request_id] != NULL) {
+                                       printk(KERN_WARNING "3w-xxxx: scsi%d: 
Received a request id that wasn't posted.\n", tw_dev->host->host_no);
+                                       error = 1;
                                }
+                       }
 
-                               dprintk(KERN_NOTICE "3w-xxxx: tw_interrupt(): 
Response queue request id: %d.\n", request_id);
+                       dprintk(KERN_NOTICE "3w-xxxx: tw_interrupt(): Response 
queue request id: %d.\n", request_id);
 
-                               /* Check for internal command completion */
-                               if (tw_dev->srb[request_id] == NULL) {
-                                       dprintk(KERN_WARNING "3w-xxxx: 
tw_interrupt(): Found internally posted command.\n");
-                                       /* Check for chrdev ioctl completion */
-                                       if (request_id != 
tw_dev->chrdev_request_id) {
-                                               retval = 
tw_aen_complete(tw_dev, request_id);
-                                               if (retval) {
-                                                       printk(KERN_WARNING 
"3w-xxxx: scsi%d: Error completing aen.\n", tw_dev->host->host_no);
-                                               }
-                                       } else {
-                                               tw_dev->chrdev_request_id = 
TW_IOCTL_CHRDEV_FREE;
-                                               wake_up(&tw_dev->ioctl_wqueue);
+                       /* Check for internal command completion */
+                       if (tw_dev->srb[request_id] == NULL) {
+                               dprintk(KERN_WARNING "3w-xxxx: tw_interrupt(): 
Found internally posted command.\n");
+                               /* Check for chrdev ioctl completion */
+                               if (request_id != tw_dev->chrdev_request_id) {
+                                       retval = tw_aen_complete(tw_dev, 
request_id);
+                                       if (retval) {
+                                               printk(KERN_WARNING "3w-xxxx: 
scsi%d: Error completing aen.\n", tw_dev->host->host_no);
                                        }
                                } else {
-                               switch (tw_dev->srb[request_id]->cmnd[0]) {
-                                       case READ_10:
-                                       case READ_6:
-                                               dprintk(KERN_NOTICE "3w-xxxx: 
tw_interrupt(): caught READ_10/READ_6\n");
-                                               break;
-                                       case WRITE_10:
-                                       case WRITE_6:
-                                               dprintk(KERN_NOTICE "3w-xxxx: 
tw_interrupt(): caught WRITE_10/WRITE_6\n");
-                                               break;
-                                       case TEST_UNIT_READY:
-                                               dprintk(KERN_NOTICE "3w-xxxx: 
tw_interrupt(): caught TEST_UNIT_READY\n");
-                                               error = 
tw_scsiop_test_unit_ready_complete(tw_dev, request_id);
-                                               break;
-                                       case INQUIRY:
-                                               dprintk(KERN_NOTICE "3w-xxxx: 
tw_interrupt(): caught INQUIRY\n");
-                                               error = 
tw_scsiop_inquiry_complete(tw_dev, request_id);
-                                               break;
-                                       case READ_CAPACITY:
-                                               dprintk(KERN_NOTICE "3w-xxxx: 
tw_interrupt(): caught READ_CAPACITY\n");
-                                               error = 
tw_scsiop_read_capacity_complete(tw_dev, request_id);
-                                               break;
-                                       case MODE_SENSE:
-                                               dprintk(KERN_NOTICE "3w-xxxx: 
tw_interrupt(): caught MODE_SENSE\n");
-                                               error = 
tw_scsiop_mode_sense_complete(tw_dev, request_id);
-                                               break;
-                                       case SYNCHRONIZE_CACHE:
-                                               dprintk(KERN_NOTICE "3w-xxxx: 
tw_interrupt(): caught SYNCHRONIZE_CACHE\n");
-                                               break;
-                                       default:
-                                               printk(KERN_WARNING "3w-xxxx: 
case slip in tw_interrupt()\n");
-                                               error = 1;
-                                       }
+                                       tw_dev->chrdev_request_id = 
TW_IOCTL_CHRDEV_FREE;
+                                       wake_up(&tw_dev->ioctl_wqueue);
+                               }
+                       } else {
+                       switch (tw_dev->srb[request_id]->cmnd[0]) {
+                               case READ_10:
+                               case READ_6:
+                                       dprintk(KERN_NOTICE "3w-xxxx: 
tw_interrupt(): caught READ_10/READ_6\n");
+                                       break;
+                               case WRITE_10:
+                               case WRITE_6:
+                                       dprintk(KERN_NOTICE "3w-xxxx: 
tw_interrupt(): caught WRITE_10/WRITE_6\n");
+                                       break;
+                               case TEST_UNIT_READY:
+                                       dprintk(KERN_NOTICE "3w-xxxx: 
tw_interrupt(): caught TEST_UNIT_READY\n");
+                                       error = 
tw_scsiop_test_unit_ready_complete(tw_dev, request_id);
+                                       break;
+                               case INQUIRY:
+                                       dprintk(KERN_NOTICE "3w-xxxx: 
tw_interrupt(): caught INQUIRY\n");
+                                       error = 
tw_scsiop_inquiry_complete(tw_dev, request_id);
+                                       break;
+                               case READ_CAPACITY:
+                                       dprintk(KERN_NOTICE "3w-xxxx: 
tw_interrupt(): caught READ_CAPACITY\n");
+                                       error = 
tw_scsiop_read_capacity_complete(tw_dev, request_id);
+                                       break;
+                               case MODE_SENSE:
+                                       dprintk(KERN_NOTICE "3w-xxxx: 
tw_interrupt(): caught MODE_SENSE\n");
+                                       error = 
tw_scsiop_mode_sense_complete(tw_dev, request_id);
+                                       break;
+                               case SYNCHRONIZE_CACHE:
+                                       dprintk(KERN_NOTICE "3w-xxxx: 
tw_interrupt(): caught SYNCHRONIZE_CACHE\n");
+                                       break;
+                               default:
+                                       printk(KERN_WARNING "3w-xxxx: case slip 
in tw_interrupt()\n");
+                                       error = 1;
+                               }
 
-                                       /* If no error command was a success */
-                                       if (error == 0) {
-                                               tw_dev->srb[request_id]->result 
= (DID_OK << 16);
-                                       }
+                               /* If no error command was a success */
+                               if (error == 0) {
+                                       tw_dev->srb[request_id]->result = 
(DID_OK << 16);
+                               }
 
-                                       /* If error, command failed */
-                                       if (error == 1) {
-                                               /* Ask for a host reset */
-                                               tw_dev->srb[request_id]->result 
= (DID_OK << 16) | (CHECK_CONDITION << 1);
-                                       }
+                               /* If error, command failed */
+                               if (error == 1) {
+                                       /* Ask for a host reset */
+                                       tw_dev->srb[request_id]->result = 
(DID_OK << 16) | (CHECK_CONDITION << 1);
+                               }
 
-                                       /* Now complete the io */
-                                       if ((error != TW_ISR_DONT_COMPLETE)) {
-                                               tw_dev->state[request_id] = 
TW_S_COMPLETED;
-                                               tw_state_request_finish(tw_dev, 
request_id);
-                                               tw_dev->posted_request_count--;
-                                               
tw_dev->srb[request_id]->scsi_done(tw_dev->srb[request_id]);
+                               /* Now complete the io */
+                               if ((error != TW_ISR_DONT_COMPLETE)) {
+                                       tw_dev->state[request_id] = 
TW_S_COMPLETED;
+                                       tw_state_request_finish(tw_dev, 
request_id);
+                                       tw_dev->posted_request_count--;
+                                       
tw_dev->srb[request_id]->scsi_done(tw_dev->srb[request_id]);
 
-                                               
tw_unmap_scsi_data(tw_dev->tw_pci_dev, tw_dev->srb[request_id]);
-                                       }
+                                       tw_unmap_scsi_data(tw_dev->tw_pci_dev, 
tw_dev->srb[request_id]);
                                }
-                               
-                               /* Check for valid status after each drain */
-                               status_reg_value = 
inl(TW_STATUS_REG_ADDR(tw_dev));
-                               if (tw_check_bits(status_reg_value)) {
-                                       dprintk(KERN_WARNING "3w-xxxx: 
tw_interrupt(): Unexpected bits.\n");
-                                       if (tw_decode_bits(tw_dev, 
status_reg_value, 1)) {
-                                               TW_CLEAR_ALL_INTERRUPTS(tw_dev);
-                                               goto tw_interrupt_bail;
-                                       }
+                       }
+                       
+                       /* Check for valid status after each drain */
+                       status_reg_value = inl(TW_STATUS_REG_ADDR(tw_dev));
+                       if (tw_check_bits(status_reg_value)) {
+                               dprintk(KERN_WARNING "3w-xxxx: tw_interrupt(): 
Unexpected bits.\n");
+                               if (tw_decode_bits(tw_dev, status_reg_value, 
1)) {
+                                       TW_CLEAR_ALL_INTERRUPTS(tw_dev);
+                                       goto tw_interrupt_bail;
                                }
                        }
                }
        }
+
 tw_interrupt_bail:
        spin_unlock(tw_dev->host->host_lock);
        return IRQ_RETVAL(handled);

Reply via email to