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>

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/sys/fibre-channel/fca/qlc/ql_iocb.h
          +++ new/usr/src/uts/common/sys/fibre-channel/fca/qlc/ql_iocb.h
↓ open down ↓ 11 lines elided ↑ open up ↑
  12   12   *
  13   13   * When distributing Covered Code, include this CDDL HEADER in each
  14   14   * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15   15   * If applicable, add the following below this CDDL HEADER, with the
  16   16   * fields enclosed by brackets "[]" replaced with your own identifying
  17   17   * information: Portions Copyright [yyyy] [name of copyright owner]
  18   18   *
  19   19   * CDDL HEADER END
  20   20   */
  21   21  
  22      -/* Copyright 2010 QLogic Corporation */
       22 +/* Copyright 2015 QLogic Corporation */
  23   23  
  24   24  /*
  25   25   * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
  26   26   */
  27   27  
  28   28  #ifndef _QL_IOCB_H
  29   29  #define _QL_IOCB_H
  30   30  
  31   31  /*
  32   32   * ISP2xxx Solaris Fibre Channel Adapter (FCA) driver header file.
  33   33   *
  34   34   * ***********************************************************************
  35   35   * *                                                                    **
  36   36   * *                            NOTICE                                  **
  37      - * *            COPYRIGHT (C) 1996-2010 QLOGIC CORPORATION              **
       37 + * *            COPYRIGHT (C) 1996-2015 QLOGIC CORPORATION              **
  38   38   * *                    ALL RIGHTS RESERVED                             **
  39   39   * *                                                                    **
  40   40   * ***********************************************************************
  41   41   *
  42   42   */
  43   43  
  44   44  #ifdef  __cplusplus
  45   45  extern "C" {
  46   46  #endif
  47   47  
  48      -#define INVALID_ENTRY_TYPE      0
       48 +typedef struct ql_64bit_data_seg {
       49 +        uint32_t        address[2];
       50 +        uint32_t        length;
       51 +} ql_64bit_data_seg_t;
  49   52  
       53 +typedef struct ql_32bit_data_seg {
       54 +        uint32_t        address;
       55 +        uint32_t        length;
       56 +} ql_32bit_data_seg_t;
       57 +
       58 +#define ABORTED_ENTRY_TYPE      0
       59 +
  50   60  /*
  51   61   * ISP queue -  32-Bit DMA addressing command with extended LUN support
  52   62   *              entry structure definition.
  53   63   */
  54   64  #define IOCB_CMD_TYPE_2         0x11    /* Command entry */
  55   65  #define MAX_CMDSZ               16      /* SCSI maximum CDB size. */
  56   66  #define CMD_TYPE_2_DATA_SEGMENTS        3       /* Number of data segments. */
  57   67  typedef struct cmd_entry {
  58      -        uint8_t  entry_type;            /* Entry type. */
  59      -        uint8_t  entry_count;           /* Entry count. */
  60      -        uint8_t  sys_define;            /* System defined. */
  61      -        uint8_t  entry_status;          /* Entry Status. */
       68 +        uint8_t entry_type;             /* Entry type. */
       69 +        uint8_t entry_count;            /* Entry count. */
       70 +        uint8_t sys_define;             /* System defined. */
       71 +        uint8_t entry_status;           /* Entry Status. */
  62   72          uint32_t handle;                /* System handle */
  63      -        uint8_t  target_l;              /* SCSI ID - LSB */
  64      -        uint8_t  target_h;              /* SCSI ID - MSB */
  65      -        uint8_t  lun_l;                 /* SCSI LUN - LSB */
  66      -        uint8_t  lun_h;                 /* SCSI LUN - MSB */
  67      -        uint8_t  control_flags_l;       /* Control flags - LSB. */
  68      -        uint8_t  control_flags_h;       /* Control flags - MSB. */
  69      -        uint8_t  reserved_1[2];
       73 +        uint8_t target_l;               /* SCSI ID - LSB */
       74 +        uint8_t target_h;               /* SCSI ID - MSB */
       75 +        uint8_t lun_l;                  /* SCSI LUN - LSB */
       76 +        uint8_t lun_h;                  /* SCSI LUN - MSB */
       77 +        uint8_t control_flags_l;        /* Control flags - LSB. */
       78 +        uint8_t control_flags_h;        /* Control flags - MSB. */
       79 +        uint8_t reserved_1[2];
  70   80          uint16_t timeout;               /* Command timeout. */
  71   81          uint16_t dseg_count;            /* Data segment count - LSB. */
  72      -        uint8_t  scsi_cdb[MAX_CMDSZ];   /* SCSI command words. */
       82 +        uint8_t scsi_cdb[MAX_CMDSZ];    /* SCSI command words. */
  73   83          uint32_t byte_count;            /* Total byte count. */
  74      -        uint32_t dseg_0_address;        /* Data segment 0 address. */
  75      -        uint32_t dseg_0_length;         /* Data segment 0 length. */
  76      -        uint32_t dseg_1_address;        /* Data segment 1 address. */
  77      -        uint32_t dseg_1_length;         /* Data segment 1 length. */
  78      -        uint32_t dseg_2_address;        /* Data segment 2 address. */
  79      -        uint32_t dseg_2_length;         /* Data segment 2 length. */
       84 +        ql_32bit_data_seg_t     dseg[3];        /* Data segments. */
  80   85  } cmd_entry_t, request_t;
  81   86  
  82   87  /*
  83   88   * Command entry control flags least significant byte.
  84   89   */
  85   90  #define CF_HTAG         BIT_1
  86   91  #define CF_OTAG         BIT_2
  87   92  #define CF_STAG         BIT_3
  88   93  #define CF_DATA_IN      BIT_5
  89   94  #define CF_DATA_OUT     BIT_6
  90   95  
  91   96  /*
  92   97   * ISP24xx queue - Command IOCB structure definition.
  93   98   */
  94   99  #define IOCB_CMD_TYPE_7         0x18
  95      -#define CMD_TYPE_7_DATA_SEGMENTS   1    /* Number of 64 bit data segments. */
      100 +#define CMD_TYPE_7_DATA_SEGMENTS 1      /* Number of 64 bit data segments. */
  96  101  typedef struct cmd7_24xx_entry {
  97      -        uint8_t  entry_type;            /* Entry type. */
  98      -        uint8_t  entry_count;           /* Entry count. */
  99      -        uint8_t  sys_define;            /* System defined. */
 100      -        uint8_t  entry_status;          /* Entry Status. */
      102 +        uint8_t entry_type;             /* Entry type. */
      103 +        uint8_t entry_count;            /* Entry count. */
      104 +        uint8_t sys_define;             /* System defined. */
      105 +        uint8_t entry_status;           /* Entry Status. */
 101  106          uint32_t handle;                /* System handle */
 102  107          uint16_t n_port_hdl;
 103  108          uint16_t timeout;               /* Command timeout. */
 104  109          uint16_t dseg_count;
 105      -        uint8_t  reserved_1[2];
 106      -        uint8_t  fcp_lun[8];            /* SCSI LUN ID. */
 107      -        uint8_t  control_flags;
 108      -        uint8_t  task_mgmt;             /* Task management flags. */
 109      -        uint8_t  task;                  /* Task Attributes Values. */
 110      -        uint8_t  crn;                   /* Command reference number. */
 111      -        uint8_t  scsi_cdb[MAX_CMDSZ];   /* SCSI command bytes. */
      110 +        uint8_t reserved_1[2];
      111 +        uint8_t fcp_lun[8];             /* SCSI LUN ID. */
      112 +        uint8_t control_flags;
      113 +        uint8_t task_mgmt;              /* Task management flags. */
      114 +        uint8_t task;                   /* Task Attributes Values. */
      115 +        uint8_t crn;                    /* Command reference number. */
      116 +        uint8_t scsi_cdb[MAX_CMDSZ];    /* SCSI command bytes. */
 112  117          uint32_t total_byte_count;
 113      -        uint8_t  target_id[3];          /* SCSI Target ID */
 114      -        uint8_t  vp_index;
 115      -        uint32_t dseg_0_address[2];     /* Data segment 0 address. */
 116      -        uint32_t dseg_0_length;         /* Data segment 0 length. */
      118 +        uint8_t target_id[3];           /* SCSI Target ID */
      119 +        uint8_t vp_index;
      120 +        ql_64bit_data_seg_t     dseg;           /* Data segments. */
 117  121  } cmd7_24xx_entry_t;
 118  122  
 119  123  /*
 120  124   * ISP24xx queue - Command IOCB structure definition.
 121  125   */
 122  126  #define IOCB_CMD_TYPE_6         0x48
 123      -#define CMD_TYPE_6_DATA_SEGMENTS   1    /* Number of 64 bit data segments. */
      127 +#define CMD_TYPE_6_DATA_SEGMENTS 1      /* Number of 64 bit data segments. */
 124  128  typedef struct cmd6_24xx_entry {
 125      -        uint8_t  entry_type;            /* Entry type. */
 126      -        uint8_t  entry_count;           /* Entry count. */
 127      -        uint8_t  sys_define;            /* System defined. */
 128      -        uint8_t  entry_status;          /* Entry Status. */
      129 +        uint8_t entry_type;             /* Entry type. */
      130 +        uint8_t entry_count;            /* Entry count. */
      131 +        uint8_t sys_define;             /* System defined. */
      132 +        uint8_t entry_status;           /* Entry Status. */
 129  133          uint32_t handle;                /* System handle */
 130  134          uint16_t n_port_hdl;
 131  135          uint16_t timeout;               /* Command timeout. */
 132  136          uint16_t dseg_count;
 133  137          uint16_t rsp_length;
 134      -        uint8_t  fcp_lun[8];            /* SCSI LUN ID. */
      138 +        uint8_t fcp_lun[8];             /* SCSI LUN ID. */
 135  139          uint16_t control_flags;
 136  140          uint16_t cmnd_length;
 137  141          uint32_t cmnd_address[2];
 138  142          uint32_t rsp_address[2];        /* Data segment 0 address. */
 139  143          uint32_t total_byte_count;
 140      -        uint8_t  target_id[3];          /* SCSI Target ID */
 141      -        uint8_t  vp_index;
 142      -        uint32_t dseg_0_address[2];     /* Data segment 0 address. */
 143      -        uint32_t dseg_0_length;         /* Data segment 0 length. */
      144 +        uint8_t target_id[3];           /* SCSI Target ID */
      145 +        uint8_t vp_index;
      146 +        ql_64bit_data_seg_t     dseg;           /* Data segments. */
 144  147  } cmd6_24xx_entry_t;
 145  148  
 146  149  typedef struct fcp_cmnd {
 147  150          uint8_t         fcp_lun[8];             /* SCSI LUN ID. */
 148  151          uint8_t         crn;                    /* Command reference number. */
 149  152          uint8_t         task;                   /* Task Attributes Values. */
 150  153          uint8_t         task_mgmt;              /* Task management flags. */
 151  154          uint8_t         control_flags;          /* Plus additional cdb length */
 152  155          uint8_t         scsi_cdb[MAX_CMDSZ];
 153  156          uint32_t        dl;
↓ open down ↓ 26 lines elided ↑ open up ↑
 180  183   */
 181  184  #define CF_DSD_PTR      BIT_2
 182  185  #define CF_RD           BIT_1
 183  186  #define CF_WR           BIT_0
 184  187  
 185  188  /*
 186  189   * ISP queue -  64-Bit DMA addressing command with extended LUN support
 187  190   *              entry structure definition.
 188  191   */
 189  192  #define IOCB_CMD_TYPE_3         0x19    /* Command Type 3 entry (64 bit) */
 190      -#define CMD_TYPE_3_DATA_SEGMENTS   2    /* Number of 64 bit data segments. */
      193 +#define CMD_TYPE_3_DATA_SEGMENTS 2      /* Number of 64 bit data segments. */
 191  194  typedef struct cmd_3_entry {
 192      -        uint8_t  entry_type;            /* Entry type. */
 193      -        uint8_t  entry_count;           /* Entry count. */
 194      -        uint8_t  sys_define;            /* System defined. */
 195      -        uint8_t  entry_status;          /* Entry Status. */
      195 +        uint8_t entry_type;             /* Entry type. */
      196 +        uint8_t entry_count;            /* Entry count. */
      197 +        uint8_t sys_define;             /* System defined. */
      198 +        uint8_t entry_status;           /* Entry Status. */
 196  199          uint32_t handle;                /* System handle */
 197      -        uint8_t  target_l;              /* SCSI ID - LSB */
 198      -        uint8_t  target_h;              /* SCSI ID - MSB */
 199      -        uint8_t  lun_l;                 /* SCSI LUN - LSB */
 200      -        uint8_t  lun_h;                 /* SCSI LUN - MSB */
 201      -        uint8_t  control_flags_l;       /* Control flags - LSB. */
 202      -        uint8_t  control_flags_h;       /* Control flags - MSB. */
 203      -        uint8_t  reserved_1[2];
      200 +        uint8_t target_l;               /* SCSI ID - LSB */
      201 +        uint8_t target_h;               /* SCSI ID - MSB */
      202 +        uint8_t lun_l;                  /* SCSI LUN - LSB */
      203 +        uint8_t lun_h;                  /* SCSI LUN - MSB */
      204 +        uint8_t control_flags_l;        /* Control flags - LSB. */
      205 +        uint8_t control_flags_h;        /* Control flags - MSB. */
      206 +        uint8_t reserved_1[2];
 204  207          uint16_t timeout;               /* Command timeout. */
 205  208          uint16_t dseg_count;            /* Data segment count - LSB. */
 206      -        uint8_t  scsi_cdb[MAX_CMDSZ];   /* SCSI command words. */
      209 +        uint8_t scsi_cdb[MAX_CMDSZ];    /* SCSI command words. */
 207  210          uint32_t byte_count;            /* Total byte count. */
 208      -        uint32_t dseg_0_address[2];     /* Data segment 0 address. */
 209      -        uint32_t dseg_0_length;         /* Data segment 0 length. */
 210      -        uint32_t dseg_1_address[2];     /* Data segment 1 address. */
 211      -        uint32_t dseg_1_length;         /* Data segment 1 length. */
      211 +        ql_64bit_data_seg_t     dseg[2];        /* Data segments. */
 212  212  } cmd_3_entry_t;
 213  213  
 214  214  /*
 215  215   * ISP queue -  Command type 4 DSD list pointer structure definition.
 216  216   */
 217  217  #define COMMAND_CHAINING_TYPE   0x15
 218  218  typedef struct cmd_chaining_entry {
 219      -        uint8_t  entry_type;            /* Entry type. */
 220      -        uint8_t  entry_count;           /* Entry count. */
 221      -        uint8_t  sys_define;            /* System defined. */
 222      -        uint8_t  entry_status;          /* Entry Status. */
      219 +        uint8_t entry_type;             /* Entry type. */
      220 +        uint8_t entry_count;            /* Entry count. */
      221 +        uint8_t sys_define;             /* System defined. */
      222 +        uint8_t entry_status;           /* Entry Status. */
 223  223          uint32_t handle;                /* System handle */
 224      -        uint8_t  reserved;
 225      -        uint8_t  target;                /* SCSI ID */
 226      -        uint8_t  lun_l;                 /* SCSI LUN - LSB */
 227      -        uint8_t  lun_h;                 /* SCSI LUN - MSB */
 228      -        uint8_t  control_flags_l;       /* Control flags - LSB. */
 229      -        uint8_t  control_flags_h;       /* Control flags - MSB. */
 230      -        uint8_t  crn;
 231      -        uint8_t  vp_index;
 232      -        uint8_t  timeout_l;             /* Command timeout - LSB. */
 233      -        uint8_t  timeout_h;             /* Command timeout - MSB. */
 234      -        uint8_t  dseg_count_l;          /* Data segment count - LSB. */
 235      -        uint8_t  dseg_count_h;          /* Data segment count - MSB. */
 236      -        uint8_t  scsi_cdb[MAX_CMDSZ];   /* SCSI command words. */
      224 +        uint8_t reserved;
      225 +        uint8_t target;         /* SCSI ID */
      226 +        uint8_t lun_l;                  /* SCSI LUN - LSB */
      227 +        uint8_t lun_h;                  /* SCSI LUN - MSB */
      228 +        uint8_t control_flags_l;        /* Control flags - LSB. */
      229 +        uint8_t control_flags_h;        /* Control flags - MSB. */
      230 +        uint8_t crn;
      231 +        uint8_t vp_index;
      232 +        uint8_t timeout_l;              /* Command timeout - LSB. */
      233 +        uint8_t timeout_h;              /* Command timeout - MSB. */
      234 +        uint8_t dseg_count_l;           /* Data segment count - LSB. */
      235 +        uint8_t dseg_count_h;           /* Data segment count - MSB. */
      236 +        uint8_t scsi_cdb[MAX_CMDSZ];    /* SCSI command words. */
 237  237          uint32_t byte_count;            /* Total byte count. */
 238  238          uint16_t list_type;             /* 0 = 32bit, 1 = 64bit. */
 239  239          uint16_t base_address[2];
 240  240          uint16_t list_address[4];
 241  241          uint8_t reserved_2[10];
 242  242  } cmd_chaining_entry_t;
 243  243  
 244  244  /*
 245  245   * ISP queue - continuation entry structure definition.
 246  246   */
 247  247  #define CONTINUATION_TYPE_0     0x02    /* Continuation entry. */
 248      -#define CONT_TYPE_0_DATA_SEGMENTS  7    /* Number of 32 bit data segments. */
      248 +#define CONT_TYPE_0_DATA_SEGMENTS 7     /* Number of 32 bit data segments. */
 249  249  typedef struct cont_entry {
 250  250          uint8_t entry_type;             /* Entry type. */
 251  251          uint8_t entry_count;            /* Entry count. */
 252  252          uint8_t sys_define;             /* System defined. */
 253  253          uint8_t entry_status;           /* Entry Status. */
 254  254          uint32_t reserved;
 255      -        uint32_t dseg_0_address;        /* Data segment 0 address. */
 256      -        uint32_t dseg_0_length;         /* Data segment 0 length. */
 257      -        uint32_t dseg_1_address;        /* Data segment 1 address. */
 258      -        uint32_t dseg_1_length;         /* Data segment 1 length. */
 259      -        uint32_t dseg_2_address;        /* Data segment 2 address. */
 260      -        uint32_t dseg_2_length;         /* Data segment 2 length. */
 261      -        uint32_t dseg_3_address;        /* Data segment 3 address. */
 262      -        uint32_t dseg_3_length;         /* Data segment 3 length. */
 263      -        uint32_t dseg_4_address;        /* Data segment 4 address. */
 264      -        uint32_t dseg_4_length;         /* Data segment 4 length. */
 265      -        uint32_t dseg_5_address;        /* Data segment 5 address. */
 266      -        uint32_t dseg_5_length;         /* Data segment 5 length. */
 267      -        uint32_t dseg_6_address;        /* Data segment 6 address. */
 268      -        uint32_t dseg_6_length;         /* Data segment 6 length. */
      255 +        ql_32bit_data_seg_t     dseg[7];        /* Data segments. */
 269  256  } cont_entry_t;
 270  257  
 271  258  /*
 272  259   * ISP queue - 64-Bit addressing, continuation entry structure definition.
 273  260   */
 274  261  #define CONTINUATION_TYPE_1     0x0A    /* Continuation Type 1 entry. */
 275      -#define CONT_TYPE_1_DATA_SEGMENTS  5    /* Number of 64 bit data segments. */
      262 +#define CONT_TYPE_1_DATA_SEGMENTS 5     /* Number of 64 bit data segments. */
 276  263  typedef struct cont_type_1_entry {
 277  264          uint8_t entry_type;             /* Entry type. */
 278  265          uint8_t entry_count;            /* Entry count. */
 279  266          uint8_t sys_define;             /* System defined. */
 280  267          uint8_t entry_status;           /* Entry Status. */
 281      -        uint32_t dseg_0_address[2];     /* Data segment 0 address. */
 282      -        uint32_t dseg_0_length;         /* Data segment 0 length. */
 283      -        uint32_t dseg_1_address[2];     /* Data segment 1 address. */
 284      -        uint32_t dseg_1_length;         /* Data segment 1 length. */
 285      -        uint32_t dseg_2_address[2];     /* Data segment 2 address. */
 286      -        uint32_t dseg_2_length;         /* Data segment 2 length. */
 287      -        uint32_t dseg_3_address[2];     /* Data segment 3 address. */
 288      -        uint32_t dseg_3_length;         /* Data segment 3 length. */
 289      -        uint32_t dseg_4_address[2];     /* Data segment 4 address. */
 290      -        uint32_t dseg_4_length;         /* Data segment 4 length. */
      268 +        ql_64bit_data_seg_t     dseg[5];        /* Data segments. */
 291  269  } cont_type_1_entry_t;
 292  270  
 293  271  /*
 294  272   * ISP queue - status entry structure definition.
 295  273   */
 296  274  #define STATUS_TYPE     0x03            /* Status entry. */
 297  275  typedef struct sts_entry {
 298      -        uint8_t  entry_type;            /* Entry type. */
 299      -        uint8_t  entry_count;           /* Entry count. */
 300      -        uint8_t  sys_define;            /* System defined. */
 301      -        uint8_t  entry_status;          /* Entry Status. */
      276 +        uint8_t entry_type;             /* Entry type. */
      277 +        uint8_t entry_count;            /* Entry count. */
      278 +        uint8_t sys_define;             /* System defined. */
      279 +        uint8_t entry_status;           /* Entry Status. */
 302  280          uint32_t handle;                /* System handle. */
 303      -        uint8_t  scsi_status_l;         /* SCSI status - LSB. */
 304      -        uint8_t  scsi_status_h;         /* SCSI status - MSB. */
      281 +        uint8_t scsi_status_l;          /* SCSI status - LSB. */
      282 +        uint8_t scsi_status_h;          /* SCSI status - MSB. */
 305  283          uint16_t comp_status;           /* Completion status. */
 306      -        uint8_t  state_flags_l;         /* State flags - LSB. */
 307      -        uint8_t  state_flags_h;         /* State flags. */
 308      -        uint8_t  status_flags_l;        /* Status flags. */
 309      -        uint8_t  status_flags_h;        /* Status flags - MSB. */
      284 +        uint8_t state_flags_l;          /* State flags - LSB. */
      285 +        uint8_t state_flags_h;          /* State flags. */
      286 +        uint8_t status_flags_l; /* Status flags. */
      287 +        uint8_t status_flags_h; /* Status flags - MSB. */
 310  288          uint16_t rsp_info_length;       /* Response Info Length. */
 311  289          uint16_t req_sense_length;      /* Request sense data length. */
 312  290          uint32_t residual_length;       /* Residual transfer length. */
 313      -        uint8_t  rsp_info[8];           /* FCP response information. */
 314      -        uint8_t  req_sense_data[32];    /* Request sense data. */
      291 +        uint8_t rsp_info[8];            /* FCP response information. */
      292 +        uint8_t req_sense_data[32];     /* Request sense data. */
 315  293  } sts_entry_t, response_t;
 316  294  
 317  295  /*
 318  296   * Status entry entry status
 319  297   */
 320  298  #define RF_INV_E_ORDER  BIT_5           /* Invalid entry order. */
 321      -#define RF_INV_E_COUNT  BIT_4           /* Invalid entry count. */
 322      -#define RF_INV_E_PARAM  BIT_3           /* Invalid entry parameter. */
 323      -#define RF_INV_E_TYPE   BIT_2           /* Invalid entry type. */
      299 +#define RF_INV_E_COUNT  BIT_4           /* Invalid entry count. */
      300 +#define RF_INV_E_PARAM  BIT_3           /* Invalid entry parameter. */
      301 +#define RF_INV_E_TYPE   BIT_2           /* Invalid entry type. */
 324  302  #define RF_BUSY         BIT_1           /* Busy */
 325  303  
 326  304  /*
 327  305   * Status entry SCSI status most significant byte.
 328  306   */
 329  307  #define FCP_CONF_REQ            BIT_4
 330  308  #define FCP_RESID_UNDER         BIT_3
 331  309  #define FCP_RESID_OVER          BIT_2
 332  310  #define FCP_SNS_LEN_VALID       BIT_1
 333  311  #define FCP_RSP_LEN_VALID       BIT_0
↓ open down ↓ 44 lines elided ↑ open up ↑
 378  356  #define CS_PORT_UNAVAILABLE     0x28    /* Port unavailable */
 379  357                                          /* (selection timeout) */
 380  358  #define CS_PORT_LOGGED_OUT      0x29    /* Port Logged Out */
 381  359  #define CS_PORT_CONFIG_CHG      0x2A    /* Port Configuration Changed */
 382  360  #define CS_PORT_BUSY            0x2B    /* Port Busy */
 383  361  #define CS_RESOUCE_UNAVAILABLE  0x2C    /* Frimware resource unavailable. */
 384  362  #define CS_TASK_MGMT_OVERRUN    0x30    /* Task management overrun. */
 385  363  #define CS_LOGIN_LOGOUT_ERROR   0x31    /* login/logout IOCB error. */
 386  364  #define CS_SEQ_COMPLETE         0x40    /* Sequence Complete. */
 387  365  #define CS_ABORTED_SEQ_REC      0x47    /* Abort sequence was received. */
      366 +#define CS_DEV_NOT_READY        0x81    /* Device not ready */
 388  367  #define CS_INVALID_PARAMETER    0x102   /* IP invalid_parameter. */
 389  368  #define CS_ERROR_RESOURCE       0x103   /* IP insufficient resources. */
 390  369  #define CS_IP_NOT_INITIALIZED   0x104   /* IP not_initialized. */
 391  370  
 392  371  #define CS_BAD_PAYLOAD          0x180   /* Driver defined */
 393  372  #define CS_UNKNOWN              0x181   /* Driver defined */
 394  373  #define CS_CMD_FAILED           0x182   /* Driver defined */
 395  374  #define CS_LOOP_DOWN_ABORT      0x183   /* Driver defined */
 396  375  #define CS_FCP_RESPONSE_ERROR   0x184   /* Driver defined */
 397  376  #define CS_DEVICE_UNAVAILABLE   0x185   /* Driver defined */
 398  377  /*
 399  378   * ISP24xx queue - Status IOCB structure definition.
 400  379   */
 401  380  typedef struct sts_24xx_entry {
 402      -        uint8_t  entry_type;            /* Entry type. */
 403      -        uint8_t  entry_count;           /* Entry count. */
 404      -        uint8_t  sys_define;            /* System defined. */
 405      -        uint8_t  entry_status;          /* Entry Status. */
      381 +        uint8_t entry_type;             /* Entry type. */
      382 +        uint8_t entry_count;            /* Entry count. */
      383 +        uint8_t sys_define;             /* System defined. */
      384 +        uint8_t entry_status;           /* Entry Status. */
 406  385          uint32_t handle;                /* System handle. */
 407  386          uint16_t comp_status;           /* Completion status. */
 408  387          uint16_t ox_id;
 409  388          uint32_t residual_length;       /* Residual transfer length. */
 410  389          uint16_t reserved;
 411  390          uint8_t  state_flags_l;         /* State flags. */
 412  391          uint8_t  state_flags_h;
 413  392          uint16_t reserved_1;
 414      -        uint8_t  scsi_status_l;         /* SCSI status - LSB. */
 415      -        uint8_t  scsi_status_h;         /* SCSI status - MSB. */
      393 +        uint8_t scsi_status_l;          /* SCSI status - LSB. */
      394 +        uint8_t scsi_status_h;          /* SCSI status - MSB. */
 416  395          uint32_t fcp_rsp_residual_count;
 417  396          uint32_t fcp_sense_length;
 418  397          uint32_t fcp_rsp_data_length;   /* Response Info Length. */
 419      -        uint8_t  rsp_sense_data[28];    /* FCP response and/or sense data. */
      398 +        uint8_t rsp_sense_data[28];     /* FCP response and/or sense data. */
 420  399  } sts_24xx_entry_t;
 421  400  
 422  401  /*
 423  402   * ISP queue - status continuation entry structure definition.
 424  403   */
 425  404  #define STATUS_CONT_TYPE        0x10    /* Status continuation entry. */
 426  405  typedef struct sts_cont_entry {
 427      -        uint8_t  entry_type;            /* Entry type. */
 428      -        uint8_t  entry_count;           /* Entry count. */
 429      -        uint8_t  sys_define;            /* System defined. */
 430      -        uint8_t  entry_status;          /* Entry Status. */
 431      -        uint8_t  req_sense_data[60];    /* Request sense data. */
      406 +        uint8_t entry_type;             /* Entry type. */
      407 +        uint8_t entry_count;            /* Entry count. */
      408 +        uint8_t sys_define;             /* System defined. */
      409 +        uint8_t entry_status;           /* Entry Status. */
      410 +        uint8_t req_sense_data[60];     /* Request sense data. */
 432  411  } sts_cont_entry_t;
 433  412  
 434  413  /*
 435  414   * ISP queue -  marker with extended LUN support
 436  415   *              entry structure definition.
 437  416   */
 438  417  #define MARKER_TYPE     0x04            /* Marker entry. */
 439  418  typedef struct mrk_entry {
 440      -        uint8_t  entry_type;            /* Entry type. */
 441      -        uint8_t  entry_count;           /* Entry count. */
 442      -        uint8_t  sys_define;            /* System defined. */
 443      -        uint8_t  entry_status;          /* Entry Status. */
      419 +        uint8_t entry_type;             /* Entry type. */
      420 +        uint8_t entry_count;            /* Entry count. */
      421 +        uint8_t sys_define;             /* System defined. */
      422 +        uint8_t entry_status;           /* Entry Status. */
 444  423          uint32_t sys_define_2;          /* System defined. */
 445      -        uint8_t  target_l;              /* SCSI ID - LSB */
 446      -        uint8_t  target_h;              /* SCSI ID - MSB */
 447      -        uint8_t  modifier;              /* Modifier (7-0). */
 448      -        uint8_t  reserved_1;
 449      -        uint8_t  sequence_number[2];    /* Sequence number of event. */
 450      -        uint8_t  lun_l;                 /* SCSI LUN - LSB */
 451      -        uint8_t  lun_h;                 /* SCSI LUN - MSB */
 452      -        uint8_t  reserved_2[48];
      424 +        uint8_t target_l;               /* SCSI ID - LSB */
      425 +        uint8_t target_h;               /* SCSI ID - MSB */
      426 +        uint8_t modifier;               /* Modifier (7-0). */
      427 +        uint8_t reserved_1;
      428 +        uint8_t sequence_number[2];     /* Sequence number of event. */
      429 +        uint8_t lun_l;                  /* SCSI LUN - LSB */
      430 +        uint8_t lun_h;                  /* SCSI LUN - MSB */
      431 +        uint8_t reserved_2[48];
 453  432  } mrk_entry_t;
 454  433  
 455  434  /*
 456  435   * Marker modifiers
 457  436   */
 458  437  #define MK_SYNC_ID_LUN  0               /* Synchronize ID/LUN */
 459  438  #define MK_SYNC_ID      1               /* Synchronize ID */
 460  439  #define MK_SYNC_ALL     2               /* Synchronize all ID/LUN */
 461  440  #define MK_SYNC_LIP     3               /* Synchronize all ID/LUN, */
 462  441                                          /* clear port changed, */
 463  442                                          /* use sequence number. */
 464  443  /*
 465  444   * ISP24xx queue - Marker IOCB structure definition.
 466  445   */
 467  446  typedef struct marker_24xx_entry {
 468      -        uint8_t  entry_type;            /* Entry type. */
 469      -        uint8_t  entry_count;           /* Entry count. */
 470      -        uint8_t  sys_define;            /* System defined. */
 471      -        uint8_t  entry_status;          /* Entry Status. */
      447 +        uint8_t entry_type;             /* Entry type. */
      448 +        uint8_t entry_count;            /* Entry count. */
      449 +        uint8_t sys_define;             /* System defined. */
      450 +        uint8_t entry_status;           /* Entry Status. */
 472  451          uint32_t handle;                /* System handle */
 473  452          uint16_t n_port_hdl;
 474      -        uint8_t  modifier;              /* Modifier */
 475      -        uint8_t  reserved[2];
 476      -        uint8_t  vp_index;
 477      -        uint8_t  reserved_1[2];
 478      -        uint8_t  fcp_lun[8];            /* SCSI LUN ID. */
 479      -        uint8_t  reserved_2[40];
      453 +        uint8_t modifier;               /* Modifier */
      454 +        uint8_t reserved[2];
      455 +        uint8_t vp_index;
      456 +        uint8_t reserved_1[2];
      457 +        uint8_t fcp_lun[8];             /* SCSI LUN ID. */
      458 +        uint8_t reserved_2[40];
 480  459  } marker_24xx_entry_t;
 481  460  
 482  461  /*
 483  462   * ISP queue -  Management Server entry structure definition.
 484  463   */
 485  464  #define MS_TYPE                 0x29
 486  465  #define MS_DATA_SEGMENTS        1       /* Number of data segments. */
 487  466  typedef struct ms_entry {
 488      -        uint8_t  entry_type;            /* Entry type. */
 489      -        uint8_t  entry_count;           /* Entry count. */
 490      -        uint8_t  sys_define;            /* System defined. */
 491      -        uint8_t  entry_status;          /* Entry Status. */
      467 +        uint8_t entry_type;             /* Entry type. */
      468 +        uint8_t entry_count;            /* Entry count. */
      469 +        uint8_t sys_define;             /* System defined. */
      470 +        uint8_t entry_status;           /* Entry Status. */
 492  471          uint32_t handle;                /* System handle */
 493      -        uint8_t  loop_id_l;             /* device id - LSB */
 494      -        uint8_t  loop_id_h;             /* device id - MSB */
      472 +        uint8_t loop_id_l;              /* device id - LSB */
      473 +        uint8_t loop_id_h;              /* device id - MSB */
 495  474          uint16_t comp_status;           /* Completion status */
 496      -        uint8_t  control_flags_l;       /* Control flags - LSB. */
 497      -        uint8_t  control_flags_h;       /* Control flags - MSB. */
 498      -        uint8_t  reserved_1[2];
      475 +        uint8_t control_flags_l;        /* Control flags - LSB. */
      476 +        uint8_t control_flags_h;        /* Control flags - MSB. */
      477 +        uint8_t reserved_1[2];
 499  478          uint16_t timeout;               /* Command timeout. */
 500      -        uint8_t  cmd_dseg_count_l;      /* CMD segment count - LSB. */
 501      -        uint8_t  cmd_dseg_count_h;      /* CMD segment count - MSB. */
      479 +        uint8_t cmd_dseg_count_l;       /* CMD segment count - LSB. */
      480 +        uint8_t cmd_dseg_count_h;       /* CMD segment count - MSB. */
 502  481          uint16_t total_dseg_count;      /* CMD + RESP segment count. */
 503  482          uint8_t  reserved_2[10];
 504  483          uint32_t resp_byte_count;       /* Response byte count */
 505  484          uint32_t cmd_byte_count;        /* Command byte count */
 506      -        uint32_t dseg_0_address[2];     /* Data segment 0 address. */
 507      -        uint32_t dseg_0_length;         /* Data segment 0 length. */
 508      -        uint32_t dseg_1_address[2];     /* Data segment 1 address. */
 509      -        uint32_t dseg_1_length;         /* Data segment 1 length. */
      485 +        ql_64bit_data_seg_t     dseg[2];        /* Data segments. */
 510  486  } ms_entry_t;
 511  487  
      488 +#define CF_ELS_PASSTHROUGH      BIT_7   /* MSB */
      489 +
 512  490  /*
 513  491   * ISP24xx queue - CT Pass-Through IOCB structure definition.
 514  492   */
 515  493  #define CT_PASSTHRU_TYPE                0x29
 516  494  #define CT_PASSTHRU_DATA_SEGMENTS       1       /* Number of data segments. */
 517  495  typedef struct ct_passthru_entry {
 518      -        uint8_t  entry_type;            /* Entry type. */
 519      -        uint8_t  entry_count;           /* Entry count. */
 520      -        uint8_t  sys_define;            /* System defined. */
 521      -        uint8_t  entry_status;          /* Entry Status. */
      496 +        uint8_t entry_type;             /* Entry type. */
      497 +        uint8_t entry_count;            /* Entry count. */
      498 +        uint8_t sys_define;             /* System defined. */
      499 +        uint8_t entry_status;           /* Entry Status. */
 522  500          uint32_t handle;                /* System handle */
 523  501          uint16_t status;
 524  502          uint16_t n_port_hdl;
 525  503          uint16_t cmd_dseg_count;
 526      -        uint8_t  vp_index;
 527      -        uint8_t  reserved;
      504 +        uint8_t vp_index;
      505 +        uint8_t reserved;
 528  506          uint16_t timeout;
 529  507          uint16_t reserved_1;
 530  508          uint16_t resp_dseg_count;
 531      -        uint8_t  reserved_2[10];
      509 +        uint8_t reserved_2[10];
 532  510          uint32_t resp_byte_count;
 533  511          uint32_t cmd_byte_count;
 534      -        uint32_t dseg_0_address[2];     /* Data segment 0 address. */
 535      -        uint32_t dseg_0_length;         /* Data segment 0 length. */
 536      -        uint32_t dseg_1_address[2];     /* Data segment 1 address. */
 537      -        uint32_t dseg_1_length;         /* Data segment 1 length. */
      512 +        ql_64bit_data_seg_t     dseg[2];        /* Data segments. */
 538  513  } ct_passthru_entry_t;
 539  514  
 540  515  /*
 541  516   * ISP24xx queue - ELS Pass-Through IOCB structure definition.
 542  517   */
 543  518  #define ELS_PASSTHRU_TYPE               0x53
 544  519  typedef struct els_passthru_entry {
 545      -        uint8_t  entry_type;            /* Entry type. */
 546      -        uint8_t  entry_count;           /* Entry count. */
 547      -        uint8_t  sys_define;            /* System defined. */
 548      -        uint8_t  entry_status;          /* Entry Status. */
      520 +        uint8_t entry_type;             /* Entry type. */
      521 +        uint8_t entry_count;            /* Entry count. */
      522 +        uint8_t sys_define;             /* System defined. */
      523 +        uint8_t entry_status;           /* Entry Status. */
 549  524          uint32_t handle;                /* System handle */
 550  525          uint16_t reserved_8_9;
 551  526          uint16_t n_port_hdl;
 552  527          uint16_t xmt_dseg_count;        /* Only one allowed */
 553      -        uint8_t  vp_index;
 554      -        uint8_t  sof_type;
      528 +        uint8_t vp_index;
      529 +        uint8_t sof_type;
 555  530          uint32_t rcv_exch_address;
 556  531          uint16_t rcv_dseg_count;
 557      -        uint8_t  els_cmd_opcode;
 558      -        uint8_t  reserved_17;
 559      -        uint8_t  d_id_7_0;
 560      -        uint8_t  d_id_15_8;
 561      -        uint8_t  d_id_23_16;
 562      -        uint8_t  s_id_23_16;
 563      -        uint8_t  s_id_7_0;
 564      -        uint8_t  s_id_15_8;
      532 +        uint8_t els_cmd_opcode;
      533 +        uint8_t reserved_17;
      534 +        uint8_t d_id_7_0;
      535 +        uint8_t d_id_15_8;
      536 +        uint8_t d_id_23_16;
      537 +        uint8_t s_id_23_16;
      538 +        uint8_t s_id_7_0;
      539 +        uint8_t s_id_15_8;
 565  540          uint16_t control_flags;
 566  541          uint32_t rcv_payld_data_bcnt;
 567  542          uint32_t xmt_payld_data_bcnt;
 568      -        uint32_t xmt_dseg_0_address[2]; /* Tx Data segment 0 address. */
 569      -        uint32_t xmt_dseg_0_length;     /* Tx Data segment 0 length.  */
 570      -        uint32_t rcv_dseg_0_address[2]; /* Rx Data segment 0 address. */
 571      -        uint32_t rcv_dseg_0_length;     /* Rx Data segment 0 length.  */
      543 +        ql_64bit_data_seg_t     dseg[2];        /* Data segments. */
 572  544  } els_passthru_entry_t;
 573  545  
 574  546  /*
 575  547   * ISP24x queue - ELS Pass-Through IOCB response.
 576  548   */
 577  549  typedef struct els_passthru_entry_rsp {
 578      -        uint8_t  entry_type;            /* Entry type. */
 579      -        uint8_t  entry_count;           /* Entry count. */
 580      -        uint8_t  sys_define;            /* System defined. */
 581      -        uint8_t  entry_status;          /* Entry Status. */
      550 +        uint8_t entry_type;             /* Entry type. */
      551 +        uint8_t entry_count;            /* Entry count. */
      552 +        uint8_t sys_define;             /* System defined. */
      553 +        uint8_t entry_status;           /* Entry Status. */
 582  554          uint32_t handle;                /* System handle */
 583  555          uint16_t comp_status;
 584  556          uint16_t n_port_hdl;
 585  557          uint16_t reserved_c_d;
 586      -        uint8_t  vp_index;
 587      -        uint8_t  sof_type;
      558 +        uint8_t vp_index;
      559 +        uint8_t sof_type;
 588  560          uint32_t rcv_exch_addr;
 589  561          uint16_t reserved_14_15;
 590      -        uint8_t  els_cmd_opcode;
 591      -        uint8_t  reserved_17;
 592      -        uint8_t  d_id_7_0;
 593      -        uint8_t  d_id_15_8;
 594      -        uint8_t  d_id_23_16;
 595      -        uint8_t  s_id_23_16;
 596      -        uint8_t  s_id_7_0;
 597      -        uint8_t  s_id_15_8;
      562 +        uint8_t els_cmd_opcode;
      563 +        uint8_t reserved_17;
      564 +        uint8_t d_id_7_0;
      565 +        uint8_t d_id_15_8;
      566 +        uint8_t d_id_23_16;
      567 +        uint8_t s_id_23_16;
      568 +        uint8_t s_id_7_0;
      569 +        uint8_t s_id_15_8;
 598  570          uint16_t control_flags;
 599  571          uint32_t total_data_bcnt;
 600  572          uint32_t error_subcode1;
 601  573          uint32_t error_subcode2;
 602      -        uint8_t  reserved_2c_3f[20];
      574 +        uint8_t reserved_2c_3f[20];
 603  575  } els_passthru_entry_rsp_t;
 604  576  
 605  577  /*
 606  578   * ISP24xx queue - Task Management IOCB structure definition.
 607  579   */
 608  580  #define TASK_MGMT_TYPE          0x14
 609  581  typedef struct task_mgmt_entry {
 610      -        uint8_t  entry_type;            /* Entry type. */
 611      -        uint8_t  entry_count;           /* Entry count. */
 612      -        uint8_t  sys_define;            /* System defined. */
 613      -        uint8_t  entry_status;          /* Entry Status. */
      582 +        uint8_t entry_type;             /* Entry type. */
      583 +        uint8_t entry_count;            /* Entry count. */
      584 +        uint8_t sys_define;             /* System defined. */
      585 +        uint8_t entry_status;           /* Entry Status. */
 614  586          uint32_t handle;                /* System handle */
 615  587          uint16_t n_port_hdl;
 616  588          uint16_t reserved;
 617  589          uint16_t delay;
 618  590          uint16_t timeout;
 619      -        uint8_t  fcp_lun[8];            /* SCSI LUN ID. */
      591 +        uint8_t fcp_lun[8];             /* SCSI LUN ID. */
 620  592          uint32_t control_flags;
 621      -        uint8_t  reserved_1[20];
 622      -        uint8_t  target_id[3];          /* SCSI Target ID */
 623      -        uint8_t  vp_index;
 624      -        uint8_t  reserved_2[12];
      593 +        uint8_t reserved_1[20];
      594 +        uint8_t target_id[3];           /* SCSI Target ID */
      595 +        uint8_t vp_index;
      596 +        uint8_t reserved_2[12];
 625  597  } task_mgmt_entry_t;
 626  598  
 627  599  /*
 628  600   * Control Flags.
 629  601   */
 630  602  #define CF_DO_NOT_SEND          BIT_31
 631  603  #define CF_LUN_RESET            BIT_4
 632  604  #define CF_ABORT_TASK_SET       BIT_3
 633  605  #define CF_CLEAR_TASK_SET       BIT_2
 634  606  #define CF_TARGET_RESET         BIT_1
 635  607  #define CF_CLEAR_ACA            BIT_0
 636  608  
 637  609  /*
 638  610   * ISP24xx queue - Abort I/O IOCB structure definition.
 639  611   */
 640  612  #define ABORT_CMD_TYPE          0x33
 641  613  typedef struct abort_cmd_entry {
 642      -        uint8_t  entry_type;            /* Entry type. */
 643      -        uint8_t  entry_count;           /* Entry count. */
 644      -        uint8_t  sys_define;            /* System defined. */
 645      -        uint8_t  entry_status;          /* Entry Status. */
      614 +        uint8_t entry_type;             /* Entry type. */
      615 +        uint8_t entry_count;            /* Entry count. */
      616 +        uint8_t sys_define;             /* System defined. */
      617 +        uint8_t entry_status;           /* Entry Status. */
 646  618          uint32_t handle;                /* System handle */
 647  619          uint16_t n_port_hdl;            /* also comp_status */
 648      -        uint8_t  options;
 649      -        uint8_t  options_h;
      620 +        uint8_t options;
      621 +        uint8_t options_h;
 650  622          uint32_t cmd_handle;
 651      -        uint8_t  reserved[32];
 652      -        uint8_t  target_id[3];          /* Port ID */
 653      -        uint8_t  vp_index;
 654      -        uint8_t  reserved_1[12];
      623 +        uint8_t reserved[32];
      624 +        uint8_t target_id[3];           /* Port ID */
      625 +        uint8_t vp_index;
      626 +        uint8_t reserved_1[12];
 655  627  } abort_cmd_entry_t;
 656  628  
 657  629  /*
 658  630   * Option Flags.
 659  631   */
 660  632  #define AF_NO_ABTS              BIT_0
 661  633  
 662  634  /*
 663  635   * ISP24xx queue - Login/Logout Port IOCB structure definition.
 664  636   */
 665  637  #define LOG_TYPE                0x52
 666  638  typedef struct log_entry {
 667      -        uint8_t  entry_type;            /* Entry type. */
 668      -        uint8_t  entry_count;           /* Entry count. */
 669      -        uint8_t  sys_define;            /* System defined. */
 670      -        uint8_t  entry_status;          /* Entry Status. */
      639 +        uint8_t entry_type;             /* Entry type. */
      640 +        uint8_t entry_count;            /* Entry count. */
      641 +        uint8_t sys_define;             /* System defined. */
      642 +        uint8_t entry_status;           /* Entry Status. */
 671  643          uint32_t handle;                /* System handle */
 672  644          uint16_t status;
 673  645          uint16_t n_port_hdl;
 674  646          uint16_t control_flags;
 675      -        uint8_t  vp_index;
 676      -        uint8_t  reserved;
 677      -        uint8_t  port_id[3];
 678      -        uint8_t  rsp_size;
      647 +        uint8_t vp_index;
      648 +        uint8_t reserved;
      649 +        uint8_t port_id[3];
      650 +        uint8_t rsp_size;
 679  651          uint32_t io_param[11];
 680  652  } log_entry_t;
 681  653  
 682  654  /*
 683  655   * ISP24xx control flag commands
 684  656   */
 685  657  #define CF_CMD_PLOGI    0x00
 686  658  #define CF_CMD_PRLI     0x01
 687  659  #define CF_CMD_PDISC    0x02
 688  660  #define CF_CMD_ADISC    0x03
↓ open down ↓ 43 lines elided ↑ open up ↑
 732  704  #define CS1_PRLI_FAILED                 0x04
 733  705  #define CS1_PRLI_RESPONSE_FAILED        0x05
 734  706  #define CS1_COMMAND_LOGGED_OUT          0x07
 735  707  
 736  708  /*
 737  709   * ISP queue -  Enable LUN with extended LUN support
 738  710   *              entry structure definition.
 739  711   */
 740  712  #define ENABLE_LUN_TYPE 0xB             /* Enable LUN entry */
 741  713  typedef struct enable_lun_entry {
 742      -        uint8_t  entry_type;            /* Entry type. */
 743      -        uint8_t  entry_count;           /* Entry count. */
 744      -        uint8_t  sys_define;            /* System defined. */
 745      -        uint8_t  entry_status;          /* Entry Status. */
      714 +        uint8_t entry_type;             /* Entry type. */
      715 +        uint8_t entry_count;            /* Entry count. */
      716 +        uint8_t sys_define;             /* System defined. */
      717 +        uint8_t entry_status;           /* Entry Status. */
 746  718          uint32_t handle;                /* System handle */
 747      -        uint8_t  reserved[8];
 748      -        uint8_t  status;
 749      -        uint8_t  reserved_1;
 750      -        uint8_t  command_count;
 751      -        uint8_t  immediate_notify_count;
 752      -        uint8_t  reserved_2[2];
 753      -        uint8_t  timeout_l;             /* Timeout - LSB. */
 754      -        uint8_t  timeout_h;             /* Timeout - MSB. */
 755      -        uint8_t  reserved_3[40];
      719 +        uint8_t reserved[8];
      720 +        uint8_t status;
      721 +        uint8_t reserved_1;
      722 +        uint8_t command_count;
      723 +        uint8_t immediate_notify_count;
      724 +        uint8_t reserved_2[2];
      725 +        uint8_t timeout_l;              /* Timeout - LSB. */
      726 +        uint8_t timeout_h;              /* Timeout - MSB. */
      727 +        uint8_t reserved_3[40];
 756  728  } enable_lun_entry_t;
 757  729  
 758  730  /*
 759  731   * ISP queue -  Modify LUN with extended LUN support
 760  732   *              entry structure definition.
 761  733   */
 762  734  #define MODIFY_LUN_TYPE 0xC             /* Modify LUN entry */
 763  735  typedef struct modify_lun_entry {
 764      -        uint8_t  entry_type;            /* Entry type. */
 765      -        uint8_t  entry_count;           /* Entry count. */
 766      -        uint8_t  sys_define;            /* System defined. */
 767      -        uint8_t  entry_status;          /* Entry Status. */
      736 +        uint8_t entry_type;             /* Entry type. */
      737 +        uint8_t entry_count;            /* Entry count. */
      738 +        uint8_t sys_define;             /* System defined. */
      739 +        uint8_t entry_status;           /* Entry Status. */
 768  740          uint32_t handle;                /* System handle */
 769      -        uint8_t  reserved[2];
 770      -        uint8_t  operators;
 771      -        uint8_t  reserved_1[5];
 772      -        uint8_t  status;
 773      -        uint8_t  reserved_2;
 774      -        uint8_t  command_count;
 775      -        uint8_t  immediate_notify_count;
 776      -        uint8_t  reserved_3[2];
 777      -        uint8_t  timeout_l;             /* Timeout - LSB. */
 778      -        uint8_t  timeout_h;             /* Timeout - MSB. */
 779      -        uint8_t  reserved_4[40];
      741 +        uint8_t reserved[2];
      742 +        uint8_t operators;
      743 +        uint8_t reserved_1[5];
      744 +        uint8_t status;
      745 +        uint8_t reserved_2;
      746 +        uint8_t command_count;
      747 +        uint8_t immediate_notify_count;
      748 +        uint8_t reserved_3[2];
      749 +        uint8_t timeout_l;              /* Timeout - LSB. */
      750 +        uint8_t timeout_h;              /* Timeout - MSB. */
      751 +        uint8_t reserved_4[40];
 780  752  } modify_lun_entry_t;
 781  753  
 782  754  /*
 783  755   * ISP queue -  Immediate Notify with extended LUN support
 784  756   *              entry structure definition.
 785  757   */
 786  758  #define IMMEDIATE_NOTIFY_TYPE   0xD     /* Immediate notify entry */
 787  759  typedef struct immediate_notify_entry {
 788      -        uint8_t  entry_type;            /* Entry type. */
 789      -        uint8_t  entry_count;           /* Entry count. */
 790      -        uint8_t  sys_define;            /* System defined. */
 791      -        uint8_t  entry_status;          /* Entry Status. */
      760 +        uint8_t entry_type;             /* Entry type. */
      761 +        uint8_t entry_count;            /* Entry count. */
      762 +        uint8_t sys_define;             /* System defined. */
      763 +        uint8_t entry_status;           /* Entry Status. */
 792  764          uint32_t handle;                /* System handle */
 793      -        uint8_t  initiator_id_l;
 794      -        uint8_t  initiator_id_h;
 795      -        uint8_t  lun_l;
 796      -        uint8_t  lun_h;
 797      -        uint8_t  reserved_1[4];
      765 +        uint8_t initiator_id_l;
      766 +        uint8_t initiator_id_h;
      767 +        uint8_t lun_l;
      768 +        uint8_t lun_h;
      769 +        uint8_t reserved_1[4];
 798  770          uint16_t status;
 799      -        uint8_t  task_flags_l;
 800      -        uint8_t  task_flags_h;
      771 +        uint8_t task_flags_l;
      772 +        uint8_t task_flags_h;
 801  773          uint16_t sequence_id;
 802      -        uint8_t  reserved_3[40];
      774 +        uint8_t reserved_3[40];
 803  775          uint16_t ox_id;
 804  776  } immediate_notify_entry_t;
 805  777  
 806  778  /*
 807  779   * ISP24xx queue - Immediate Notify IOCB structure definition.
 808  780   */
 809  781  typedef struct immd_notify_24xx_entry {
 810      -        uint8_t  entry_type;            /* Entry type. */
 811      -        uint8_t  entry_count;           /* Entry count. */
 812      -        uint8_t  sys_define;            /* System defined. */
 813      -        uint8_t  entry_status;          /* Entry Status. */
      782 +        uint8_t entry_type;             /* Entry type. */
      783 +        uint8_t entry_count;            /* Entry count. */
      784 +        uint8_t sys_define;             /* System defined. */
      785 +        uint8_t entry_status;           /* Entry Status. */
 814  786          uint32_t reserved;
 815  787          uint16_t n_port_hdl;
 816  788          uint16_t reserved_1;
 817  789          uint16_t flags;
 818  790          uint16_t srr_rx_id;
 819  791          uint16_t status;
 820      -        uint8_t  status_subcode;
 821      -        uint8_t  reserved_2;
      792 +        uint8_t status_subcode;
      793 +        uint8_t reserved_2;
 822  794          uint32_t receive_exchange_address;
 823  795          uint32_t srr_relative_offset;
 824  796          uint16_t srr_iu;
 825  797          uint16_t srr_ox_id;
 826      -        uint8_t  reserved_3[19];
 827      -        uint8_t  vp_index;
 828      -        uint8_t  reserved_4[10];
      798 +        uint8_t reserved_3[19];
      799 +        uint8_t vp_index;
      800 +        uint8_t reserved_4[10];
 829  801          uint16_t ox_id;
 830  802  } immd_notify_24xx_entry_t;
 831  803  
 832  804  /*
 833  805   * ISP queue -  Notify Acknowledge extended LUN support
 834  806   *              entry structure definition.
 835  807   */
 836  808  #define NOTIFY_ACKNOWLEDGE_TYPE 0xE     /* Immediate notify entry */
 837  809  typedef struct notify_acknowledge_entry {
 838      -        uint8_t  entry_type;            /* Entry type. */
 839      -        uint8_t  entry_count;           /* Entry count. */
 840      -        uint8_t  sys_define;            /* System defined. */
 841      -        uint8_t  entry_status;          /* Entry Status. */
      810 +        uint8_t entry_type;             /* Entry type. */
      811 +        uint8_t entry_count;            /* Entry count. */
      812 +        uint8_t sys_define;             /* System defined. */
      813 +        uint8_t entry_status;           /* Entry Status. */
 842  814          uint32_t handle;                /* System handle */
 843      -        uint8_t  initiator_id_l;
 844      -        uint8_t  initiator_id_h;
 845      -        uint8_t  reserved_1[2];
 846      -        uint8_t  flags_l;
 847      -        uint8_t  flags_h;
 848      -        uint8_t  reserved_2[2];
      815 +        uint8_t initiator_id_l;
      816 +        uint8_t initiator_id_h;
      817 +        uint8_t reserved_1[2];
      818 +        uint8_t flags_l;
      819 +        uint8_t flags_h;
      820 +        uint8_t reserved_2[2];
 849  821          uint16_t status;
 850      -        uint8_t  task_flags_l;
 851      -        uint8_t  task_flags_h;
      822 +        uint8_t task_flags_l;
      823 +        uint8_t task_flags_h;
 852  824          uint16_t sequence_id;
 853      -        uint8_t  reserved_3[42];
      825 +        uint8_t reserved_3[42];
 854  826  } notify_acknowledge_entry_t;
 855  827  
 856  828  /*
 857  829   * ISP24xx queue - Notify Acknowledge IOCB structure definition.
 858  830   */
 859  831  typedef struct notify_ack_24xx_entry {
 860      -        uint8_t  entry_type;            /* Entry type. */
 861      -        uint8_t  entry_count;           /* Entry count. */
 862      -        uint8_t  sys_define;            /* System defined. */
 863      -        uint8_t  entry_status;          /* Entry Status. */
      832 +        uint8_t entry_type;             /* Entry type. */
      833 +        uint8_t entry_count;            /* Entry count. */
      834 +        uint8_t sys_define;             /* System defined. */
      835 +        uint8_t entry_status;           /* Entry Status. */
 864  836          uint32_t handle;
 865  837          uint16_t n_port_hdl;
 866  838          uint16_t reserved_1;
 867  839          uint16_t flags;
 868  840          uint16_t srr_rx_id;
 869  841          uint16_t status;
 870      -        uint8_t  status_subcode;
 871      -        uint8_t  reserved_2;
      842 +        uint8_t status_subcode;
      843 +        uint8_t reserved_2;
 872  844          uint32_t receive_exchange_address;
 873  845          uint32_t srr_relative_offset;
 874  846          uint16_t srr_iu;
 875  847          uint16_t srr_flags;
 876      -        uint8_t  reserved_3[19];
 877      -        uint8_t  vp_index;
 878      -        uint8_t  srr_reject_vendor_unique;
 879      -        uint8_t  srr_reject_code_explanation;
 880      -        uint8_t  srr_reject_code;
 881      -        uint8_t  reserved_4[7];
      848 +        uint8_t reserved_3[19];
      849 +        uint8_t vp_index;
      850 +        uint8_t srr_reject_vendor_unique;
      851 +        uint8_t srr_reject_code_explanation;
      852 +        uint8_t srr_reject_code;
      853 +        uint8_t reserved_4[7];
 882  854          uint16_t ox_id;
 883  855  } notify_ack_24xx_entry_t;
 884  856  
 885  857  /*
 886  858   * ISP queue -  Accept Target I/O with extended LUN support
 887  859   *              entry structure definition.
 888  860   */
 889  861  #define ATIO_TYPE       0x16                    /* ATIO entry */
 890  862  typedef struct atio_entry {
 891  863          uint8_t         entry_type;             /* Entry type. */
↓ open down ↓ 18 lines elided ↑ open up ↑
 910  882          uint8_t         lun_h;
 911  883          uint8_t         reserved_3[20];
 912  884          uint16_t        ox_id;
 913  885  } atio_entry_t;
 914  886  
 915  887  /*
 916  888   * ISP24xx queue - Accept Target I/O IOCB structure definition.
 917  889   */
 918  890  #define ATIO_24xx_TYPE          0x06
 919  891  typedef struct atio_24xx_entry {
 920      -        uint8_t  entry_type;            /* Entry type. */
 921      -        uint8_t  entry_count;           /* Entry count. */
      892 +        uint8_t entry_type;             /* Entry type. */
      893 +        uint8_t entry_count;            /* Entry count. */
 922  894          uint16_t len_attr;              /* System defined. */
 923  895          uint32_t receive_exchange_address;
 924      -        uint8_t  frame_hdr[24];
 925      -        uint8_t  payload[32];
      896 +        uint8_t frame_hdr[24];
      897 +        uint8_t payload[32];
 926  898  } atio_24xx_entry_t;
 927  899  
 928  900  /*
 929  901   * ISP queue -  Continue Target I/O with extended LUN support
 930  902   *              entry structure definition.
 931  903   */
 932      -#define CTIO_TYPE_2   0x17
 933      -#define CTIO_TYPE_3   0x1F
      904 +#define CTIO_TYPE_2     0x17
      905 +#define CTIO_TYPE_3     0x1F
 934  906  typedef struct ctio_entry {
 935      -        uint8_t  entry_type;            /* Entry type. */
 936      -        uint8_t  entry_count;           /* Entry count. */
 937      -        uint8_t  sys_define;            /* System defined. */
 938      -        uint8_t  entry_status;          /* Entry Status. */
      907 +        uint8_t entry_type;             /* Entry type. */
      908 +        uint8_t entry_count;            /* Entry count. */
      909 +        uint8_t sys_define;             /* System defined. */
      910 +        uint8_t entry_status;           /* Entry Status. */
 939  911          uint32_t handle;                /* System handle */
 940      -        uint8_t  initiator_id_l;
 941      -        uint8_t  initiator_id_h;
      912 +        uint8_t initiator_id_l;
      913 +        uint8_t initiator_id_h;
 942  914          uint16_t rx_id;
 943      -        uint8_t  flags_l;
 944      -        uint8_t  flags_h;
      915 +        uint8_t flags_l;
      916 +        uint8_t flags_h;
 945  917          uint16_t status;
 946  918          uint16_t timeout;
 947      -        uint8_t  dseg_count_l;
 948      -        uint8_t  dseg_count_h;
      919 +        uint8_t dseg_count_l;
      920 +        uint8_t dseg_count_h;
 949  921          uint32_t relative_offset;
 950  922          uint32_t residual_transfer_length;
 951      -        uint8_t  reserved_1[4];
      923 +        uint8_t reserved_1[4];
 952  924  
 953  925          union {
 954  926                  struct {
 955      -                        uint8_t  reserved_2[2];
 956      -                        uint8_t  scsi_status_l;
 957      -                        uint8_t  scsi_status_h;
      927 +                        uint8_t reserved_2[2];
      928 +                        uint8_t scsi_status_l;
      929 +                        uint8_t scsi_status_h;
 958  930                          uint32_t byte_count;
 959      -                        uint32_t dseg_0_address;
 960      -                        uint32_t dseg_0_length;
 961      -                        uint32_t dseg_1_address;
 962      -                        uint32_t dseg_1_length;
 963      -                        uint32_t dseg_2_address;
 964      -                        uint32_t dseg_2_length;
      931 +                        ql_32bit_data_seg_t     dseg[3];
 965  932                  }s0_32bit;
 966  933  
 967  934                  struct {
 968      -                        uint8_t  reserved_3[2];
 969      -                        uint8_t  scsi_status_l;
 970      -                        uint8_t  scsi_status_h;
      935 +                        uint8_t reserved_3[2];
      936 +                        uint8_t scsi_status_l;
      937 +                        uint8_t scsi_status_h;
 971  938                          uint32_t byte_count;
 972      -                        uint32_t dseg_0_address[2];
 973      -                        uint32_t dseg_0_length;
 974      -                        uint32_t dseg_1_address[2];
 975      -                        uint32_t dseg_1_length;
      939 +                        ql_64bit_data_seg_t     dseg[2];
 976  940                  }s0_64bit;
 977  941  
 978  942                  struct {
 979      -                        uint8_t  sense_length_l;
 980      -                        uint8_t  sense_length_h;
 981      -                        uint8_t  scsi_status_l;
 982      -                        uint8_t  scsi_status_h;
 983      -                        uint8_t  response_length_l;
 984      -                        uint8_t  response_length_h;
 985      -                        uint8_t  response_info[26];
      943 +                        uint8_t sense_length_l;
      944 +                        uint8_t sense_length_h;
      945 +                        uint8_t scsi_status_l;
      946 +                        uint8_t scsi_status_h;
      947 +                        uint8_t response_length_l;
      948 +                        uint8_t response_length_h;
      949 +                        uint8_t response_info[26];
 986  950                  }s1;
 987  951  
 988  952                  struct {
 989      -                        uint8_t  reserved_4[2];
      953 +                        uint8_t reserved_4[2];
 990  954                          uint32_t response_length;
 991  955                          uint32_t response_pointer;
 992      -                        uint8_t  reserved[16];
      956 +                        uint8_t reserved[16];
 993  957                  }s2;
 994  958          }type;
 995  959  } ctio_entry_t;
 996  960  
 997  961  /*
 998  962   * ISP24xx queue -      Continue Target I/O IOCBs from the System
 999  963   *              Target Driver structure definition.
1000  964   */
1001  965  #define CTIO_24xx_TYPE          0x12
1002  966  typedef struct ctio_snd_entry {
1003      -        uint8_t  entry_type;            /* Entry type. */
1004      -        uint8_t  entry_count;           /* Entry count. */
1005      -        uint8_t  sys_define;            /* System defined. */
1006      -        uint8_t  entry_status;          /* Entry Status. */
      967 +        uint8_t entry_type;             /* Entry type. */
      968 +        uint8_t entry_count;            /* Entry count. */
      969 +        uint8_t sys_define;             /* System defined. */
      970 +        uint8_t entry_status;           /* Entry Status. */
1007  971          uint32_t handle;
1008  972          uint16_t n_port_hdl;
1009  973          uint16_t timeout;
1010  974          uint16_t dseg_count;
1011      -        uint8_t  vp_index;
1012      -        uint8_t  flags;
      975 +        uint8_t vp_index;
      976 +        uint8_t flags;
1013  977          uint8_t initiator_id[3];
1014      -        uint8_t  reserved_1;
      978 +        uint8_t reserved_1;
1015  979          uint32_t receive_exchange_address;
1016  980  
1017  981          union {
1018  982                  struct {
1019  983                          uint16_t reserved_2;
1020  984                          uint16_t flags;
1021  985                          uint32_t residual_length;
1022  986                          uint16_t ox_id;
1023  987                          uint16_t scsi_status;
1024  988                          uint32_t relative_offset;
1025  989                          uint32_t reserved_3;
1026  990                          uint32_t transfer_length;
1027  991                          uint32_t reserved_4;
1028      -                        uint32_t dseg_0_address_l;
1029      -                        uint32_t dseg_0_address_h;
1030      -                        uint32_t dseg_0_length;
      992 +                        ql_64bit_data_seg_t     dseg;
1031  993                  }s0;
1032  994  
1033  995                  struct {
1034  996                          uint16_t sense_length;
1035  997                          uint16_t flags;
1036  998                          uint32_t residual_length;
1037  999                          uint16_t ox_id;
1038 1000                          uint16_t scsi_status;
1039 1001                          uint16_t response_length;
1040 1002                          uint16_t reserved_2;
1041      -                        uint8_t  rsp_sense_data[24];
     1003 +                        uint8_t rsp_sense_data[24];
1042 1004                  }s1;
1043 1005  
1044 1006                  struct {
1045 1007                          uint16_t reserved_2;
1046 1008                          uint16_t flags;
1047 1009                          uint32_t residual_length;
1048 1010                          uint16_t ox_id;
1049      -                        uint8_t  reserved_3[10];
     1011 +                        uint8_t reserved_3[10];
1050 1012                          uint32_t transfer_length;
1051 1013                          uint32_t reserved_4;
1052      -                        uint32_t dseg_0_address_l;
1053      -                        uint32_t dseg_0_address_h;
1054      -                        uint32_t dseg_0_length;
     1014 +                        ql_64bit_data_seg_t     dseg;
1055 1015                  }s2;
1056 1016          }type;
1057 1017  } ctio_snd_entry_t;
1058 1018  
1059 1019  /*
1060 1020   * ISP24xx queue -      Continue Target I/O IOCBs from the ISP24xx
1061 1021   *              Firmware structure definition.
1062 1022   */
1063 1023  typedef struct ctio_rcv_entry {
1064      -        uint8_t  entry_type;            /* Entry type. */
1065      -        uint8_t  entry_count;           /* Entry count. */
1066      -        uint8_t  sys_define;            /* System defined. */
1067      -        uint8_t  entry_status;          /* Entry Status. */
     1024 +        uint8_t entry_type;             /* Entry type. */
     1025 +        uint8_t entry_count;            /* Entry count. */
     1026 +        uint8_t sys_define;             /* System defined. */
     1027 +        uint8_t entry_status;           /* Entry Status. */
1068 1028          uint32_t handle;
1069 1029          uint16_t status;
1070 1030          uint16_t timeout;
1071 1031          uint16_t dseg_count;
1072      -        uint8_t  reserved[6];
     1032 +        uint8_t reserved[6];
1073 1033  
1074      -        uint8_t  vp_index;
1075      -        uint8_t  flags;
     1034 +        uint8_t vp_index;
     1035 +        uint8_t flags;
1076 1036          uint8_t initiator_id[3];
1077      -        uint8_t  reserved_1;
     1037 +        uint8_t reserved_1;
1078 1038          uint32_t receive_exchange_address;
1079 1039  
1080 1040          union {
1081 1041                  struct {
1082 1042                          uint16_t reserved_2;
1083 1043                          uint16_t flags;
1084 1044                          uint32_t residual_length;
1085 1045                          uint16_t ox_id;
1086 1046                          uint16_t scsi_status;
1087 1047                          uint32_t relative_offset;
1088 1048                          uint32_t reserved_3;
1089 1049                          uint32_t transfer_length;
1090 1050                          uint32_t reserved_4;
1091      -                        uint32_t dseg_0_address_l;
1092      -                        uint32_t dseg_0_address_h;
1093      -                        uint32_t dseg_0_length;
     1051 +                        ql_64bit_data_seg_t     dseg;
1094 1052                  }s0;
1095 1053  
1096 1054                  struct {
1097 1055                          uint16_t sense_length;
1098 1056                          uint16_t flags;
1099 1057                          uint32_t residual_length;
1100 1058                          uint16_t ox_id;
1101 1059                          uint16_t scsi_status;
1102 1060                          uint16_t response_length;
1103 1061                          uint16_t reserved_2;
1104      -                        uint8_t  rsp_sense_data[24];
     1062 +                        uint8_t rsp_sense_data[24];
1105 1063                  }s1;
1106 1064  
1107 1065                  struct {
1108 1066                          uint16_t reserved_2;
1109 1067                          uint16_t flags;
1110 1068                          uint32_t residual_length;
1111 1069                          uint16_t ox_id;
1112      -                        uint8_t  reserved_3[10];
     1070 +                        uint8_t reserved_3[10];
1113 1071                          uint32_t transfer_length;
1114 1072                          uint32_t reserved_4;
1115      -                        uint32_t dseg_0_address_l;
1116      -                        uint32_t dseg_0_address_h;
1117      -                        uint32_t dseg_0_length;
     1073 +                        ql_64bit_data_seg_t     dseg;
1118 1074                  }s2;
1119 1075          }type;
1120 1076  } ctio_rcv_entry_t;
1121 1077  
1122 1078  /*
1123 1079   * ISP queue -  32-Bit DMA addressing IP entry structure definition.
1124 1080   */
1125 1081  #define IP_TYPE                 0x13
1126 1082  #define IP_DATA_SEGMENTS        3       /* Number of data segments. */
1127 1083  typedef struct ip_entry {
1128      -        uint8_t  entry_type;            /* Entry type. */
1129      -        uint8_t  entry_count;           /* Entry count. */
1130      -        uint8_t  sys_define;            /* System defined. */
1131      -        uint8_t  entry_status;          /* Entry Status. */
     1084 +        uint8_t entry_type;             /* Entry type. */
     1085 +        uint8_t entry_count;            /* Entry count. */
     1086 +        uint8_t sys_define;             /* System defined. */
     1087 +        uint8_t entry_status;           /* Entry Status. */
1132 1088          uint32_t handle;                /* System handle */
1133      -        uint8_t  loop_id_l;             /* device id - LSB */
1134      -        uint8_t  loop_id_h;             /* device id - MSB */
     1089 +        uint8_t loop_id_l;              /* device id - LSB */
     1090 +        uint8_t loop_id_h;              /* device id - MSB */
1135 1091          uint16_t comp_status;           /* Completion status. */
1136      -        uint8_t  control_flags_l;       /* Control flags - LSB. */
1137      -        uint8_t  control_flags_h;       /* Control flags - MSB. */
1138      -        uint8_t  reserved_1[2];
     1092 +        uint8_t control_flags_l;        /* Control flags - LSB. */
     1093 +        uint8_t control_flags_h;        /* Control flags - MSB. */
     1094 +        uint8_t reserved_1[2];
1139 1095          uint16_t timeout;               /* Command timeout. */
1140 1096          uint16_t dseg_count;            /* Data segment count. */
1141      -        uint8_t  reserved_2[16];
     1097 +        uint8_t reserved_2[16];
1142 1098          uint32_t byte_count;            /* Total byte count. */
1143      -        uint32_t dseg_0_address;        /* Data segment 0 address. */
1144      -        uint32_t dseg_0_length;         /* Data segment 0 length. */
1145      -        uint32_t dseg_1_address;        /* Data segment 1 address. */
1146      -        uint32_t dseg_1_length;         /* Data segment 1 length. */
1147      -        uint32_t dseg_2_address;        /* Data segment 2 address. */
1148      -        uint32_t dseg_2_length;         /* Data segment 2 length. */
     1099 +        ql_32bit_data_seg_t     dseg[3];        /* Data segments. */
1149 1100  } ip_entry_t;
1150 1101  
1151 1102  /*
1152 1103   * ISP queue -  64-Bit DMA addressing IP entry structure definition.
1153 1104   */
1154 1105  #define IP_A64_TYPE             0x1B
1155 1106  #define IP_A64_DATA_SEGMENTS    2       /* Number of data segments. */
1156 1107  typedef struct ip_a64_entry {
1157      -        uint8_t  entry_type;            /* Entry type. */
1158      -        uint8_t  entry_count;           /* Entry count. */
1159      -        uint8_t  sys_define;            /* System defined. */
1160      -        uint8_t  entry_status;          /* Entry Status. */
     1108 +        uint8_t entry_type;             /* Entry type. */
     1109 +        uint8_t entry_count;            /* Entry count. */
     1110 +        uint8_t sys_define;             /* System defined. */
     1111 +        uint8_t entry_status;           /* Entry Status. */
1161 1112          uint32_t handle;                /* System handle */
1162      -        uint8_t  reserved;
1163      -        uint8_t  loop_id;               /* Loop ID */
     1113 +        uint8_t reserved;
     1114 +        uint8_t loop_id;                /* Loop ID */
1164 1115          uint16_t comp_status;           /* Completion status. */
1165      -        uint8_t  control_flags_l;       /* Control flags - LSB. */
1166      -        uint8_t  control_flags_h;       /* Control flags - MSB. */
1167      -        uint8_t  reserved_1[2];
     1116 +        uint8_t control_flags_l;        /* Control flags - LSB. */
     1117 +        uint8_t control_flags_h;        /* Control flags - MSB. */
     1118 +        uint8_t reserved_1[2];
1168 1119          uint16_t timeout;               /* Command timeout. */
1169 1120          uint16_t dseg_count;            /* Data segment count. */
1170      -        uint8_t  reserved_2[16];
     1121 +        uint8_t reserved_2[16];
1171 1122          uint32_t byte_count;            /* Total byte count. */
1172      -        uint32_t dseg_0_address[2];     /* Data segment 0 address. */
1173      -        uint32_t dseg_0_length;         /* Data segment 0 length. */
1174      -        uint32_t dseg_1_address[2];     /* Data segment 1 address. */
1175      -        uint32_t dseg_1_length;         /* Data segment 1 length. */
     1123 +        ql_64bit_data_seg_t     dseg[2];        /* Data segments. */
1176 1124  } ip_a64_entry_t;
1177 1125  
1178 1126  /*
1179 1127   * ISP24xx queue - IP command entry structure definition.
1180 1128   */
1181 1129  #define IP_CMD_TYPE             0x3B
1182 1130  #define IP_CMD_DATA_SEGMENTS    1
1183 1131  typedef struct ip_cmd_entry {
1184      -        uint8_t  entry_type;            /* Entry type. */
1185      -        uint8_t  entry_count;           /* Entry count. */
1186      -        uint8_t  sys_define;            /* System defined. */
1187      -        uint8_t  entry_status;          /* Entry Status. */
     1132 +        uint8_t entry_type;             /* Entry type. */
     1133 +        uint8_t entry_count;            /* Entry count. */
     1134 +        uint8_t sys_define;             /* System defined. */
     1135 +        uint8_t entry_status;           /* Entry Status. */
1188 1136          uint32_t handle;                /* System handle. */
1189 1137          uint16_t hdl_status;            /* N_port hdl or Completion status */
1190 1138          uint16_t timeout_hdl;           /* N_port hdl or Command timeout */
1191 1139          uint16_t dseg_count;            /* Data segment count. */
1192      -        uint8_t  reserved_1[6];
     1140 +        uint8_t reserved_1[6];
1193 1141          uint32_t exch_addr;
1194 1142          uint16_t control_flags;
1195 1143          uint16_t frame_hdr_cntrl_flgs;
1196      -        uint8_t  reserved_2[12];
     1144 +        uint8_t reserved_2[12];
1197 1145          uint32_t sys_define_2;
1198 1146          uint32_t byte_count;            /* Total byte count. */
1199      -        uint8_t  reserved_3[4];
1200      -        uint32_t dseg_0_address[2];     /* Data segment 0 address. */
1201      -        uint32_t dseg_0_length;         /* Data segment 0 length. */
     1147 +        uint8_t reserved_3[4];
     1148 +        ql_64bit_data_seg_t     dseg;   /* Data segments. */
1202 1149  } ip_cmd_entry_t;
1203 1150  
1204 1151  /*
1205 1152   * IP command Control Flags.
1206 1153   */
1207 1154  #define IPCF_TERMINATE_EXCH     BIT_1
1208 1155  /*
1209 1156   * IP command Frame Header Control Flags.
1210 1157   */
1211 1158  #define IPCF_FIRST_SEQ          BIT_5
1212 1159  #define IPCF_LAST_SEQ           BIT_4
1213 1160  
1214 1161  /*
1215 1162   * ISP queue - Receive IP buffer entry structure definition.
1216 1163   */
1217 1164  #define IP_RCVBUF_HANDLES       24      /* Buffer handles in entry. */
1218 1165  #define IP_RECEIVE_TYPE         0x23    /* IP receive entry */
1219 1166  typedef struct ip_rcv_entry {
1220      -        uint8_t  entry_type;            /* Entry type. */
1221      -        uint8_t  entry_count;           /* Entry count. */
1222      -        uint8_t  segment_count;         /* Segment count. */
1223      -        uint8_t  entry_status;          /* Entry Status. */
1224      -        uint8_t  s_id[3];               /* Source ID. */
1225      -        uint8_t  reserved[2];
1226      -        uint8_t  loop_id;               /* Loop ID */
     1167 +        uint8_t entry_type;             /* Entry type. */
     1168 +        uint8_t entry_count;            /* Entry count. */
     1169 +        uint8_t segment_count;          /* Segment count. */
     1170 +        uint8_t entry_status;           /* Entry Status. */
     1171 +        uint8_t s_id[3];                /* Source ID. */
     1172 +        uint8_t reserved[2];
     1173 +        uint8_t loop_id;                /* Loop ID */
1227 1174          uint16_t comp_status;           /* Completion status. */
1228      -        uint8_t  class_of_srv_l;        /* Class of service - LSB. */
1229      -        uint8_t  class_of_srv_h;        /* Class of service - MSB. */
     1175 +        uint8_t class_of_srv_l; /* Class of service - LSB. */
     1176 +        uint8_t class_of_srv_h; /* Class of service - MSB. */
1230 1177          uint16_t seq_length;            /* Sequence length. */
1231 1178          uint16_t buffer_handle[IP_RCVBUF_HANDLES]; /* Buffer handles. */
1232 1179  } ip_rcv_entry_t;
1233 1180  
1234 1181  /*
1235 1182   * ISP queue - Receive IP buffer continuation entry structure definition.
1236 1183   */
1237 1184  #define IP_RCVBUF_CONT_HANDLES  30      /* Buffer handles in entry. */
1238 1185  #define IP_RECEIVE_CONT_TYPE    0x2B    /* IP receive continuation entry */
1239 1186  typedef struct ip_rcv_cont_entry {
1240      -        uint8_t  entry_type;            /* Entry type. */
1241      -        uint8_t  entry_count;           /* Entry count. */
1242      -        uint8_t  reserved;
1243      -        uint8_t  entry_status;          /* Entry Status. */
     1187 +        uint8_t entry_type;             /* Entry type. */
     1188 +        uint8_t entry_count;            /* Entry count. */
     1189 +        uint8_t reserved;
     1190 +        uint8_t entry_status;           /* Entry Status. */
1244 1191          uint16_t buffer_handle[IP_RCVBUF_CONT_HANDLES]; /* Buf handles */
1245 1192  } ip_rcv_cont_entry_t;
1246 1193  
1247 1194  /*
1248 1195   * ISP24xx queue - Receive IP buffer entry structure definition.
1249 1196   */
1250 1197  #define IP_24XX_RCVBUF_HANDLES  4
1251 1198  #define IP_24XX_RECEIVE_TYPE    0x3c
1252 1199  typedef struct ip_rcv_24xx_entry {
1253      -        uint8_t  entry_type;            /* Entry type. */
1254      -        uint8_t  entry_count;           /* Entry count. */
1255      -        uint8_t  segment_count;         /* Segment count. */
1256      -        uint8_t  entry_status;          /* Entry Status. */
1257      -        uint8_t  s_id[3];               /* Source ID. */
1258      -        uint8_t  reserved[1];
     1200 +        uint8_t entry_type;             /* Entry type. */
     1201 +        uint8_t entry_count;            /* Entry count. */
     1202 +        uint8_t segment_count;          /* Segment count. */
     1203 +        uint8_t entry_status;           /* Entry Status. */
     1204 +        uint8_t s_id[3];                /* Source ID. */
     1205 +        uint8_t reserved[1];
1259 1206          uint16_t comp_status;           /* Completion status. */
1260 1207          uint16_t n_port_hdl;            /* Loop ID */
1261      -        uint8_t  class_of_srv_l;        /* Class of service - LSB. */
1262      -        uint8_t  class_of_srv_h;        /* Class of service - MSB. */
     1208 +        uint8_t class_of_srv_l; /* Class of service - LSB. */
     1209 +        uint8_t class_of_srv_h; /* Class of service - MSB. */
1263 1210          uint16_t seq_length;            /* Sequence length. */
1264 1211          uint16_t buffer_handle[IP_24XX_RCVBUF_HANDLES]; /* Buffer handles. */
1265 1212  } ip_rcv_24xx_entry_t;
1266 1213  
1267 1214  /*
1268 1215   * ISP receive buffer container structure definition.
1269 1216   */
1270 1217  typedef struct rcvbuf {
1271 1218          uint32_t bufp[2];               /* Buffer pointer. */
1272 1219          uint16_t handle;                /* Buffer handle. */
1273 1220          uint16_t reserved;
1274 1221  } rcvbuf_t;
1275 1222  
1276 1223  /*
1277 1224   * ISP24xx queue - IP Load Buffer Pool entry structure definition.
1278 1225   */
1279 1226  #define IP_POOL_BUFFERS         4
1280 1227  #define IP_BUF_POOL_TYPE        0x3d
1281      -typedef struct ip_buf_pool_entry  {
1282      -        uint8_t  entry_type;            /* Entry type. */
1283      -        uint8_t  entry_count;           /* Entry count. */
1284      -        uint8_t  sys_define;            /* System defined. */
1285      -        uint8_t  entry_status;          /* Entry Status. */
     1228 +typedef struct ip_buf_pool_entry {
     1229 +        uint8_t entry_type;             /* Entry type. */
     1230 +        uint8_t entry_count;            /* Entry count. */
     1231 +        uint8_t sys_define;             /* System defined. */
     1232 +        uint8_t entry_status;           /* Entry Status. */
1286 1233          uint32_t handle;                /* System handle */
1287 1234          uint16_t status;
1288 1235          uint16_t buffer_pool_id;
1289 1236          uint16_t option;
1290      -        uint8_t  buffer_count;
1291      -        uint8_t  buffer_count_h;
     1237 +        uint8_t buffer_count;
     1238 +        uint8_t buffer_count_h;
1292 1239          rcvbuf_t buffers[IP_POOL_BUFFERS];
1293 1240  } ip_buf_pool_entry_t;
1294 1241  /*
1295 1242   * ISP2400 queue - Virtual Port Modify IOCB structure definition.
1296 1243   */
1297 1244  #define VP_MODIFY_TYPE          0x31
1298 1245  typedef struct vp_modify_entry {
1299      -        uint8_t  entry_type;            /* Entry type. */
1300      -        uint8_t  entry_count;           /* Entry count. */
1301      -        uint8_t  sys_define;            /* System defined. */
1302      -        uint8_t  entry_status;          /* Entry Status. */
     1246 +        uint8_t entry_type;             /* Entry type. */
     1247 +        uint8_t entry_count;            /* Entry count. */
     1248 +        uint8_t sys_define;             /* System defined. */
     1249 +        uint8_t entry_status;           /* Entry Status. */
1303 1250          uint32_t handle;                /* System handle */
1304 1251          uint16_t reserved;
1305 1252          uint16_t status;
1306      -        uint8_t  command;
1307      -        uint8_t  vp_count;
1308      -        uint8_t  first_vp_index;
1309      -        uint8_t  second_vp_index;
1310      -        uint8_t  first_options;
1311      -        uint8_t  first_hard_prev_addr;
1312      -        uint8_t  reserved_2[2];
1313      -        uint8_t  first_port_name[8];
1314      -        uint8_t  first_node_name[8];
1315      -        uint8_t  second_options;
1316      -        uint8_t  second_hard_prev_addr;
1317      -        uint8_t  reserved_3[2];
1318      -        uint8_t  second_port_name[8];
1319      -        uint8_t  second_node_name[8];
1320      -        uint8_t  reserved_4[6];
     1253 +        uint8_t command;
     1254 +        uint8_t vp_count;
     1255 +        uint8_t first_vp_index;
     1256 +        uint8_t second_vp_index;
     1257 +        uint8_t first_options;
     1258 +        uint8_t first_hard_prev_addr;
     1259 +        uint8_t reserved_2[2];
     1260 +        uint8_t first_port_name[8];
     1261 +        uint8_t first_node_name[8];
     1262 +        uint8_t second_options;
     1263 +        uint8_t second_hard_prev_addr;
     1264 +        uint8_t reserved_3[2];
     1265 +        uint8_t second_port_name[8];
     1266 +        uint8_t second_node_name[8];
     1267 +        uint8_t reserved_4[6];
1321 1268          uint16_t fcf_index;
1322 1269  } vp_modify_entry_t;
1323 1270  
1324 1271  /*
1325 1272   * ISP2400 VP modify commands
1326 1273   */
1327 1274  #define VPM_MODIFY              0x0
1328 1275  #define VPM_MODIFY_ENABLE       0x1
1329 1276  
1330 1277  /*
1331 1278   * ISP2400 queue - Virtual Port Control IOCB structure definition.
1332 1279   */
1333 1280  #define VP_CONTROL_TYPE         0x30
1334 1281  typedef struct vp_control_entry {
1335      -        uint8_t  entry_type;            /* Entry type. */
1336      -        uint8_t  entry_count;           /* Entry count. */
1337      -        uint8_t  sys_define;            /* System defined. */
1338      -        uint8_t  entry_status;          /* Entry Status. */
     1282 +        uint8_t entry_type;             /* Entry type. */
     1283 +        uint8_t entry_count;            /* Entry count. */
     1284 +        uint8_t sys_define;             /* System defined. */
     1285 +        uint8_t entry_status;           /* Entry Status. */
1339 1286          uint32_t handle;                /* System handle */
1340 1287          uint16_t vp_index_failed;
1341 1288          uint16_t status;
1342      -        uint8_t  command;
1343      -        uint8_t  command_h;
1344      -        uint8_t  vp_count;
1345      -        uint8_t  vp_count_h;
1346      -        uint8_t  vp_index[16];
1347      -        uint8_t  reserved[30];
     1289 +        uint8_t command;
     1290 +        uint8_t command_h;
     1291 +        uint8_t vp_count;
     1292 +        uint8_t vp_count_h;
     1293 +        uint8_t vp_index[16];
     1294 +        uint8_t reserved[30];
1348 1295          uint16_t fcf_index;
1349 1296  } vp_control_entry_t;
1350 1297  
1351 1298  /*
1352 1299   * ISP2400 VP control commands
1353 1300   */
1354 1301  #define VPC_ENABLE              0x0
1355 1302  #define VPC_DISABLE             0x8
1356 1303  #define VPC_DISABLE_INIT        0x9     /* Only 2400 & 2500 */
1357 1304  #define VPC_DISABLE_LOGOUT      0xa
1358 1305  #define VPC_DISABLE_LOGOUT_ALL  0xb
1359 1306  
1360 1307  /*
1361 1308   * ISP2400 queue - Report ID Acquisition IOCB structure definition.
1362 1309   */
1363 1310  #define REPORT_ID_TYPE          0x32
1364 1311  typedef struct report_id_0 {
1365      -        uint8_t  entry_type;            /* Entry type. */
1366      -        uint8_t  entry_count;           /* Entry count. */
1367      -        uint8_t  sys_define;            /* System defined. */
1368      -        uint8_t  entry_status;          /* Entry Status. */
     1312 +        uint8_t entry_type;             /* Entry type. */
     1313 +        uint8_t entry_count;            /* Entry count. */
     1314 +        uint8_t sys_define;             /* System defined. */
     1315 +        uint8_t entry_status;           /* Entry Status. */
1369 1316          uint32_t handle;                /* System handle */
1370      -        uint8_t  acq_cnt;               /* format 0 acquired, format 1 count */
1371      -        uint8_t  setup;                 /* format 0 */
1372      -        uint8_t  reserved[2];
1373      -        uint8_t  port_id[3];
1374      -        uint8_t  format;
1375      -        uint8_t  vp_index[16];
1376      -        uint8_t  reserved_1[32];
     1317 +        uint8_t vp_acquired;
     1318 +        uint8_t vp_setup;
     1319 +        uint8_t reserved[2];
     1320 +        uint8_t port_id[3];
     1321 +        uint8_t format;
     1322 +        uint8_t vp_index[16];
     1323 +        uint8_t reserved_1[32];
1377 1324  } report_id_0_t;
1378 1325  
1379 1326  typedef struct report_id_1 {
1380      -        uint8_t  entry_type;            /* Entry type. */
1381      -        uint8_t  entry_count;           /* Entry count. */
1382      -        uint8_t  sys_define;            /* System defined. */
1383      -        uint8_t  entry_status;          /* Entry Status. */
     1327 +        uint8_t entry_type;             /* Entry type. */
     1328 +        uint8_t entry_count;            /* Entry count. */
     1329 +        uint8_t sys_define;             /* System defined. */
     1330 +        uint8_t entry_status;           /* Entry Status. */
1384 1331          uint32_t handle;                /* System handle */
1385 1332          uint16_t vp_count;
1386      -        uint8_t  vp_index;
1387      -        uint8_t  status;
1388      -        uint8_t  port_id[3];
1389      -        uint8_t  format;
1390      -        uint8_t  reserved[48];
     1333 +        uint8_t vp_index;
     1334 +        uint8_t vp_status;
     1335 +        uint8_t port_id[3];
     1336 +        uint8_t format;
     1337 +        uint8_t reserved[48];
1391 1338  } report_id_1_t;
1392 1339  
     1340 +typedef struct report_id_acq {
     1341 +        uint8_t entry_type;             /* Entry type. */
     1342 +        uint8_t entry_count;            /* Entry count. */
     1343 +        uint8_t sys_define;             /* System defined. */
     1344 +        uint8_t entry_status;           /* Entry Status. */
     1345 +        uint32_t handle;                /* System handle */
     1346 +        uint8_t vp_acquired;
     1347 +        uint8_t vp_setup;
     1348 +        uint8_t vp_index;
     1349 +        uint8_t vp_status;
     1350 +        uint8_t port_id[3];
     1351 +        uint8_t format;
     1352 +        uint8_t status_subcode;
     1353 +        uint8_t flags;
     1354 +        uint16_t fip_flags;
     1355 +        uint16_t fcf_index;
     1356 +        uint16_t mac[3];
     1357 +        uint8_t reserved[4];
     1358 +        uint8_t ls_rjt_subcode;
     1359 +        uint8_t ls_rjt_explanation;
     1360 +        uint8_t ls_rjt_reason_code;
     1361 +        uint8_t reserved_1[29];
     1362 +} report_id_acq_t;
     1363 +
1393 1364  /*
1394 1365   * ISP2400 queue - Verify Menlo FW entry structure definition.
1395 1366   */
1396 1367  #define VERIFY_MENLO_TYPE       0x1b
1397 1368  typedef struct vfy_menlo_entry {
1398      -        uint8_t  entry_type;            /* Entry type. */
1399      -        uint8_t  entry_count;           /* Entry count. */
1400      -        uint8_t  sys_define;            /* System defined. */
1401      -        uint8_t  entry_status;          /* Entry Status. */
     1369 +        uint8_t entry_type;             /* Entry type. */
     1370 +        uint8_t entry_count;            /* Entry count. */
     1371 +        uint8_t sys_define;             /* System defined. */
     1372 +        uint8_t entry_status;           /* Entry Status. */
1402 1373          uint32_t handle;                /* System handle */
1403 1374          uint16_t options_status;
1404 1375          uint16_t failure_code;
1405 1376          uint16_t dseg_count;
1406 1377          uint16_t reserved_1[3];
1407 1378          uint32_t fw_version;
1408 1379          uint32_t exch_addr;
1409 1380          uint32_t reserved_2[3];
1410 1381          uint32_t fw_size;
1411 1382          uint32_t fw_sequence_size;
1412 1383          uint32_t relative_offset;
1413      -        uint32_t dseg_0_address[2];     /* Data segment 0 address. */
1414      -        uint32_t dseg_0_length;         /* Data segment 0 length. */
     1384 +        ql_64bit_data_seg_t     dseg;   /* Data segments. */
1415 1385  } vfy_menlo_entry_t;
1416 1386  
1417 1387  /*
1418 1388   * Option Flags.
1419 1389   */
1420 1390  #define VMO_DSD_CHAINING        BIT_15
1421 1391  #define VM_END_OF_DATA          BIT_14
1422 1392  #define VMF_DIAGNOSTIC_FW       BIT_3
1423 1393  #define VMF_DO_NOT_RESET        BIT_2
1424 1394  #define VMF_FORCE_UPDATE_FW     BIT_1
1425 1395  #define VMF_DO_NOT_UPDATE_FW    BIT_0
1426 1396  
1427 1397  /*
1428 1398   * ISP2400 queue - Access Menlo Data entry structure definition.
1429 1399   */
1430 1400  #define MENLO_DATA_TYPE         0x2b
1431 1401  typedef struct menlo_data_entry {
1432      -        uint8_t  entry_type;            /* Entry type. */
1433      -        uint8_t  entry_count;           /* Entry count. */
1434      -        uint8_t  sys_define;            /* System defined. */
1435      -        uint8_t  entry_status;          /* Entry Status. */
     1402 +        uint8_t entry_type;             /* Entry type. */
     1403 +        uint8_t entry_count;            /* Entry count. */
     1404 +        uint8_t sys_define;             /* System defined. */
     1405 +        uint8_t entry_status;           /* Entry Status. */
1436 1406          uint32_t handle;                /* System handle */
1437 1407          uint16_t options_status;
1438 1408          uint16_t failure_code;
1439 1409          uint16_t dseg_count;
1440 1410          uint16_t reserved_1[3];
1441 1411          uint32_t parameter_1;
1442 1412          uint32_t parameter_2;
1443 1413          uint32_t parameter_3;
1444 1414          uint32_t reserved_2[3];
1445 1415          uint32_t total_byte_count;
1446 1416          uint32_t reserved_3;
1447      -        uint32_t dseg_0_address[2];     /* Data segment 0 address. */
1448      -        uint32_t dseg_0_length;         /* Data segment 0 length. */
     1417 +        ql_64bit_data_seg_t     dseg;   /* Data segments. */
1449 1418  } menlo_data_entry_t;
1450 1419  
1451 1420  /*
1452 1421   * Mailbox IOCB.
1453 1422   */
1454 1423  typedef union ql_mbx_iocb {
1455 1424          cmd_entry_t             cmd;
1456 1425          cmd_3_entry_t           cmd3;
1457 1426          cmd7_24xx_entry_t       cmd24;
1458 1427          ms_entry_t              ms;
1459 1428          ct_passthru_entry_t     ms24;
1460 1429          abort_cmd_entry_t       abo;
1461 1430          task_mgmt_entry_t       mgmt;
1462 1431          sts_entry_t             sts;
1463 1432          sts_24xx_entry_t        sts24;
1464 1433          log_entry_t             log;
1465 1434          vp_control_entry_t      vpc;
1466 1435          vp_modify_entry_t       vpm;
1467 1436          vfy_menlo_entry_t       mvfy;
1468 1437          menlo_data_entry_t      mdata;
     1438 +        els_passthru_entry_t    els;
1469 1439  } ql_mbx_iocb_t;
1470 1440  
1471 1441  /*
1472 1442   * Global Data in ql_iocb.c source file.
1473 1443   */
1474 1444  
1475 1445  /*
1476 1446   * Global Function Prototypes in ql_iocb.c source file.
1477 1447   */
1478 1448  void ql_start_iocb(ql_adapter_state_t *, ql_srb_t *);
1479      -void ql_isp_cmd(ql_adapter_state_t *);
1480      -int ql_marker(ql_adapter_state_t *, uint16_t, uint16_t, uint8_t);
     1449 +int ql_marker(ql_adapter_state_t *, uint16_t, ql_lun_t *lq, uint8_t);
1481 1450  void ql_isp_rcvbuf(ql_adapter_state_t *);
1482      -void ql_command_iocb(ql_adapter_state_t *, ql_srb_t *, void *);
1483      -void ql_ms_iocb(ql_adapter_state_t *, ql_srb_t *, void *);
1484      -void ql_ip_iocb(ql_adapter_state_t *, ql_srb_t *, void *);
1485      -void ql_command_24xx_iocb(ql_adapter_state_t *, ql_srb_t *, void *);
1486      -void ql_ms_24xx_iocb(ql_adapter_state_t *, ql_srb_t *, void *);
1487      -void ql_ip_24xx_iocb(ql_adapter_state_t *, ql_srb_t *, void *);
1488      -void ql_els_24xx_iocb(ql_adapter_state_t *, ql_srb_t *, void *);
     1451 +void ql_command_iocb(ql_adapter_state_t *, ql_request_q_t *, ql_srb_t *,
     1452 +    void *);
     1453 +void ql_ms_iocb(ql_adapter_state_t *, ql_request_q_t *, ql_srb_t *, void *);
     1454 +void ql_ip_iocb(ql_adapter_state_t *, ql_request_q_t *, ql_srb_t *, void *);
     1455 +void ql_command_24xx_iocb(ql_adapter_state_t *, ql_request_q_t *, ql_srb_t *,
     1456 +    void *);
     1457 +void ql_ms_24xx_iocb(ql_adapter_state_t *, ql_request_q_t *, ql_srb_t *,
     1458 +    void *);
     1459 +void ql_ip_24xx_iocb(ql_adapter_state_t *, ql_request_q_t *, ql_srb_t *,
     1460 +    void *);
1489 1461  
1490 1462  #ifdef  __cplusplus
1491 1463  }
1492 1464  #endif
1493 1465  
1494 1466  #endif /* _QL_IOCB_H */
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX