mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
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>
This commit is contained in:
parent
5205ea00cd
commit
ec97ecf1eb
5 changed files with 609 additions and 0 deletions
|
@ -971,6 +971,37 @@ struct tc_pie_xstats {
|
|||
__u32 ecn_mark; /* packets marked with ecn*/
|
||||
};
|
||||
|
||||
/* FQ PIE */
|
||||
enum {
|
||||
TCA_FQ_PIE_UNSPEC,
|
||||
TCA_FQ_PIE_LIMIT,
|
||||
TCA_FQ_PIE_FLOWS,
|
||||
TCA_FQ_PIE_TARGET,
|
||||
TCA_FQ_PIE_TUPDATE,
|
||||
TCA_FQ_PIE_ALPHA,
|
||||
TCA_FQ_PIE_BETA,
|
||||
TCA_FQ_PIE_QUANTUM,
|
||||
TCA_FQ_PIE_MEMORY_LIMIT,
|
||||
TCA_FQ_PIE_ECN_PROB,
|
||||
TCA_FQ_PIE_ECN,
|
||||
TCA_FQ_PIE_BYTEMODE,
|
||||
TCA_FQ_PIE_DQ_RATE_ESTIMATOR,
|
||||
__TCA_FQ_PIE_MAX
|
||||
};
|
||||
#define TCA_FQ_PIE_MAX (__TCA_FQ_PIE_MAX - 1)
|
||||
|
||||
struct tc_fq_pie_xstats {
|
||||
__u32 packets_in; /* total number of packets enqueued */
|
||||
__u32 dropped; /* packets dropped due to fq_pie_action */
|
||||
__u32 overlimit; /* dropped due to lack of space in queue */
|
||||
__u32 overmemory; /* dropped due to lack of memory in queue */
|
||||
__u32 ecn_mark; /* packets marked with ecn */
|
||||
__u32 new_flow_count; /* count of new flows created by packets */
|
||||
__u32 new_flows_len; /* count of flows in new list */
|
||||
__u32 old_flows_len; /* count of flows in old list */
|
||||
__u32 memory_usage; /* total memory across all queues */
|
||||
};
|
||||
|
||||
/* CBS */
|
||||
struct tc_cbs_qopt {
|
||||
__u8 offload;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue