diff --git a/qla2x00t/qla_dbg.c b/qla2x00t/qla_dbg.c index 51f430816..413dc858e 100644 --- a/qla2x00t/qla_dbg.c +++ b/qla2x00t/qla_dbg.c @@ -1999,9 +1999,9 @@ qla2x00_print_scsi_cmd(struct scsi_cmnd * cmd) printk("0x%02x ", cmd->cmnd[i]); } printk("\n seg_cnt=%d, allowed=%d, retries=%d\n", - cmd->use_sg, cmd->allowed, cmd->retries); + scsi_sg_count(cmd), cmd->allowed, cmd->retries); printk(" request buffer=0x%p, request buffer len=0x%x\n", - cmd->request_buffer, cmd->request_bufflen); + scsi_sglist(cmd), scsi_bufflen(cmd)); printk(" tag=%d, transfersize=0x%x\n", cmd->tag, cmd->transfersize); printk(" serial_number=%lx, SP=%p\n", cmd->serial_number, sp); diff --git a/qla2x00t/qla_gbl.h b/qla2x00t/qla_gbl.h index efd285be7..f5c0e1aa1 100644 --- a/qla2x00t/qla_gbl.h +++ b/qla2x00t/qla_gbl.h @@ -319,4 +319,27 @@ extern void qla2x00_free_sysfs_attr(scsi_qla_host_t *); extern void qla2x00_init_host_attr(scsi_qla_host_t *); extern void qla2x00_alloc_sysfs_attr(scsi_qla_host_t *); extern void qla2x00_free_sysfs_attr(scsi_qla_host_t *); + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23) +static inline void scsi_set_resid(struct scsi_cmnd *cmd, int resid) +{ + cmd->resid = resid; +} + +static inline struct scatterlist *scsi_sglist(struct scsi_cmnd *cmd) +{ + return (struct scatterlist *)cmd->request_buffer; +} + +static inline unsigned scsi_bufflen(struct scsi_cmnd *cmd) +{ + return cmd->request_bufflen; +} + +static inline unsigned scsi_sg_count(struct scsi_cmnd *cmd) +{ + return cmd->use_sg; +} +#endif + #endif /* _QLA_GBL_H */ diff --git a/qla2x00t/qla_iocb.c b/qla2x00t/qla_iocb.c index 8f5d6f6d9..ad356cccd 100644 --- a/qla2x00t/qla_iocb.c +++ b/qla2x00t/qla_iocb.c @@ -162,7 +162,7 @@ void qla2x00_build_scsi_iocbs_32(srb_t *sp, cmd_entry_t *cmd_pkt, __constant_cpu_to_le32(COMMAND_TYPE); /* No data transfer */ - if (cmd->request_bufflen == 0 || cmd->sc_data_direction == DMA_NONE) { + if (scsi_bufflen(cmd) == 0 || cmd->sc_data_direction == DMA_NONE) { cmd_pkt->byte_count = __constant_cpu_to_le32(0); return; } @@ -176,11 +176,11 @@ void qla2x00_build_scsi_iocbs_32(srb_t *sp, cmd_entry_t *cmd_pkt, cur_dsd = (uint32_t *)&cmd_pkt->dseg_0_address; /* Load data segments */ - if (cmd->use_sg != 0) { + if (scsi_sg_count(cmd) != 0) { struct scatterlist *cur_seg; struct scatterlist *end_seg; - cur_seg = (struct scatterlist *)cmd->request_buffer; + cur_seg = scsi_sglist(cmd); end_seg = cur_seg + tot_dsds; while (cur_seg < end_seg) { cont_entry_t *cont_pkt; @@ -204,7 +204,7 @@ void qla2x00_build_scsi_iocbs_32(srb_t *sp, cmd_entry_t *cmd_pkt, } } else { *cur_dsd++ = cpu_to_le32(sp->dma_handle); - *cur_dsd++ = cpu_to_le32(cmd->request_bufflen); + *cur_dsd++ = cpu_to_le32(scsi_bufflen(cmd)); } } @@ -231,7 +231,7 @@ void qla2x00_build_scsi_iocbs_64(srb_t *sp, cmd_entry_t *cmd_pkt, __constant_cpu_to_le32(COMMAND_A64_TYPE); /* No data transfer */ - if (cmd->request_bufflen == 0 || cmd->sc_data_direction == DMA_NONE) { + if (scsi_bufflen(cmd) == 0 || cmd->sc_data_direction == DMA_NONE) { cmd_pkt->byte_count = __constant_cpu_to_le32(0); return; } @@ -245,11 +245,11 @@ void qla2x00_build_scsi_iocbs_64(srb_t *sp, cmd_entry_t *cmd_pkt, cur_dsd = (uint32_t *)&cmd_pkt->dseg_0_address; /* Load data segments */ - if (cmd->use_sg != 0) { + if (scsi_sg_count(cmd) != 0) { struct scatterlist *cur_seg; struct scatterlist *end_seg; - cur_seg = (struct scatterlist *)cmd->request_buffer; + cur_seg = scsi_sglist(cmd); end_seg = cur_seg + tot_dsds; while (cur_seg < end_seg) { dma_addr_t sle_dma; @@ -277,7 +277,7 @@ void qla2x00_build_scsi_iocbs_64(srb_t *sp, cmd_entry_t *cmd_pkt, } else { *cur_dsd++ = cpu_to_le32(LSD(sp->dma_handle)); *cur_dsd++ = cpu_to_le32(MSD(sp->dma_handle)); - *cur_dsd++ = cpu_to_le32(cmd->request_bufflen); + *cur_dsd++ = cpu_to_le32(scsi_bufflen(cmd)); } } @@ -336,17 +336,17 @@ qla2x00_start_scsi(srb_t *sp) goto queuing_error; /* Map the sg table so we have an accurate count of sg entries needed */ - if (cmd->use_sg) { - sg = (struct scatterlist *) cmd->request_buffer; - tot_dsds = pci_map_sg(ha->pdev, sg, cmd->use_sg, + if (scsi_sg_count(cmd)) { + sg = scsi_sglist(cmd); + tot_dsds = pci_map_sg(ha->pdev, sg, scsi_sg_count(cmd), cmd->sc_data_direction); if (tot_dsds == 0) goto queuing_error; - } else if (cmd->request_bufflen) { + } else if (scsi_bufflen(cmd)) { dma_addr_t req_dma; - req_dma = pci_map_single(ha->pdev, cmd->request_buffer, - cmd->request_bufflen, cmd->sc_data_direction); + req_dma = pci_map_single(ha->pdev, scsi_sglist(cmd), + scsi_bufflen(cmd), cmd->sc_data_direction); if (dma_mapping_error(req_dma)) goto queuing_error; @@ -390,7 +390,7 @@ qla2x00_start_scsi(srb_t *sp) /* Load SCSI command packet. */ memcpy(cmd_pkt->scsi_cdb, cmd->cmnd, cmd->cmd_len); - cmd_pkt->byte_count = cpu_to_le32((uint32_t)cmd->request_bufflen); + cmd_pkt->byte_count = cpu_to_le32((uint32_t)scsi_bufflen(cmd)); /* Build IOCB segments */ ha->isp_ops.build_iocbs(sp, cmd_pkt, tot_dsds); @@ -427,13 +427,13 @@ qla2x00_start_scsi(srb_t *sp) return (QLA_SUCCESS); queuing_error: - if (cmd->use_sg && tot_dsds) { - sg = (struct scatterlist *) cmd->request_buffer; - pci_unmap_sg(ha->pdev, sg, cmd->use_sg, + if (scsi_sg_count(cmd) && tot_dsds) { + sg = scsi_sglist(cmd); + pci_unmap_sg(ha->pdev, sg, scsi_sg_count(cmd), cmd->sc_data_direction); } else if (tot_dsds) { pci_unmap_single(ha->pdev, sp->dma_handle, - cmd->request_bufflen, cmd->sc_data_direction); + scsi_bufflen(cmd), cmd->sc_data_direction); } spin_unlock_irqrestore(&ha->hardware_lock, flags); @@ -653,7 +653,7 @@ qla24xx_build_scsi_iocbs(srb_t *sp, struct cmd_type_7 *cmd_pkt, __constant_cpu_to_le32(COMMAND_TYPE_7); /* No data transfer */ - if (cmd->request_bufflen == 0 || cmd->sc_data_direction == DMA_NONE) { + if (scsi_bufflen(cmd) == 0 || cmd->sc_data_direction == DMA_NONE) { cmd_pkt->byte_count = __constant_cpu_to_le32(0); return; } @@ -673,11 +673,11 @@ qla24xx_build_scsi_iocbs(srb_t *sp, struct cmd_type_7 *cmd_pkt, cur_dsd = (uint32_t *)&cmd_pkt->dseg_0_address; /* Load data segments */ - if (cmd->use_sg != 0) { + if (scsi_sg_count(cmd) != 0) { struct scatterlist *cur_seg; struct scatterlist *end_seg; - cur_seg = (struct scatterlist *)cmd->request_buffer; + cur_seg = scsi_sglist(cmd); end_seg = cur_seg + tot_dsds; while (cur_seg < end_seg) { dma_addr_t sle_dma; @@ -705,7 +705,7 @@ qla24xx_build_scsi_iocbs(srb_t *sp, struct cmd_type_7 *cmd_pkt, } else { *cur_dsd++ = cpu_to_le32(LSD(sp->dma_handle)); *cur_dsd++ = cpu_to_le32(MSD(sp->dma_handle)); - *cur_dsd++ = cpu_to_le32(cmd->request_bufflen); + *cur_dsd++ = cpu_to_le32(scsi_bufflen(cmd)); } } @@ -765,17 +765,17 @@ qla24xx_start_scsi(srb_t *sp) goto queuing_error; /* Map the sg table so we have an accurate count of sg entries needed */ - if (cmd->use_sg) { - sg = (struct scatterlist *) cmd->request_buffer; - tot_dsds = pci_map_sg(ha->pdev, sg, cmd->use_sg, + if (scsi_sg_count(cmd)) { + sg = scsi_sglist(cmd); + tot_dsds = pci_map_sg(ha->pdev, sg, scsi_sg_count(cmd), cmd->sc_data_direction); if (tot_dsds == 0) goto queuing_error; - } else if (cmd->request_bufflen) { + } else if (scsi_bufflen(cmd)) { dma_addr_t req_dma; - req_dma = pci_map_single(ha->pdev, cmd->request_buffer, - cmd->request_bufflen, cmd->sc_data_direction); + req_dma = pci_map_single(ha->pdev, scsi_sglist(cmd), + scsi_bufflen(cmd), cmd->sc_data_direction); if (dma_mapping_error(req_dma)) goto queuing_error; @@ -824,7 +824,7 @@ qla24xx_start_scsi(srb_t *sp) memcpy(cmd_pkt->fcp_cdb, cmd->cmnd, cmd->cmd_len); host_to_fcp_swap(cmd_pkt->fcp_cdb, sizeof(cmd_pkt->fcp_cdb)); - cmd_pkt->byte_count = cpu_to_le32((uint32_t)cmd->request_bufflen); + cmd_pkt->byte_count = cpu_to_le32((uint32_t)scsi_bufflen(cmd)); /* Build IOCB segments */ qla24xx_build_scsi_iocbs(sp, cmd_pkt, tot_dsds); @@ -861,13 +861,13 @@ qla24xx_start_scsi(srb_t *sp) return QLA_SUCCESS; queuing_error: - if (cmd->use_sg && tot_dsds) { - sg = (struct scatterlist *) cmd->request_buffer; - pci_unmap_sg(ha->pdev, sg, cmd->use_sg, + if (scsi_sg_count(cmd) && tot_dsds) { + sg = scsi_sglist(cmd); + pci_unmap_sg(ha->pdev, sg, scsi_sg_count(cmd), cmd->sc_data_direction); } else if (tot_dsds) { pci_unmap_single(ha->pdev, sp->dma_handle, - cmd->request_bufflen, cmd->sc_data_direction); + scsi_bufflen(cmd), cmd->sc_data_direction); } spin_unlock_irqrestore(&ha->hardware_lock, flags); diff --git a/qla2x00t/qla_isr.c b/qla2x00t/qla_isr.c index d2e55f6c0..0b20724a3 100644 --- a/qla2x00t/qla_isr.c +++ b/qla2x00t/qla_isr.c @@ -1053,11 +1053,11 @@ qla2x00_status_entry(scsi_qla_host_t *ha, void *pkt) } if (scsi_status & (SS_RESIDUAL_UNDER | SS_RESIDUAL_OVER)) { resid = resid_len; - cp->resid = resid; + scsi_set_resid(cp, resid); CMD_RESID_LEN(cp) = resid; if (!lscsi_status && - ((unsigned)(cp->request_bufflen - resid) < + ((unsigned)(scsi_bufflen(cp) - resid) < cp->underflow)) { qla_printk(KERN_INFO, ha, "scsi(%ld:%d:%d:%d): Mid-layer underflow " @@ -1065,7 +1065,7 @@ qla2x00_status_entry(scsi_qla_host_t *ha, void *pkt) "error status.\n", ha->host_no, cp->device->channel, cp->device->id, cp->device->lun, resid, - cp->request_bufflen); + scsi_bufflen(cp)); cp->result = DID_ERROR << 16; break; @@ -1111,7 +1111,7 @@ qla2x00_status_entry(scsi_qla_host_t *ha, void *pkt) case CS_DATA_UNDERRUN: resid = resid_len; if (scsi_status & SS_RESIDUAL_UNDER) { - cp->resid = resid; + scsi_set_resid(cp, resid); CMD_RESID_LEN(cp) = resid; } else { DEBUG2(printk(KERN_INFO @@ -1175,14 +1175,14 @@ qla2x00_status_entry(scsi_qla_host_t *ha, void *pkt) "retrying command.\n", ha->host_no, cp->device->channel, cp->device->id, cp->device->lun, resid, - cp->request_bufflen)); + scsi_bufflen(cp))); cp->result = DID_BUS_BUSY << 16; break; } /* Handle mid-layer underflow */ - if ((unsigned)(cp->request_bufflen - resid) < + if ((unsigned)(scsi_bufflen(cp) - resid) < cp->underflow) { qla_printk(KERN_INFO, ha, "scsi(%ld:%d:%d:%d): Mid-layer underflow " @@ -1190,7 +1190,7 @@ qla2x00_status_entry(scsi_qla_host_t *ha, void *pkt) "error status.\n", ha->host_no, cp->device->channel, cp->device->id, cp->device->lun, resid, - cp->request_bufflen); + scsi_bufflen(cp)); cp->result = DID_ERROR << 16; break; @@ -1213,7 +1213,7 @@ qla2x00_status_entry(scsi_qla_host_t *ha, void *pkt) DEBUG2(printk(KERN_INFO "PID=0x%lx req=0x%x xtra=0x%x -- returning DID_ERROR " "status!\n", - cp->serial_number, cp->request_bufflen, resid_len)); + cp->serial_number, scsi_bufflen(cp), resid_len)); cp->result = DID_ERROR << 16; break; diff --git a/qla2x00t/qla_os.c b/qla2x00t/qla_os.c index c0a275ed8..5877ca050 100644 --- a/qla2x00t/qla_os.c +++ b/qla2x00t/qla_os.c @@ -2453,12 +2453,12 @@ qla2x00_sp_free_dma(scsi_qla_host_t *ha, srb_t *sp) struct scsi_cmnd *cmd = sp->cmd; if (sp->flags & SRB_DMA_VALID) { - if (cmd->use_sg) { - dma_unmap_sg(&ha->pdev->dev, cmd->request_buffer, - cmd->use_sg, cmd->sc_data_direction); - } else if (cmd->request_bufflen) { + if (scsi_sg_count(cmd)) { + dma_unmap_sg(&ha->pdev->dev, scsi_sglist(cmd), + scsi_sg_count(cmd), cmd->sc_data_direction); + } else if (scsi_bufflen(cmd)) { dma_unmap_single(&ha->pdev->dev, sp->dma_handle, - cmd->request_bufflen, cmd->sc_data_direction); + scsi_bufflen(cmd), cmd->sc_data_direction); } sp->flags &= ~SRB_DMA_VALID; } diff --git a/scst/src/dev_handlers/scst_changer.c b/scst/src/dev_handlers/scst_changer.c index 705d430b8..6c3397308 100644 --- a/scst/src/dev_handlers/scst_changer.c +++ b/scst/src/dev_handlers/scst_changer.c @@ -87,7 +87,12 @@ int changer_attach(struct scst_device *dev) do { TRACE_DBG("%s", "Doing TEST_UNIT_READY"); res = scsi_test_unit_ready(dev->scsi_dev, CHANGER_TIMEOUT, - CHANGER_RETRIES); + CHANGER_RETRIES +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,25) + ); +#else + , NULL); +#endif TRACE_DBG("TEST_UNIT_READY done: %x", res); } while ((--retries > 0) && res); if (res) { diff --git a/scst/src/dev_handlers/scst_processor.c b/scst/src/dev_handlers/scst_processor.c index 5ee605acf..c1c723112 100644 --- a/scst/src/dev_handlers/scst_processor.c +++ b/scst/src/dev_handlers/scst_processor.c @@ -87,7 +87,12 @@ int processor_attach(struct scst_device *dev) do { TRACE_DBG("%s", "Doing TEST_UNIT_READY"); res = scsi_test_unit_ready(dev->scsi_dev, PROCESSOR_TIMEOUT, - PROCESSOR_RETRIES); + PROCESSOR_RETRIES +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,25) + ); +#else + , NULL); +#endif TRACE_DBG("TEST_UNIT_READY done: %x", res); } while ((--retries > 0) && res); if (res) { diff --git a/scst/src/dev_handlers/scst_raid.c b/scst/src/dev_handlers/scst_raid.c index db3f84e7d..da41be614 100644 --- a/scst/src/dev_handlers/scst_raid.c +++ b/scst/src/dev_handlers/scst_raid.c @@ -87,7 +87,12 @@ int raid_attach(struct scst_device *dev) do { TRACE_DBG("%s", "Doing TEST_UNIT_READY"); res = scsi_test_unit_ready(dev->scsi_dev, RAID_TIMEOUT, - RAID_RETRIES); + RAID_RETRIES +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,25) + ); +#else + , NULL); +#endif TRACE_DBG("TEST_UNIT_READY done: %x", res); } while ((--retries > 0) && res); if (res) { diff --git a/scst/src/dev_handlers/scst_tape.c b/scst/src/dev_handlers/scst_tape.c index d7086cc2c..658da0157 100644 --- a/scst/src/dev_handlers/scst_tape.c +++ b/scst/src/dev_handlers/scst_tape.c @@ -183,7 +183,12 @@ int tape_attach(struct scst_device *dev) do { TRACE_DBG("%s", "Doing TEST_UNIT_READY"); res = scsi_test_unit_ready(dev->scsi_dev, TAPE_SMALL_TIMEOUT, - TAPE_RETRIES); + TAPE_RETRIES +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,25) + ); +#else + , NULL); +#endif TRACE_DBG("TEST_UNIT_READY done: %x", res); } while ((--retries > 0) && res); if (res) {