-----Original Message-----
> From: Paolo Abeni <[email protected]> 
> Sent: Tuesday, May 20, 2025 12:04 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]; [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]>
> Subject: Re: [PATCH v7 net-next 14/15] tcp: accecn: try to fit AccECN option 
> with SACK
> 
> 
> 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 5/14/25 3:56 PM, [email protected] wrote:
> > From: Ilpo Järvinen <[email protected]>
> >
> > As SACK blocks tend to eat all option space when there are many holes, 
> > it is useful to compromise on sending many SACK blocks in every ACK 
> > and try to fit AccECN option there by reduction the number of SACK 
> > blocks. But never go below two SACK blocks because of AccECN option.
> >
> > As AccECN option is often not put to every ACK, the space hijack is 
> > usually only temporary.
> >
> > Signed-off-by: Ilpo Järvinen <[email protected]>
> > Signed-off-by: Chia-Yu Chang <[email protected]>
> > ---
> >  net/ipv4/tcp_output.c | 15 ++++++++++++++-
> >  1 file changed, 14 insertions(+), 1 deletion(-)
> >
> > diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c index 
> > b630923c4cef..d9d3cc8dbb5b 100644
> > --- a/net/ipv4/tcp_output.c
> > +++ b/net/ipv4/tcp_output.c
> > @@ -982,8 +982,21 @@ static int tcp_options_fit_accecn(struct 
> > tcp_out_options *opts, int required,
> >               opts->num_accecn_fields--;
> >               size -= TCPOLEN_ACCECN_PERFIELD;
> >       }
> > -     if (opts->num_accecn_fields < required)
> > +     if (opts->num_accecn_fields < required) {
> > +             if (opts->num_sack_blocks > 2) {
> > +                     /* Try to fit the option by removing one SACK block */
> > +                     opts->num_sack_blocks--;
> > +                     size = tcp_options_fit_accecn(opts, required,
> > +                                                   remaining +
> > +                                                   TCPOLEN_SACK_PERBLOCK,
> > +                                                   
> > + max_combine_saving);
> 
> How deep is the recursion level, worst case? In any case please try to avoid 
> recursion entirely. Possibly a 'goto' statement would help.
> 
> /P

Hi Paolo,

Thanks for the feedback, in this case up to 2 extra levels will be needed.
And the recursion will be avoided in the next version.

BRs,
Chia-Yu

Reply via email to