| #ifndef __BACKPORT_LINUX_PKT_SCHED_H |
| #define __BACKPORT_LINUX_PKT_SCHED_H |
| #include_next <linux/pkt_sched.h> |
| #include <linux/version.h> |
| |
| /* |
| * This backports: |
| * |
| * From 76e3cc126bb223013a6b9a0e2a51238d1ef2e409 Mon Sep 17 00:00:00 2001 |
| * From: Eric Dumazet <edumazet@google.com> |
| * Date: Thu, 10 May 2012 07:51:25 +0000 |
| * Subject: [PATCH] codel: Controlled Delay AQM |
| * |
| * Added via v3.5 |
| */ |
| #ifndef TCA_CODEL_MAX |
| /* CODEL */ |
| |
| #define COMPAT_CODEL_BACKPORT |
| |
| enum { |
| TCA_CODEL_UNSPEC, |
| TCA_CODEL_TARGET, |
| TCA_CODEL_LIMIT, |
| TCA_CODEL_INTERVAL, |
| TCA_CODEL_ECN, |
| __TCA_CODEL_MAX |
| }; |
| |
| #define TCA_CODEL_MAX (__TCA_CODEL_MAX - 1) |
| |
| struct tc_codel_xstats { |
| __u32 maxpacket; /* largest packet we've seen so far */ |
| __u32 count; /* how many drops we've done since the last time we |
| * entered dropping state |
| */ |
| __u32 lastcount; /* count at entry to dropping state */ |
| __u32 ldelay; /* in-queue delay seen by most recently dequeued packet */ |
| __s32 drop_next; /* time to drop next packet */ |
| __u32 drop_overlimit; /* number of time max qdisc packet limit was hit */ |
| __u32 ecn_mark; /* number of packets we ECN marked instead of dropped */ |
| __u32 dropping; /* are we in dropping state ? */ |
| }; |
| |
| /* This backports: |
| * |
| * commit 4b549a2ef4bef9965d97cbd992ba67930cd3e0fe |
| * Author: Eric Dumazet <edumazet@google.com> |
| * Date: Fri May 11 09:30:50 2012 +0000 |
| * fq_codel: Fair Queue Codel AQM |
| */ |
| |
| /* FQ_CODEL */ |
| |
| enum { |
| TCA_FQ_CODEL_UNSPEC, |
| TCA_FQ_CODEL_TARGET, |
| TCA_FQ_CODEL_LIMIT, |
| TCA_FQ_CODEL_INTERVAL, |
| TCA_FQ_CODEL_ECN, |
| TCA_FQ_CODEL_FLOWS, |
| TCA_FQ_CODEL_QUANTUM, |
| __TCA_FQ_CODEL_MAX |
| }; |
| |
| #define TCA_FQ_CODEL_MAX (__TCA_FQ_CODEL_MAX - 1) |
| |
| enum { |
| TCA_FQ_CODEL_XSTATS_QDISC, |
| TCA_FQ_CODEL_XSTATS_CLASS, |
| }; |
| |
| struct tc_fq_codel_qd_stats { |
| __u32 maxpacket; /* largest packet we've seen so far */ |
| __u32 drop_overlimit; /* number of time max qdisc |
| * packet limit was hit |
| */ |
| __u32 ecn_mark; /* number of packets we ECN marked |
| * instead of being dropped |
| */ |
| __u32 new_flow_count; /* number of time packets |
| * created a 'new flow' |
| */ |
| __u32 new_flows_len; /* count of flows in new list */ |
| __u32 old_flows_len; /* count of flows in old list */ |
| }; |
| |
| struct tc_fq_codel_cl_stats { |
| __s32 deficit; |
| __u32 ldelay; /* in-queue delay seen by most recently |
| * dequeued packet |
| */ |
| __u32 count; |
| __u32 lastcount; |
| __u32 dropping; |
| __s32 drop_next; |
| }; |
| |
| struct tc_fq_codel_xstats { |
| __u32 type; |
| union { |
| struct tc_fq_codel_qd_stats qdisc_stats; |
| struct tc_fq_codel_cl_stats class_stats; |
| }; |
| }; |
| #endif /* TCA_CODEL_MAX */ |
| |
| #endif /* __BACKPORT_LINUX_PKT_SCHED_H */ |