Commit e315cd28 authored by Anirban Chakraborty's avatar Anirban Chakraborty Committed by James Bottomley

[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: default avatarAnirban Chakraborty <anirban.chakraborty@qlogic.com>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@HansenPartnership.com>
parent 7b867cf7
This diff is collapsed.
...@@ -32,21 +32,15 @@ qla2x00_debounce_register(volatile uint16_t __iomem *addr) ...@@ -32,21 +32,15 @@ qla2x00_debounce_register(volatile uint16_t __iomem *addr)
} }
static inline void static inline void
qla2x00_poll(scsi_qla_host_t *ha) qla2x00_poll(struct rsp_que *rsp)
{ {
unsigned long flags; unsigned long flags;
struct qla_hw_data *ha = rsp->hw;
local_irq_save(flags); local_irq_save(flags);
ha->isp_ops->intr_handler(0, ha); ha->isp_ops->intr_handler(0, rsp);
local_irq_restore(flags); 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. * qla2x00_issue_marker() - Issue a Marker IOCB if necessary.
* @ha: HA context * @ha: HA context
...@@ -55,20 +49,20 @@ to_qla_parent(scsi_qla_host_t *ha) ...@@ -55,20 +49,20 @@ to_qla_parent(scsi_qla_host_t *ha)
* Returns non-zero if a failure occurred, else zero. * Returns non-zero if a failure occurred, else zero.
*/ */
static inline int 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 */ /* Send marker if required */
if (ha->marker_needed != 0) { if (vha->marker_needed != 0) {
if (ha_locked) { if (ha_locked) {
if (__qla2x00_marker(ha, 0, 0, MK_SYNC_ALL) != if (__qla2x00_marker(vha, 0, 0, MK_SYNC_ALL) !=
QLA_SUCCESS) QLA_SUCCESS)
return (QLA_FUNCTION_FAILED); return (QLA_FUNCTION_FAILED);
} else { } else {
if (qla2x00_marker(ha, 0, 0, MK_SYNC_ALL) != if (qla2x00_marker(vha, 0, 0, MK_SYNC_ALL) !=
QLA_SUCCESS) QLA_SUCCESS)
return (QLA_FUNCTION_FAILED); return (QLA_FUNCTION_FAILED);
} }
ha->marker_needed = 0; vha->marker_needed = 0;
} }
return (QLA_SUCCESS); return (QLA_SUCCESS);
} }
...@@ -87,11 +81,12 @@ host_to_fcp_swap(uint8_t *fcp, uint32_t bsize) ...@@ -87,11 +81,12 @@ host_to_fcp_swap(uint8_t *fcp, uint32_t bsize)
} }
static inline int 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)) if (IS_FWI2_CAPABLE(ha))
return (loop_id > NPH_LAST_HANDLE); 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); loop_id == MANAGEMENT_SERVER || loop_id == BROADCAST);
}; };
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -7,9 +7,9 @@ ...@@ -7,9 +7,9 @@
/* /*
* Driver version * Driver version
*/ */
#define QLA2XXX_VERSION "8.02.01-k9" #define QLA2XXX_VERSION "8.02.02-k1"
#define QLA_DRIVER_MAJOR_VER 8 #define QLA_DRIVER_MAJOR_VER 8
#define QLA_DRIVER_MINOR_VER 2 #define QLA_DRIVER_MINOR_VER 2
#define QLA_DRIVER_PATCH_VER 1 #define QLA_DRIVER_PATCH_VER 2
#define QLA_DRIVER_BETA_VER 0 #define QLA_DRIVER_BETA_VER 0
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment