---- pkt_sched.h.orig 2004-04-20 13:10:20.000000000 +0200
-+++ pkt_sched.h 2004-04-25 19:15:12.694743784 +0200
-@@ -27,6 +27,8 @@
- Particular schedulers may have also their private records.
- */
-
-+#include <linux/types.h>
-+
- struct tc_stats
- {
- __u64 bytes; /* NUmber of enqueues bytes */
-@@ -164,6 +166,13 @@
- TCA_SFQ_HASH_SRC,
+--- linux-3.7/include/uapi/linux/pkt_sched.h.orig 2012-03-19 00:15:34.000000000 +0100
++++ linux-3.7/include/uapi/linux/pkt_sched.h 2012-03-19 17:54:02.813513839 +0100
+@@ -193,6 +193,31 @@
+ __s32 allot;
};
++/* ESFQ section */
++
+enum
+{
++ /* traditional */
+ TCA_SFQ_HASH_CLASSIC,
+ TCA_SFQ_HASH_DST,
+ TCA_SFQ_HASH_SRC,
++ TCA_SFQ_HASH_FWMARK,
++ /* direct */
++ TCA_SFQ_HASH_DSTDIR,
++ TCA_SFQ_HASH_SRCDIR,
++ TCA_SFQ_HASH_FWMARKDIR,
+};
+
- struct tc_sfq_qopt
- {
- unsigned quantum; /* Bytes per round allocated to flow */
++struct tc_esfq_qopt
++{
++ unsigned quantum; /* Bytes per round allocated to flow */
++ int perturb_period; /* Period of hash perturbation */
++ __u32 limit; /* Maximal packets in queue */
++ unsigned divisor; /* Hash divisor */
++ unsigned flows; /* Maximal number of flows */
++ unsigned hash_kind; /* Hash function to use for flow identification */
++};
++
+ /* RED section */
+
+ enum {