[00/20] remove experimental flag from some API's

Message ID 20230808173527.186042-1-stephen@networkplumber.org (mailing list archive)
Headers
Series remove experimental flag from some API's |

Message

Stephen Hemminger Aug. 8, 2023, 5:35 p.m. UTC
  Since 23.11 is an LTS release it is time to remove the experimental
bandaid off many API's. There are about 850 API's marked with experimental
on current main branch. This addresses the easy to remove ones and
gets it down to about 690 places.

The rule is any API that has been in since 22.11 needs to have
experimental removed (or deleted). The experimental flag is not a
"get out of ABI stability for free" card.

Stephen Hemminger (20):
  bpf: make rte_bpf_dump and rte_bpf_convert stable API's
  cmdline: make experimental API's stable
  ethdev: mark rte_mtr API's as stable
  ethdev: mark rte_tm API's as stable
  pdump: make API's stable
  pcapng: mark API's as stable
  net: remove experimental from functions
  rcu: remove experimental from rte_rcu_qbsr
  lpm: remove experimental
  mbuf: remove experimental from create_extbuf
  hash: remove experimental from toeplitz hash
  timer: remove experimental from rte_timer_next_ticks
  sched: remove experimental
  dmadev: mark API's as not experimental
  meter: remove experimental warning from comments
  power: remove experimental from API's
  kvargs: remove experimental flag
  ip_frag: mark a couple of functions stable
  member: remove experimental tag
  security: remove experimental flag

 lib/bpf/rte_bpf.h                   |  2 -
 lib/bpf/version.map                 |  9 +--
 lib/cmdline/cmdline.h               |  1 -
 lib/cmdline/cmdline_parse.h         |  4 --
 lib/cmdline/cmdline_rdline.h        |  4 --
 lib/cmdline/version.map             | 26 +++------
 lib/dmadev/rte_dmadev.h             | 85 ----------------------------
 lib/dmadev/version.map              |  2 +-
 lib/ethdev/rte_mtr.h                | 25 +-------
 lib/ethdev/rte_tm.h                 | 34 -----------
 lib/ethdev/version.map              | 88 ++++++++++++++---------------
 lib/hash/rte_thash.h                | 44 ---------------
 lib/hash/rte_thash_gfni.h           |  8 ---
 lib/hash/rte_thash_x86_gfni.h       |  8 ---
 lib/hash/version.map                | 16 ++----
 lib/ip_frag/rte_ip_frag.h           |  2 -
 lib/ip_frag/version.map             |  9 +--
 lib/kvargs/rte_kvargs.h             |  4 --
 lib/kvargs/version.map              |  8 +--
 lib/lpm/rte_lpm.h                   |  4 --
 lib/lpm/version.map                 |  7 +--
 lib/mbuf/rte_mbuf.h                 |  1 -
 lib/mbuf/version.map                |  8 +--
 lib/member/rte_member.h             | 54 ------------------
 lib/member/version.map              | 12 +---
 lib/meter/rte_meter.h               | 12 ----
 lib/net/rte_ip.h                    | 19 -------
 lib/pcapng/rte_pcapng.h             | 11 ----
 lib/pcapng/version.map              |  6 +-
 lib/pdump/rte_pdump.h               | 12 ----
 lib/pdump/version.map               | 11 +---
 lib/power/rte_power.h               |  4 --
 lib/power/rte_power_guest_channel.h |  4 --
 lib/power/rte_power_intel_uncore.h  |  9 ---
 lib/power/rte_power_pmd_mgmt.h      | 40 -------------
 lib/power/version.map               | 33 ++++-------
 lib/rcu/rte_rcu_qsbr.h              | 20 -------
 lib/rcu/version.map                 | 15 ++---
 lib/sched/rte_pie.h                 |  8 ---
 lib/sched/rte_sched.h               |  5 --
 lib/sched/version.map               | 18 ++----
 lib/security/rte_security.h         | 35 ------------
 lib/security/version.map            | 17 ++----
 lib/timer/rte_timer.h               |  4 --
 lib/timer/version.map               |  7 +--
 45 files changed, 97 insertions(+), 658 deletions(-)
  

