diff options
Diffstat (limited to 'sys/contrib/altq/altq/altq_hfsc.h')
-rw-r--r-- | sys/contrib/altq/altq/altq_hfsc.h | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/sys/contrib/altq/altq/altq_hfsc.h b/sys/contrib/altq/altq/altq_hfsc.h index d04b378..c8e9b13 100644 --- a/sys/contrib/altq/altq/altq_hfsc.h +++ b/sys/contrib/altq/altq/altq_hfsc.h @@ -36,6 +36,7 @@ #include <altq/altq_classq.h> #include <altq/altq_red.h> #include <altq/altq_rio.h> +#include <altq/altq_codel.h> #ifdef __cplusplus extern "C" { @@ -49,12 +50,13 @@ struct service_curve { /* special class handles */ #define HFSC_NULLCLASS_HANDLE 0 -#define HFSC_MAX_CLASSES 64 +#define HFSC_MAX_CLASSES 2048 /* hfsc class flags */ #define HFCF_RED 0x0001 /* use RED */ #define HFCF_ECN 0x0002 /* use RED/ECN */ #define HFCF_RIO 0x0004 /* use RIO */ +#define HFCF_CODEL 0x0008 /* use CODEL */ #define HFCF_CLEARDSCP 0x0010 /* clear diffserv codepoint */ #define HFCF_DEFAULTCLASS 0x1000 /* default class */ @@ -104,6 +106,7 @@ struct hfsc_classstats { /* red and rio related info */ int qtype; struct redstats red[3]; + struct codel_stats codel; }; #ifdef ALTQ3_COMPAT @@ -229,7 +232,10 @@ struct hfsc_class { struct hfsc_class *cl_children; /* child classes */ class_queue_t *cl_q; /* class queue structure */ - struct red *cl_red; /* RED state */ + union { + struct red *cl_red; /* RED state */ + struct codel *cl_codel; /* CoDel state */ + } cl_aqm; struct altq_pktattr *cl_pktattr; /* saved header used by ECN */ u_int64_t cl_total; /* total work in bytes */ @@ -278,6 +284,8 @@ struct hfsc_class { u_int period; } cl_stats; }; +#define cl_red cl_aqm.cl_red +#define cl_codel cl_aqm.cl_codel /* * hfsc interface state |