提交 422c0d61 编写于 作者: J Jeff Garzik 提交者: James Bottomley

[SCSI] use scmd_id(), scmd_channel() throughout code

Wrap a highly common idiom.  Makes the code easier to read, helps pave
the way for sdev->{id,channel} removal, and adds a token that can easily
by grepped-for in the future.

There are a couple sdev_id() and scmd_printk() updates thrown in as well.

Rejections fixed up and
Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
上级 017560fc
...@@ -1427,7 +1427,7 @@ NCR_700_start_command(struct scsi_cmnd *SCp) ...@@ -1427,7 +1427,7 @@ NCR_700_start_command(struct scsi_cmnd *SCp)
* If a contingent allegiance condition exists, the device * If a contingent allegiance condition exists, the device
* will refuse all tags, so send the request sense as untagged * will refuse all tags, so send the request sense as untagged
* */ * */
if((hostdata->tag_negotiated & (1<<SCp->device->id)) if((hostdata->tag_negotiated & (1<<scmd_id(SCp)))
&& (slot->tag != SCSI_NO_TAG && SCp->cmnd[0] != REQUEST_SENSE)) { && (slot->tag != SCSI_NO_TAG && SCp->cmnd[0] != REQUEST_SENSE)) {
count += scsi_populate_tag_msg(SCp, &hostdata->msgout[count]); count += scsi_populate_tag_msg(SCp, &hostdata->msgout[count]);
} }
...@@ -1446,7 +1446,7 @@ NCR_700_start_command(struct scsi_cmnd *SCp) ...@@ -1446,7 +1446,7 @@ NCR_700_start_command(struct scsi_cmnd *SCp)
script_patch_ID(hostdata->script, script_patch_ID(hostdata->script,
Device_ID, 1<<SCp->device->id); Device_ID, 1<<scmd_id(SCp));
script_patch_32_abs(hostdata->script, CommandAddress, script_patch_32_abs(hostdata->script, CommandAddress,
slot->pCmd); slot->pCmd);
...@@ -2111,7 +2111,7 @@ static int NCR_700_change_queue_type(struct scsi_device *SDp, int tag_type) ...@@ -2111,7 +2111,7 @@ static int NCR_700_change_queue_type(struct scsi_device *SDp, int tag_type)
/* shift back to the default unqueued number of commands /* shift back to the default unqueued number of commands
* (the user can still raise this) */ * (the user can still raise this) */
scsi_deactivate_tcq(SDp, SDp->host->cmd_per_lun); scsi_deactivate_tcq(SDp, SDp->host->cmd_per_lun);
hostdata->tag_negotiated &= ~(1 << SDp->id); hostdata->tag_negotiated &= ~(1 << sdev_id(SDp));
} else { } else {
/* Here, we cleared the negotiation flag above, so this /* Here, we cleared the negotiation flag above, so this
* will force the driver to renegotiate */ * will force the driver to renegotiate */
......
...@@ -1247,13 +1247,13 @@ static void collect_stats(struct NCR5380_hostdata *hostdata, Scsi_Cmnd * cmd) ...@@ -1247,13 +1247,13 @@ static void collect_stats(struct NCR5380_hostdata *hostdata, Scsi_Cmnd * cmd)
case WRITE: case WRITE:
case WRITE_6: case WRITE_6:
case WRITE_10: case WRITE_10:
hostdata->time_write[cmd->device->id] += (jiffies - hostdata->timebase); hostdata->time_write[scmd_id(cmd)] += (jiffies - hostdata->timebase);
hostdata->pendingw--; hostdata->pendingw--;
break; break;
case READ: case READ:
case READ_6: case READ_6:
case READ_10: case READ_10:
hostdata->time_read[cmd->device->id] += (jiffies - hostdata->timebase); hostdata->time_read[scmd_id(cmd)] += (jiffies - hostdata->timebase);
hostdata->pendingr--; hostdata->pendingr--;
break; break;
} }
...@@ -1385,7 +1385,7 @@ static int NCR5380_select(struct Scsi_Host *instance, Scsi_Cmnd * cmd, int tag) ...@@ -1385,7 +1385,7 @@ static int NCR5380_select(struct Scsi_Host *instance, Scsi_Cmnd * cmd, int tag)
* the host and target ID's on the SCSI bus. * the host and target ID's on the SCSI bus.
*/ */
NCR5380_write(OUTPUT_DATA_REG, (hostdata->id_mask | (1 << cmd->device->id))); NCR5380_write(OUTPUT_DATA_REG, (hostdata->id_mask | (1 << scmd_id(cmd))));
/* /*
* Raise ATN while SEL is true before BSY goes false from arbitration, * Raise ATN while SEL is true before BSY goes false from arbitration,
...@@ -1430,7 +1430,7 @@ static int NCR5380_select(struct Scsi_Host *instance, Scsi_Cmnd * cmd, int tag) ...@@ -1430,7 +1430,7 @@ static int NCR5380_select(struct Scsi_Host *instance, Scsi_Cmnd * cmd, int tag)
udelay(1); udelay(1);
dprintk(NDEBUG_SELECTION, ("scsi%d : selecting target %d\n", instance->host_no, cmd->device->id)); dprintk(NDEBUG_SELECTION, ("scsi%d : selecting target %d\n", instance->host_no, scmd_id(cmd)));
/* /*
* The SCSI specification calls for a 250 ms timeout for the actual * The SCSI specification calls for a 250 ms timeout for the actual
...@@ -1483,7 +1483,7 @@ static int NCR5380_select(struct Scsi_Host *instance, Scsi_Cmnd * cmd, int tag) ...@@ -1483,7 +1483,7 @@ static int NCR5380_select(struct Scsi_Host *instance, Scsi_Cmnd * cmd, int tag)
if (!(NCR5380_read(STATUS_REG) & SR_BSY)) { if (!(NCR5380_read(STATUS_REG) & SR_BSY)) {
NCR5380_write(INITIATOR_COMMAND_REG, ICR_BASE); NCR5380_write(INITIATOR_COMMAND_REG, ICR_BASE);
if (hostdata->targets_present & (1 << cmd->device->id)) { if (hostdata->targets_present & (1 << scmd_id(cmd))) {
printk(KERN_DEBUG "scsi%d : weirdness\n", instance->host_no); printk(KERN_DEBUG "scsi%d : weirdness\n", instance->host_no);
if (hostdata->restart_select) if (hostdata->restart_select)
printk(KERN_DEBUG "\trestart select\n"); printk(KERN_DEBUG "\trestart select\n");
...@@ -1499,7 +1499,7 @@ static int NCR5380_select(struct Scsi_Host *instance, Scsi_Cmnd * cmd, int tag) ...@@ -1499,7 +1499,7 @@ static int NCR5380_select(struct Scsi_Host *instance, Scsi_Cmnd * cmd, int tag)
NCR5380_write(SELECT_ENABLE_REG, hostdata->id_mask); NCR5380_write(SELECT_ENABLE_REG, hostdata->id_mask);
return 0; return 0;
} }
hostdata->targets_present |= (1 << cmd->device->id); hostdata->targets_present |= (1 << scmd_id(cmd));
/* /*
* Since we followed the SCSI spec, and raised ATN while SEL * Since we followed the SCSI spec, and raised ATN while SEL
......
...@@ -936,7 +936,7 @@ static void esp_release_dmabufs(struct NCR_ESP *esp, Scsi_Cmnd *sp) ...@@ -936,7 +936,7 @@ static void esp_release_dmabufs(struct NCR_ESP *esp, Scsi_Cmnd *sp)
static void esp_restore_pointers(struct NCR_ESP *esp, Scsi_Cmnd *sp) static void esp_restore_pointers(struct NCR_ESP *esp, Scsi_Cmnd *sp)
{ {
struct esp_pointers *ep = &esp->data_pointers[sp->device->id]; struct esp_pointers *ep = &esp->data_pointers[scmd_id(sp)];
sp->SCp.ptr = ep->saved_ptr; sp->SCp.ptr = ep->saved_ptr;
sp->SCp.buffer = ep->saved_buffer; sp->SCp.buffer = ep->saved_buffer;
...@@ -946,7 +946,7 @@ static void esp_restore_pointers(struct NCR_ESP *esp, Scsi_Cmnd *sp) ...@@ -946,7 +946,7 @@ static void esp_restore_pointers(struct NCR_ESP *esp, Scsi_Cmnd *sp)
static void esp_save_pointers(struct NCR_ESP *esp, Scsi_Cmnd *sp) static void esp_save_pointers(struct NCR_ESP *esp, Scsi_Cmnd *sp)
{ {
struct esp_pointers *ep = &esp->data_pointers[sp->device->id]; struct esp_pointers *ep = &esp->data_pointers[scmd_id(sp)];
ep->saved_ptr = sp->SCp.ptr; ep->saved_ptr = sp->SCp.ptr;
ep->saved_buffer = sp->SCp.buffer; ep->saved_buffer = sp->SCp.buffer;
...@@ -1693,13 +1693,13 @@ static inline void esp_connect(struct NCR_ESP *esp, struct ESP_regs *eregs, ...@@ -1693,13 +1693,13 @@ static inline void esp_connect(struct NCR_ESP *esp, struct ESP_regs *eregs,
if(esp->prev_soff != esp_dev->sync_max_offset || if(esp->prev_soff != esp_dev->sync_max_offset ||
esp->prev_stp != esp_dev->sync_min_period || esp->prev_stp != esp_dev->sync_min_period ||
(esp->erev > esp100a && (esp->erev > esp100a &&
esp->prev_cfg3 != esp->config3[sp->device->id])) { esp->prev_cfg3 != esp->config3[scmd_id(sp)])) {
esp->prev_soff = esp_dev->sync_max_offset; esp->prev_soff = esp_dev->sync_max_offset;
esp_write(eregs->esp_soff, esp->prev_soff); esp_write(eregs->esp_soff, esp->prev_soff);
esp->prev_stp = esp_dev->sync_min_period; esp->prev_stp = esp_dev->sync_min_period;
esp_write(eregs->esp_stp, esp->prev_stp); esp_write(eregs->esp_stp, esp->prev_stp);
if(esp->erev > esp100a) { if(esp->erev > esp100a) {
esp->prev_cfg3 = esp->config3[sp->device->id]; esp->prev_cfg3 = esp->config3[scmd_id(sp)];
esp_write(eregs->esp_cfg3, esp->prev_cfg3); esp_write(eregs->esp_cfg3, esp->prev_cfg3);
} }
} }
...@@ -2205,7 +2205,7 @@ static int esp_do_freebus(struct NCR_ESP *esp, struct ESP_regs *eregs) ...@@ -2205,7 +2205,7 @@ static int esp_do_freebus(struct NCR_ESP *esp, struct ESP_regs *eregs)
if(SCptr->SCp.Status != GOOD && if(SCptr->SCp.Status != GOOD &&
SCptr->SCp.Status != CONDITION_GOOD && SCptr->SCp.Status != CONDITION_GOOD &&
((1<<SCptr->device->id) & esp->targets_present) && ((1<<scmd_id(SCptr)) & esp->targets_present) &&
esp_dev->sync && esp_dev->sync_max_offset) { esp_dev->sync && esp_dev->sync_max_offset) {
/* SCSI standard says that the synchronous capabilities /* SCSI standard says that the synchronous capabilities
* should be renegotiated at this point. Most likely * should be renegotiated at this point. Most likely
...@@ -2597,7 +2597,7 @@ static int esp_select_complete(struct NCR_ESP *esp, struct ESP_regs *eregs) ...@@ -2597,7 +2597,7 @@ static int esp_select_complete(struct NCR_ESP *esp, struct ESP_regs *eregs)
*/ */
if(esp->ireg == (ESP_INTR_FDONE | ESP_INTR_BSERV)) { if(esp->ireg == (ESP_INTR_FDONE | ESP_INTR_BSERV)) {
/* target speaks... */ /* target speaks... */
esp->targets_present |= (1<<SCptr->device->id); esp->targets_present |= (1<<scmd_id(SCptr));
/* What if the target ignores the sdtr? */ /* What if the target ignores the sdtr? */
if(esp->snip) if(esp->snip)
...@@ -3064,7 +3064,7 @@ static int check_multibyte_msg(struct NCR_ESP *esp, ...@@ -3064,7 +3064,7 @@ static int check_multibyte_msg(struct NCR_ESP *esp,
ESPSDTR(("soff=%2x stp=%2x cfg3=%2x\n", ESPSDTR(("soff=%2x stp=%2x cfg3=%2x\n",
esp_dev->sync_max_offset, esp_dev->sync_max_offset,
esp_dev->sync_min_period, esp_dev->sync_min_period,
esp->config3[SCptr->device->id])); esp->config3[scmd_id(SCptr)]));
esp->snip = 0; esp->snip = 0;
} else if(esp_dev->sync_max_offset) { } else if(esp_dev->sync_max_offset) {
...@@ -3621,7 +3621,7 @@ void esp_slave_destroy(Scsi_Device *SDptr) ...@@ -3621,7 +3621,7 @@ void esp_slave_destroy(Scsi_Device *SDptr)
{ {
struct NCR_ESP *esp = (struct NCR_ESP *) SDptr->host->hostdata; struct NCR_ESP *esp = (struct NCR_ESP *) SDptr->host->hostdata;
esp->targets_present &= ~(1 << SDptr->id); esp->targets_present &= ~(1 << sdev_id(SDptr));
kfree(SDptr->hostdata); kfree(SDptr->hostdata);
SDptr->hostdata = NULL; SDptr->hostdata = NULL;
} }
......
...@@ -710,7 +710,7 @@ static int NCR53c406a_queue(Scsi_Cmnd * SCpnt, void (*done) (Scsi_Cmnd *)) ...@@ -710,7 +710,7 @@ static int NCR53c406a_queue(Scsi_Cmnd * SCpnt, void (*done) (Scsi_Cmnd *))
/* We are locked here already by the mid layer */ /* We are locked here already by the mid layer */
REG0; REG0;
outb(SCpnt->device->id, DEST_ID); /* set destination */ outb(scmd_id(SCpnt), DEST_ID); /* set destination */
outb(FLUSH_FIFO, CMD_REG); /* reset the fifos */ outb(FLUSH_FIFO, CMD_REG); /* reset the fifos */
for (i = 0; i < SCpnt->cmd_len; i++) { for (i = 0; i < SCpnt->cmd_len; i++) {
......
...@@ -923,7 +923,7 @@ static int inia100_device_reset(struct scsi_cmnd * SCpnt) ...@@ -923,7 +923,7 @@ static int inia100_device_reset(struct scsi_cmnd * SCpnt)
{ /* I need Host Control Block Information */ { /* I need Host Control Block Information */
ORC_HCS *pHCB; ORC_HCS *pHCB;
pHCB = (ORC_HCS *) SCpnt->device->host->hostdata; pHCB = (ORC_HCS *) SCpnt->device->host->hostdata;
return orc_device_reset(pHCB, SCpnt, SCpnt->device->id); return orc_device_reset(pHCB, SCpnt, scmd_id(SCpnt));
} }
......
...@@ -1464,7 +1464,7 @@ int aac_scsi_cmd(struct scsi_cmnd * scsicmd) ...@@ -1464,7 +1464,7 @@ int aac_scsi_cmd(struct scsi_cmnd * scsicmd)
* Test does not apply to ID 16, the pseudo id for the controller * Test does not apply to ID 16, the pseudo id for the controller
* itself. * itself.
*/ */
if (scsicmd->device->id != host->this_id) { if (scmd_id(scsicmd) != host->this_id) {
if ((scsicmd->device->channel == 0) ){ if ((scsicmd->device->channel == 0) ){
if( (scsicmd->device->id >= dev->maximum_num_containers) || (scsicmd->device->lun != 0)){ if( (scsicmd->device->id >= dev->maximum_num_containers) || (scsicmd->device->lun != 0)){
scsicmd->result = DID_NO_CONNECT << 16; scsicmd->result = DID_NO_CONNECT << 16;
...@@ -1559,7 +1559,7 @@ int aac_scsi_cmd(struct scsi_cmnd * scsicmd) ...@@ -1559,7 +1559,7 @@ int aac_scsi_cmd(struct scsi_cmnd * scsicmd)
* Set the Vendor, Product, and Revision Level * Set the Vendor, Product, and Revision Level
* see: <vendor>.c i.e. aac.c * see: <vendor>.c i.e. aac.c
*/ */
if (scsicmd->device->id == host->this_id) { if (scmd_id(scsicmd) == host->this_id) {
setinqstr(dev, (void *) (inq_data.inqd_vid), (sizeof(container_types)/sizeof(char *))); setinqstr(dev, (void *) (inq_data.inqd_vid), (sizeof(container_types)/sizeof(char *)));
inq_data.inqd_pdt = INQD_PDT_PROC; /* Processor device */ inq_data.inqd_pdt = INQD_PDT_PROC; /* Processor device */
aac_internal_transfer(scsicmd, &inq_data, 0, sizeof(inq_data)); aac_internal_transfer(scsicmd, &inq_data, 0, sizeof(inq_data));
...@@ -1949,7 +1949,7 @@ static void aac_srb_callback(void *context, struct fib * fibptr) ...@@ -1949,7 +1949,7 @@ static void aac_srb_callback(void *context, struct fib * fibptr)
* the channel is 2 * the channel is 2
*/ */
} else if ((dev->raid_scsi_mode) && } else if ((dev->raid_scsi_mode) &&
(scsicmd->device->channel == 2)) { (scmd_channel(scsicmd) == 2)) {
scsicmd->result = DID_OK << 16 | scsicmd->result = DID_OK << 16 |
COMMAND_COMPLETE << 8; COMMAND_COMPLETE << 8;
} else { } else {
...@@ -1993,7 +1993,7 @@ static void aac_srb_callback(void *context, struct fib * fibptr) ...@@ -1993,7 +1993,7 @@ static void aac_srb_callback(void *context, struct fib * fibptr)
* the channel is 2 * the channel is 2
*/ */
} else if ((dev->raid_scsi_mode) && } else if ((dev->raid_scsi_mode) &&
(scsicmd->device->channel == 2)) { (scmd_channel(scsicmd) == 2)) {
scsicmd->result = DID_OK << 16 | scsicmd->result = DID_OK << 16 |
COMMAND_COMPLETE << 8; COMMAND_COMPLETE << 8;
} else { } else {
......
...@@ -347,7 +347,7 @@ static int aha1740_queuecommand(Scsi_Cmnd * SCpnt, void (*done)(Scsi_Cmnd *)) ...@@ -347,7 +347,7 @@ static int aha1740_queuecommand(Scsi_Cmnd * SCpnt, void (*done)(Scsi_Cmnd *))
{ {
unchar direction; unchar direction;
unchar *cmd = (unchar *) SCpnt->cmnd; unchar *cmd = (unchar *) SCpnt->cmnd;
unchar target = SCpnt->device->id; unchar target = scmd_id(SCpnt);
struct aha1740_hostdata *host = HOSTDATA(SCpnt->device->host); struct aha1740_hostdata *host = HOSTDATA(SCpnt->device->host);
unsigned long flags; unsigned long flags;
void *buff = SCpnt->request_buffer; void *buff = SCpnt->request_buffer;
......
...@@ -398,7 +398,7 @@ ahd_linux_unmap_scb(struct ahd_softc *ahd, struct scb *scb) ...@@ -398,7 +398,7 @@ ahd_linux_unmap_scb(struct ahd_softc *ahd, struct scb *scb)
/******************************** Macros **************************************/ /******************************** Macros **************************************/
#define BUILD_SCSIID(ahd, cmd) \ #define BUILD_SCSIID(ahd, cmd) \
((((cmd)->device->id << TID_SHIFT) & TID) | (ahd)->our_id) (((scmd_id(cmd) << TID_SHIFT) & TID) | (ahd)->our_id)
/* /*
* Return a string describing the driver. * Return a string describing the driver.
...@@ -685,7 +685,7 @@ ahd_linux_bus_reset(struct scsi_cmnd *cmd) ...@@ -685,7 +685,7 @@ ahd_linux_bus_reset(struct scsi_cmnd *cmd)
ahd_name(ahd), cmd); ahd_name(ahd), cmd);
#endif #endif
ahd_lock(ahd, &s); ahd_lock(ahd, &s);
found = ahd_reset_channel(ahd, cmd->device->channel + 'A', found = ahd_reset_channel(ahd, scmd_channel(cmd) + 'A',
/*initiate reset*/TRUE); /*initiate reset*/TRUE);
ahd_unlock(ahd, &s); ahd_unlock(ahd, &s);
...@@ -2110,8 +2110,9 @@ ahd_linux_queue_recovery_cmd(struct scsi_cmnd *cmd, scb_flag flag) ...@@ -2110,8 +2110,9 @@ ahd_linux_queue_recovery_cmd(struct scsi_cmnd *cmd, scb_flag flag)
/* Any SCB for this device will do for a target reset */ /* Any SCB for this device will do for a target reset */
LIST_FOREACH(pending_scb, &ahd->pending_scbs, pending_links) { LIST_FOREACH(pending_scb, &ahd->pending_scbs, pending_links) {
if (ahd_match_scb(ahd, pending_scb, cmd->device->id, if (ahd_match_scb(ahd, pending_scb,
cmd->device->channel + 'A', scmd_id(cmd),
scmd_channel(cmd) + 'A',
CAM_LUN_WILDCARD, CAM_LUN_WILDCARD,
SCB_LIST_NULL, ROLE_INITIATOR) == 0) SCB_LIST_NULL, ROLE_INITIATOR) == 0)
break; break;
...@@ -2198,7 +2199,7 @@ ahd_linux_queue_recovery_cmd(struct scsi_cmnd *cmd, scb_flag flag) ...@@ -2198,7 +2199,7 @@ ahd_linux_queue_recovery_cmd(struct scsi_cmnd *cmd, scb_flag flag)
if (last_phase != P_BUSFREE if (last_phase != P_BUSFREE
&& (SCB_GET_TAG(pending_scb) == active_scbptr && (SCB_GET_TAG(pending_scb) == active_scbptr
|| (flag == SCB_DEVICE_RESET || (flag == SCB_DEVICE_RESET
&& SCSIID_TARGET(ahd, saved_scsiid) == cmd->device->id))) { && SCSIID_TARGET(ahd, saved_scsiid) == scmd_id(cmd)))) {
/* /*
* We're active on the bus, so assert ATN * We're active on the bus, so assert ATN
......
...@@ -686,7 +686,7 @@ ahc_linux_biosparam(struct scsi_device *sdev, struct block_device *bdev, ...@@ -686,7 +686,7 @@ ahc_linux_biosparam(struct scsi_device *sdev, struct block_device *bdev,
u_int channel; u_int channel;
ahc = *((struct ahc_softc **)sdev->host->hostdata); ahc = *((struct ahc_softc **)sdev->host->hostdata);
channel = sdev->channel; channel = sdev_channel(sdev);
bh = scsi_bios_ptable(bdev); bh = scsi_bios_ptable(bdev);
if (bh) { if (bh) {
...@@ -759,7 +759,7 @@ ahc_linux_bus_reset(struct scsi_cmnd *cmd) ...@@ -759,7 +759,7 @@ ahc_linux_bus_reset(struct scsi_cmnd *cmd)
ahc = *(struct ahc_softc **)cmd->device->host->hostdata; ahc = *(struct ahc_softc **)cmd->device->host->hostdata;
ahc_lock(ahc, &flags); ahc_lock(ahc, &flags);
found = ahc_reset_channel(ahc, cmd->device->channel + 'A', found = ahc_reset_channel(ahc, scmd_channel(cmd) + 'A',
/*initiate reset*/TRUE); /*initiate reset*/TRUE);
ahc_unlock(ahc, &flags); ahc_unlock(ahc, &flags);
...@@ -2172,8 +2172,8 @@ ahc_linux_queue_recovery_cmd(struct scsi_cmnd *cmd, scb_flag flag) ...@@ -2172,8 +2172,8 @@ ahc_linux_queue_recovery_cmd(struct scsi_cmnd *cmd, scb_flag flag)
/* Any SCB for this device will do for a target reset */ /* Any SCB for this device will do for a target reset */
LIST_FOREACH(pending_scb, &ahc->pending_scbs, pending_links) { LIST_FOREACH(pending_scb, &ahc->pending_scbs, pending_links) {
if (ahc_match_scb(ahc, pending_scb, cmd->device->id, if (ahc_match_scb(ahc, pending_scb, scmd_id(cmd),
cmd->device->channel + 'A', scmd_channel(cmd) + 'A',
CAM_LUN_WILDCARD, CAM_LUN_WILDCARD,
SCB_LIST_NULL, ROLE_INITIATOR) == 0) SCB_LIST_NULL, ROLE_INITIATOR) == 0)
break; break;
...@@ -2260,7 +2260,7 @@ ahc_linux_queue_recovery_cmd(struct scsi_cmnd *cmd, scb_flag flag) ...@@ -2260,7 +2260,7 @@ ahc_linux_queue_recovery_cmd(struct scsi_cmnd *cmd, scb_flag flag)
if (last_phase != P_BUSFREE if (last_phase != P_BUSFREE
&& (pending_scb->hscb->tag == active_scb_index && (pending_scb->hscb->tag == active_scb_index
|| (flag == SCB_DEVICE_RESET || (flag == SCB_DEVICE_RESET
&& SCSIID_TARGET(ahc, saved_scsiid) == cmd->device->id))) { && SCSIID_TARGET(ahc, saved_scsiid) == scmd_id(cmd)))) {
/* /*
* We're active on the bus, so assert ATN * We're active on the bus, so assert ATN
......
...@@ -621,10 +621,10 @@ static int atp870u_queuecommand(struct scsi_cmnd * req_p, ...@@ -621,10 +621,10 @@ static int atp870u_queuecommand(struct scsi_cmnd * req_p,
struct atp_unit *dev; struct atp_unit *dev;
struct Scsi_Host *host; struct Scsi_Host *host;
c = req_p->device->channel; c = scmd_channel(req_p);
req_p->sense_buffer[0]=0; req_p->sense_buffer[0]=0;
req_p->resid = 0; req_p->resid = 0;
if (req_p->device->channel > 1) { if (scmd_channel(req_p) > 1) {
req_p->result = 0x00040000; req_p->result = 0x00040000;
done(req_p); done(req_p);
#ifdef ED_DBGP #ifdef ED_DBGP
...@@ -639,7 +639,7 @@ static int atp870u_queuecommand(struct scsi_cmnd * req_p, ...@@ -639,7 +639,7 @@ static int atp870u_queuecommand(struct scsi_cmnd * req_p,
m = 1; m = 1;
m = m << req_p->device->id; m = m << scmd_id(req_p);
/* /*
* Fake a timeout for missing targets * Fake a timeout for missing targets
...@@ -757,9 +757,9 @@ static void send_s870(struct atp_unit *dev,unsigned char c) ...@@ -757,9 +757,9 @@ static void send_s870(struct atp_unit *dev,unsigned char c)
dev->quhd[c] = 0; dev->quhd[c] = 0;
} }
workreq = dev->quereq[c][dev->quhd[c]]; workreq = dev->quereq[c][dev->quhd[c]];
if (dev->id[c][workreq->device->id].curr_req == 0) { if (dev->id[c][scmd_id(workreq)].curr_req == 0) {
dev->id[c][workreq->device->id].curr_req = workreq; dev->id[c][scmd_id(workreq)].curr_req = workreq;
dev->last_cmd[c] = workreq->device->id; dev->last_cmd[c] = scmd_id(workreq);
goto cmd_subp; goto cmd_subp;
} }
dev->quhd[c] = j; dev->quhd[c] = j;
...@@ -786,16 +786,16 @@ static void send_s870(struct atp_unit *dev,unsigned char c) ...@@ -786,16 +786,16 @@ static void send_s870(struct atp_unit *dev,unsigned char c)
oktosend: oktosend:
#ifdef ED_DBGP #ifdef ED_DBGP
printk("OK to Send\n"); printk("OK to Send\n");
printk("CDB"); scmd_printk(KERN_DEBUG, workreq, "CDB");
for(i=0;i<workreq->cmd_len;i++) { for(i=0;i<workreq->cmd_len;i++) {
printk(" %x",workreq->cmnd[i]); printk(" %x",workreq->cmnd[i]);
} }
printk("\nChannel = %d ID = %d LUN = %d\n",c,workreq->device->id,workreq->device->lun); printk("\n");
#endif #endif
if (dev->dev_id == ATP885_DEVID) { if (dev->dev_id == ATP885_DEVID) {
j = inb(dev->baseport + 0x29) & 0xfe; j = inb(dev->baseport + 0x29) & 0xfe;
outb(j, dev->baseport + 0x29); outb(j, dev->baseport + 0x29);
dev->r1f[c][workreq->device->id] = 0; dev->r1f[c][scmd_id(workreq)] = 0;
} }
if (workreq->cmnd[0] == READ_CAPACITY) { if (workreq->cmnd[0] == READ_CAPACITY) {
...@@ -809,7 +809,7 @@ static void send_s870(struct atp_unit *dev,unsigned char c) ...@@ -809,7 +809,7 @@ static void send_s870(struct atp_unit *dev,unsigned char c)
tmport = workport + 0x1b; tmport = workport + 0x1b;
j = 0; j = 0;
target_id = workreq->device->id; target_id = scmd_id(workreq);
/* /*
* Wide ? * Wide ?
...@@ -3108,7 +3108,7 @@ static int atp870u_abort(struct scsi_cmnd * SCpnt) ...@@ -3108,7 +3108,7 @@ static int atp870u_abort(struct scsi_cmnd * SCpnt)
host = SCpnt->device->host; host = SCpnt->device->host;
dev = (struct atp_unit *)&host->hostdata; dev = (struct atp_unit *)&host->hostdata;
c=SCpnt->device->channel; c = scmd_channel(SCpnt);
printk(" atp870u: abort Channel = %x \n", c); printk(" atp870u: abort Channel = %x \n", c);
printk("working=%x last_cmd=%x ", dev->working[c], dev->last_cmd[c]); printk("working=%x last_cmd=%x ", dev->working[c], dev->last_cmd[c]);
printk(" quhdu=%x quendu=%x ", dev->quhd[c], dev->quend[c]); printk(" quhdu=%x quendu=%x ", dev->quhd[c], dev->quend[c]);
......
...@@ -671,7 +671,7 @@ static irqreturn_t fd_mcs_intr(int irq, void *dev_id, struct pt_regs *regs) ...@@ -671,7 +671,7 @@ static irqreturn_t fd_mcs_intr(int irq, void *dev_id, struct pt_regs *regs)
outb(0x40 | FIFO_COUNT, Interrupt_Cntl_port); outb(0x40 | FIFO_COUNT, Interrupt_Cntl_port);
outb(0x82, SCSI_Cntl_port); /* Bus Enable + Select */ outb(0x82, SCSI_Cntl_port); /* Bus Enable + Select */
outb(adapter_mask | (1 << current_SC->device->id), SCSI_Data_NoACK_port); outb(adapter_mask | (1 << scmd_id(current_SC)), SCSI_Data_NoACK_port);
/* Stop arbitration and enable parity */ /* Stop arbitration and enable parity */
outb(0x10 | PARITY_MASK, TMC_Cntl_port); outb(0x10 | PARITY_MASK, TMC_Cntl_port);
...@@ -683,7 +683,7 @@ static irqreturn_t fd_mcs_intr(int irq, void *dev_id, struct pt_regs *regs) ...@@ -683,7 +683,7 @@ static irqreturn_t fd_mcs_intr(int irq, void *dev_id, struct pt_regs *regs)
status = inb(SCSI_Status_port); status = inb(SCSI_Status_port);
if (!(status & 0x01)) { if (!(status & 0x01)) {
/* Try again, for slow devices */ /* Try again, for slow devices */
if (fd_mcs_select(shpnt, current_SC->device->id)) { if (fd_mcs_select(shpnt, scmd_id(current_SC))) {
#if EVERY_ACCESS #if EVERY_ACCESS
printk(" SFAIL "); printk(" SFAIL ");
#endif #endif
......
...@@ -1154,7 +1154,7 @@ static irqreturn_t do_fdomain_16x0_intr(int irq, void *dev_id, ...@@ -1154,7 +1154,7 @@ static irqreturn_t do_fdomain_16x0_intr(int irq, void *dev_id,
outb(0x40 | FIFO_COUNT, port_base + Interrupt_Cntl); outb(0x40 | FIFO_COUNT, port_base + Interrupt_Cntl);
outb(0x82, port_base + SCSI_Cntl); /* Bus Enable + Select */ outb(0x82, port_base + SCSI_Cntl); /* Bus Enable + Select */
outb(adapter_mask | (1 << current_SC->device->id), port_base + SCSI_Data_NoACK); outb(adapter_mask | (1 << scmd_id(current_SC)), port_base + SCSI_Data_NoACK);
/* Stop arbitration and enable parity */ /* Stop arbitration and enable parity */
outb(0x10 | PARITY_MASK, port_base + TMC_Cntl); outb(0x10 | PARITY_MASK, port_base + TMC_Cntl);
...@@ -1166,7 +1166,7 @@ static irqreturn_t do_fdomain_16x0_intr(int irq, void *dev_id, ...@@ -1166,7 +1166,7 @@ static irqreturn_t do_fdomain_16x0_intr(int irq, void *dev_id,
status = inb(port_base + SCSI_Status); status = inb(port_base + SCSI_Status);
if (!(status & 0x01)) { if (!(status & 0x01)) {
/* Try again, for slow devices */ /* Try again, for slow devices */
if (fdomain_select( current_SC->device->id )) { if (fdomain_select( scmd_id(current_SC) )) {
#if EVERY_ACCESS #if EVERY_ACCESS
printk( " SFAIL " ); printk( " SFAIL " );
#endif #endif
......
...@@ -830,7 +830,7 @@ static int imm_engine(imm_struct *dev, struct scsi_cmnd *cmd) ...@@ -830,7 +830,7 @@ static int imm_engine(imm_struct *dev, struct scsi_cmnd *cmd)
/* Phase 2 - We are now talking to the scsi bus */ /* Phase 2 - We are now talking to the scsi bus */
case 2: case 2:
if (!imm_select(dev, cmd->device->id)) { if (!imm_select(dev, scmd_id(cmd))) {
imm_fail(dev, DID_NO_CONNECT); imm_fail(dev, DID_NO_CONNECT);
return 0; return 0;
} }
......
...@@ -1125,8 +1125,8 @@ ips_queue(Scsi_Cmnd * SC, void (*done) (Scsi_Cmnd *)) ...@@ -1125,8 +1125,8 @@ ips_queue(Scsi_Cmnd * SC, void (*done) (Scsi_Cmnd *))
SC->device->channel, SC->device->id, SC->device->lun); SC->device->channel, SC->device->id, SC->device->lun);
/* Check for command to initiator IDs */ /* Check for command to initiator IDs */
if ((SC->device->channel > 0) if ((scmd_channel(SC) > 0)
&& (SC->device->id == ha->ha_id[SC->device->channel])) { && (scmd_id(SC) == ha->ha_id[scmd_channel(SC)])) {
SC->result = DID_NO_CONNECT << 16; SC->result = DID_NO_CONNECT << 16;
done(SC); done(SC);
...@@ -2830,10 +2830,10 @@ ips_next(ips_ha_t * ha, int intr) ...@@ -2830,10 +2830,10 @@ ips_next(ips_ha_t * ha, int intr)
p = ha->scb_waitlist.head; p = ha->scb_waitlist.head;
while ((p) && (scb = ips_getscb(ha))) { while ((p) && (scb = ips_getscb(ha))) {
if ((p->device->channel > 0) if ((scmd_channel(p) > 0)
&& (ha-> && (ha->
dcdb_active[p->device->channel - dcdb_active[scmd_channel(p) -
1] & (1 << p->device->id))) { 1] & (1 << scmd_id(p)))) {
ips_freescb(ha, scb); ips_freescb(ha, scb);
p = (Scsi_Cmnd *) p->host_scribble; p = (Scsi_Cmnd *) p->host_scribble;
continue; continue;
......
...@@ -3669,7 +3669,7 @@ static int ncr_queue_command (struct ncb *np, struct scsi_cmnd *cmd) ...@@ -3669,7 +3669,7 @@ static int ncr_queue_command (struct ncb *np, struct scsi_cmnd *cmd)
/* /*
** select ** select
*/ */
cp->phys.select.sel_id = sdev->id; cp->phys.select.sel_id = sdev_id(sdev);
cp->phys.select.sel_scntl3 = tp->wval; cp->phys.select.sel_scntl3 = tp->wval;
cp->phys.select.sel_sxfer = tp->sval; cp->phys.select.sel_sxfer = tp->sval;
/* /*
...@@ -4820,7 +4820,7 @@ static void ncr_set_sync_wide_status (struct ncb *np, u_char target) ...@@ -4820,7 +4820,7 @@ static void ncr_set_sync_wide_status (struct ncb *np, u_char target)
*/ */
for (cp = np->ccb; cp; cp = cp->link_ccb) { for (cp = np->ccb; cp; cp = cp->link_ccb) {
if (!cp->cmd) continue; if (!cp->cmd) continue;
if (cp->cmd->device->id != target) continue; if (scmd_id(cp->cmd) != target) continue;
#if 0 #if 0
cp->sync_status = tp->sval; cp->sync_status = tp->sval;
cp->wide_status = tp->wval; cp->wide_status = tp->wval;
...@@ -4844,7 +4844,7 @@ static void ncr_setsync (struct ncb *np, struct ccb *cp, u_char scntl3, u_char s ...@@ -4844,7 +4844,7 @@ static void ncr_setsync (struct ncb *np, struct ccb *cp, u_char scntl3, u_char s
u_char target = INB (nc_sdid) & 0x0f; u_char target = INB (nc_sdid) & 0x0f;
u_char idiv; u_char idiv;
BUG_ON(target != (cmd->device->id & 0xf)); BUG_ON(target != (scmd_id(cmd) & 0xf));
tp = &np->target[target]; tp = &np->target[target];
...@@ -4902,7 +4902,7 @@ static void ncr_setwide (struct ncb *np, struct ccb *cp, u_char wide, u_char ack ...@@ -4902,7 +4902,7 @@ static void ncr_setwide (struct ncb *np, struct ccb *cp, u_char wide, u_char ack
u_char scntl3; u_char scntl3;
u_char sxfer; u_char sxfer;
BUG_ON(target != (cmd->device->id & 0xf)); BUG_ON(target != (scmd_id(cmd) & 0xf));
tp = &np->target[target]; tp = &np->target[target];
tp->widedone = wide+1; tp->widedone = wide+1;
......
...@@ -481,7 +481,7 @@ static int nsp32_selection_autopara(struct scsi_cmnd *SCpnt) ...@@ -481,7 +481,7 @@ static int nsp32_selection_autopara(struct scsi_cmnd *SCpnt)
nsp32_hw_data *data = (nsp32_hw_data *)SCpnt->device->host->hostdata; nsp32_hw_data *data = (nsp32_hw_data *)SCpnt->device->host->hostdata;
unsigned int base = SCpnt->device->host->io_port; unsigned int base = SCpnt->device->host->io_port;
unsigned int host_id = SCpnt->device->host->this_id; unsigned int host_id = SCpnt->device->host->this_id;
unsigned char target = SCpnt->device->id; unsigned char target = scmd_id(SCpnt);
nsp32_autoparam *param = data->autoparam; nsp32_autoparam *param = data->autoparam;
unsigned char phase; unsigned char phase;
int i, ret; int i, ret;
...@@ -612,7 +612,7 @@ static int nsp32_selection_autoscsi(struct scsi_cmnd *SCpnt) ...@@ -612,7 +612,7 @@ static int nsp32_selection_autoscsi(struct scsi_cmnd *SCpnt)
nsp32_hw_data *data = (nsp32_hw_data *)SCpnt->device->host->hostdata; nsp32_hw_data *data = (nsp32_hw_data *)SCpnt->device->host->hostdata;
unsigned int base = SCpnt->device->host->io_port; unsigned int base = SCpnt->device->host->io_port;
unsigned int host_id = SCpnt->device->host->this_id; unsigned int host_id = SCpnt->device->host->this_id;
unsigned char target = SCpnt->device->id; unsigned char target = scmd_id(SCpnt);
unsigned char phase; unsigned char phase;
int status; int status;
unsigned short command = 0; unsigned short command = 0;
...@@ -973,7 +973,7 @@ static int nsp32_queuecommand(struct scsi_cmnd *SCpnt, void (*done)(struct scsi_ ...@@ -973,7 +973,7 @@ static int nsp32_queuecommand(struct scsi_cmnd *SCpnt, void (*done)(struct scsi_
} }
/* check target ID is not same as this initiator ID */ /* check target ID is not same as this initiator ID */
if (SCpnt->device->id == SCpnt->device->host->this_id) { if (scmd_id(SCpnt) == SCpnt->device->host->this_id) {
nsp32_dbg(NSP32_DEBUG_QUEUECOMMAND, "terget==host???"); nsp32_dbg(NSP32_DEBUG_QUEUECOMMAND, "terget==host???");
SCpnt->result = DID_BAD_TARGET << 16; SCpnt->result = DID_BAD_TARGET << 16;
done(SCpnt); done(SCpnt);
...@@ -1028,7 +1028,7 @@ static int nsp32_queuecommand(struct scsi_cmnd *SCpnt, void (*done)(struct scsi_ ...@@ -1028,7 +1028,7 @@ static int nsp32_queuecommand(struct scsi_cmnd *SCpnt, void (*done)(struct scsi_
* (target don't have SDTR_DONE and SDTR_INITIATOR), sync * (target don't have SDTR_DONE and SDTR_INITIATOR), sync
* message SDTR is needed to do synchronous transfer. * message SDTR is needed to do synchronous transfer.
*/ */
target = &data->target[SCpnt->device->id]; target = &data->target[scmd_id(SCpnt)];
data->cur_target = target; data->cur_target = target;
if (!(target->sync_flag & (SDTR_DONE | SDTR_INITIATOR | SDTR_TARGET))) { if (!(target->sync_flag & (SDTR_DONE | SDTR_INITIATOR | SDTR_TARGET))) {
......
...@@ -201,7 +201,7 @@ static int nsp_queuecommand(Scsi_Cmnd *SCpnt, void (*done)(Scsi_Cmnd *)) ...@@ -201,7 +201,7 @@ static int nsp_queuecommand(Scsi_Cmnd *SCpnt, void (*done)(Scsi_Cmnd *))
#ifdef NSP_DEBUG #ifdef NSP_DEBUG
/*unsigned int host_id = SCpnt->device->host->this_id;*/ /*unsigned int host_id = SCpnt->device->host->this_id;*/
/*unsigned int base = SCpnt->device->host->io_port;*/ /*unsigned int base = SCpnt->device->host->io_port;*/
unsigned char target = SCpnt->device->id; unsigned char target = scmd_id(SCpnt);
#endif #endif
nsp_hw_data *data = (nsp_hw_data *)SCpnt->device->host->hostdata; nsp_hw_data *data = (nsp_hw_data *)SCpnt->device->host->hostdata;
...@@ -373,7 +373,7 @@ static int nsphw_start_selection(Scsi_Cmnd *SCpnt) ...@@ -373,7 +373,7 @@ static int nsphw_start_selection(Scsi_Cmnd *SCpnt)
{ {
unsigned int host_id = SCpnt->device->host->this_id; unsigned int host_id = SCpnt->device->host->this_id;
unsigned int base = SCpnt->device->host->io_port; unsigned int base = SCpnt->device->host->io_port;
unsigned char target = SCpnt->device->id; unsigned char target = scmd_id(SCpnt);
nsp_hw_data *data = (nsp_hw_data *)SCpnt->device->host->hostdata; nsp_hw_data *data = (nsp_hw_data *)SCpnt->device->host->hostdata;
int time_out; int time_out;
unsigned char phase, arbit; unsigned char phase, arbit;
...@@ -452,7 +452,7 @@ static struct nsp_sync_table nsp_sync_table_20M[] = { ...@@ -452,7 +452,7 @@ static struct nsp_sync_table nsp_sync_table_20M[] = {
*/ */
static int nsp_analyze_sdtr(Scsi_Cmnd *SCpnt) static int nsp_analyze_sdtr(Scsi_Cmnd *SCpnt)
{ {
unsigned char target = SCpnt->device->id; unsigned char target = scmd_id(SCpnt);
// unsigned char lun = SCpnt->device->lun; // unsigned char lun = SCpnt->device->lun;
nsp_hw_data *data = (nsp_hw_data *)SCpnt->device->host->hostdata; nsp_hw_data *data = (nsp_hw_data *)SCpnt->device->host->hostdata;
sync_data *sync = &(data->Sync[target]); sync_data *sync = &(data->Sync[target]);
...@@ -677,7 +677,7 @@ static int nsp_reselected(Scsi_Cmnd *SCpnt) ...@@ -677,7 +677,7 @@ static int nsp_reselected(Scsi_Cmnd *SCpnt)
target++; target++;
} }
if (SCpnt->device->id != target) { if (scmd_id(SCpnt) != target) {
nsp_msg(KERN_ERR, "XXX: reselect ID must be %d in this implementation.", target); nsp_msg(KERN_ERR, "XXX: reselect ID must be %d in this implementation.", target);
} }
...@@ -912,7 +912,7 @@ static void nsp_pio_write(Scsi_Cmnd *SCpnt) ...@@ -912,7 +912,7 @@ static void nsp_pio_write(Scsi_Cmnd *SCpnt)
static int nsp_nexus(Scsi_Cmnd *SCpnt) static int nsp_nexus(Scsi_Cmnd *SCpnt)
{ {
unsigned int base = SCpnt->device->host->io_port; unsigned int base = SCpnt->device->host->io_port;
unsigned char target = SCpnt->device->id; unsigned char target = scmd_id(SCpnt);
// unsigned char lun = SCpnt->device->lun; // unsigned char lun = SCpnt->device->lun;
nsp_hw_data *data = (nsp_hw_data *)SCpnt->device->host->hostdata; nsp_hw_data *data = (nsp_hw_data *)SCpnt->device->host->hostdata;
sync_data *sync = &(data->Sync[target]); sync_data *sync = &(data->Sync[target]);
......
...@@ -610,7 +610,7 @@ SYM53C500_queue(struct scsi_cmnd *SCpnt, void (*done)(struct scsi_cmnd *)) ...@@ -610,7 +610,7 @@ SYM53C500_queue(struct scsi_cmnd *SCpnt, void (*done)(struct scsi_cmnd *))
/* We are locked here already by the mid layer */ /* We are locked here already by the mid layer */
REG0(port_base); REG0(port_base);
outb(SCpnt->device->id, port_base + DEST_ID); /* set destination */ outb(scmd_id(SCpnt), port_base + DEST_ID); /* set destination */
outb(FLUSH_FIFO, port_base + CMD_REG); /* reset the fifos */ outb(FLUSH_FIFO, port_base + CMD_REG); /* reset the fifos */
for (i = 0; i < SCpnt->cmd_len; i++) { for (i = 0; i < SCpnt->cmd_len; i++) {
......
...@@ -740,7 +740,7 @@ static int ppa_engine(ppa_struct *dev, struct scsi_cmnd *cmd) ...@@ -740,7 +740,7 @@ static int ppa_engine(ppa_struct *dev, struct scsi_cmnd *cmd)
} }
case 2: /* Phase 2 - We are now talking to the scsi bus */ case 2: /* Phase 2 - We are now talking to the scsi bus */
if (!ppa_select(dev, cmd->device->id)) { if (!ppa_select(dev, scmd_id(cmd))) {
ppa_fail(dev, DID_NO_CONNECT); ppa_fail(dev, DID_NO_CONNECT);
return 0; return 0;
} }
......
...@@ -659,7 +659,7 @@ static int Psi240i_BiosParam (struct scsi_device *sdev, struct block_device *dev ...@@ -659,7 +659,7 @@ static int Psi240i_BiosParam (struct scsi_device *sdev, struct block_device *dev
{ {
POUR_DEVICE pdev; POUR_DEVICE pdev;
pdev = &(HOSTDATA(sdev->host)->device[sdev->id]); pdev = &(HOSTDATA(sdev->host)->device[sdev_id(sdev)]);
geom[0] = pdev->heads; geom[0] = pdev->heads;
geom[1] = pdev->sectors; geom[1] = pdev->sectors;
......
...@@ -243,7 +243,7 @@ static void ql_icmd(Scsi_Cmnd * cmd) ...@@ -243,7 +243,7 @@ static void ql_icmd(Scsi_Cmnd * cmd)
/**/ outb(qlcfg5, qbase + 5); /* select timer */ /**/ outb(qlcfg5, qbase + 5); /* select timer */
outb(qlcfg9 & 7, qbase + 9); /* prescaler */ outb(qlcfg9 & 7, qbase + 9); /* prescaler */
/* outb(0x99, qbase + 5); */ /* outb(0x99, qbase + 5); */
outb(cmd->device->id, qbase + 4); outb(scmd_id(cmd), qbase + 4);
for (i = 0; i < cmd->cmd_len; i++) for (i = 0; i < cmd->cmd_len; i++)
outb(cmd->cmnd[i], qbase + 2); outb(cmd->cmnd[i], qbase + 2);
...@@ -450,7 +450,7 @@ irqreturn_t qlogicfas408_ihandl(int irq, void *dev_id, struct pt_regs *regs) ...@@ -450,7 +450,7 @@ irqreturn_t qlogicfas408_ihandl(int irq, void *dev_id, struct pt_regs *regs)
int qlogicfas408_queuecommand(Scsi_Cmnd * cmd, void (*done) (Scsi_Cmnd *)) int qlogicfas408_queuecommand(Scsi_Cmnd * cmd, void (*done) (Scsi_Cmnd *))
{ {
struct qlogicfas408_priv *priv = get_priv_by_cmd(cmd); struct qlogicfas408_priv *priv = get_priv_by_cmd(cmd);
if (cmd->device->id == priv->qinitid) { if (scmd_id(cmd) == priv->qinitid) {
cmd->result = DID_BAD_TARGET << 16; cmd->result = DID_BAD_TARGET << 16;
done(cmd); done(cmd);
return 0; return 0;
......
...@@ -283,7 +283,7 @@ int scsi_debug_queuecommand(struct scsi_cmnd * SCpnt, done_funct_t done) ...@@ -283,7 +283,7 @@ int scsi_debug_queuecommand(struct scsi_cmnd * SCpnt, done_funct_t done)
unsigned char *cmd = (unsigned char *) SCpnt->cmnd; unsigned char *cmd = (unsigned char *) SCpnt->cmnd;
int block, upper_blk, num, k; int block, upper_blk, num, k;
int errsts = 0; int errsts = 0;
int target = SCpnt->device->id; int target = scmd_id(SCpnt);
struct sdebug_dev_info * devip = NULL; struct sdebug_dev_info * devip = NULL;
int inj_recovered = 0; int inj_recovered = 0;
......
...@@ -1033,7 +1033,8 @@ static int scsi_try_bus_reset(struct scsi_cmnd *scmd) ...@@ -1033,7 +1033,8 @@ static int scsi_try_bus_reset(struct scsi_cmnd *scmd)
if (!scmd->device->host->hostt->skip_settle_delay) if (!scmd->device->host->hostt->skip_settle_delay)
ssleep(BUS_RESET_SETTLE_TIME); ssleep(BUS_RESET_SETTLE_TIME);
spin_lock_irqsave(scmd->device->host->host_lock, flags); spin_lock_irqsave(scmd->device->host->host_lock, flags);
scsi_report_bus_reset(scmd->device->host, scmd->device->channel); scsi_report_bus_reset(scmd->device->host,
scmd_channel(scmd));
spin_unlock_irqrestore(scmd->device->host->host_lock, flags); spin_unlock_irqrestore(scmd->device->host->host_lock, flags);
} }
...@@ -1061,7 +1062,8 @@ static int scsi_try_host_reset(struct scsi_cmnd *scmd) ...@@ -1061,7 +1062,8 @@ static int scsi_try_host_reset(struct scsi_cmnd *scmd)
if (!scmd->device->host->hostt->skip_settle_delay) if (!scmd->device->host->hostt->skip_settle_delay)
ssleep(HOST_RESET_SETTLE_TIME); ssleep(HOST_RESET_SETTLE_TIME);
spin_lock_irqsave(scmd->device->host->host_lock, flags); spin_lock_irqsave(scmd->device->host->host_lock, flags);
scsi_report_bus_reset(scmd->device->host, scmd->device->channel); scsi_report_bus_reset(scmd->device->host,
scmd_channel(scmd));
spin_unlock_irqrestore(scmd->device->host->host_lock, flags); spin_unlock_irqrestore(scmd->device->host->host_lock, flags);
} }
...@@ -1091,7 +1093,7 @@ static int scsi_eh_bus_reset(struct Scsi_Host *shost, ...@@ -1091,7 +1093,7 @@ static int scsi_eh_bus_reset(struct Scsi_Host *shost,
for (channel = 0; channel <= shost->max_channel; channel++) { for (channel = 0; channel <= shost->max_channel; channel++) {
chan_scmd = NULL; chan_scmd = NULL;
list_for_each_entry(scmd, work_q, eh_entry) { list_for_each_entry(scmd, work_q, eh_entry) {
if (channel == scmd->device->channel) { if (channel == scmd_channel(scmd)) {
chan_scmd = scmd; chan_scmd = scmd;
break; break;
/* /*
...@@ -1109,7 +1111,7 @@ static int scsi_eh_bus_reset(struct Scsi_Host *shost, ...@@ -1109,7 +1111,7 @@ static int scsi_eh_bus_reset(struct Scsi_Host *shost,
rtn = scsi_try_bus_reset(chan_scmd); rtn = scsi_try_bus_reset(chan_scmd);
if (rtn == SUCCESS) { if (rtn == SUCCESS) {
list_for_each_entry_safe(scmd, next, work_q, eh_entry) { list_for_each_entry_safe(scmd, next, work_q, eh_entry) {
if (channel == scmd->device->channel) if (channel == scmd_channel(scmd))
if (!scsi_device_online(scmd->device) || if (!scsi_device_online(scmd->device) ||
!scsi_eh_tur(scmd)) !scsi_eh_tur(scmd))
scsi_eh_finish_cmd(scmd, scsi_eh_finish_cmd(scmd,
...@@ -1675,7 +1677,7 @@ void scsi_report_bus_reset(struct Scsi_Host *shost, int channel) ...@@ -1675,7 +1677,7 @@ void scsi_report_bus_reset(struct Scsi_Host *shost, int channel)
struct scsi_device *sdev; struct scsi_device *sdev;
__shost_for_each_device(sdev, shost) { __shost_for_each_device(sdev, shost) {
if (channel == sdev->channel) { if (channel == sdev_channel(sdev)) {
sdev->was_reset = 1; sdev->was_reset = 1;
sdev->expecting_cc_ua = 1; sdev->expecting_cc_ua = 1;
} }
...@@ -1710,8 +1712,8 @@ void scsi_report_device_reset(struct Scsi_Host *shost, int channel, int target) ...@@ -1710,8 +1712,8 @@ void scsi_report_device_reset(struct Scsi_Host *shost, int channel, int target)
struct scsi_device *sdev; struct scsi_device *sdev;
__shost_for_each_device(sdev, shost) { __shost_for_each_device(sdev, shost) {
if (channel == sdev->channel && if (channel == sdev_channel(sdev) &&
target == sdev->id) { target == sdev_id(sdev)) {
sdev->was_reset = 1; sdev->was_reset = 1;
sdev->expecting_cc_ua = 1; sdev->expecting_cc_ua = 1;
} }
......
...@@ -773,7 +773,7 @@ int sym53c416_queuecommand(Scsi_Cmnd *SCpnt, void (*done)(Scsi_Cmnd *)) ...@@ -773,7 +773,7 @@ int sym53c416_queuecommand(Scsi_Cmnd *SCpnt, void (*done)(Scsi_Cmnd *))
current_command->SCp.Message = 0; current_command->SCp.Message = 0;
spin_lock_irqsave(&sym53c416_lock, flags); spin_lock_irqsave(&sym53c416_lock, flags);
outb(SCpnt->device->id, base + DEST_BUS_ID); /* Set scsi id target */ outb(scmd_id(SCpnt), base + DEST_BUS_ID); /* Set scsi id target */
outb(FLUSH_FIFO, base + COMMAND_REG); /* Flush SCSI and PIO FIFO's */ outb(FLUSH_FIFO, base + COMMAND_REG); /* Flush SCSI and PIO FIFO's */
/* Write SCSI command into the SCSI fifo */ /* Write SCSI command into the SCSI fifo */
for(i = 0; i < SCpnt->cmd_len; i++) for(i = 0; i < SCpnt->cmd_len; i++)
......
...@@ -1822,7 +1822,7 @@ static irqreturn_t ihdlr(int irq, unsigned int j) { ...@@ -1822,7 +1822,7 @@ static irqreturn_t ihdlr(int irq, unsigned int j) {
/* If there was a bus reset, redo operation on each target */ /* If there was a bus reset, redo operation on each target */
else if (tstatus != GOOD && SCpnt->device->type == TYPE_DISK else if (tstatus != GOOD && SCpnt->device->type == TYPE_DISK
&& HD(j)->target_redo[SCpnt->device->id][SCpnt->device->channel]) && HD(j)->target_redo[scmd_id(SCpnt)][scmd_channel(SCpnt)])
status = DID_BUS_BUSY << 16; status = DID_BUS_BUSY << 16;
/* Works around a flaw in scsi.c */ /* Works around a flaw in scsi.c */
...@@ -1835,29 +1835,28 @@ static irqreturn_t ihdlr(int irq, unsigned int j) { ...@@ -1835,29 +1835,28 @@ static irqreturn_t ihdlr(int irq, unsigned int j) {
status = DID_OK << 16; status = DID_OK << 16;
if (tstatus == GOOD) if (tstatus == GOOD)
HD(j)->target_redo[SCpnt->device->id][SCpnt->device->channel] = FALSE; HD(j)->target_redo[scmd_id(SCpnt)][scmd_channel(SCpnt)] = FALSE;
if (spp->target_status && SCpnt->device->type == TYPE_DISK && if (spp->target_status && SCpnt->device->type == TYPE_DISK &&
(!(tstatus == CHECK_CONDITION && HD(j)->iocount <= 1000 && (!(tstatus == CHECK_CONDITION && HD(j)->iocount <= 1000 &&
(SCpnt->sense_buffer[2] & 0xf) == NOT_READY))) (SCpnt->sense_buffer[2] & 0xf) == NOT_READY)))
printk("%s: ihdlr, target %d.%d:%d, pid %ld, "\ scmd_printk(KERN_INFO, SCpnt,
"target_status 0x%x, sense key 0x%x.\n", BN(j), "ihdlr, pid %ld, target_status 0x%x, sense key 0x%x.\n",
SCpnt->device->channel, SCpnt->device->id, SCpnt->device->lun,
SCpnt->pid, spp->target_status, SCpnt->pid, spp->target_status,
SCpnt->sense_buffer[2]); SCpnt->sense_buffer[2]);
HD(j)->target_to[SCpnt->device->id][SCpnt->device->channel] = 0; HD(j)->target_to[scmd_id(SCpnt)][scmd_channel(SCpnt)] = 0;
if (HD(j)->last_retried_pid == SCpnt->pid) HD(j)->retries = 0; if (HD(j)->last_retried_pid == SCpnt->pid) HD(j)->retries = 0;
break; break;
case ASST: /* Selection Time Out */ case ASST: /* Selection Time Out */
if (HD(j)->target_to[SCpnt->device->id][SCpnt->device->channel] > 1) if (HD(j)->target_to[scmd_id(SCpnt)][scmd_channel(SCpnt)] > 1)
status = DID_ERROR << 16; status = DID_ERROR << 16;
else { else {
status = DID_TIME_OUT << 16; status = DID_TIME_OUT << 16;
HD(j)->target_to[SCpnt->device->id][SCpnt->device->channel]++; HD(j)->target_to[scmd_id(SCpnt)][scmd_channel(SCpnt)]++;
} }
break; break;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册