From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <dev-bounces@dpdk.org>
Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124])
	by inbox.dpdk.org (Postfix) with ESMTP id A298142BE1;
	Tue, 30 May 2023 11:24:03 +0200 (CEST)
Received: from mails.dpdk.org (localhost [127.0.0.1])
	by mails.dpdk.org (Postfix) with ESMTP id 2E01D40A82;
	Tue, 30 May 2023 11:24:03 +0200 (CEST)
Received: from mail-vs1-f51.google.com (mail-vs1-f51.google.com
 [209.85.217.51])
 by mails.dpdk.org (Postfix) with ESMTP id A461E406BC;
 Tue, 30 May 2023 11:24:02 +0200 (CEST)
Received: by mail-vs1-f51.google.com with SMTP id
 ada2fe7eead31-437e8282c1fso954762137.2; 
 Tue, 30 May 2023 02:24:02 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20221208; t=1685438642; x=1688030642;
 h=cc:to:subject:message-id:date:from:in-reply-to:references
 :mime-version:from:to:cc:subject:date:message-id:reply-to;
 bh=tmuBxDsIGdJ8kE8GtnaYKiWdpqnygzt3nQbo0JQouYA=;
 b=Ro1a0iVLl9EkiYaPbx82XRUGOKqoD/QxiQyOouc6sI8b9j1T84B3bIjbn8lja1Akzw
 nz9OCxrDQNHTfjiMNMP+oUbwwK5B192wNO3IdvDlRb5/nNGEjLFS1YW7iI1AjYL+HlPe
 yMzIwyCTc12iVPN6vFwcSKBLmKTJmKFgwdxu0SakydMLfLEOMY1kl8sCTXmHTxLKNf+l
 IDqC+RNhe5BSLo4u3xES8dnXhep/nlPN5ChX1g93fQFP1XCb4uJ1OlEdVwMwftgE/k/x
 bNZFt2ziWNPVy8w9JyVawvJSJc7rwpf5//wSvhDvY/xdLJfgMKJQcaUEmOGWDEI0t41h
 f4+w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20221208; t=1685438642; x=1688030642;
 h=cc:to:subject:message-id:date:from:in-reply-to:references
 :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
 :reply-to;
 bh=tmuBxDsIGdJ8kE8GtnaYKiWdpqnygzt3nQbo0JQouYA=;
 b=jiWf67pmIpxtB9sr1iDFzshEHYbh/TuO1OP11CQ15yzPVYx6c+s0XlMx0+yOXFiXga
 lLVHHgViPP/m9tGwLF/eZOyaLL5yCcqXjpbJFATR8awlGuBb+q5vansDfBbRyS214B0K
 ENs8XuPVv3OpRxO03v5Z9erFabVHyVibUGPHHeFLKa2jXMbZh0N3iDOmgbUZNnOa7aDQ
 LIbC6AzjXYvykiM52C14Y6PjmHNOLRhLo24H8YpNDRyx2W5zwmgaq5e873a66MBeIPb6
 a3bHJp+8aiY6mE2pFjhx+Azsn8dKckOZ/xLXBL3hpg+CPb/8q9NUHb+KcA58XBZOvPhu
 +6SA==
X-Gm-Message-State: AC+VfDylweHf+2YJTf9m2PldPa0Iaz3CHubj/Al12cj2tBPX1WeJwPH/
 yd5no/74U9EwESym/OirYCK5In5j9jwuGVHdouHYxgopG3w=
X-Google-Smtp-Source: ACHHUZ5Iw1ZrrIF00AD9vMIIR0FBMB7YHw0cBmnYzZ6IwcsAh0Amu1jL/6rAr/520K1ivF/cnDJjUgSMvM7TDj6iSrk=
X-Received: by 2002:a67:e3d8:0:b0:439:4048:8534 with SMTP id
 k24-20020a67e3d8000000b0043940488534mr493582vsm.25.1685438641739; Tue, 30 May
 2023 02:24:01 -0700 (PDT)
MIME-Version: 1.0
References: <20230309085645.1630826-1-ndabilpuram@marvell.com>
 <20230411110553.25f7c038@hermes.local>
 <CALBAE1Mqyef-f-SLZ_L9hJAkdKxrpopfZMDGE+gA4vhBwvR2XQ@mail.gmail.com>
 <5925463.UjTJXf6HLC@thomas>
 <CALBAE1NLrHwfW4TXQw3J3yekrfCbp12mx5cjXtZ=ecHJvv_GtQ@mail.gmail.com>
