diff options
author | Manish Rangankar <manish.rangankar@qlogic.com> | 2011-07-25 14:48:53 -0400 |
---|---|---|
committer | James Bottomley <JBottomley@Parallels.com> | 2011-08-27 10:36:24 -0400 |
commit | b3a271a94d0034dd3bab10b8d8cd432843be629e (patch) | |
tree | e6b3db659daf0aa5c18394e0e58eb43c0a1c68af /drivers/scsi/qla4xxx/ql4_glbl.h | |
parent | 17fa575eec7254fb089f858cae135d64cd015440 (diff) |
[SCSI] qla4xxx: support iscsiadm session mgmt
Add scsi_transport_iscsi hooks in qla4xxx to support
iSCSI session management using iscsiadm.
This patch is based on discussion here
http://groups.google.com/group/open-iscsi/browse_thread/thread/e89fd888baf656a0#
Now users can use iscsiadm to do target discovery and do login/logout to
individual targets using the qla4xxx iSCSI class interface.
This patch leaves some dead code, but to make it easier to review
we are leaving and in the next patch we will remove that old code.
V2 - NOTE: Added code to avoid waiting for AEN during login/logout
in the driver, instead added a kernel to user event
to notify iscsid about login status. Because of this
iscsid will not get blocked.
Signed-off-by: Manish Rangankar <manish.rangankar@qlogic.com>
Signed-off-by: Lalit Chandivade <lalit.chandivade@qlogic.com>
Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi/qla4xxx/ql4_glbl.h')
-rw-r--r-- | drivers/scsi/qla4xxx/ql4_glbl.h | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/drivers/scsi/qla4xxx/ql4_glbl.h b/drivers/scsi/qla4xxx/ql4_glbl.h index 77539ae00b83..d802340e3541 100644 --- a/drivers/scsi/qla4xxx/ql4_glbl.h +++ b/drivers/scsi/qla4xxx/ql4_glbl.h | |||
@@ -51,7 +51,7 @@ int qla4xxx_get_fwddb_entry(struct scsi_qla_host *ha, | |||
51 | uint16_t *connection_id); | 51 | uint16_t *connection_id); |
52 | 52 | ||
53 | int qla4xxx_set_ddb_entry(struct scsi_qla_host * ha, uint16_t fw_ddb_index, | 53 | int qla4xxx_set_ddb_entry(struct scsi_qla_host * ha, uint16_t fw_ddb_index, |
54 | dma_addr_t fw_ddb_entry_dma); | 54 | dma_addr_t fw_ddb_entry_dma, uint32_t *mbx_sts); |
55 | uint8_t qla4xxx_get_ifcb(struct scsi_qla_host *ha, uint32_t *mbox_cmd, | 55 | uint8_t qla4xxx_get_ifcb(struct scsi_qla_host *ha, uint32_t *mbox_cmd, |
56 | uint32_t *mbox_sts, dma_addr_t init_fw_cb_dma); | 56 | uint32_t *mbox_sts, dma_addr_t init_fw_cb_dma); |
57 | int qla4xxx_conn_close_sess_logout(struct scsi_qla_host *ha, | 57 | int qla4xxx_conn_close_sess_logout(struct scsi_qla_host *ha, |
@@ -63,8 +63,7 @@ int qla4xxx_set_acb(struct scsi_qla_host *ha, uint32_t *mbox_cmd, | |||
63 | uint32_t *mbox_sts, dma_addr_t acb_dma); | 63 | uint32_t *mbox_sts, dma_addr_t acb_dma); |
64 | int qla4xxx_get_acb(struct scsi_qla_host *ha, uint32_t *mbox_cmd, | 64 | int qla4xxx_get_acb(struct scsi_qla_host *ha, uint32_t *mbox_cmd, |
65 | uint32_t *mbox_sts, dma_addr_t acb_dma); | 65 | uint32_t *mbox_sts, dma_addr_t acb_dma); |
66 | void qla4xxx_mark_device_missing(struct scsi_qla_host *ha, | 66 | void qla4xxx_mark_device_missing(struct iscsi_cls_session *cls_session); |
67 | struct ddb_entry *ddb_entry); | ||
68 | u16 rd_nvram_word(struct scsi_qla_host *ha, int offset); | 67 | u16 rd_nvram_word(struct scsi_qla_host *ha, int offset); |
69 | void qla4xxx_get_crash_record(struct scsi_qla_host *ha); | 68 | void qla4xxx_get_crash_record(struct scsi_qla_host *ha); |
70 | struct ddb_entry *qla4xxx_alloc_sess(struct scsi_qla_host *ha); | 69 | struct ddb_entry *qla4xxx_alloc_sess(struct scsi_qla_host *ha); |
@@ -150,7 +149,21 @@ int qla4_8xxx_device_state_handler(struct scsi_qla_host *ha); | |||
150 | void qla4_8xxx_need_qsnt_handler(struct scsi_qla_host *ha); | 149 | void qla4_8xxx_need_qsnt_handler(struct scsi_qla_host *ha); |
151 | void qla4_8xxx_clear_drv_active(struct scsi_qla_host *ha); | 150 | void qla4_8xxx_clear_drv_active(struct scsi_qla_host *ha); |
152 | void qla4_8xxx_set_drv_active(struct scsi_qla_host *ha); | 151 | void qla4_8xxx_set_drv_active(struct scsi_qla_host *ha); |
153 | 152 | int qla4xxx_conn_open(struct scsi_qla_host *ha, uint16_t fw_ddb_index); | |
153 | int qla4xxx_set_param_ddbentry(struct scsi_qla_host *ha, | ||
154 | struct ddb_entry *ddb_entry, | ||
155 | struct iscsi_cls_conn *cls_conn, | ||
156 | uint32_t *mbx_sts); | ||
157 | int qla4xxx_session_logout_ddb(struct scsi_qla_host *ha, | ||
158 | struct ddb_entry *ddb_entry, int options); | ||
159 | int qla4xxx_req_ddb_entry(struct scsi_qla_host *ha, uint32_t fw_ddb_index, | ||
160 | uint32_t *mbx_sts); | ||
161 | int qla4xxx_clear_ddb_entry(struct scsi_qla_host *ha, uint32_t fw_ddb_index); | ||
162 | int qla4xxx_send_passthru0(struct iscsi_task *task); | ||
163 | int qla4xxx_get_mgmt_data(struct scsi_qla_host *ha, uint16_t fw_ddb_index, | ||
164 | uint16_t stats_size, dma_addr_t stats_dma); | ||
165 | void qla4xxx_update_session_conn_param(struct scsi_qla_host *ha, | ||
166 | struct ddb_entry *ddb_entry); | ||
154 | /* BSG Functions */ | 167 | /* BSG Functions */ |
155 | int qla4xxx_bsg_request(struct bsg_job *bsg_job); | 168 | int qla4xxx_bsg_request(struct bsg_job *bsg_job); |
156 | int qla4xxx_process_vendor_specific(struct bsg_job *bsg_job); | 169 | int qla4xxx_process_vendor_specific(struct bsg_job *bsg_job); |