/*
- * Copyright (c) 2011-2012 Apple Inc. All rights reserved.
+ * Copyright (c) 2011-2016 Apple Inc. All rights reserved.
*
* @APPLE_OSREFERENCE_LICENSE_HEADER_START@
*
*/
#ifndef _NET_CLASSQ_CLASSQ_RIO_H_
-#define _NET_CLASSQ_CLASSQ_RIO_H_
+#define _NET_CLASSQ_CLASSQ_RIO_H_
#ifdef PRIVATE
#ifdef BSD_KERNEL_PRIVATE
* RIO: RED with IN/OUT bit
* (extended to support more than 2 drop precedence values)
*/
-#define RIO_NDROPPREC 3 /* number of drop precedence values */
-
-#ifdef BSD_KERNEL_PRIVATE
-/* rio flags */
-#define RIOF_ECN4 0x01 /* use packet marking for IPv4 packets */
-#define RIOF_ECN6 0x02 /* use packet marking for IPv6 packets */
-#define RIOF_ECN (RIOF_ECN4 | RIOF_ECN6)
-#define RIOF_CLEARDSCP 0x200 /* clear diffserv codepoint */
-
-#define RIOF_USERFLAGS \
- (RIOF_ECN4 | RIOF_ECN6 | RIOF_CLEARDSCP)
-
-typedef struct rio {
- /* per drop precedence structure */
- struct dropprec_state {
- /* red parameters */
- int inv_pmax; /* inverse of max drop probability */
- int th_min; /* red min threshold */
- int th_max; /* red max threshold */
-
- /* variables for internal use */
- int th_min_s; /* th_min scaled by avgshift */
- int th_max_s; /* th_max scaled by avgshift */
- int probd; /* drop probability denominator */
-
- int qlen; /* queue length */
- int avg; /* (scaled) queue length average */
- int count; /* packet count since the last */
- /* dropped/marked packet */
- int idle; /* queue was empty */
- int old; /* avg is above th_min */
- struct timeval last; /* timestamp when queue becomes idle */
- } rio_precstate[RIO_NDROPPREC];
-
- int rio_wshift; /* log(red_weight) */
- int rio_weight; /* weight for EWMA */
- struct wtab *rio_wtab; /* weight table */
-
- int rio_pkttime; /* average packet time in micro sec */
- /* used for idle calibration */
- int rio_flags; /* rio flags */
- struct ifnet *rio_ifp; /* back pointer to ifnet */
-
- u_int8_t rio_codepoint; /* codepoint value to tag packets */
- u_int8_t rio_codepointmask; /* codepoint mask bits */
-
- struct red_stats q_stats[RIO_NDROPPREC]; /* statistics */
-} rio_t;
-
-extern void rio_init(void);
-extern rio_t *rio_alloc(struct ifnet *, int, struct redparams *, int, int);
-extern void rio_destroy(rio_t *);
-extern void rio_getstats(rio_t *, struct red_stats *);
-extern int rio_addq(rio_t *, class_queue_t *, struct mbuf *, struct pf_mtag *);
-extern struct mbuf *rio_getq(rio_t *, class_queue_t *);
-extern void rio_purgeq(struct rio *, class_queue_t *, u_int32_t,
- u_int32_t *, u_int32_t *);
-extern void rio_updateq(rio_t *, cqev_t);
-extern int rio_suspendq(rio_t *, class_queue_t *, boolean_t);
-#endif /* BSD_KERNEL_PRIVATE */
+#define RIO_NDROPPREC 3 /* number of drop precedence values */
#ifdef __cplusplus
}