History

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.

Chia-Yu Chang committed 1 year ago

Commit 320d0311 parent 1cdf3f22 files · +644 −0Browse files

Showing the changes to include/uapi (1 of 2 files). Show all

Unified · Split

include/uapi/linux/pkt_sched.h+53−0
@@ -1211,4 +1211,57 @@ enum { · 1210 unmodified lines
12111211
12121212 #define TCA_ETS_MAX (__TCA_ETS_MAX - 1)
12131213
1214+/* DUALPI2 */
1215+enum tc_dualpi2_drop_overload {
1216+ TC_DUALPI2_DROP_OVERLOAD_OVERFLOW = 0,
1217+ TC_DUALPI2_DROP_OVERLOAD_DROP = 1,
1218+ __TCA_DUALPI2_DROP_OVERLOAD_MAX,
1219+};
1220+#define TCA_DUALPI2_DROP_OVERLOAD_MAX (__TCA_DUALPI2_DROP_OVERLOAD_MAX - 1)
1221+
1222+enum tc_dualpi2_drop_early {
1223+ TC_DUALPI2_DROP_EARLY_DROP_DEQUEUE = 0,
1224+ TC_DUALPI2_DROP_EARLY_DROP_ENQUEUE = 1,
1225+ __TCA_DUALPI2_DROP_EARLY_MAX,
1226+};
1227+#define TCA_DUALPI2_DROP_EARLY_MAX (__TCA_DUALPI2_DROP_EARLY_MAX - 1)
1228+
1229+enum tc_dualpi2_ecn_mask {
1230+ TC_DUALPI2_ECN_MASK_L4S_ECT = 1,
1231+ TC_DUALPI2_ECN_MASK_CLA_ECT = 2,
1232+ TC_DUALPI2_ECN_MASK_ANY_ECT = 3,
1233+ __TCA_DUALPI2_ECN_MASK_MAX,
1234+};
1235+#define TCA_DUALPI2_ECN_MASK_MAX (__TCA_DUALPI2_ECN_MASK_MAX - 1)
1236+
1237+enum tc_dualpi2_split_gso {
1238+ TC_DUALPI2_SPLIT_GSO_NO_SPLIT_GSO = 0,
1239+ TC_DUALPI2_SPLIT_GSO_SPLIT_GSO = 1,
1240+ __TCA_DUALPI2_SPLIT_GSO_MAX,
1241+};
1242+#define TCA_DUALPI2_SPLIT_GSO_MAX (__TCA_DUALPI2_SPLIT_GSO_MAX - 1)
1243+
1244+enum {
1245+ TCA_DUALPI2_UNSPEC,
1246+ TCA_DUALPI2_LIMIT, /* Packets */
1247+ TCA_DUALPI2_MEMORY_LIMIT, /* Bytes */
1248+ TCA_DUALPI2_TARGET, /* us */
1249+ TCA_DUALPI2_TUPDATE, /* us */
1250+ TCA_DUALPI2_ALPHA, /* Hz scaled up by 256 */
1251+ TCA_DUALPI2_BETA, /* Hz scaled up by 256 */
1252+ TCA_DUALPI2_STEP_THRESH_PKTS, /* Step threshold in packets */
1253+ TCA_DUALPI2_STEP_THRESH_US, /* Step threshold in microseconds */
1254+ TCA_DUALPI2_MIN_QLEN_STEP, /* Minimum qlen to apply STEP_THRESH */
1255+ TCA_DUALPI2_COUPLING, /* Coupling factor between queues */
1256+ TCA_DUALPI2_DROP_OVERLOAD, /* Whether to drop on overload */
1257+ TCA_DUALPI2_DROP_EARLY, /* Whether to drop on enqueue */
1258+ TCA_DUALPI2_C_PROTECTION, /* Percentage */
1259+ TCA_DUALPI2_ECN_MASK, /* L4S queue classification mask */
1260+ TCA_DUALPI2_SPLIT_GSO, /* Split GSO packets at enqueue */
1261+ TCA_DUALPI2_PAD,
1262+ __TCA_DUALPI2_MAX
1263+};
1264+
1265+#define TCA_DUALPI2_MAX (__TCA_DUALPI2_MAX - 1)
1266+
12141267 #endif