[BACK]Return to altq_cbq.h CVS log [TXT][DIR] Up to [local] / sys / altq

Annotation of sys/altq/altq_cbq.h, Revision 1.1

1.1     ! nbrk        1: /*     $OpenBSD: altq_cbq.h,v 1.10 2004/01/14 08:42:23 kjc Exp $       */
        !             2: /*     $KAME: altq_cbq.h,v 1.5 2000/12/02 13:44:40 kjc Exp $   */
        !             3:
        !             4: /*
        !             5:  * Copyright (c) Sun Microsystems, Inc. 1993-1998 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:  *
        !            11:  * 1. Redistributions of source code must retain the above copyright
        !            12:  *    notice, this list of conditions and the following disclaimer.
        !            13:  *
        !            14:  * 2. Redistributions in binary form must reproduce the above copyright
        !            15:  *    notice, this list of conditions and the following disclaimer in the
        !            16:  *    documentation and/or other materials provided with the distribution.
        !            17:  *
        !            18:  * 3. All advertising materials mentioning features or use of this software
        !            19:  *    must display the following acknowledgement:
        !            20:  *      This product includes software developed by the SMCC Technology
        !            21:  *      Development Group at Sun Microsystems, Inc.
        !            22:  *
        !            23:  * 4. The name of the Sun Microsystems, Inc nor may not be used to endorse or
        !            24:  *      promote products derived from this software without specific prior
        !            25:  *      written permission.
        !            26:  *
        !            27:  * SUN MICROSYSTEMS DOES NOT CLAIM MERCHANTABILITY OF THIS SOFTWARE OR THE
        !            28:  * SUITABILITY OF THIS SOFTWARE FOR ANY PARTICULAR PURPOSE.  The software is
        !            29:  * provided "as is" without express or implied warranty of any kind.
        !            30:  *
        !            31:  * These notices must be retained in any copies of any part of this software.
        !            32:  */
        !            33:
        !            34: #ifndef _ALTQ_ALTQ_CBQ_H_
        !            35: #define        _ALTQ_ALTQ_CBQ_H_
        !            36:
        !            37: #include <altq/altq.h>
        !            38: #include <altq/altq_rmclass.h>
        !            39: #include <altq/altq_red.h>
        !            40: #include <altq/altq_rio.h>
        !            41:
        !            42: #ifdef __cplusplus
        !            43: extern "C" {
        !            44: #endif
        !            45:
        !            46: #define        NULL_CLASS_HANDLE       0
        !            47:
        !            48: /* class flags should be same as class flags in rm_class.h */
        !            49: #define        CBQCLF_RED              0x0001  /* use RED */
        !            50: #define        CBQCLF_ECN              0x0002  /* use RED/ECN */
        !            51: #define        CBQCLF_RIO              0x0004  /* use RIO */
        !            52: #define        CBQCLF_FLOWVALVE        0x0008  /* use flowvalve (aka penalty-box) */
        !            53: #define        CBQCLF_CLEARDSCP        0x0010  /* clear diffserv codepoint */
        !            54: #define        CBQCLF_BORROW           0x0020  /* borrow from parent */
        !            55:
        !            56: /* class flags only for root class */
        !            57: #define        CBQCLF_WRR              0x0100  /* weighted-round robin */
        !            58: #define        CBQCLF_EFFICIENT        0x0200  /* work-conserving */
        !            59:
        !            60: /* class flags for special classes */
        !            61: #define        CBQCLF_ROOTCLASS        0x1000  /* root class */
        !            62: #define        CBQCLF_DEFCLASS         0x2000  /* default class */
        !            63: #define        CBQCLF_CLASSMASK        0xf000  /* class mask */
        !            64:
        !            65: #define        CBQ_MAXQSIZE            200
        !            66: #define        CBQ_MAXPRI              RM_MAXPRIO
        !            67:
        !            68: typedef struct _cbq_class_stats_ {
        !            69:        u_int32_t       handle;
        !            70:        u_int           depth;
        !            71:
        !            72:        struct pktcntr  xmit_cnt;       /* packets sent in this class */
        !            73:        struct pktcntr  drop_cnt;       /* dropped packets */
        !            74:        u_int           over;           /* # times went over limit */
        !            75:        u_int           borrows;        /* # times tried to borrow */
        !            76:        u_int           overactions;    /* # times invoked overlimit action */
        !            77:        u_int           delays;         /* # times invoked delay actions */
        !            78:
        !            79:        /* other static class parameters useful for debugging */
        !            80:        int             priority;
        !            81:        int             maxidle;
        !            82:        int             minidle;
        !            83:        int             offtime;
        !            84:        int             qmax;
        !            85:        int             ns_per_byte;
        !            86:        int             wrr_allot;
        !            87:
        !            88:        int             qcnt;           /* # packets in queue */
        !            89:        int             avgidle;
        !            90:
        !            91:        /* red and rio related info */
        !            92:        int             qtype;
        !            93:        struct redstats red[3];
        !            94: } class_stats_t;
        !            95:
        !            96: #ifdef _KERNEL
        !            97: /*
        !            98:  * Define macros only good for kernel drivers and modules.
        !            99:  */
        !           100: #define        CBQ_WATCHDOG            (hz / 20)
        !           101: #define        CBQ_TIMEOUT             10
        !           102: #define        CBQ_LS_TIMEOUT          (20 * hz / 1000)
        !           103:
        !           104: #define        CBQ_MAX_CLASSES         256
        !           105:
        !           106: /*
        !           107:  * Define State structures.
        !           108:  */
        !           109: typedef struct cbqstate {
        !           110:        int                      cbq_qlen;      /* # of packets in cbq */
        !           111:        struct rm_class         *cbq_class_tbl[CBQ_MAX_CLASSES];
        !           112:
        !           113:        struct rm_ifdat          ifnp;
        !           114:        struct callout           cbq_callout;   /* for timeouts */
        !           115: } cbq_state_t;
        !           116:
        !           117: #endif /* _KERNEL */
        !           118:
        !           119: #ifdef __cplusplus
        !           120: }
        !           121: #endif
        !           122:
        !           123: #endif /* !_ALTQ_ALTQ_CBQ_H_ */

CVSweb