> -----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

Reply via email to