X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/316670eb35587141e969394ae8537d66b9211e80..a991bd8d3e7fe02dbca0644054bab73c5b75324a:/bsd/net/classq/classq_rio.h diff --git a/bsd/net/classq/classq_rio.h b/bsd/net/classq/classq_rio.h index fb3c24199..3729765f7 100644 --- a/bsd/net/classq/classq_rio.h +++ b/bsd/net/classq/classq_rio.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011-2012 Apple Inc. All rights reserved. + * Copyright (c) 2011-2016 Apple Inc. All rights reserved. * * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ * @@ -56,7 +56,7 @@ */ #ifndef _NET_CLASSQ_CLASSQ_RIO_H_ -#define _NET_CLASSQ_CLASSQ_RIO_H_ +#define _NET_CLASSQ_CLASSQ_RIO_H_ #ifdef PRIVATE #ifdef BSD_KERNEL_PRIVATE @@ -71,66 +71,7 @@ extern "C" { * 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 }