[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

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