aboutsummaryrefslogtreecommitdiff
path: root/include/net/pie.h
diff options
context:
space:
mode:
authorMohit P. Tahiliani2020-01-22 23:52:33 +0530
committerDavid S. Miller2020-01-23 11:38:31 +0100
commitec97ecf1ebe485a17cd8395a5f35e6b80b57665a (patch)
tree2e5491ce3a3ff1b637edf2e24dce419d4c1da678 /include/net/pie.h
parent5205ea00cda1ac23cebfb97dfccca84722d58dfe (diff)
net: sched: add Flow Queue PIE packet scheduler
Principles: - Packets are classified on flows. - This is a Stochastic model (as we use a hash, several flows might be hashed to the same slot) - Each flow has a PIE managed queue. - Flows are linked onto two (Round Robin) lists, so that new flows have priority on old ones. - For a given flow, packets are not reordered. - Drops during enqueue only. - ECN capability is off by default. - ECN threshold (if ECN is enabled) is at 10% by default. - Uses timestamps to calculate queue delay by default. Usage: tc qdisc ... fq_pie [ limit PACKETS ] [ flows NUMBER ] [ target TIME ] [ tupdate TIME ] [ alpha NUMBER ] [ beta NUMBER ] [ quantum BYTES ] [ memory_limit BYTES ] [ ecnprob PERCENTAGE ] [ [no]ecn ] [ [no]bytemode ] [ [no_]dq_rate_estimator ] defaults: limit: 10240 packets, flows: 1024 target: 15 ms, tupdate: 15 ms (in jiffies) alpha: 1/8, beta : 5/4 quantum: device MTU, memory_limit: 32 Mb ecnprob: 10%, ecn: off bytemode: off, dq_rate_estimator: off Signed-off-by: Mohit P. Tahiliani <tahiliani@nitk.edu.in> Signed-off-by: Sachin D. Patil <sdp.sachin@gmail.com> Signed-off-by: V. Saicharan <vsaicharan1998@gmail.com> Signed-off-by: Mohit Bhasi <mohitbhasi1998@gmail.com> Signed-off-by: Leslie Monis <lesliemonis@gmail.com> Signed-off-by: Gautam Ramakrishnan <gautamramk@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net/pie.h')
-rw-r--r--include/net/pie.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/include/net/pie.h b/include/net/pie.h
index 90f5db3d29e7..fd5a37cb7993 100644
--- a/include/net/pie.h
+++ b/include/net/pie.h
@@ -81,9 +81,11 @@ struct pie_stats {
/**
* struct pie_skb_cb - contains private skb vars
* @enqueue_time: timestamp when the packet is enqueued
+ * @mem_usage: size of the skb during enqueue
*/
struct pie_skb_cb {
psched_time_t enqueue_time;
+ u32 mem_usage;
};
static inline void pie_params_init(struct pie_params *params)