[BACK]Return to ioprbsvar.h CVS log [TXT][DIR] Up to [local] / sys / dev / i2o

Annotation of sys/dev/i2o/ioprbsvar.h, Revision 1.1

1.1     ! nbrk        1: /*     $OpenBSD: ioprbsvar.h,v 1.2 2005/09/15 05:33:39 krw Exp $       */
        !             2:
        !             3: /*
        !             4:  * Copyright (c) 2001 Niklas Hallqvist
        !             5:  * All rights reserved.
        !             6:  *
        !             7:  * Redistribution and use in source and binary forms, with or without
        !             8:  * modification, are permitted provided that the following conditions
        !             9:  * are met:
        !            10:  * 1. Redistributions of source code must retain the above copyright
        !            11:  *    notice, this list of conditions and the following disclaimer.
        !            12:  * 2. Redistributions in binary form must reproduce the above copyright
        !            13:  *    notice, this list of conditions and the following disclaimer in the
        !            14:  *    documentation and/or other materials provided with the distribution.
        !            15:  *
        !            16:  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
        !            17:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
        !            18:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
        !            19:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
        !            20:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
        !            21:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
        !            22:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        !            23:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
        !            24:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
        !            25:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
        !            26:  * SUCH DAMAGE.
        !            27:  */
        !            28:
        !            29: #ifndef _I2O_IOPRBSVAR_H_
        !            30: #define        _I2O_IOPRBSVAR_H_
        !            31:
        !            32: /*
        !            33:  * A command contol block, one for each corresponding command index of the
        !            34:  * controller.
        !            35:  */
        !            36: struct ioprbs_ccb {
        !            37:        TAILQ_ENTRY(ioprbs_ccb) ic_chain;
        !            38:        struct scsi_xfer *ic_xs;
        !            39: #if 0
        !            40:        struct aac_fib *ac_fib;         /* FIB associated with this command */
        !            41:        bus_addr_t ac_fibphys;          /* bus address of the FIB */
        !            42:        bus_dmamap_t ac_dmamap_xfer;
        !            43:        struct aac_sg_table *ac_sgtable;/* pointer to s/g table in command */
        !            44: #endif
        !            45:        int ic_timeout;
        !            46:        u_int32_t ic_blockno;
        !            47:        u_int32_t ic_blockcnt;
        !            48:        u_int8_t ic_flags;
        !            49: #define IOPRBS_ICF_WATCHDOG    0x1
        !            50: #define IOPRBS_ICF_COMPLETED   0x2
        !            51: };
        !            52:
        !            53: /* XXX What is correct? */
        !            54: #define IOPRBS_MAX_CCBS 256
        !            55:
        !            56: struct ioprbs_softc {
        !            57:        struct  device sc_dv;                   /* Generic device data */
        !            58:        struct  scsi_link sc_link;      /* Virtual SCSI bus for cache devs */
        !            59:        struct  iop_initiator sc_ii;
        !            60:        struct  iop_initiator sc_eventii;
        !            61:
        !            62:        int     sc_flags;
        !            63:        int     sc_secperunit;                  /* # sectors in total */
        !            64:        int     sc_secsize;                     /* sector size in bytes */
        !            65:        int     sc_maxxfer;                     /* max xfer size in bytes */
        !            66:        int     sc_maxqueuecnt;                 /* maximum h/w queue depth */
        !            67:        int     sc_queuecnt;                    /* current h/w queue depth */
        !            68:
        !            69:        struct ioprbs_ccb sc_ccbs[IOPRBS_MAX_CCBS];
        !            70:        TAILQ_HEAD(, ioprbs_ccb) sc_free_ccb, sc_ccbq;
        !            71:        /* commands on hold for controller resources */
        !            72:        TAILQ_HEAD(, ioprbs_ccb) sc_ready;
        !            73:        /* commands which have been returned by the controller */
        !            74:        LIST_HEAD(, scsi_xfer) sc_queue;
        !            75:        struct scsi_xfer *sc_queuelast;
        !            76: };
        !            77:
        !            78: #define        IOPRBS_CLAIMED          0x01
        !            79: #define        IOPRBS_NEW_EVTMASK      0x02
        !            80: #define IOPRBS_ENABLED         0x04
        !            81:
        !            82: #define        IOPRBS_TIMEOUT          (30 * 1000)
        !            83: #define IOPRBS_BLOCK_SIZE      512
        !            84:
        !            85: /*
        !            86:  * Wait this long for a lost interrupt to get detected.
        !            87:  */
        !            88: #define IOPRBS_WATCH_TIMEOUT   10000           /* 10000 * 1ms = 10s */
        !            89:
        !            90:
        !            91: /* XXX These have to become spinlocks in case of SMP */
        !            92: #define IOPRBS_LOCK(sc) splbio()
        !            93: #define IOPRBS_UNLOCK(sc, lock) splx(lock)
        !            94: typedef int ioprbs_lock_t;
        !            95:
        !            96: #endif /* !_I2O_IOPRMSVAR_H_ */

CVSweb