Comments

Tyler Retzlaff Aug. 8, 2023, 6:19 p.m. UTC | #1
On Tue, Aug 08, 2023 at 10:35:07AM -0700, Stephen Hemminger wrote:
> Since 23.11 is an LTS release it is time to remove the experimental
> bandaid off many API's. There are about 850 API's marked with experimental
> on current main branch. This addresses the easy to remove ones and
> gets it down to about 690 places.
> 
> The rule is any API that has been in since 22.11 needs to have
> experimental removed (or deleted). The experimental flag is not a
> "get out of ABI stability for free" card.

For the libraries here that are enabled for Windows are the APIs being
marked stable have real implementations or just stubs on Windows?

If they are just stubs then i think more review is necessary for the
stubbed APIs to understand that they *can* be implemented on Windows.

I would prefer not to have to encounter this later and have to go
through the overhead of deprecation like with rte_thread_ctrl_create
again.

This obviously doesn't apply to libraries that are not currently enabled
for Windows.  If the implementations aren't stubs then that's okay too.

Ty
  
Stephen Hemminger Aug. 8, 2023, 9:33 p.m. UTC | #2
On Tue, 8 Aug 2023 11:19:12 -0700
Tyler Retzlaff <roretzla@linux.microsoft.com> wrote:

> On Tue, Aug 08, 2023 at 10:35:07AM -0700, Stephen Hemminger wrote:
> > Since 23.11 is an LTS release it is time to remove the experimental
> > bandaid off many API's. There are about 850 API's marked with experimental
> > on current main branch. This addresses the easy to remove ones and
> > gets it down to about 690 places.
> > 
> > The rule is any API that has been in since 22.11 needs to have
> > experimental removed (or deleted). The experimental flag is not a
> > "get out of ABI stability for free" card.  
> 
> For the libraries here that are enabled for Windows are the APIs being
> marked stable have real implementations or just stubs on Windows?
> 
> If they are just stubs then i think more review is necessary for the
> stubbed APIs to understand that they *can* be implemented on Windows.
> 
> I would prefer not to have to encounter this later and have to go
> through the overhead of deprecation like with rte_thread_ctrl_create
> again.
> 
> This obviously doesn't apply to libraries that are not currently enabled
> for Windows.  If the implementations aren't stubs then that's okay too.

I don't see any stubs when looking.

bpf: not built on Windows. Needs some libelf.
pdump: not built on Windows. Needs bpf for filtering
rte_tm: ok
rte_mtr: ok
cmdline: ok
pcapng: ok
net: ok
rcu: ok
lpm: ok
mbuf: ok
hash: ok
timer: ok
dmadev: ok
meter: ok
power: not on windows, probably need special API's
kvargs: ok
ip_frag: ok
member: not build on windows, not sure why
security: ok
vhost: not build on windows, not sure why
regexdev: not build on windows, not sure why
node: not build on windows, not sure why

Changes to eal need to be more selective.
  
