Print this page
NEX-5717 import QLogic 16G FC drivers
Reviewed by: Steve Peng <steve.peng@nexenta.com>
Reviewed by: Josef 'Jeff' Sipek <josef.sipek@nexenta.com>
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>
*** 17,27 ****
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
! /* Copyright 2010 QLogic Corporation */
/*
* Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
*/
--- 17,27 ----
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
! /* Copyright 2015 QLogic Corporation */
/*
* Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
*/
*** 32,42 ****
* ISP2xxx Solaris Fibre Channel Adapter (FCA) driver header file.
*
* ***********************************************************************
* * **
* * NOTICE **
! * * COPYRIGHT (C) 1996-2010 QLOGIC CORPORATION **
* * ALL RIGHTS RESERVED **
* * **
* ***********************************************************************
*
*/
--- 32,42 ----
* ISP2xxx Solaris Fibre Channel Adapter (FCA) driver header file.
*
* ***********************************************************************
* * **
* * NOTICE **
! * * COPYRIGHT (C) 1996-2015 QLOGIC CORPORATION **
* * ALL RIGHTS RESERVED **
* * **
* ***********************************************************************
*
*/
*** 43,54 ****
#ifdef __cplusplus
extern "C" {
#endif
! #define INVALID_ENTRY_TYPE 0
/*
* ISP queue - 32-Bit DMA addressing command with extended LUN support
* entry structure definition.
*/
#define IOCB_CMD_TYPE_2 0x11 /* Command entry */
--- 43,64 ----
#ifdef __cplusplus
extern "C" {
#endif
! typedef struct ql_64bit_data_seg {
! uint32_t address[2];
! uint32_t length;
! } ql_64bit_data_seg_t;
+ typedef struct ql_32bit_data_seg {
+ uint32_t address;
+ uint32_t length;
+ } ql_32bit_data_seg_t;
+
+ #define ABORTED_ENTRY_TYPE 0
+
/*
* ISP queue - 32-Bit DMA addressing command with extended LUN support
* entry structure definition.
*/
#define IOCB_CMD_TYPE_2 0x11 /* Command entry */
*** 69,84 ****
uint8_t reserved_1[2];
uint16_t timeout; /* Command timeout. */
uint16_t dseg_count; /* Data segment count - LSB. */
uint8_t scsi_cdb[MAX_CMDSZ]; /* SCSI command words. */
uint32_t byte_count; /* Total byte count. */
! uint32_t dseg_0_address; /* Data segment 0 address. */
! uint32_t dseg_0_length; /* Data segment 0 length. */
! uint32_t dseg_1_address; /* Data segment 1 address. */
! uint32_t dseg_1_length; /* Data segment 1 length. */
! uint32_t dseg_2_address; /* Data segment 2 address. */
! uint32_t dseg_2_length; /* Data segment 2 length. */
} cmd_entry_t, request_t;
/*
* Command entry control flags least significant byte.
*/
--- 79,89 ----
uint8_t reserved_1[2];
uint16_t timeout; /* Command timeout. */
uint16_t dseg_count; /* Data segment count - LSB. */
uint8_t scsi_cdb[MAX_CMDSZ]; /* SCSI command words. */
uint32_t byte_count; /* Total byte count. */
! ql_32bit_data_seg_t dseg[3]; /* Data segments. */
} cmd_entry_t, request_t;
/*
* Command entry control flags least significant byte.
*/
*** 110,121 ****
uint8_t crn; /* Command reference number. */
uint8_t scsi_cdb[MAX_CMDSZ]; /* SCSI command bytes. */
uint32_t total_byte_count;
uint8_t target_id[3]; /* SCSI Target ID */
uint8_t vp_index;
! uint32_t dseg_0_address[2]; /* Data segment 0 address. */
! uint32_t dseg_0_length; /* Data segment 0 length. */
} cmd7_24xx_entry_t;
/*
* ISP24xx queue - Command IOCB structure definition.
*/
--- 115,125 ----
uint8_t crn; /* Command reference number. */
uint8_t scsi_cdb[MAX_CMDSZ]; /* SCSI command bytes. */
uint32_t total_byte_count;
uint8_t target_id[3]; /* SCSI Target ID */
uint8_t vp_index;
! ql_64bit_data_seg_t dseg; /* Data segments. */
} cmd7_24xx_entry_t;
/*
* ISP24xx queue - Command IOCB structure definition.
*/
*** 137,148 ****
uint32_t cmnd_address[2];
uint32_t rsp_address[2]; /* Data segment 0 address. */
uint32_t total_byte_count;
uint8_t target_id[3]; /* SCSI Target ID */
uint8_t vp_index;
! uint32_t dseg_0_address[2]; /* Data segment 0 address. */
! uint32_t dseg_0_length; /* Data segment 0 length. */
} cmd6_24xx_entry_t;
typedef struct fcp_cmnd {
uint8_t fcp_lun[8]; /* SCSI LUN ID. */
uint8_t crn; /* Command reference number. */
--- 141,151 ----
uint32_t cmnd_address[2];
uint32_t rsp_address[2]; /* Data segment 0 address. */
uint32_t total_byte_count;
uint8_t target_id[3]; /* SCSI Target ID */
uint8_t vp_index;
! ql_64bit_data_seg_t dseg; /* Data segments. */
} cmd6_24xx_entry_t;
typedef struct fcp_cmnd {
uint8_t fcp_lun[8]; /* SCSI LUN ID. */
uint8_t crn; /* Command reference number. */
*** 203,216 ****
uint8_t reserved_1[2];
uint16_t timeout; /* Command timeout. */
uint16_t dseg_count; /* Data segment count - LSB. */
uint8_t scsi_cdb[MAX_CMDSZ]; /* SCSI command words. */
uint32_t byte_count; /* Total byte count. */
! uint32_t dseg_0_address[2]; /* Data segment 0 address. */
! uint32_t dseg_0_length; /* Data segment 0 length. */
! uint32_t dseg_1_address[2]; /* Data segment 1 address. */
! uint32_t dseg_1_length; /* Data segment 1 length. */
} cmd_3_entry_t;
/*
* ISP queue - Command type 4 DSD list pointer structure definition.
*/
--- 206,216 ----
uint8_t reserved_1[2];
uint16_t timeout; /* Command timeout. */
uint16_t dseg_count; /* Data segment count - LSB. */
uint8_t scsi_cdb[MAX_CMDSZ]; /* SCSI command words. */
uint32_t byte_count; /* Total byte count. */
! ql_64bit_data_seg_t dseg[2]; /* Data segments. */
} cmd_3_entry_t;
/*
* ISP queue - Command type 4 DSD list pointer structure definition.
*/
*** 250,273 ****
uint8_t entry_type; /* Entry type. */
uint8_t entry_count; /* Entry count. */
uint8_t sys_define; /* System defined. */
uint8_t entry_status; /* Entry Status. */
uint32_t reserved;
! uint32_t dseg_0_address; /* Data segment 0 address. */
! uint32_t dseg_0_length; /* Data segment 0 length. */
! uint32_t dseg_1_address; /* Data segment 1 address. */
! uint32_t dseg_1_length; /* Data segment 1 length. */
! uint32_t dseg_2_address; /* Data segment 2 address. */
! uint32_t dseg_2_length; /* Data segment 2 length. */
! uint32_t dseg_3_address; /* Data segment 3 address. */
! uint32_t dseg_3_length; /* Data segment 3 length. */
! uint32_t dseg_4_address; /* Data segment 4 address. */
! uint32_t dseg_4_length; /* Data segment 4 length. */
! uint32_t dseg_5_address; /* Data segment 5 address. */
! uint32_t dseg_5_length; /* Data segment 5 length. */
! uint32_t dseg_6_address; /* Data segment 6 address. */
! uint32_t dseg_6_length; /* Data segment 6 length. */
} cont_entry_t;
/*
* ISP queue - 64-Bit addressing, continuation entry structure definition.
*/
--- 250,260 ----
uint8_t entry_type; /* Entry type. */
uint8_t entry_count; /* Entry count. */
uint8_t sys_define; /* System defined. */
uint8_t entry_status; /* Entry Status. */
uint32_t reserved;
! ql_32bit_data_seg_t dseg[7]; /* Data segments. */
} cont_entry_t;
/*
* ISP queue - 64-Bit addressing, continuation entry structure definition.
*/
*** 276,295 ****
typedef struct cont_type_1_entry {
uint8_t entry_type; /* Entry type. */
uint8_t entry_count; /* Entry count. */
uint8_t sys_define; /* System defined. */
uint8_t entry_status; /* Entry Status. */
! uint32_t dseg_0_address[2]; /* Data segment 0 address. */
! uint32_t dseg_0_length; /* Data segment 0 length. */
! uint32_t dseg_1_address[2]; /* Data segment 1 address. */
! uint32_t dseg_1_length; /* Data segment 1 length. */
! uint32_t dseg_2_address[2]; /* Data segment 2 address. */
! uint32_t dseg_2_length; /* Data segment 2 length. */
! uint32_t dseg_3_address[2]; /* Data segment 3 address. */
! uint32_t dseg_3_length; /* Data segment 3 length. */
! uint32_t dseg_4_address[2]; /* Data segment 4 address. */
! uint32_t dseg_4_length; /* Data segment 4 length. */
} cont_type_1_entry_t;
/*
* ISP queue - status entry structure definition.
*/
--- 263,273 ----
typedef struct cont_type_1_entry {
uint8_t entry_type; /* Entry type. */
uint8_t entry_count; /* Entry count. */
uint8_t sys_define; /* System defined. */
uint8_t entry_status; /* Entry Status. */
! ql_64bit_data_seg_t dseg[5]; /* Data segments. */
} cont_type_1_entry_t;
/*
* ISP queue - status entry structure definition.
*/
*** 383,392 ****
--- 361,371 ----
#define CS_RESOUCE_UNAVAILABLE 0x2C /* Frimware resource unavailable. */
#define CS_TASK_MGMT_OVERRUN 0x30 /* Task management overrun. */
#define CS_LOGIN_LOGOUT_ERROR 0x31 /* login/logout IOCB error. */
#define CS_SEQ_COMPLETE 0x40 /* Sequence Complete. */
#define CS_ABORTED_SEQ_REC 0x47 /* Abort sequence was received. */
+ #define CS_DEV_NOT_READY 0x81 /* Device not ready */
#define CS_INVALID_PARAMETER 0x102 /* IP invalid_parameter. */
#define CS_ERROR_RESOURCE 0x103 /* IP insufficient resources. */
#define CS_IP_NOT_INITIALIZED 0x104 /* IP not_initialized. */
#define CS_BAD_PAYLOAD 0x180 /* Driver defined */
*** 501,516 ****
uint8_t cmd_dseg_count_h; /* CMD segment count - MSB. */
uint16_t total_dseg_count; /* CMD + RESP segment count. */
uint8_t reserved_2[10];
uint32_t resp_byte_count; /* Response byte count */
uint32_t cmd_byte_count; /* Command byte count */
! uint32_t dseg_0_address[2]; /* Data segment 0 address. */
! uint32_t dseg_0_length; /* Data segment 0 length. */
! uint32_t dseg_1_address[2]; /* Data segment 1 address. */
! uint32_t dseg_1_length; /* Data segment 1 length. */
} ms_entry_t;
/*
* ISP24xx queue - CT Pass-Through IOCB structure definition.
*/
#define CT_PASSTHRU_TYPE 0x29
#define CT_PASSTHRU_DATA_SEGMENTS 1 /* Number of data segments. */
--- 480,494 ----
uint8_t cmd_dseg_count_h; /* CMD segment count - MSB. */
uint16_t total_dseg_count; /* CMD + RESP segment count. */
uint8_t reserved_2[10];
uint32_t resp_byte_count; /* Response byte count */
uint32_t cmd_byte_count; /* Command byte count */
! ql_64bit_data_seg_t dseg[2]; /* Data segments. */
} ms_entry_t;
+ #define CF_ELS_PASSTHROUGH BIT_7 /* MSB */
+
/*
* ISP24xx queue - CT Pass-Through IOCB structure definition.
*/
#define CT_PASSTHRU_TYPE 0x29
#define CT_PASSTHRU_DATA_SEGMENTS 1 /* Number of data segments. */
*** 529,542 ****
uint16_t reserved_1;
uint16_t resp_dseg_count;
uint8_t reserved_2[10];
uint32_t resp_byte_count;
uint32_t cmd_byte_count;
! uint32_t dseg_0_address[2]; /* Data segment 0 address. */
! uint32_t dseg_0_length; /* Data segment 0 length. */
! uint32_t dseg_1_address[2]; /* Data segment 1 address. */
! uint32_t dseg_1_length; /* Data segment 1 length. */
} ct_passthru_entry_t;
/*
* ISP24xx queue - ELS Pass-Through IOCB structure definition.
*/
--- 507,517 ----
uint16_t reserved_1;
uint16_t resp_dseg_count;
uint8_t reserved_2[10];
uint32_t resp_byte_count;
uint32_t cmd_byte_count;
! ql_64bit_data_seg_t dseg[2]; /* Data segments. */
} ct_passthru_entry_t;
/*
* ISP24xx queue - ELS Pass-Through IOCB structure definition.
*/
*** 563,576 ****
uint8_t s_id_7_0;
uint8_t s_id_15_8;
uint16_t control_flags;
uint32_t rcv_payld_data_bcnt;
uint32_t xmt_payld_data_bcnt;
! uint32_t xmt_dseg_0_address[2]; /* Tx Data segment 0 address. */
! uint32_t xmt_dseg_0_length; /* Tx Data segment 0 length. */
! uint32_t rcv_dseg_0_address[2]; /* Rx Data segment 0 address. */
! uint32_t rcv_dseg_0_length; /* Rx Data segment 0 length. */
} els_passthru_entry_t;
/*
* ISP24x queue - ELS Pass-Through IOCB response.
*/
--- 538,548 ----
uint8_t s_id_7_0;
uint8_t s_id_15_8;
uint16_t control_flags;
uint32_t rcv_payld_data_bcnt;
uint32_t xmt_payld_data_bcnt;
! ql_64bit_data_seg_t dseg[2]; /* Data segments. */
} els_passthru_entry_t;
/*
* ISP24x queue - ELS Pass-Through IOCB response.
*/
*** 954,980 ****
struct {
uint8_t reserved_2[2];
uint8_t scsi_status_l;
uint8_t scsi_status_h;
uint32_t byte_count;
! uint32_t dseg_0_address;
! uint32_t dseg_0_length;
! uint32_t dseg_1_address;
! uint32_t dseg_1_length;
! uint32_t dseg_2_address;
! uint32_t dseg_2_length;
}s0_32bit;
struct {
uint8_t reserved_3[2];
uint8_t scsi_status_l;
uint8_t scsi_status_h;
uint32_t byte_count;
! uint32_t dseg_0_address[2];
! uint32_t dseg_0_length;
! uint32_t dseg_1_address[2];
! uint32_t dseg_1_length;
}s0_64bit;
struct {
uint8_t sense_length_l;
uint8_t sense_length_h;
--- 926,944 ----
struct {
uint8_t reserved_2[2];
uint8_t scsi_status_l;
uint8_t scsi_status_h;
uint32_t byte_count;
! ql_32bit_data_seg_t dseg[3];
}s0_32bit;
struct {
uint8_t reserved_3[2];
uint8_t scsi_status_l;
uint8_t scsi_status_h;
uint32_t byte_count;
! ql_64bit_data_seg_t dseg[2];
}s0_64bit;
struct {
uint8_t sense_length_l;
uint8_t sense_length_h;
*** 1023,1035 ****
uint16_t scsi_status;
uint32_t relative_offset;
uint32_t reserved_3;
uint32_t transfer_length;
uint32_t reserved_4;
! uint32_t dseg_0_address_l;
! uint32_t dseg_0_address_h;
! uint32_t dseg_0_length;
}s0;
struct {
uint16_t sense_length;
uint16_t flags;
--- 987,997 ----
uint16_t scsi_status;
uint32_t relative_offset;
uint32_t reserved_3;
uint32_t transfer_length;
uint32_t reserved_4;
! ql_64bit_data_seg_t dseg;
}s0;
struct {
uint16_t sense_length;
uint16_t flags;
*** 1047,1059 ****
uint32_t residual_length;
uint16_t ox_id;
uint8_t reserved_3[10];
uint32_t transfer_length;
uint32_t reserved_4;
! uint32_t dseg_0_address_l;
! uint32_t dseg_0_address_h;
! uint32_t dseg_0_length;
}s2;
}type;
} ctio_snd_entry_t;
/*
--- 1009,1019 ----
uint32_t residual_length;
uint16_t ox_id;
uint8_t reserved_3[10];
uint32_t transfer_length;
uint32_t reserved_4;
! ql_64bit_data_seg_t dseg;
}s2;
}type;
} ctio_snd_entry_t;
/*
*** 1086,1098 ****
uint16_t scsi_status;
uint32_t relative_offset;
uint32_t reserved_3;
uint32_t transfer_length;
uint32_t reserved_4;
! uint32_t dseg_0_address_l;
! uint32_t dseg_0_address_h;
! uint32_t dseg_0_length;
}s0;
struct {
uint16_t sense_length;
uint16_t flags;
--- 1046,1056 ----
uint16_t scsi_status;
uint32_t relative_offset;
uint32_t reserved_3;
uint32_t transfer_length;
uint32_t reserved_4;
! ql_64bit_data_seg_t dseg;
}s0;
struct {
uint16_t sense_length;
uint16_t flags;
*** 1110,1122 ****
uint32_t residual_length;
uint16_t ox_id;
uint8_t reserved_3[10];
uint32_t transfer_length;
uint32_t reserved_4;
! uint32_t dseg_0_address_l;
! uint32_t dseg_0_address_h;
! uint32_t dseg_0_length;
}s2;
}type;
} ctio_rcv_entry_t;
/*
--- 1068,1078 ----
uint32_t residual_length;
uint16_t ox_id;
uint8_t reserved_3[10];
uint32_t transfer_length;
uint32_t reserved_4;
! ql_64bit_data_seg_t dseg;
}s2;
}type;
} ctio_rcv_entry_t;
/*
*** 1138,1153 ****
uint8_t reserved_1[2];
uint16_t timeout; /* Command timeout. */
uint16_t dseg_count; /* Data segment count. */
uint8_t reserved_2[16];
uint32_t byte_count; /* Total byte count. */
! uint32_t dseg_0_address; /* Data segment 0 address. */
! uint32_t dseg_0_length; /* Data segment 0 length. */
! uint32_t dseg_1_address; /* Data segment 1 address. */
! uint32_t dseg_1_length; /* Data segment 1 length. */
! uint32_t dseg_2_address; /* Data segment 2 address. */
! uint32_t dseg_2_length; /* Data segment 2 length. */
} ip_entry_t;
/*
* ISP queue - 64-Bit DMA addressing IP entry structure definition.
*/
--- 1094,1104 ----
uint8_t reserved_1[2];
uint16_t timeout; /* Command timeout. */
uint16_t dseg_count; /* Data segment count. */
uint8_t reserved_2[16];
uint32_t byte_count; /* Total byte count. */
! ql_32bit_data_seg_t dseg[3]; /* Data segments. */
} ip_entry_t;
/*
* ISP queue - 64-Bit DMA addressing IP entry structure definition.
*/
*** 1167,1180 ****
uint8_t reserved_1[2];
uint16_t timeout; /* Command timeout. */
uint16_t dseg_count; /* Data segment count. */
uint8_t reserved_2[16];
uint32_t byte_count; /* Total byte count. */
! uint32_t dseg_0_address[2]; /* Data segment 0 address. */
! uint32_t dseg_0_length; /* Data segment 0 length. */
! uint32_t dseg_1_address[2]; /* Data segment 1 address. */
! uint32_t dseg_1_length; /* Data segment 1 length. */
} ip_a64_entry_t;
/*
* ISP24xx queue - IP command entry structure definition.
*/
--- 1118,1128 ----
uint8_t reserved_1[2];
uint16_t timeout; /* Command timeout. */
uint16_t dseg_count; /* Data segment count. */
uint8_t reserved_2[16];
uint32_t byte_count; /* Total byte count. */
! ql_64bit_data_seg_t dseg[2]; /* Data segments. */
} ip_a64_entry_t;
/*
* ISP24xx queue - IP command entry structure definition.
*/
*** 1195,1206 ****
uint16_t frame_hdr_cntrl_flgs;
uint8_t reserved_2[12];
uint32_t sys_define_2;
uint32_t byte_count; /* Total byte count. */
uint8_t reserved_3[4];
! uint32_t dseg_0_address[2]; /* Data segment 0 address. */
! uint32_t dseg_0_length; /* Data segment 0 length. */
} ip_cmd_entry_t;
/*
* IP command Control Flags.
*/
--- 1143,1153 ----
uint16_t frame_hdr_cntrl_flgs;
uint8_t reserved_2[12];
uint32_t sys_define_2;
uint32_t byte_count; /* Total byte count. */
uint8_t reserved_3[4];
! ql_64bit_data_seg_t dseg; /* Data segments. */
} ip_cmd_entry_t;
/*
* IP command Control Flags.
*/
*** 1365,1376 ****
uint8_t entry_type; /* Entry type. */
uint8_t entry_count; /* Entry count. */
uint8_t sys_define; /* System defined. */
uint8_t entry_status; /* Entry Status. */
uint32_t handle; /* System handle */
! uint8_t acq_cnt; /* format 0 acquired, format 1 count */
! uint8_t setup; /* format 0 */
uint8_t reserved[2];
uint8_t port_id[3];
uint8_t format;
uint8_t vp_index[16];
uint8_t reserved_1[32];
--- 1312,1323 ----
uint8_t entry_type; /* Entry type. */
uint8_t entry_count; /* Entry count. */
uint8_t sys_define; /* System defined. */
uint8_t entry_status; /* Entry Status. */
uint32_t handle; /* System handle */
! uint8_t vp_acquired;
! uint8_t vp_setup;
uint8_t reserved[2];
uint8_t port_id[3];
uint8_t format;
uint8_t vp_index[16];
uint8_t reserved_1[32];
*** 1382,1397 ****
uint8_t sys_define; /* System defined. */
uint8_t entry_status; /* Entry Status. */
uint32_t handle; /* System handle */
uint16_t vp_count;
uint8_t vp_index;
! uint8_t status;
uint8_t port_id[3];
uint8_t format;
uint8_t reserved[48];
} report_id_1_t;
/*
* ISP2400 queue - Verify Menlo FW entry structure definition.
*/
#define VERIFY_MENLO_TYPE 0x1b
typedef struct vfy_menlo_entry {
--- 1329,1368 ----
uint8_t sys_define; /* System defined. */
uint8_t entry_status; /* Entry Status. */
uint32_t handle; /* System handle */
uint16_t vp_count;
uint8_t vp_index;
! uint8_t vp_status;
uint8_t port_id[3];
uint8_t format;
uint8_t reserved[48];
} report_id_1_t;
+ typedef struct report_id_acq {
+ uint8_t entry_type; /* Entry type. */
+ uint8_t entry_count; /* Entry count. */
+ uint8_t sys_define; /* System defined. */
+ uint8_t entry_status; /* Entry Status. */
+ uint32_t handle; /* System handle */
+ uint8_t vp_acquired;
+ uint8_t vp_setup;
+ uint8_t vp_index;
+ uint8_t vp_status;
+ uint8_t port_id[3];
+ uint8_t format;
+ uint8_t status_subcode;
+ uint8_t flags;
+ uint16_t fip_flags;
+ uint16_t fcf_index;
+ uint16_t mac[3];
+ uint8_t reserved[4];
+ uint8_t ls_rjt_subcode;
+ uint8_t ls_rjt_explanation;
+ uint8_t ls_rjt_reason_code;
+ uint8_t reserved_1[29];
+ } report_id_acq_t;
+
/*
* ISP2400 queue - Verify Menlo FW entry structure definition.
*/
#define VERIFY_MENLO_TYPE 0x1b
typedef struct vfy_menlo_entry {
*** 1408,1419 ****
uint32_t exch_addr;
uint32_t reserved_2[3];
uint32_t fw_size;
uint32_t fw_sequence_size;
uint32_t relative_offset;
! uint32_t dseg_0_address[2]; /* Data segment 0 address. */
! uint32_t dseg_0_length; /* Data segment 0 length. */
} vfy_menlo_entry_t;
/*
* Option Flags.
*/
--- 1379,1389 ----
uint32_t exch_addr;
uint32_t reserved_2[3];
uint32_t fw_size;
uint32_t fw_sequence_size;
uint32_t relative_offset;
! ql_64bit_data_seg_t dseg; /* Data segments. */
} vfy_menlo_entry_t;
/*
* Option Flags.
*/
*** 1442,1453 ****
uint32_t parameter_2;
uint32_t parameter_3;
uint32_t reserved_2[3];
uint32_t total_byte_count;
uint32_t reserved_3;
! uint32_t dseg_0_address[2]; /* Data segment 0 address. */
! uint32_t dseg_0_length; /* Data segment 0 length. */
} menlo_data_entry_t;
/*
* Mailbox IOCB.
*/
--- 1412,1422 ----
uint32_t parameter_2;
uint32_t parameter_3;
uint32_t reserved_2[3];
uint32_t total_byte_count;
uint32_t reserved_3;
! ql_64bit_data_seg_t dseg; /* Data segments. */
} menlo_data_entry_t;
/*
* Mailbox IOCB.
*/
*** 1464,1473 ****
--- 1433,1443 ----
log_entry_t log;
vp_control_entry_t vpc;
vp_modify_entry_t vpm;
vfy_menlo_entry_t mvfy;
menlo_data_entry_t mdata;
+ els_passthru_entry_t els;
} ql_mbx_iocb_t;
/*
* Global Data in ql_iocb.c source file.
*/
*** 1474,1493 ****
/*
* Global Function Prototypes in ql_iocb.c source file.
*/
void ql_start_iocb(ql_adapter_state_t *, ql_srb_t *);
! void ql_isp_cmd(ql_adapter_state_t *);
! int ql_marker(ql_adapter_state_t *, uint16_t, uint16_t, uint8_t);
void ql_isp_rcvbuf(ql_adapter_state_t *);
! void ql_command_iocb(ql_adapter_state_t *, ql_srb_t *, void *);
! void ql_ms_iocb(ql_adapter_state_t *, ql_srb_t *, void *);
! void ql_ip_iocb(ql_adapter_state_t *, ql_srb_t *, void *);
! void ql_command_24xx_iocb(ql_adapter_state_t *, ql_srb_t *, void *);
! void ql_ms_24xx_iocb(ql_adapter_state_t *, ql_srb_t *, void *);
! void ql_ip_24xx_iocb(ql_adapter_state_t *, ql_srb_t *, void *);
! void ql_els_24xx_iocb(ql_adapter_state_t *, ql_srb_t *, void *);
#ifdef __cplusplus
}
#endif
--- 1444,1465 ----
/*
* Global Function Prototypes in ql_iocb.c source file.
*/
void ql_start_iocb(ql_adapter_state_t *, ql_srb_t *);
! int ql_marker(ql_adapter_state_t *, uint16_t, ql_lun_t *lq, uint8_t);
void ql_isp_rcvbuf(ql_adapter_state_t *);
! void ql_command_iocb(ql_adapter_state_t *, ql_request_q_t *, ql_srb_t *,
! void *);
! void ql_ms_iocb(ql_adapter_state_t *, ql_request_q_t *, ql_srb_t *, void *);
! void ql_ip_iocb(ql_adapter_state_t *, ql_request_q_t *, ql_srb_t *, void *);
! void ql_command_24xx_iocb(ql_adapter_state_t *, ql_request_q_t *, ql_srb_t *,
! void *);
! void ql_ms_24xx_iocb(ql_adapter_state_t *, ql_request_q_t *, ql_srb_t *,
! void *);
! void ql_ip_24xx_iocb(ql_adapter_state_t *, ql_request_q_t *, ql_srb_t *,
! void *);
#ifdef __cplusplus
}
#endif