In-Reply-To: <CALBAE1NLrHwfW4TXQw3J3yekrfCbp12mx5cjXtZ=ecHJvv_GtQ@mail.gmail.com>
From: Jerin Jacob <jerinjacobk@gmail.com>
Date: Tue, 30 May 2023 14:53:35 +0530
Message-ID: <CALBAE1M+e+mZJzx2Ve_OhTmO+AMun3hmWwZWwwU9kMAwdMRaeg@mail.gmail.com>
Subject: Re: [PATCH 1/3] security: introduce out of place support for inline
 ingress
To: Thomas Monjalon <thomas@monjalon.net>
Cc: Stephen Hemminger <stephen@networkplumber.org>,
 Nithin Dabilpuram <ndabilpuram@marvell.com>, 
 Akhil Goyal <gakhil@marvell.com>, jerinj@marvell.com, dev@dpdk.org, 
 =?UTF-8?Q?Morten_Br=C3=B8rup?= <mb@smartsharesystems.com>, techboard@dpdk.org
Content-Type: text/plain; charset="UTF-8"
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <https://mails.dpdk.org/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://mails.dpdk.org/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <https://mails.dpdk.org/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
Errors-To: dev-bounces@dpdk.org

> > > > > +      */
> > > > > +     uint32_t ingress_oop : 1;
> > > > > +
> > > > >       /** Reserved bit fields for future extension
> > > > >        *
> > > > >        * User should ensure reserved_opts is cleared as it may change in
> > > > > @@ -282,7 +293,7 @@ struct rte_security_ipsec_sa_options {
> > > > >        *
> > > > >        * Note: Reduce number of bits in reserved_opts for every new option.
> > > > >        */
> > > > > -     uint32_t reserved_opts : 17;
> > > > > +     uint32_t reserved_opts : 16;
> > > > >  };
> > > >
> > > > NAK
> > > > Let me repeat the reserved bit rant. YAGNI
> > > >
> > > > Reserved space is not usable without ABI breakage unless the existing
> > > > code enforces that reserved space has to be zero.
> > > >
> > > > Just saying "User should ensure reserved_opts is cleared" is not enough.
> > >
> > > Yes. I think, we need to enforce to have _init functions for the
> > > structures which is using reserved filed.
> > >
> > > On the same note on YAGNI, I am wondering why NOT introduce
> > > RTE_NEXT_ABI marco kind of scheme to compile out ABI breaking changes.
> > > By keeping RTE_NEXT_ABI disable by default, enable explicitly if user
> > > wants it to avoid waiting for one year any ABI breaking changes.
> > > There are a lot of "fixed appliance" customers (not OS distribution
> > > driven customer) they are willing to recompile DPDK for new feature.
> > > What we are loosing with this scheme?
> >
> > RTE_NEXT_ABI is described in the ABI policy.
> > We are not doing it currently, but I think we could
> > when it is not too much complicate in the code.
> >
> > The only problems I see are:
> > - more #ifdef clutter
> > - 2 binary versions to test
> > - CI and checks must handle RTE_NEXT_ABI version
>
> I think, we have two buckets of ABI breakages via RTE_NEXT_ABI
>
> 1) Changes that introduces compilation failures like adding new
> argument to API or change API name etc
> 2) Structure size change which won't affect the compilation but breaks
> the ABI for shared library usage.
>
> I think, (1) is very distributive, and I don't see recently such
> changes. I think, we should avoid (1) for non XX.11 releases.(or two
> or three-year cycles if we decide that path)
>
> The (2) comes are very common due to the fact HW features are
> evolving. I think, to address the (2), we have two options
> a) Have reserved fields and have _init() function to initialize the structures
> b) Follow YAGNI style and introduce RTE_NEXT_ABI for structure size change.
>
> The above concerns[1] can greatly reduce with option b OR option a.
>
> [1]
>  1) more #ifdef clutter
> For option (a) this is not needed or option (b) the clutter will be
> limited, it will be around structure which add the new filed and
> around the FULL block where new functions are added (not inside the
> functions)
>
> 2) 2 binary versions to test
> For option (a) this is not needed, for option (b) it is limited as for
> new features only one needs to test another binary (rather than NOT
> adding a new feature).
>
>  3) CI and checks must handle RTE_NEXT_ABI version
>
> I think, it is cheap to add this, at least for compilation test.
>
> IMO, We need to change the API break release to 3 year kind of time
> frame to have very good end user experience
> and allow ABI related change to get in every release and force
> _rebuild_ shared objects in major LTS release.
>
> I think, in this major LTS version(23.11) if we can decide (a) vs (b)
> then we can align the code accordingly . e.s.p for (a) we need to add
> _init() functions.
>
> Thoughts?

Not much input from mailing list. Can we discuss this next TB meeting?
Especially how to align with next LTS release on
-YAGNI vs reserved fileds with init()
-What it takes to Extend the API breaking release more than a year as
first step.