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

Annotation of sys/dev/usb/ueaglevar.h, Revision 1.1

1.1     ! nbrk        1: /*     $OpenBSD: ueaglevar.h,v 1.2 2007/06/06 19:25:49 mk Exp $        */
        !             2:
        !             3: /*-
        !             4:  * Copyright (c) 2003-2005
        !             5:  *     Damien Bergamini <damien.bergamini@free.fr>
        !             6:  *
        !             7:  * Permission to use, copy, modify, and distribute this software for any
        !             8:  * purpose with or without fee is hereby granted, provided that the above
        !             9:  * copyright notice and this permission notice appear in all copies.
        !            10:  *
        !            11:  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
        !            12:  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
        !            13:  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
        !            14:  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
        !            15:  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
        !            16:  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
        !            17:  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
        !            18:  */
        !            19:
        !            20: #define UEAGLE_NISOREQS        6
        !            21: #define UEAGLE_NISOFRMS        4
        !            22:
        !            23: #ifndef UEAGLE_INTR_INTERVAL
        !            24: #define UEAGLE_INTR_INTERVAL   10      /* ms */
        !            25: #endif
        !            26:
        !            27: #define UEAGLE_TX_LIST_CNT     1
        !            28:
        !            29: #define UEAGLE_IDMA_TIMEOUT    1000
        !            30: #define UEAGLE_TX_TIMEOUT      10000
        !            31:
        !            32: #define CRC_INITIAL    0xffffffff
        !            33: #define CRC_MAGIC      0xc704dd7b
        !            34:
        !            35: #define ATM_CELL_SIZE          53
        !            36: #define ATM_CELL_HEADER_SIZE   5
        !            37: #define ATM_CELL_PAYLOAD_SIZE  (ATM_CELL_SIZE - ATM_CELL_HEADER_SIZE)
        !            38:
        !            39: #define AAL5_TRAILER_SIZE      8
        !            40:
        !            41: /*-
        !            42:  *    ATM cell header:
        !            43:  *
        !            44:  *    0                 4                 8
        !            45:  *    +-----------------+-----------------+
        !            46:  *    |       GFC       |       VPI       |
        !            47:  *    +-----------------+-----------------+
        !            48:  *    |       VPI       |       VCI       |
        !            49:  *    +-----------------+-----------------+
        !            50:  *    |                VCI                |
        !            51:  *    +-----------------+-----------+-----+
        !            52:  *    |       VCI       |   PT (3)  | CLP |
        !            53:  *    +-----------------+-----------+-----+
        !            54:  *    |                HEC                |
        !            55:  *    +-----------------------------------+
        !            56:  */
        !            57: #define ATM_CH_FILL(x, gfc, vpi, vci, pt, clp, hec) do {               \
        !            58:        (x)[0] = ((gfc) & 0xf) << 4 | ((vpi) & 0xf0) >> 4;              \
        !            59:        (x)[1] = ((vpi) & 0xf) << 4 | ((vci) & 0xf000) >> 12;           \
        !            60:        (x)[2] = ((vci) & 0xff0) >> 4;                                  \
        !            61:        (x)[3] = ((vci) & 0xf) << 4 | ((pt) & 0x7) << 1 | ((clp) & 0x1);\
        !            62:        (x)[4] = (uint8_t)(hec);                                        \
        !            63: } while (/* CONSTCOND */0)
        !            64:
        !            65: #define ATM_CH_SETPTFLAGS(x, v)        ((x)[3] |= ((v) & 0x7) << 1)
        !            66: #define ATM_CH_GETPTFLAGS(x)   (((x)[3] >> 1) & 0x7)
        !            67: #define ATM_CH_GETVPI(x)       ((x)[0] << 4 | (x)[1] >> 4)
        !            68: #define ATM_CH_GETVCI(x) \
        !            69:        (((x)[1] & 0xf) << 12 | (x)[2] << 4 | ((x)[3] & 0xf0) >> 4)
        !            70:
        !            71: /* optimized shortcut for (ATM_CH_GETPTFLAGS(x) & 1) */
        !            72: #define ATM_CH_ISLASTCELL(x)   ((x)[3] & 0x2)
        !            73:
        !            74: #define AAL5_TR_SETCPSUU(x, v) ((x)[45] = (uint8_t)(v))
        !            75: #define AAL5_TR_SETCPI(x, v)   ((x)[46] = (uint8_t)(v))
        !            76: #define AAL5_TR_SETPDULEN(x, v) do {                                   \
        !            77:        (x)[47] = (uint8_t)((v) >> 8);                                  \
        !            78:        (x)[48] = (uint8_t)(v);                                         \
        !            79: } while (/* CONSTCOND */0)
        !            80:
        !            81: #define AAL5_TR_GETPDULEN(x)   (uint16_t)((x)[47] << 8 | (x)[48])
        !            82: #define AAL5_TR_SETCRC(x, v) do {                                      \
        !            83:        (x)[49] = (uint8_t)((v) >> 24);                                 \
        !            84:        (x)[50] = (uint8_t)((v) >> 16);                                 \
        !            85:        (x)[51] = (uint8_t)((v) >> 8);                                  \
        !            86:        (x)[52] = (uint8_t)(v);                                         \
        !            87: } while (/* CONSTCOND */0)
        !            88:
        !            89: #define UEAGLE_IFMTU           1500
        !            90: #define UEAGLE_TXBUFLEN                                                        \
        !            91:        (((UEAGLE_IFMTU / ATM_CELL_PAYLOAD_SIZE) + 2) * ATM_CELL_SIZE)
        !            92:
        !            93: struct ueagle_vcc {
        !            94:        uint16_t                vci;
        !            95:        uint8_t                 vpi;
        !            96:        uint8_t                 ch[ATM_CELL_HEADER_SIZE];
        !            97:        void                    *rxhand;
        !            98:        struct mbuf             *m;
        !            99:        uint8_t                 *dst;
        !           100:        uint8_t                 *limit;
        !           101:        struct atm_pseudohdr    aph;
        !           102:        int                     flags;
        !           103: #define UEAGLE_VCC_ACTIVE      (1 << 0)
        !           104: #define UEAGLE_VCC_DROP                (1 << 1)
        !           105: };
        !           106:
        !           107: struct ueagle_softc;
        !           108:
        !           109: struct ueagle_isoreq {
        !           110:        struct ueagle_softc     *sc;
        !           111:        usbd_xfer_handle        xfer;
        !           112:        uint16_t                frlengths[UEAGLE_NISOFRMS];
        !           113:        uint8_t                 *offsets[UEAGLE_NISOFRMS];
        !           114: };
        !           115:
        !           116: struct ueagle_txreq {
        !           117:        struct ueagle_softc     *sc;
        !           118:        usbd_xfer_handle        xfer;
        !           119:        uint8_t                 *buf;
        !           120: };
        !           121:
        !           122: struct ueagle_stats {
        !           123:        struct {
        !           124:                uint32_t        status;
        !           125:                uint32_t        flags;
        !           126:                uint32_t        vidcpe;
        !           127:                uint32_t        vidco;
        !           128:                uint32_t        dsrate;
        !           129:                uint32_t        usrate;
        !           130:                uint32_t        dserror;
        !           131:                uint32_t        userror;
        !           132:                uint32_t        dsunc;
        !           133:                uint32_t        usunc;
        !           134:                uint32_t        txflow;
        !           135:                uint32_t        rxflow;
        !           136:                uint32_t        attenuation;
        !           137:                uint32_t        dsmargin;
        !           138:                uint32_t        usmargin;
        !           139:        } phy;
        !           140:
        !           141:        struct {
        !           142:                uint32_t        cells_transmitted;
        !           143:                uint32_t        cells_received;
        !           144:                uint32_t        cells_crc_errors;
        !           145:                uint32_t        cells_dropped;
        !           146:                uint32_t        vcc_no_conn;
        !           147:                uint32_t        cspdus_transmitted;
        !           148:                uint32_t        cspdus_received;
        !           149:                uint32_t        cspdus_crc_errors;
        !           150:                uint32_t        cspdus_dropped;
        !           151:        } atm;
        !           152: };
        !           153:
        !           154: #define UEAGLE_COND_CMV(sc)    ((char *)(sc) + 1)
        !           155: #define UEAGLE_COND_READY(sc)  ((char *)(sc) + 2)
        !           156: #define UEAGLE_COND_SYNC(sc)   ((char *)(sc) + 3)
        !           157:
        !           158: struct ueagle_softc {
        !           159:        struct device           sc_dev;
        !           160:        struct ifnet            sc_if;
        !           161:
        !           162:        usbd_device_handle      sc_udev;
        !           163:
        !           164:        struct proc             *stat_thread;
        !           165:        struct usb_task         sc_swap_task;
        !           166:        uint16_t                pageno;
        !           167:        uint16_t                ovl;
        !           168:
        !           169:        const char              *fw;
        !           170:        uint8_t                 *dsp;
        !           171:
        !           172:        struct usb_task         sc_init_task;
        !           173:
        !           174:        usbd_pipe_handle        pipeh_tx;
        !           175:        usbd_pipe_handle        pipeh_rx;
        !           176:        usbd_pipe_handle        pipeh_idma;
        !           177:        usbd_pipe_handle        pipeh_intr;
        !           178:
        !           179:        struct ueagle_isoreq    isoreqs[UEAGLE_NISOREQS];
        !           180:        struct ueagle_txreq     txreqs[UEAGLE_TX_LIST_CNT];
        !           181:        struct ueagle_vcc       vcc;
        !           182:        struct ueagle_stats     stats;
        !           183:
        !           184:        uint16_t                isize;
        !           185:        char                    ibuf[32];
        !           186:
        !           187:        int                     gone;
        !           188:
        !           189:        uint16_t                index;
        !           190:        uint32_t                data;
        !           191: };

CVSweb