mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git
synced 2026-04-21 04:53:46 -04:00
sched: Struct definition and parsing of dualpi2 qdisc
DualPI2 is the reference implementation of IETF RFC9332 DualQ Coupled AQM (https://datatracker.ietf.org/doc/html/rfc9332) providing two queues called low latency (L-queue) and classic (C-queue). By default, it enqueues non-ECN and ECT(0) packets into the C-queue and ECT(1) and CE packets into the low latency queue (L-queue), as per IETF RFC9332 spec. This patch defines the dualpi2 Qdisc structure and parsing, and the following two patches include dumping and enqueue/dequeue for the DualPI2. Signed-off-by: Chia-Yu Chang <chia-yu.chang@nokia-bell-labs.com> Link: https://patch.msgid.link/20250722095915.24485-2-chia-yu.chang@nokia-bell-labs.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
committed by
Jakub Kicinski
parent
1cdf3f2d8f
commit
320d031ad6
@@ -1211,4 +1211,57 @@ enum {
|
||||
|
||||
#define TCA_ETS_MAX (__TCA_ETS_MAX - 1)
|
||||
|
||||
/* DUALPI2 */
|
||||
enum tc_dualpi2_drop_overload {
|
||||
TC_DUALPI2_DROP_OVERLOAD_OVERFLOW = 0,
|
||||
TC_DUALPI2_DROP_OVERLOAD_DROP = 1,
|
||||
__TCA_DUALPI2_DROP_OVERLOAD_MAX,
|
||||
};
|
||||
#define TCA_DUALPI2_DROP_OVERLOAD_MAX (__TCA_DUALPI2_DROP_OVERLOAD_MAX - 1)
|
||||
|
||||
enum tc_dualpi2_drop_early {
|
||||
TC_DUALPI2_DROP_EARLY_DROP_DEQUEUE = 0,
|
||||
TC_DUALPI2_DROP_EARLY_DROP_ENQUEUE = 1,
|
||||
__TCA_DUALPI2_DROP_EARLY_MAX,
|
||||
};
|
||||
#define TCA_DUALPI2_DROP_EARLY_MAX (__TCA_DUALPI2_DROP_EARLY_MAX - 1)
|
||||
|
||||
enum tc_dualpi2_ecn_mask {
|
||||
TC_DUALPI2_ECN_MASK_L4S_ECT = 1,
|
||||
TC_DUALPI2_ECN_MASK_CLA_ECT = 2,
|
||||
TC_DUALPI2_ECN_MASK_ANY_ECT = 3,
|
||||
__TCA_DUALPI2_ECN_MASK_MAX,
|
||||
};
|
||||
#define TCA_DUALPI2_ECN_MASK_MAX (__TCA_DUALPI2_ECN_MASK_MAX - 1)
|
||||
|
||||
enum tc_dualpi2_split_gso {
|
||||
TC_DUALPI2_SPLIT_GSO_NO_SPLIT_GSO = 0,
|
||||
TC_DUALPI2_SPLIT_GSO_SPLIT_GSO = 1,
|
||||
__TCA_DUALPI2_SPLIT_GSO_MAX,
|
||||
};
|
||||
#define TCA_DUALPI2_SPLIT_GSO_MAX (__TCA_DUALPI2_SPLIT_GSO_MAX - 1)
|
||||
|
||||
enum {
|
||||
TCA_DUALPI2_UNSPEC,
|
||||
TCA_DUALPI2_LIMIT, /* Packets */
|
||||
TCA_DUALPI2_MEMORY_LIMIT, /* Bytes */
|
||||
TCA_DUALPI2_TARGET, /* us */
|
||||
TCA_DUALPI2_TUPDATE, /* us */
|
||||
TCA_DUALPI2_ALPHA, /* Hz scaled up by 256 */
|
||||
TCA_DUALPI2_BETA, /* Hz scaled up by 256 */
|
||||
TCA_DUALPI2_STEP_THRESH_PKTS, /* Step threshold in packets */
|
||||
TCA_DUALPI2_STEP_THRESH_US, /* Step threshold in microseconds */
|
||||
TCA_DUALPI2_MIN_QLEN_STEP, /* Minimum qlen to apply STEP_THRESH */
|
||||
TCA_DUALPI2_COUPLING, /* Coupling factor between queues */
|
||||
TCA_DUALPI2_DROP_OVERLOAD, /* Whether to drop on overload */
|
||||
TCA_DUALPI2_DROP_EARLY, /* Whether to drop on enqueue */
|
||||
TCA_DUALPI2_C_PROTECTION, /* Percentage */
|
||||
TCA_DUALPI2_ECN_MASK, /* L4S queue classification mask */
|
||||
TCA_DUALPI2_SPLIT_GSO, /* Split GSO packets at enqueue */
|
||||
TCA_DUALPI2_PAD,
|
||||
__TCA_DUALPI2_MAX
|
||||
};
|
||||
|
||||
#define TCA_DUALPI2_MAX (__TCA_DUALPI2_MAX - 1)
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user