commit 43ebb4ccf4bf705e7963b8b7162812a8ebd64e22 Author: Jeff Garzik Date: Tue Aug 8 18:41:31 2006 -0400 [SCSI] stex: minor fixes: irq flag, error return value - Don't use deprecated SA_SHIRQ irq flag. - Return CHECK CONDITION (invalid field in CDB) where warranted. 43ebb4ccf4bf705e7963b8b7162812a8ebd64e22 diff --git a/drivers/scsi/stex.c b/drivers/scsi/stex.c index acf626f..f35833a 100644 --- a/drivers/scsi/stex.c +++ b/drivers/scsi/stex.c @@ -334,6 +334,25 @@ static struct status_msg *stex_get_statu return status; } +static void stex_set_sense(struct scsi_cmnd *cmd, u8 sk, u8 asc, u8 ascq) +{ + cmd->result = (DRIVER_SENSE << 24) | SAM_STAT_CHECK_CONDITION; + + cmd->sense_buffer[0] = 0x70; /* fixed format, current */ + cmd->sense_buffer[2] = sk; + cmd->sense_buffer[7] = 18 - 8; /* additional sense length */ + cmd->sense_buffer[12] = asc; + cmd->sense_buffer[13] = ascq; +} + +static void stex_invalid_field(struct scsi_cmnd *cmd, + void (*done)(struct scsi_cmnd *)) +{ + /* "Invalid field in cbd" */ + stex_set_sense(cmd, ILLEGAL_REQUEST, 0x24, 0x0); + done(cmd); +} + static struct req_msg *stex_alloc_req(struct st_hba *hba) { struct req_msg *req = ((struct req_msg *)hba->dma_mem) + @@ -533,9 +552,9 @@ stex_queuecommand(struct scsi_cmnd *cmd, stex_direct_copy(cmd, console_inq_page, sizeof(console_inq_page)); cmd->result = DID_OK << 16 | COMMAND_COMPLETE << 8; + done(cmd); } else - cmd->result = DID_ERROR << 16 | COMMAND_COMPLETE << 8; - done(cmd); + stex_invalid_field(cmd, done); return 0; case PASSTHRU_CMD: if (cmd->cmnd[1] == PASSTHRU_GET_DRVVER) { @@ -1122,7 +1141,7 @@ stex_probe(struct pci_dev *pdev, const s hba->pdev = pdev; init_waitqueue_head(&hba->waitq); - err = request_irq(pdev->irq, stex_intr, SA_SHIRQ, DRV_NAME, hba); + err = request_irq(pdev->irq, stex_intr, IRQF_SHARED, DRV_NAME, hba); if (err) { printk(KERN_ERR DRV_NAME "(%s): request irq failed\n", pci_name(pdev));