On Tue, Sep 16, 2025 at 1:25 AM <chia-yu.ch...@nokia-bell-labs.com> wrote: > > From: Chia-Yu Chang <chia-yu.ch...@nokia-bell-labs.com> > > 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 attempt to fit the AccECN option > there by reducing the number of SACK blocks. However, it will > never go below two SACK blocks because of the AccECN option. > > As the AccECN option is often not put to every ACK, the space > hijack is usually only temporary. Depending on the reuqired > AccECN fields (can be either 3, 2, 1, or 0, cf. Table 5 in > AccECN spec) and the NOPs used for alignment of other > TCP options, up to two SACK blocks will be reduced. Please > find below tables for more details: > > +====================+=========================================+ > | Number of | Required | Remaining | Number of | Final | > | SACK | AccECN | option | reduced | number of | > | blocks | fields | spaces | SACK blocks | SACK blocks | > +===========+==========+===========+=============+=============+ > | x (<=2) | 0 to 3 | any | 0 | x | > +-----------+----------+-----------+-------------+-------------+ > | 3 | 0 | any | 0 | 3 | > | 3 | 1 | <4 | 1 | 2 | > | 3 | 1 | >=4 | 0 | 3 | > | 3 | 2 | <8 | 1 | 2 | > | 3 | 2 | >=8 | 0 | 3 | > | 3 | 3 | <12 | 1 | 2 | > | 3 | 3 | >=12 | 0 | 3 | > +-----------+----------+-----------+-------------+-------------+ > | y (>=4) | 0 | any | 0 | y | > | y (>=4) | 1 | <4 | 1 | y-1 | > | y (>=4) | 1 | >=4 | 0 | y | > | y (>=4) | 2 | <8 | 1 | y-1 | > | y (>=4) | 2 | >=8 | 0 | y | > | y (>=4) | 3 | <4 | 2 | y-2 | > | y (>=4) | 3 | <12 | 1 | y-1 | > | y (>=4) | 3 | >=12 | 0 | y | > +===========+==========+===========+=============+=============+ > > Signed-off-by: Chia-Yu Chang <chia-yu.ch...@nokia-bell-labs.com> > Co-developed-by: Ilpo Järvinen <i...@kernel.org> > Signed-off-by: Ilpo Järvinen <i...@kernel.org>
Reviewed-by: Eric Dumazet <eduma...@google.com>