diff options
author | Anirban Chakraborty <anirban.chakraborty@qlogic.com> | 2008-11-06 21:40:51 +0300 |
---|---|---|
committer | James Bottomley <James.Bottomley@HansenPartnership.com> | 2008-12-29 20:24:16 +0300 |
commit | e315cd28b9ef0d7b71e462ac16e18dbaa2f5adfe (patch) | |
tree | 1e20bdd40b56b36f211bde8fff0c63792b088a0a /drivers/scsi/qla2xxx/qla_inline.h | |
parent | 7b867cf76fbcc8d77867cbec6f509f71dce8a98f (diff) | |
download | linux-e315cd28b9ef0d7b71e462ac16e18dbaa2f5adfe.tar.xz |
[SCSI] qla2xxx: Code changes for qla data structure refactoring
Following changes have been made:
1. Outstanding commands are based on a request queue, scsi_qla_host
does not maintain it anymore.
2. start_scsi is accessed via isp_ops struct instead of direct
invocation.
3. Interrupt registrations are done using response queue instead of
device id.
Signed-off-by: Anirban Chakraborty <anirban.chakraborty@qlogic.com>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Diffstat (limited to 'drivers/scsi/qla2xxx/qla_inline.h')
-rw-r--r-- | drivers/scsi/qla2xxx/qla_inline.h | 27 |
1 files changed, 11 insertions, 16 deletions
diff --git a/drivers/scsi/qla2xxx/qla_inline.h b/drivers/scsi/qla2xxx/qla_inline.h index e90afad120ee..8ce354720680 100644 --- a/drivers/scsi/qla2xxx/qla_inline.h +++ b/drivers/scsi/qla2xxx/qla_inline.h @@ -32,21 +32,15 @@ qla2x00_debounce_register(volatile uint16_t __iomem *addr) } static inline void -qla2x00_poll(scsi_qla_host_t *ha) +qla2x00_poll(struct rsp_que *rsp) { unsigned long flags; - + struct qla_hw_data *ha = rsp->hw; local_irq_save(flags); - ha->isp_ops->intr_handler(0, ha); + ha->isp_ops->intr_handler(0, rsp); local_irq_restore(flags); } -static __inline__ scsi_qla_host_t * -to_qla_parent(scsi_qla_host_t *ha) -{ - return ha->parent ? ha->parent : ha; -} - /** * qla2x00_issue_marker() - Issue a Marker IOCB if necessary. * @ha: HA context @@ -55,20 +49,20 @@ to_qla_parent(scsi_qla_host_t *ha) * Returns non-zero if a failure occurred, else zero. */ static inline int -qla2x00_issue_marker(scsi_qla_host_t *ha, int ha_locked) +qla2x00_issue_marker(scsi_qla_host_t *vha, int ha_locked) { /* Send marker if required */ - if (ha->marker_needed != 0) { + if (vha->marker_needed != 0) { if (ha_locked) { - if (__qla2x00_marker(ha, 0, 0, MK_SYNC_ALL) != + if (__qla2x00_marker(vha, 0, 0, MK_SYNC_ALL) != QLA_SUCCESS) return (QLA_FUNCTION_FAILED); } else { - if (qla2x00_marker(ha, 0, 0, MK_SYNC_ALL) != + if (qla2x00_marker(vha, 0, 0, MK_SYNC_ALL) != QLA_SUCCESS) return (QLA_FUNCTION_FAILED); } - ha->marker_needed = 0; + vha->marker_needed = 0; } return (QLA_SUCCESS); } @@ -87,11 +81,12 @@ host_to_fcp_swap(uint8_t *fcp, uint32_t bsize) } static inline int -qla2x00_is_reserved_id(scsi_qla_host_t *ha, uint16_t loop_id) +qla2x00_is_reserved_id(scsi_qla_host_t *vha, uint16_t loop_id) { + struct qla_hw_data *ha = vha->hw; if (IS_FWI2_CAPABLE(ha)) return (loop_id > NPH_LAST_HANDLE); - return ((loop_id > ha->last_loop_id && loop_id < SNS_FIRST_LOOP_ID) || + return ((loop_id > ha->max_loop_id && loop_id < SNS_FIRST_LOOP_ID) || loop_id == MANAGEMENT_SERVER || loop_id == BROADCAST); }; |