The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/dev/ic/amireg.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*      $OpenBSD: amireg.h,v 1.30 2008/10/22 18:42:29 marco Exp $       */
    2 
    3 /*
    4  * Copyright (c) 2000 Michael Shalayeff
    5  * Copyright (c) 2005 Marco Peereboom
    6  * All rights reserved.
    7  *
    8  * Redistribution and use in source and binary forms, with or without
    9  * modification, are permitted provided that the following conditions
   10  * are met:
   11  * 1. Redistributions of source code must retain the above copyright
   12  *    notice, this list of conditions and the following disclaimer.
   13  * 2. Redistributions in binary form must reproduce the above copyright
   14  *    notice, this list of conditions and the following disclaimer in the
   15  *    documentation and/or other materials provided with the distribution.
   16  *
   17  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
   18  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   19  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
   20  * IN NO EVENT SHALL THE AUTHOR OR HIS RELATIVES BE LIABLE FOR ANY DIRECT,
   21  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
   22  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
   23  * SERVICES; LOSS OF MIND, USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   24  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
   25  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
   26  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
   27  * THE POSSIBILITY OF SUCH DAMAGE.
   28  */
   29 
   30 #define AMI_MAX_PDRIVES         (75)
   31 #define AMI_MAX_LDRIVES         8
   32 #define AMI_MAX_SPANDEPTH       4
   33 #define AMI_MAX_DEVDEPTH        8
   34 #define AMI_MAX_TARGET          16
   35 
   36 #define AMI_BIG_MAX_PDRIVES     (256)
   37 #define AMI_BIG_MAX_LDRIVES     40
   38 #define AMI_BIG_MAX_SPANDEPTH   8
   39 #define AMI_BIG_MAX_DEVDEPTH    32
   40 
   41 #define AMI_MAXCMDS     126             /* theoretical limit is 250 */
   42 #define AMI_SECTOR_SIZE 512
   43 #define AMI_MAXOFFSETS  26
   44 #define AMI_SGEPERCMD   32              /* to prevent page boundary crossing */
   45 #define AMI_MAX_BUSYWAIT 10             /* wait up to 10 usecs */
   46 #define AMI_MAX_POLLWAIT 1000000        /* wait up to 1000 000 usecs */
   47 #define AMI_MAXIOCTLCMDS 1              /* number of parallel ioctl calls */
   48 #define AMI_MAXPROCS     2              /* number of processors on a channel */
   49 #define AMI_MAXRAWCMDS   2              /* number of parallel processor cmds */
   50  
   51 #define AMI_MAXFER      (AMI_MAXOFFSETS * PAGE_SIZE)
   52 
   53 #define AMI_QIDB        0x20
   54 #define         AMI_QIDB_EXEC   0x01
   55 #define         AMI_QIDB_ACK    0x02
   56 #define AMI_QODB        0x2c
   57 #define         AMI_QODB_READY  0x10001234
   58 
   59 #define AMI_SCMD        0x10
   60 #define         AMI_SCMD_EXEC   0x10
   61 #define         AMI_SCMD_ACK    0x08
   62 #define AMI_SMBSTAT     0x10
   63 #define         AMI_SMBST_BUSY  0x10
   64 #define AMI_SIEM        0x11
   65 #define         AMI_SEIM_ENA    0xc0
   66 #define AMI_SMBADDR     0x14
   67 #define AMI_SMBENA      0x18
   68 #define AMI_ISTAT       0x1a
   69 #define         AMI_ISTAT_PEND  0x40
   70 
   71 /* commands */
   72 #define AMI_READ        0x01
   73 #define AMI_WRITE       0x02
   74 #define AMI_PASSTHRU    0x03    /* pass scsi cdb to the device */
   75 #define AMI_EINQUIRY    0x04    /* extended inquiry */
   76 #define AMI_INQUIRY     0x05    /* inquiry */
   77 #define AMI_CHSTATE     0x06    /* pad[0] -- state */
   78 #define         AMI_STATE_ON    3
   79 #define         AMI_STATE_FAIL  4
   80 #define         AMI_STATE_SPARE 6
   81 #define AMI_RCONFIG     0x07    /* read configuration up to 4 spans */
   82 #define AMI_REBUILDPD   0x08    /* rebuild physical drive */
   83 #define AMI_CHECK       0x09    /* check consistency */
   84 #define AMI_FLUSH       0x0a
   85 #define AMI_ILDRIVE     0x0b    /* init logical drive */
   86 #define AMI_EINQUIRY3   0x0c
   87 #define AMI_DCHDR       0x14    /* get/set dedicated channel/drives */
   88 #define AMI_GRBLDPROGR  0x18    /* get rebuild progress */
   89 #define AMI_GCHECKPROGR 0x19    /* get check consistency progress */
   90 #define AMI_GILDRPROGR  0x1b    /* get init logical drive progress */
   91 #define AMI_WRCONFIG    0x20    /* write configuration up to 4 spans */
   92 #define AMI_RWRCONFIG   0x21    /* raid write config */
   93 #define AMI_RRDCONFIG   0x22    /* raid read config */
   94 #define AMI_GRBLDRATE   0x23    /* get rebuild rate */
   95 #define AMI_SRBLDRATE   0x24    /* set rebuild rate */
   96 #define AMI_UPLDCFGUT   0x25    /* upload config utility */
   97 #define AMI_UPLDRVPROP  0x26    /* update logical drive property */
   98 #define AMI_ABRTREBLD   0x28    /* abort rebuild */
   99 #define AMI_ABRTCHECK   0x29    /* abort check consistency */
  100 #define AMI_ABRTILDRV   0x2b    /* abort init logical drive */
  101 #define AMI_WRBLOCK     0x2c    /* flash write block */
  102 #define AMI_PRGFLASH    0x2d    /* flash program */
  103 #define AMI_SFLUSHINTV  0x2e    /* channel == cache flush interval */
  104 #define AMI_PCHIPSETVAL 0x2f    /* program chipset values */
  105 #define         AMI_CS_NEPTUNE  0x61
  106 #define         AMI_CS_OTHER    0xe1
  107 #define         AMI_CS_TRITON   0xe2
  108 #define AMI_SNEG        0x30    /* scsi sync negotiation get/ena/dis */
  109 #define         AMI_SNEG_GET    1
  110 #define         AMI_SNEG_SET    2
  111 #define AMI_QTAG        0x31    /* scsi queue tag get/set */
  112 #define         AMI_QTAG_GET    1
  113 #define         AMI_QTAG_SET    2
  114 #define AMI_GSUPARAM    0x32    /* get spinup parameters */
  115 #define AMI_SSUPARAM    0x33    /* set spinup parameters */
  116 #define AMI_GDROAMINFO  0x34
  117 #define AMI_GMACHID     0x36    /* get machine id */
  118 #define AMI_BIOSPDATA   0x40    /* get bios private data */
  119 #define AMI_I2OCFGDLG   0x41    /* I2O config dialog */
  120 #define AMI_GCACHESTAT  0x50    /* get cache statistics */
  121 #define AMI_SPEAKER     0x51    /* speaker control */
  122 #define         AMI_SPKR_OFF    0
  123 #define         AMI_SPKR_ON     1
  124 #define         AMI_SPKR_SHUT   2
  125 #define         AMI_SPKR_GVAL   3
  126 #define         AMI_SPKR_TEST   4
  127 #define AMI_GDUMP       0x52    /* get error condition in text */
  128 #define AMI_SENSEDUMPA  0x53    /* get SCSI sense dump area */
  129 #define AMI_STDIAG      0x54    /* start diagnostics -- 2.1 */
  130 #define AMI_FRAID_PF    0x55    /* get/set flexraid power fail */
  131 #define         AMI_GFRAIDPF    1
  132 #define         AMI_SFRAIDPF    2
  133 #define AMI_FRAIDVS     0x56    /* get/set flexraid virtual sizing */
  134 #define         AMI_GFRAIDVS    1
  135 #define         AMI_SFRAIDVS    2
  136 #define AMI_BBMANAGE    0x57    /* bad block manage */
  137 #define AMI_RECONSTRUCT 0x60    /* begin reconstruction */
  138 #define AMI_GRECONSTRUCT 0x61   /* get reconstruction progress */
  139 #define AMI_BIOSSTAT    0x62    /* enable/disable bios */
  140 #define AMI_RDCFGDSK    0x63    /* read configuration from disk */
  141 #define AMI_AREBUILD    0x64    /* get/set autorebuild/battery charge */
  142 #define         AMI_GUCAP       1       /* get ultra capabilities */
  143 #define         AMI_SUCAP       2       /* set ultra capability */
  144 #define         AMI_GARBLD      3
  145 #define         AMI_SARBLD      4
  146 #define         AMI_GFCC        5       /* get fast charge counter */
  147 #define         AMI_SFCC        6       /* set fast charge counter */
  148 #define         AMI_GCUCAP      7       /* get channel ultra capabilities */
  149 #define         AMI_SCUCAP      8       /* set channel ultra capabilities */
  150 #define AMI_SFD         0x66    /* set factory defaults */
  151 #define AMI_RDCONFIG8   0x67    /* read configuration up to 8 spans */
  152 #define AMI_WRCONFIG8   0x68    /* write config up to 8 spans */
  153 #define AMI_ESENSEDUMPA 0x69    /* extended scsi dump area */
  154 #define AMI_RERRC       0x6a    /* reset error counter */
  155 #define AMI_BOOTUP      0x6b    /* ena/dis physical drive boot up */
  156 #define AMI_ENCLOSURE   0x6c    /* get/set enclosure type */
  157 #define AMI_WRCFGD      0x6c    /* write config disk -- 2.1 */
  158 #define AMI_HAPIRRLD    0x6e
  159 #define AMI_LDRVRIGHTS  0x6f
  160 #define AMI_CLUSTERING  0x70
  161 #define AMI_GCHPROP     0x71    /* get channel properties */
  162 #define AMI_SCHTERM     0x72    /* set channel termination */
  163 #define         AMI_TERM_DISABLE 0
  164 #define         AMI_TERM_ENABLE 1
  165 #define         AMI_TERM_HIGH   2
  166 #define         AMI_TERM_WIDE   3
  167 #define         AMI_TERM_DFLT   16
  168 #define AMI_QUIETCH     0x73    /* quiet channel */
  169 #define AMI_ACTIVATECH  0x74    /* activate channel */
  170 #define AMI_STARTU      0x75    /* start unit, pad[0] -- sync/async */
  171 #define         AMI_STARTU_SYNC 1
  172 #define         AMI_STARTU_ASYN 2
  173 #define AMI_STOPU       0x76    /* stop unit */
  174 #define AMI_GERRC       0x77    /* get error counter */
  175 #define AMI_GBTDS       0x78    /* get boot time drive status */
  176 #define AMI_FMTPROG     0x79
  177 #define AMI_RCAPCMD     0x7a    /* read capacity */
  178 #define AMI_WRCRX       0x7b
  179 #define AMI_RDCRX       0x7c
  180 #define AMI_GINID       0x7d    /* get initiator id */
  181 #define AMI_HAPICMD     0x7e
  182 #define AMI_SINID       0x7f    /* set initiator id */
  183 #define AMI_SMARTMSEL   0x80
  184 #define AMI_SPSTARTU    0x85    /* special start unit command */
  185 #define AMI_NVFAILHIST  0x90
  186 #define AMI_DCMDABRT    0x91
  187 #define AMI_GDRIVEHIST  0x92    /* get drive history */
  188 #define AMI_GESENSE     0x93    /* get extended sense data dump */
  189 #define AMI_ADAPTER     0x95    /* save/restore adapter params */
  190 #define         AMI_ADP_SAVE    0
  191 #define         AMI_ADP_LOAD    1
  192 #define AMI_RESET       0x96    /* adapter reset */
  193 #define AMI_PRGCLASS    0x97    /* program class code */
  194 #define AMI_UPHTML      0x98    /* upload html utility */
  195 #define AMI_NEWCFG      0x99
  196 #define AMI_NEWOP       0xa0
  197 #define AMI_FCOP        0xa1
  198 #define         AMI_FC_PROCEED  0x02
  199 #define         AMI_FC_DELLDRV  0x03
  200 #define         AMI_FC_RDCONF   0x04
  201 #define         AMI_FC_RDFCONF  0x05
  202 #define         AMI_FC_GCONFDSK 0x06
  203 #define         AMI_FC_CHLDNO   0x07
  204 #define         AMI_FC_CMPCTCFG 0x08
  205 #define         AMI_FC_DRVGRP   0x09
  206 #define         AMI_FC_GLOOPINF 0x0a
  207 #define         AMI_FC_CHLOOPID 0x0b
  208 #define         AMI_FC_GNSCH    0x0c
  209 #define         AMI_FC_WRCONF   0x0d
  210 #define         AMI_FC_PRODINF  0x0e
  211 #define         AMI_FC_EINQ3    0x0f
  212 #define         AMI_FC_EINQ4    0x1f
  213 #define                 AMI_FC_EINQ3_SOLICITED_NOTIFY   0x01
  214 #define                 AMI_FC_EINQ3_SOLICITED_FULL     0x02
  215 #define                 AMI_FC_EINQ3_UNSOLICITED        0x03
  216 #define AMI_MISC        0xa4
  217 #define         AMI_GET_BGI     0x13
  218 #define         AMI_GET_IO_CMPL 0x5b
  219 #define         AMI_SET_IO_CMPL 0x5c
  220 #define AMI_CHFUNC      0xa9
  221 #define AMI_MANAGE      0xb0    /* manage functions */
  222 #define         AMI_MGR_LUN     0x00
  223 #define         AMI_MGR_THERM   0x01
  224 #define         AMI_MGR_EEPROM  0x02
  225 #define         AMI_MGR_LDNAMES 0x03
  226 #define         AMI_MGR_FCWWN   0x04
  227 #define         AMI_MGR_CFGACC  0x05
  228 #define AMI_HSPDIAG     0xb1
  229 #define AMI_GESENSEINFO 0xb2    /* get extended sense info */
  230 #define AMI_SYSFLUSH    0xfe    /* flush system */
  231 
  232 /* command structures */
  233 struct ami_iocmd {
  234         u_int8_t        acc_cmd;
  235         u_int8_t        acc_id;
  236         union {
  237 #define acc_mbox        _._ami_mbox
  238                 struct {
  239                         u_int16_t       amb_nsect;
  240                         u_int32_t       amb_lba;
  241                         u_int32_t       amb_data;
  242                         u_int8_t        amb_ldn;        /* logical drive no */
  243                         u_int8_t        amb_nsge;
  244                         u_int8_t        amb_reserved;
  245                 } __packed _ami_mbox;
  246 
  247 #define acc_io          _._ami_io
  248                 struct {
  249                         u_int8_t        aio_channel;
  250                         u_int8_t        aio_param;
  251                         u_int8_t        aio_pad[4];
  252                         u_int32_t       aio_data;
  253                         u_int8_t        aio_pad1[3];
  254                 } __packed _ami_io;
  255 
  256 #define acc_passthru    _._ami_passthru
  257                 struct {
  258                         u_int16_t       apt_dummy0;
  259                         u_int32_t       apt_dummy1;
  260                         u_int32_t       apt_data;
  261                         u_int8_t        apt_dummy2;
  262                         u_int8_t        apt_dummy3;
  263                         u_int8_t        apt_reserved;
  264                 } __packed _ami_passthru;
  265 
  266 #define acc_ldrv        _._ami_ldrv
  267                 struct {
  268                         u_int16_t       ald_dummy0;
  269                         u_int32_t       ald_dummy1;
  270                         u_int32_t       ald_data;
  271                         u_int8_t        ald_ldrv;
  272                         u_int8_t        ald_dummy2;
  273                         u_int8_t        ald_reserved;
  274                 } __packed _ami_ldrv;
  275         } __packed _;
  276         u_int8_t        acc_busy;
  277         u_int8_t        acc_nstat;
  278         u_int8_t        acc_status;
  279 #define AMI_MAXSTATACK  0x2e
  280         u_int8_t        acc_cmplidl[AMI_MAXSTATACK];
  281         u_int8_t        acc_poll;
  282         u_int8_t        acc_ack;
  283         u_int8_t        acc_pad[0x3e];  /* pad to 128 bytes */
  284 } __packed;
  285 
  286 struct ami_sgent {
  287         u_int32_t       asg_addr;
  288         u_int32_t       asg_len;
  289 } __packed;
  290 
  291 struct ami_iocmd64 {
  292         u_int8_t        acc_cmd;
  293         u_int8_t        acc_id;
  294         union {
  295                 struct {
  296                         u_int16_t       amb_nsect;
  297                         u_int32_t       amb_lba;
  298                         u_int32_t       amb_reserved1;
  299                         u_int8_t        amb_ldn;        /* logical drive no */
  300                         u_int8_t        amb_nsge;       /* high bit == 1 */
  301                         u_int8_t        amb_reserved;
  302                 } __packed _ami_mbox;
  303 
  304                 struct {
  305                         u_int8_t        aio_channel;
  306                         u_int8_t        aio_param;
  307                         u_int8_t        aio_pad[4];
  308                         u_int32_t       aio_data;
  309                         u_int8_t        aio_pad1[3];
  310                 } __packed _ami_io;
  311 
  312                 struct {
  313                         u_int16_t       apt_dummy0;
  314                         u_int32_t       apt_dummy1;
  315                         u_int32_t       apt_data;
  316                         u_int8_t        apt_dummy2;
  317                         u_int8_t        apt_dummy3;
  318                         u_int8_t        apt_reserved;
  319                 } __packed _ami_passthru;
  320 
  321                 struct {
  322                         u_int16_t       ald_dummy0;
  323                         u_int32_t       ald_dummy1;
  324                         u_int32_t       ald_data;
  325                         u_int8_t        ald_ldrv;
  326                         u_int8_t        ald_dummy2;
  327                         u_int8_t        ald_reserved;
  328                 } __packed _ami_ldrv;
  329         } __packed _;
  330         u_int8_t        acc_busy;
  331         u_int32_t       acc_data_l;
  332         u_int32_t       acc_data_h;
  333         u_int32_t       acc_reserved;
  334         u_int8_t        acc_nstat;
  335         u_int8_t        acc_status;
  336         u_int8_t        acc_cmplidl[AMI_MAXSTATACK];
  337         u_int8_t        acc_poll;
  338         u_int8_t        acc_ack;
  339         u_int8_t        acc_pad[0x32];  /* pad to 128 bytes */
  340 } __packed;
  341 
  342 struct ami_sgent64 {
  343         u_int32_t       asg_addr_l;
  344         u_int32_t       asg_addr_h;
  345         u_int32_t       asg_len;
  346 } __packed;
  347 
  348 struct ami_passthrough {
  349         u_int8_t        apt_param;
  350 #define AMI_PTPARAM(t,a,l)      (((l) << 7) | (((a) & 1) << 3) | ((t) & 3))
  351 #define AMI_TIMEOUT_6   0
  352 #define AMI_TIMEOUT_60  1
  353 #define AMI_TIMEOUT_10m 2
  354 #define AMI_TIMEOUT_3h  3
  355         u_int8_t        apt_ldn;
  356         u_int8_t        apt_channel;
  357         u_int8_t        apt_target;
  358         u_int8_t        apt_qtag;
  359         u_int8_t        apt_qact;
  360 #define AMI_MAX_CDB     10
  361         u_int8_t        apt_cdb[AMI_MAX_CDB];
  362         u_int8_t        apt_ncdb;
  363         u_int8_t        apt_nsense;
  364 #define AMI_MAX_SENSE   32
  365         u_int8_t        apt_sense[AMI_MAX_SENSE];
  366         u_int8_t        apt_nsge;
  367         u_int8_t        apt_scsistat;
  368         u_int32_t       apt_data;
  369         u_int32_t       apt_datalen;
  370 } __packed;
  371 
  372 struct ami_inquiry {
  373         u_int8_t        ain_maxcmd;
  374         u_int8_t        ain_rbldrate;   /* rebuild rate %% */
  375         u_int8_t        ain_targets;    /* max targets per channel */
  376         u_int8_t        ain_channels;
  377         u_int8_t        ain_fwver[4];
  378         u_int16_t       ain_flashage;
  379         u_int8_t        ain_chipset;    /* parity generation policy */
  380         u_int8_t        ain_ramsize;
  381         u_int8_t        ain_flushintv;
  382         u_int8_t        ain_biosver[4];
  383         u_int8_t        ain_brdtype;
  384         u_int8_t        ain_scsisensealert;
  385         u_int8_t        ain_wrcfgcnt;   /* write config count */
  386         u_int8_t        ain_drvinscnt;  /* drive insertion count */
  387         u_int8_t        ain_insdrv;     /* inserted drive */
  388         u_int8_t        ain_battery;    /* battery status */
  389         u_int8_t        ain_reserved;
  390 
  391         u_int8_t        ain_nlogdrv;
  392         u_int8_t        ain_reserved1[3];
  393         u_int32_t       ain_ldsize[AMI_MAX_LDRIVES];
  394         u_int8_t        ain_ldprop[AMI_MAX_LDRIVES];
  395         u_int8_t        ain_ldstat[AMI_MAX_LDRIVES];
  396 
  397         u_int8_t        ain_pdstat[AMI_MAX_PDRIVES];
  398         u_int8_t        ain_predictivefailure;
  399 
  400         u_int8_t        ain_pdfmtinp[AMI_MAX_PDRIVES];
  401         u_int8_t        ain_reserved2[AMI_MAX_PDRIVES];
  402 
  403         u_int32_t       ain_esize;      /* extended data size */
  404         u_int16_t       ain_ssid;       /* subsystem id */
  405         u_int16_t       ain_ssvid;      /* subsystem vendor id */
  406         u_int32_t       ain_signature;
  407 #define AMI_SIGN431     0xfffe0001
  408 #define AMI_SIGN438     0xfffd0002
  409 #define AMI_SIGN762     0xfffc0003
  410 #define AMI_SIGNT5      0xfffb0004
  411 #define AMI_SIGN466     0xfffa0005
  412 } __packed;
  413 
  414 #define MAX_NOTIFY_SIZE 0x80
  415 #define CUR_NOTIFY_SIZE (sizeof(struct ami_notify))
  416 struct ami_notify {
  417         u_int32_t       ano_eventcounter;       /* incremented for changes */
  418 
  419         u_int8_t        ano_paramcounter;       /* param change */
  420         u_int8_t        ano_paramid;            /* param modified */
  421 #define AMI_PARAM_RBLD_RATE             0x01 /* new rebuild rate */
  422 #define AMI_PARAM_CACHE_FLUSH_INTERVAL  0x02 /* new cache flush interval */
  423 #define AMI_PARAM_SENSE_ALERT           0x03 /* pd caused check condition */
  424 #define AMI_PARAM_DRIVE_INSERTED        0x04 /* pd inserted */
  425 #define AMI_PARAM_BATTERY_STATUS        0x05 /* battery status */
  426 #define AMI_PARAM_NVRAM_EVENT_ALERT     0x06 /* NVRAM # of entries */
  427 #define AMI_PARAM_PATROL_READ_UPDATE    0x07 /* # pd done with patrol read */
  428 #define AMI_PARAM_PATROL_READ_STATUS    0x08 /* 0 stopped
  429                                               * 2 aborted
  430                                               * 4 started */
  431 
  432         u_int16_t       ano_paramval;           /* new val modified param */
  433 
  434         u_int8_t        ano_writeconfcounter;   /* write config */
  435         u_int8_t        ano_writeconfrsvd[3];
  436 
  437         u_int8_t        ano_ldopcounter;        /* ld op started/completed */
  438         u_int8_t        ano_ldopid;             /* ld modified */
  439         u_int8_t        ano_ldopcmd;            /* ld operation */
  440 #define AMI_LDCMD_CHKCONSISTANCY        0x01
  441 #define AMI_LDCMD_INITIALIZE            0x02
  442 #define AMI_LDCMD_RECONSTRUCTION        0x03
  443         u_int8_t        ano_ldopstatus;         /* status of the operation */
  444 #define AMI_LDOP_SUCCESS                0x00
  445 #define AMI_LDOP_FAILED                 0x01
  446 #define AMI_LDOP_ABORTED                0x02
  447 #define AMI_LDOP_CORRECTED              0x03
  448 #define AMI_LDOP_STARTED                0x04
  449 
  450         u_int8_t        ano_ldstatecounter;     /* change of ld state */
  451         u_int8_t        ano_ldstateid;          /* ld state changed */
  452         u_int8_t        ano_ldstatenew;         /* new state */
  453         u_int8_t        ano_ldstateold;         /* old state */
  454 #define AMI_RDRV_OFFLINE                0
  455 #define AMI_RDRV_DEGRADED               1
  456 #define AMI_RDRV_OPTIMAL                2
  457 #define AMI_RDRV_DELETED                3
  458 
  459         u_int8_t        ano_pdstatecounter;     /* change of pd state */
  460         u_int8_t        ano_pdstateid;          /* pd state changed */
  461         u_int8_t        ano_pdstatenew;         /* new state */
  462         u_int8_t        ano_pdstateold;         /* old state */
  463 #define AMI_PD_UNCNF                    0
  464 #define AMI_PD_ONLINE                   3
  465 #define AMI_PD_FAILED                   4
  466 #define AMI_PD_RBLD                     5
  467 #define AMI_PD_HOTSPARE                 6
  468 
  469         u_int8_t        ano_pdfmtcounter;       /* pd format started/over */
  470         u_int8_t        ano_pdfmtid;            /* pd id */
  471         u_int8_t        ano_pdfmtval;           /* format started/over */
  472 #define AMI_PDFMT_START                 0x01
  473 #define AMI_PDFMT_OVER                  0x02
  474         u_int8_t        ano_pdfmtrsvd;
  475 
  476         u_int8_t        ano_targxfercounter;    /* SCSI-2 Xfer rate change */
  477         u_int8_t        ano_targxferid;         /* pd that changed  */
  478         u_int8_t        ano_targxferval;        /* new xfer parameters */
  479         u_int8_t        ano_targxferrsvd;
  480 
  481         u_int8_t        ano_fclidchgcounter;    /* loop id changed */
  482         u_int8_t        ano_fclidpdid;          /* pd id */
  483         u_int8_t        ano_fclid0;             /* loop id on fc loop 0 */
  484         u_int8_t        ano_fclid1;             /* loop id on fc loop 1 */
  485 
  486         u_int8_t        ano_fclstatecounter;    /* loop state changed */
  487         u_int8_t        ano_fclstate0;          /* state of fc loop 0 */
  488         u_int8_t        ano_fclstate1;          /* state of fc loop 1 */
  489 #define AMI_FCLOOP_FAILED               0
  490 #define AMI_FCLOOP_ACTIVE               1
  491 #define AMI_FCLOOP_TRANSIENT            2
  492         u_int8_t        ano_fclstatersvd;
  493 } __packed;
  494 
  495 struct ami_fc_einquiry {
  496         u_int32_t       ain_size;       /* size of this structure */
  497 
  498         /* notify */
  499         struct  ami_notify ain_notify;
  500         u_int8_t        ain_notifyrsvd[MAX_NOTIFY_SIZE - CUR_NOTIFY_SIZE];
  501 
  502         u_int8_t        ain_rbldrate;   /* rebuild rate %% */
  503         u_int8_t        ain_flushintvl;
  504         u_int8_t        ain_sensealert;
  505         u_int8_t        ain_drvinscnt;  /* drive insertion count */
  506         u_int8_t        ain_battery;    /* battery status */
  507 
  508         u_int8_t        ain_nlogdrv;
  509         u_int8_t        ain_recon[AMI_BIG_MAX_LDRIVES / 8];
  510         u_int16_t       ain_stat[AMI_BIG_MAX_LDRIVES / 8];
  511 
  512         u_int32_t       ain_ldsize[AMI_BIG_MAX_LDRIVES];
  513         u_int8_t        ain_ldprop[AMI_BIG_MAX_LDRIVES];
  514         u_int8_t        ain_ldstat[AMI_BIG_MAX_LDRIVES];
  515 
  516         u_int8_t        ain_pdstat[AMI_BIG_MAX_PDRIVES];
  517         u_int16_t       ain_pdfmtinp[AMI_BIG_MAX_PDRIVES / 16];
  518         u_int8_t        ain_pdrates[80];        /* pdrv xfer rates */
  519         u_int8_t        ain_pad[263];           /* pad to 1k */
  520 } __packed;
  521 
  522 struct ami_fc_prodinfo {
  523         u_int32_t       api_size;       /* size of this structure */
  524         u_int32_t       api_config;
  525         u_int8_t        api_fwver[16];
  526         u_int8_t        api_biosver[16];
  527         u_int8_t        api_product[80];
  528         u_int8_t        api_maxcmd;
  529         u_int8_t        api_channels;
  530         u_int8_t        api_fcloops;
  531         u_int8_t        api_memtype;
  532         u_int32_t       api_signature;
  533         u_int16_t       api_ramsize;
  534         u_int16_t       api_ssid;
  535         u_int16_t       api_ssvid;
  536         u_int8_t        api_nnotify;
  537 } __packed;
  538 
  539 struct ami_diskarray {
  540         u_int8_t        ada_nld;
  541         u_int8_t        ada_pad[3];
  542         struct {
  543                 u_int8_t        adl_spandepth;
  544                 u_int8_t        adl_raidlvl;
  545                 u_int8_t        adl_rdahead;
  546                 u_int8_t        adl_stripesz;
  547                 u_int8_t        adl_status;
  548                 u_int8_t        adl_wrpolicy;
  549                 u_int8_t        adl_directio;
  550                 u_int8_t        adl_nstripes;
  551                 struct {
  552                         u_int32_t       ads_start;
  553                         u_int32_t       ads_length;     /* blocks */
  554                         struct {
  555                                 u_int8_t        add_channel;
  556                                 u_int8_t        add_target;
  557                         } __packed ads_devs[AMI_MAX_DEVDEPTH];
  558                 } __packed adl_spans[AMI_MAX_SPANDEPTH];
  559         } __packed ada_ldrv[AMI_MAX_LDRIVES];
  560         struct {
  561                 u_int8_t        adp_type;       /* SCSI device type */
  562                 u_int8_t        adp_ostatus;    /* status during config */
  563                 u_int8_t        adp_tagdepth;   /* level of tagging */
  564                 u_int8_t        adp_sneg;       /* sync negotiation */
  565                 u_int32_t       adp_size;
  566         } __packed ada_pdrv[AMI_MAX_PDRIVES];
  567 } __packed;
  568 
  569 struct ami_big_diskarray {
  570         u_int8_t        ada_nld;
  571         u_int8_t        ada_pad[3];
  572 #define ald ada_ldrv
  573         struct {
  574                 u_int8_t        adl_spandepth;
  575                 u_int8_t        adl_raidlvl;
  576                 u_int8_t        adl_rdahead;
  577                 u_int8_t        adl_stripesz;
  578                 u_int8_t        adl_status;
  579                 u_int8_t        adl_wrpolicy;
  580                 u_int8_t        adl_directio;
  581                 u_int8_t        adl_nstripes;
  582 #define         asp adl_spans
  583                 struct {
  584                         u_int32_t       ads_start;
  585                         u_int32_t       ads_length;     /* blocks */
  586 #define                 adv ads_devs
  587                         struct {
  588                                 u_int8_t        add_channel;
  589                                 u_int8_t        add_target;
  590                         } __packed ads_devs[AMI_BIG_MAX_DEVDEPTH];
  591                 } __packed adl_spans[AMI_BIG_MAX_SPANDEPTH];
  592         } __packed ada_ldrv[AMI_BIG_MAX_LDRIVES];
  593 #define apd ada_pdrv
  594         struct {
  595                 u_int8_t        adp_type;       /* SCSI device type */
  596                 u_int8_t        adp_ostatus;    /* status during config */
  597                 u_int8_t        adp_tagdepth;   /* level of tagging */
  598                 u_int8_t        adp_sneg;       /* sync negotiation */
  599                 u_int32_t       adp_size;
  600         } __packed ada_pdrv[AMI_BIG_MAX_PDRIVES];
  601 } __packed;
  602 
  603 struct ami_scsisense {
  604         u_int8_t        ase_end;
  605         struct {
  606                 u_int8_t        asd_channel;
  607                 u_int8_t        asd_target;
  608                 u_int16_t       asd_errcode;
  609                 u_int16_t       asd_sense;
  610                 u_int16_t       asd_addarea1;
  611                 u_int16_t       asd_addarea2;
  612                 u_int16_t       asd_cmdspec0;
  613                 u_int16_t       asd_cmdspec1;
  614                 u_int16_t       asd_asc_ascq;
  615         } __packed ase_dump[5];
  616 } __packed;
  617 
  618 struct ami_escsisense {
  619         u_int8_t        ase_end;
  620         struct {
  621                 u_int8_t        asd_channel;
  622                 u_int8_t        asd_target;
  623                 u_int16_t       asd_errcode;
  624                 u_int16_t       asd_sense;
  625                 u_int16_t       asd_addarea1;
  626                 u_int16_t       asd_addarea2;
  627                 u_int16_t       asd_cmdspec0;
  628                 u_int16_t       asd_cmdspec1;
  629                 u_int16_t       asd_asc_ascq;
  630                 u_int16_t       asd_extarea;
  631         } __packed ase_dump[5];
  632 } __packed;
  633 
  634 struct ami_cachestats {
  635         u_int32_t       acs_total;
  636         u_int32_t       acs_hits;
  637 } __packed;
  638 
  639 struct ami_drivehistory {
  640         struct {
  641                 u_int8_t        adh_error;
  642 #define AMI_ADHERR_TIMEOUT(e)   ((e) & 15)
  643 #define AMI_ADHERR_PARITY(e)    (((e) >> 4) & 15)
  644                 u_int8_t        adh_throttle;
  645         } __packed adh_err[3][16];      /* channels * drives */
  646         u_int8_t        adh_failidx;
  647         struct {
  648                 u_int8_t        adh_tag;
  649 #define AMI_ADHTAG_CH(t)        ((t) & 7)
  650 #define AMI_ADHTAG_TARG(t)      (((t) >> 3) & 15)
  651 #define AMI_ADHTAG_VALID(t)     ((t) & 0x80)
  652                 u_int8_t        reason;
  653 #define AMI_ADHERR_MEDIA        1
  654 #define AMI_ADHERR_NMEDIA       2
  655 #define AMI_ADHERR_CMDTMO       3
  656 #define AMI_ADHERR_SELTMO       4
  657 #define AMI_ADHERR_HAFAIL       5
  658 #define AMI_ADHERR_REASSIGN     6
  659 #define AMI_ADHERR_CMDFAIL      7
  660 #define AMI_ADHERR_OTHER        8
  661 
  662 #define AMI_FAILHISTORY         10
  663         } __packed adh_fail[AMI_FAILHISTORY];
  664 } __packed;
  665 
  666 struct ami_progress {
  667         u_int32_t       apr_progress;
  668 } __packed;

Cache object: 42b97ef30d6bca754ae75503a5bfd5de


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.