> -----Original Message----- > From: Victor Nogueira <[email protected]> > Sent: Wednesday, April 16, 2025 2:22 PM > To: Chia-Yu Chang (Nokia) <[email protected]>; > [email protected]; [email protected]; [email protected]; > [email protected]; [email protected]; [email protected]; > [email protected]; [email protected]; [email protected]; > [email protected]; [email protected]; [email protected]; > [email protected]; [email protected]; [email protected]; > [email protected]; [email protected]; [email protected]; > [email protected]; Koen De Schepper (Nokia) > <[email protected]>; g.white <[email protected]>; > [email protected]; [email protected]; > [email protected]; [email protected]; [email protected]; vidhi_goel > <[email protected]> > Cc: Olga Albisser <[email protected]>; Olivier Tilmans (Nokia) > <[email protected]>; Bob Briscoe <[email protected]>; Henrik > Steen <[email protected]> > Subject: Re: [PATCH v5 RESEND iproute2-next 1/1] tc: add dualpi2 scheduler > module > > [You don't often get email from [email protected]. Learn why this is > important at https://aka.ms/LearnAboutSenderIdentification ] > > CAUTION: This is an external email. Please be very careful when clicking > links or opening attachments. See the URL nok.it/ext for additional > information. > > > > On 4/14/25 10:18, [email protected] wrote: > > From: Chia-Yu Chang <[email protected]> > > > > DUALPI2 AQM is a combination of the DUALQ Coupled-AQM with a PI2 > > base-AQM. The PI2 AQM is in turn both an extension and a > > simplification of the PIE AQM. PI2 makes quite some PIE heuristics > > unnecessary, while being able to control scalable congestion controls like > > TCP-Prague. > > With PI2, both Reno/Cubic can be used in parallel with Prague, > > maintaining window fairness. DUALQ provides latency separation between > > low latency Prague flows and Reno/Cubic flows that need a bigger queue. > > > > This patch adds support to tc to configure it through its netlink > > interface. > > > > Signed-off-by: Chia-Yu Chang <[email protected]> > > Co-developed-by: Olga Albisser <[email protected]> > > Signed-off-by: Olga Albisser <[email protected]> > > Co-developed-by: Koen De Schepper > > <[email protected]> > > Signed-off-by: Koen De Schepper <[email protected]> > > Co-developed-by: Oliver Tilmans <[email protected]> > > Signed-off-by: Oliver Tilmans <[email protected]> > > Signed-off-by: Bob Briscoe <[email protected]> > > Co-developed-by: Henrik Steen <[email protected]> > > Signed-off-by: Henrik Steen <[email protected]> > > --- > > bash-completion/tc | 11 +- > > include/uapi/linux/pkt_sched.h | 39 +++ > > include/utils.h | 2 + > > ip/iplink_can.c | 14 - > > lib/utils.c | 30 ++ > > man/man8/tc-dualpi2.8 | 249 ++++++++++++++++ > > tc/Makefile | 1 + > > tc/q_dualpi2.c | 519 +++++++++++++++++++++++++++++++++ > > 8 files changed, 850 insertions(+), 15 deletions(-) > > create mode 100644 man/man8/tc-dualpi2.8 > > create mode 100644 tc/q_dualpi2.c > > Hi! > > I compiled your patch and am seeing the following warnings: > > q_dualpi2.c: In function 'dualpi2_parse_opt': > q_dualpi2.c:218:37: warning: pointer targets in passing argument 1 of > 'get_u32' differ in signedness [-Wpointer-sign] > 218 | if (get_u32(&min_qlen_step, *argv, 10)) { > | ^~~~~~~~~~~~~~ > | | > | int32_t * {aka int *} > In file included from q_dualpi2.c:39: > ../include/utils.h:157:20: note: expected '__u32 *' {aka 'unsigned int *'} > but argument is of type 'int32_t *' {aka 'int *'} > 157 | int get_u32(__u32 *val, const char *arg, int base); > | ~~~~~~~^~~ > q_dualpi2.c: At top level: > q_dualpi2.c:516:27: warning: initialization of 'int (*)(const struct > qdisc_util *, int, char **, struct nlmsghdr *, const char *)' from > incompatible pointer type 'int (*)(struct qdisc_util *, int, char **, struct > nlmsghdr *, const char *)' [-Wincompatible-pointer-types] > 516 | .parse_qopt = dualpi2_parse_opt, > | ^~~~~~~~~~~~~~~~~ > q_dualpi2.c:516:27: note: (near initialization for > 'dualpi2_qdisc_util.parse_qopt') > q_dualpi2.c:517:27: warning: initialization of 'int (*)(const struct > qdisc_util *, FILE *, struct rtattr *)' from incompatible pointer type 'int > (*)(struct qdisc_util *, FILE *, struct rtattr *)' > [-Wincompatible-pointer-types] > 517 | .print_qopt = dualpi2_print_opt, > | ^~~~~~~~~~~~~~~~~ > q_dualpi2.c:517:27: note: (near initialization for > 'dualpi2_qdisc_util.print_qopt') > q_dualpi2.c:518:27: warning: initialization of 'int (*)(const struct > qdisc_util *, FILE *, struct rtattr *)' from incompatible pointer type 'int > (*)(struct qdisc_util *, FILE *, struct rtattr *)' > [-Wincompatible-pointer-types] > 518 | .print_xstats = dualpi2_print_xstats, > | ^~~~~~~~~~~~~~~~~~~~ > q_dualpi2.c:518:27: note: (near initialization for > 'dualpi2_qdisc_util.print_xstats') > > cheers, > Victor
Hi Victor, Thanks for prompt feedback, I will fix these warning in the next version. BRs, Chia-Yu