Tyler Retzlaff Aug. 8, 2023, 11:23 p.m. UTC | #3
On Tue, Aug 08, 2023 at 02:33:52PM -0700, Stephen Hemminger wrote:
> On Tue, 8 Aug 2023 11:19:12 -0700
> Tyler Retzlaff <roretzla@linux.microsoft.com> wrote:
> 
> > On Tue, Aug 08, 2023 at 10:35:07AM -0700, Stephen Hemminger wrote:
> > > Since 23.11 is an LTS release it is time to remove the experimental
> > > bandaid off many API's. There are about 850 API's marked with experimental
> > > on current main branch. This addresses the easy to remove ones and
> > > gets it down to about 690 places.
> > > 
> > > The rule is any API that has been in since 22.11 needs to have
> > > experimental removed (or deleted). The experimental flag is not a
> > > "get out of ABI stability for free" card.  
> > 
> > For the libraries here that are enabled for Windows are the APIs being
> > marked stable have real implementations or just stubs on Windows?
> > 
> > If they are just stubs then i think more review is necessary for the
> > stubbed APIs to understand that they *can* be implemented on Windows.
> > 
> > I would prefer not to have to encounter this later and have to go
> > through the overhead of deprecation like with rte_thread_ctrl_create
> > again.
> > 
> > This obviously doesn't apply to libraries that are not currently enabled
> > for Windows.  If the implementations aren't stubs then that's okay too.
> 
> I don't see any stubs when looking.
> 
> bpf: not built on Windows. Needs some libelf.
> pdump: not built on Windows. Needs bpf for filtering
> rte_tm: ok
> rte_mtr: ok
> cmdline: ok
> pcapng: ok
> net: ok
> rcu: ok
> lpm: ok
> mbuf: ok
> hash: ok
> timer: ok
> dmadev: ok
> meter: ok
> power: not on windows, probably need special API's
> kvargs: ok
> ip_frag: ok
> member: not build on windows, not sure why
> security: ok
> vhost: not build on windows, not sure why
> regexdev: not build on windows, not sure why
> node: not build on windows, not sure why
> 
> Changes to eal need to be more selective.

Thanks Stephen I appreciate you checking it out it helps a lot.

Series-acked-by: Tyler Retzlaff <roretzla@linux.microsoft.com>

> 
>
  
Stephen Hemminger Aug. 9, 2023, 3:34 p.m. UTC | #4
On Tue, 8 Aug 2023 16:23:43 -0700
Tyler Retzlaff <roretzla@linux.microsoft.com> wrote:

> > 
> > bpf: not built on Windows. Needs some libelf.
> > pdump: not built on Windows. Needs bpf for filtering

A different topic, is it possible to get pdump working on Windows?
Is there a pcap and elf library?  

Might be possible to split out libelf dependency in bpf library.
Libelf is used to load external file, but some uses just use internal data.
  
Dmitry Kozlyuk Aug. 9, 2023, 5:15 p.m. UTC | #5
2023-08-09 08:34 (UTC-0700), Stephen Hemminger:
> On Tue, 8 Aug 2023 16:23:43 -0700
> Tyler Retzlaff <roretzla@linux.microsoft.com> wrote:
> 
> > > 
> > > bpf: not built on Windows. Needs some libelf.
> > > pdump: not built on Windows. Needs bpf for filtering  
> 
> A different topic, is it possible to get pdump working on Windows?

Unlikely with the current state of DPDK and pdump.
The main issue is multiprocess, which is not implemented.
Windows can share hugepages between processes (MapViewOfFile3)
or map it to a fixed address in the reserved region (VirtualAlloc2),
but not both, this was the blocker AFAIR.

> Is there a pcap and elf library?

net/pcap already uses libpcap.
Looks like there are libelf ports too.

> Might be possible to split out libelf dependency in bpf library.
> Libelf is used to load external file, but some uses just use internal data.

ELF library is an optional dependency already.
  
Maxime Coquelin Oct. 24, 2023, 7:20 a.m. UTC | #6
On 8/8/23 19:35, Stephen Hemminger wrote:
> Since 23.11 is an LTS release it is time to remove the experimental
> bandaid off many API's. There are about 850 API's marked with experimental
> on current main branch. This addresses the easy to remove ones and
> gets it down to about 690 places.
> 
> The rule is any API that has been in since 22.11 needs to have
> experimental removed (or deleted). The experimental flag is not a
> "get out of ABI stability for free" card.
> 
> Stephen Hemminger (20):
>    bpf: make rte_bpf_dump and rte_bpf_convert stable API's
>    cmdline: make experimental API's stable
>    ethdev: mark rte_mtr API's as stable
>    ethdev: mark rte_tm API's as stable
>    pdump: make API's stable
>    pcapng: mark API's as stable
>    net: remove experimental from functions
>    rcu: remove experimental from rte_rcu_qbsr
>    lpm: remove experimental
>    mbuf: remove experimental from create_extbuf
>    hash: remove experimental from toeplitz hash
>    timer: remove experimental from rte_timer_next_ticks
>    sched: remove experimental
>    dmadev: mark API's as not experimental
>    meter: remove experimental warning from comments
>    power: remove experimental from API's
>    kvargs: remove experimental flag
>    ip_frag: mark a couple of functions stable
>    member: remove experimental tag
>    security: remove experimental flag
> 
>   lib/bpf/rte_bpf.h                   |  2 -
>   lib/bpf/version.map                 |  9 +--
>   lib/cmdline/cmdline.h               |  1 -
>   lib/cmdline/cmdline_parse.h         |  4 --
>   lib/cmdline/cmdline_rdline.h        |  4 --
>   lib/cmdline/version.map             | 26 +++------
>   lib/dmadev/rte_dmadev.h             | 85 ----------------------------
>   lib/dmadev/version.map              |  2 +-
>   lib/ethdev/rte_mtr.h                | 25 +-------
>   lib/ethdev/rte_tm.h                 | 34 -----------
>   lib/ethdev/version.map              | 88 ++++++++++++++---------------
>   lib/hash/rte_thash.h                | 44 ---------------
>   lib/hash/rte_thash_gfni.h           |  8 ---
>   lib/hash/rte_thash_x86_gfni.h       |  8 ---
>   lib/hash/version.map                | 16 ++----
>   lib/ip_frag/rte_ip_frag.h           |  2 -
>   lib/ip_frag/version.map             |  9 +--
>   lib/kvargs/rte_kvargs.h             |  4 --
>   lib/kvargs/version.map              |  8 +--
>   lib/lpm/rte_lpm.h                   |  4 --
>   lib/lpm/version.map                 |  7 +--
>   lib/mbuf/rte_mbuf.h                 |  1 -
>   lib/mbuf/version.map                |  8 +--
>   lib/member/rte_member.h             | 54 ------------------
>   lib/member/version.map              | 12 +---
>   lib/meter/rte_meter.h               | 12 ----
>   lib/net/rte_ip.h                    | 19 -------
>   lib/pcapng/rte_pcapng.h             | 11 ----
>   lib/pcapng/version.map              |  6 +-
>   lib/pdump/rte_pdump.h               | 12 ----
>   lib/pdump/version.map               | 11 +---
>   lib/power/rte_power.h               |  4 --
>   lib/power/rte_power_guest_channel.h |  4 --
>   lib/power/rte_power_intel_uncore.h  |  9 ---
>   lib/power/rte_power_pmd_mgmt.h      | 40 -------------
>   lib/power/version.map               | 33 ++++-------
>   lib/rcu/rte_rcu_qsbr.h              | 20 -------
>   lib/rcu/version.map                 | 15 ++---
>   lib/sched/rte_pie.h                 |  8 ---
>   lib/sched/rte_sched.h               |  5 --
>   lib/sched/version.map               | 18 ++----
>   lib/security/rte_security.h         | 35 ------------
>   lib/security/version.map            | 17 ++----
>   lib/timer/rte_timer.h               |  4 --
>   lib/timer/version.map               |  7 +--
>   45 files changed, 97 insertions(+), 658 deletions(-)
> 

You removed Vhost changes altogether, but I only asked for the Vhost
Async API changes to be removed, i.e. the APIs in rte_vhost_async.h.

Maxime
  
Stephen Hemminger Oct. 24, 2023, 4:05 p.m. UTC | #7
On Tue, 24 Oct 2023 09:20:05 +0200
Maxime Coquelin <maxime.coquelin@redhat.com> wrote:

> You removed Vhost changes altogether, but I only asked for the Vhost
> Async API changes to be removed, i.e. the APIs in rte_vhost_async.h.
> 
> Maxime

Will get back to vhost, just moved it to the end of the TODO list.