DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH] doc: announce ring ABI and API changes
@ 2019-01-15 23:59 Gage Eads
  2019-01-16  0:34 ` Stephen Hemminger
  2019-01-18 15:28 ` [dpdk-dev] [PATCH v2] doc: announce ring API change Gage Eads
  0 siblings, 2 replies; 20+ messages in thread
From: Gage Eads @ 2019-01-15 23:59 UTC (permalink / raw)
  To: dev
  Cc: olivier.matz, arybchenko, bruce.richardson, konstantin.ananyev, stephen

In order to support the non-blocking ring[1], one ABI change and one API
change are required in librte_ring. This commit updates the deprecation
notice to pave the way for their inclusion in 19.05.

[1] http://mails.dpdk.org/archives/dev/2019-January/123475.html

Signed-off-by: Gage Eads <gage.eads@intel.com>
---
 doc/guides/rel_notes/deprecation.rst | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst
index d4aea4b46..d74cff467 100644
--- a/doc/guides/rel_notes/deprecation.rst
+++ b/doc/guides/rel_notes/deprecation.rst
@@ -83,3 +83,14 @@ Deprecation Notices
   - The size and layout of ``rte_cryptodev_qp_conf`` and syntax of
     ``rte_cryptodev_queue_pair_setup`` will change to to allow to use
     two different mempools for crypto and device private sessions.
+
+* ring: two changes are planned for rte_ring in v19.05:
+
+  - The ring head and tail values are planned to be changed from ``uint32_t``
+    to ``size_t``. This reduces the likelihood of wrap-around to effectively
+    zero for 64-bit builds, which is important in avoiding the ABA problem in
+    the upcoming non-blocking ring implementation. (32-bit builds are
+    unaffected by this change.)
+  - rte_ring_get_memsize() will get a new ``flags`` parameter, so it can
+    calculate the memory required for rings that require more than 8B per entry
+    (such as the upcoming non-blocking ring).
-- 
2.13.6

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [dpdk-dev] [PATCH] doc: announce ring ABI and API changes
  2019-01-15 23:59 [dpdk-dev] [PATCH] doc: announce ring ABI and API changes Gage Eads
@ 2019-01-16  0:34 ` Stephen Hemminger
  2019-01-16 18:21   ` Eads, Gage
  2019-01-18 15:28 ` [dpdk-dev] [PATCH v2] doc: announce ring API change Gage Eads
  1 sibling, 1 reply; 20+ messages in thread
From: Stephen Hemminger @ 2019-01-16  0:34 UTC (permalink / raw)
  To: Gage Eads
  Cc: dev, olivier.matz, arybchenko, bruce.richardson, konstantin.ananyev

On Tue, 15 Jan 2019 17:59:34 -0600
Gage Eads <gage.eads@intel.com> wrote:

> In order to support the non-blocking ring[1], one ABI change and one API
> change are required in librte_ring. This commit updates the deprecation
> notice to pave the way for their inclusion in 19.05.
> 
> [1] http://mails.dpdk.org/archives/dev/2019-January/123475.html
> 
> Signed-off-by: Gage Eads <gage.eads@intel.com>
> ---
>  doc/guides/rel_notes/deprecation.rst | 11 +++++++++++
>  1 file changed, 11 insertions(+)
> 
> diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst
> index d4aea4b46..d74cff467 100644
> --- a/doc/guides/rel_notes/deprecation.rst
> +++ b/doc/guides/rel_notes/deprecation.rst
> @@ -83,3 +83,14 @@ Deprecation Notices
>    - The size and layout of ``rte_cryptodev_qp_conf`` and syntax of
>      ``rte_cryptodev_queue_pair_setup`` will change to to allow to use
>      two different mempools for crypto and device private sessions.
> +
> +* ring: two changes are planned for rte_ring in v19.05:
> +
> +  - The ring head and tail values are planned to be changed from ``uint32_t``
> +    to ``size_t``. This reduces the likelihood of wrap-around to effectively
> +    zero for 64-bit builds, which is important in avoiding the ABA problem in
> +    the upcoming non-blocking ring implementation. (32-bit builds are
> +    unaffected by this change.)
> +  - rte_ring_get_memsize() will get a new ``flags`` parameter, so it can
> +    calculate the memory required for rings that require more than 8B per entry
> +    (such as the upcoming non-blocking ring).


Would it be possible to support new and old ring types, either through naming
tricks and/or new ring flag?  Changing things like ring buffer and mbuf are basically
a flag day for all users.

I admit to having a personal interest in this since the API/ABI churn is this
project causes vendors to stay on older code. And older code does not correctly
support newer networks.

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [dpdk-dev] [PATCH] doc: announce ring ABI and API changes
  2019-01-16  0:34 ` Stephen Hemminger
@ 2019-01-16 18:21   ` Eads, Gage
  0 siblings, 0 replies; 20+ messages in thread
From: Eads, Gage @ 2019-01-16 18:21 UTC (permalink / raw)
  To: Stephen Hemminger
  Cc: dev, olivier.matz, arybchenko, Richardson, Bruce, Ananyev, Konstantin



> -----Original Message-----
> From: Stephen Hemminger [mailto:stephen@networkplumber.org]
> Sent: Tuesday, January 15, 2019 6:34 PM
> To: Eads, Gage <gage.eads@intel.com>
> Cc: dev@dpdk.org; olivier.matz@6wind.com; arybchenko@solarflare.com;
> Richardson, Bruce <bruce.richardson@intel.com>; Ananyev, Konstantin
> <konstantin.ananyev@intel.com>
> Subject: Re: [PATCH] doc: announce ring ABI and API changes
> 
> On Tue, 15 Jan 2019 17:59:34 -0600
> Gage Eads <gage.eads@intel.com> wrote:
> 
> > In order to support the non-blocking ring[1], one ABI change and one
> > API change are required in librte_ring. This commit updates the
> > deprecation notice to pave the way for their inclusion in 19.05.
> >
> > [1] http://mails.dpdk.org/archives/dev/2019-January/123475.html
> >
> > Signed-off-by: Gage Eads <gage.eads@intel.com>
> > ---
> >  doc/guides/rel_notes/deprecation.rst | 11 +++++++++++
> >  1 file changed, 11 insertions(+)
> >
> > diff --git a/doc/guides/rel_notes/deprecation.rst
> > b/doc/guides/rel_notes/deprecation.rst
> > index d4aea4b46..d74cff467 100644
> > --- a/doc/guides/rel_notes/deprecation.rst
> > +++ b/doc/guides/rel_notes/deprecation.rst
> > @@ -83,3 +83,14 @@ Deprecation Notices
> >    - The size and layout of ``rte_cryptodev_qp_conf`` and syntax of
> >      ``rte_cryptodev_queue_pair_setup`` will change to to allow to use
> >      two different mempools for crypto and device private sessions.
> > +
> > +* ring: two changes are planned for rte_ring in v19.05:
> > +
> > +  - The ring head and tail values are planned to be changed from ``uint32_t``
> > +    to ``size_t``. This reduces the likelihood of wrap-around to effectively
> > +    zero for 64-bit builds, which is important in avoiding the ABA problem in
> > +    the upcoming non-blocking ring implementation. (32-bit builds are
> > +    unaffected by this change.)
> > +  - rte_ring_get_memsize() will get a new ``flags`` parameter, so it can
> > +    calculate the memory required for rings that require more than 8B per
> entry
> > +    (such as the upcoming non-blocking ring).
> 
> 
> Would it be possible to support new and old ring types, either through naming
> tricks and/or new ring flag?  Changing things like ring buffer and mbuf are
> basically a flag day for all users.
> 
> I admit to having a personal interest in this since the API/ABI churn is this project
> causes vendors to stay on older code. And older code does not correctly support
> newer networks.

Fair enough -- I appreciate the additional context wrt avoiding churn.

This might be doable with the following change: 

"
@@ -70,6 +70,15 @@ struct rte_ring_headtail {
        uint32_t single;         /**< True if single prod/cons */
 };
 
+/* 64-bit version of rte_ring_headtail, for use by rings that need to avoid
+ * head/tail wrap-around.
+ */
+struct rte_ring_headtail_64 {
+       volatile uint64_t head;  /**< Prod/consumer head. */
+       volatile uint64_t tail;  /**< Prod/consumer tail. */
+       uint32_t single;       /**< True if single prod/cons */
+};
+
 /**
  * An RTE ring structure.
  *
@@ -97,11 +106,19 @@ struct rte_ring {
        char pad0 __rte_cache_aligned; /**< empty cache line */
 
        /** Ring producer status. */
-       struct rte_ring_headtail prod __rte_cache_aligned;
+       RTE_STD_C11
+       union {
+               struct rte_ring_headtail prod __rte_cache_aligned;
+               struct rte_ring_headtail_64 prod_64 __rte_cache_aligned;
+       };
        char pad1 __rte_cache_aligned; /**< empty cache line */
 
        /** Ring consumer status. */
-       struct rte_ring_headtail cons __rte_cache_aligned;
+       RTE_STD_C11
+       union {
+               struct rte_ring_headtail cons __rte_cache_aligned;
+               struct rte_ring_headtail_64 cons_64 __rte_cache_aligned;
+       };
        char pad2 __rte_cache_aligned; /**< empty cache line */
 };
"

The ABI compatibility hinges on the fact that today's prod and cons are both padded out to a full cache line, and the 64-bit version fits within a single cache line. (Confirmed with pahole.)

abi-compliance-checker reports two issues, but both appear to be false positives:
1. "Field cons has been removed from this type"
2. "Field prod has been removed from this type"

I need to do more work to see whether/how the ring functions are affected by such a change, but I first want to check if the community agrees with this approach. Note that I don't see any way to avoid the API change to rte_ring_get_memsize, but I doubt that would have near the impact of a ring data structure change.

Thanks,
Gage

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [dpdk-dev] [PATCH v2] doc: announce ring API change
  2019-01-15 23:59 [dpdk-dev] [PATCH] doc: announce ring ABI and API changes Gage Eads
  2019-01-16  0:34 ` Stephen Hemminger
@ 2019-01-18 15:28 ` Gage Eads
  2019-01-18 15:31   ` [dpdk-dev] [PATCH v3] " Gage Eads
  1 sibling, 1 reply; 20+ messages in thread
From: Gage Eads @ 2019-01-18 15:28 UTC (permalink / raw)
  To: dev
  Cc: olivier.matz, arybchenko, bruce.richardson, konstantin.ananyev, stephen

In order to support the non-blocking ring[1], an API change (additional
argument to rte_ring_get_memsize()) is required in librte_ring. This commit
updates the deprecation notice to pave the way for its inclusion in
19.05.

[1] http://mails.dpdk.org/archives/dev/2019-January/123774.html

Signed-off-by: Gage Eads <gage.eads@intel.com>
---
v2:
 - Drop the ABI change notice

 doc/guides/rel_notes/deprecation.rst | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst
index d4aea4b46..5b74a2aa7 100644
--- a/doc/guides/rel_notes/deprecation.rst
+++ b/doc/guides/rel_notes/deprecation.rst
@@ -83,3 +83,9 @@ Deprecation Notices
   - The size and layout of ``rte_cryptodev_qp_conf`` and syntax of
     ``rte_cryptodev_queue_pair_setup`` will change to to allow to use
     two different mempools for crypto and device private sessions.
+
+* ring: two changes are planned for rte_ring in v19.05:
+
+  - rte_ring_get_memsize() will get a new ``flags`` parameter, so it can
+    calculate the memory required for rings that require more than 8B per entry
+    (such as the upcoming non-blocking ring).
-- 
2.13.6

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [dpdk-dev] [PATCH v3] doc: announce ring API change
  2019-01-18 15:28 ` [dpdk-dev] [PATCH v2] doc: announce ring API change Gage Eads
@ 2019-01-18 15:31   ` Gage Eads
  2019-02-01 11:16     ` Thomas Monjalon
  2019-02-01 14:36     ` [dpdk-dev] [PATCH v4] " Gage Eads
  0 siblings, 2 replies; 20+ messages in thread
From: Gage Eads @ 2019-01-18 15:31 UTC (permalink / raw)
  To: dev
  Cc: olivier.matz, arybchenko, bruce.richardson, konstantin.ananyev, stephen

In order to support the non-blocking ring[1], an API change (additional
argument to rte_ring_get_memsize()) is required in librte_ring. This commit
updates the deprecation notice to pave the way for its inclusion in
19.05.

[1] http://mails.dpdk.org/archives/dev/2019-January/123774.html

Signed-off-by: Gage Eads <gage.eads@intel.com>
---
v3:
 - "two changes are planned" -> "one change is planned"
v2:
 - Drop the ABI change notice

 doc/guides/rel_notes/deprecation.rst | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst
index d4aea4b46..91e048a6a 100644
--- a/doc/guides/rel_notes/deprecation.rst
+++ b/doc/guides/rel_notes/deprecation.rst
@@ -83,3 +83,9 @@ Deprecation Notices
   - The size and layout of ``rte_cryptodev_qp_conf`` and syntax of
     ``rte_cryptodev_queue_pair_setup`` will change to to allow to use
     two different mempools for crypto and device private sessions.
+
+* ring: one change is planned for rte_ring in v19.05:
+
+  - rte_ring_get_memsize() will get a new ``flags`` parameter, so it can
+    calculate the memory required for rings that require more than 8B per entry
+    (such as the upcoming non-blocking ring).
-- 
2.13.6

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [dpdk-dev] [PATCH v3] doc: announce ring API change
  2019-01-18 15:31   ` [dpdk-dev] [PATCH v3] " Gage Eads
@ 2019-02-01 11:16     ` Thomas Monjalon
  2019-02-01 14:18       ` Eads, Gage
  2019-02-01 14:36     ` [dpdk-dev] [PATCH v4] " Gage Eads
  1 sibling, 1 reply; 20+ messages in thread
From: Thomas Monjalon @ 2019-02-01 11:16 UTC (permalink / raw)
  To: dev, Gage Eads
  Cc: olivier.matz, arybchenko, bruce.richardson, konstantin.ananyev,
	stephen, john.mcnamara

18/01/2019 16:31, Gage Eads:
> In order to support the non-blocking ring[1], an API change (additional
> argument to rte_ring_get_memsize()) is required in librte_ring. This commit
> updates the deprecation notice to pave the way for its inclusion in
> 19.05.
> 
> [1] http://mails.dpdk.org/archives/dev/2019-January/123774.html
> 
> Signed-off-by: Gage Eads <gage.eads@intel.com>

Nobody agreed on this change.

Gage, do you still want to push non-blocking ring in 19.05?


---

> +* ring: one change is planned for rte_ring in v19.05:
> +
> +  - rte_ring_get_memsize() will get a new ``flags`` parameter, so it can
> +    calculate the memory required for rings that require more than 8B per entry
> +    (such as the upcoming non-blocking ring).

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [dpdk-dev] [PATCH v3] doc: announce ring API change
  2019-02-01 11:16     ` Thomas Monjalon
@ 2019-02-01 14:18       ` Eads, Gage
  0 siblings, 0 replies; 20+ messages in thread
From: Eads, Gage @ 2019-02-01 14:18 UTC (permalink / raw)
  To: Thomas Monjalon, dev
  Cc: olivier.matz, arybchenko, Richardson, Bruce, Ananyev, Konstantin,
	stephen, Mcnamara, John



> -----Original Message-----
> From: Thomas Monjalon [mailto:thomas@monjalon.net]
> Sent: Friday, February 1, 2019 5:17 AM
> To: dev@dpdk.org; Eads, Gage <gage.eads@intel.com>
> Cc: olivier.matz@6wind.com; arybchenko@solarflare.com; Richardson, Bruce
> <bruce.richardson@intel.com>; Ananyev, Konstantin
> <konstantin.ananyev@intel.com>; stephen@networkplumber.org; Mcnamara,
> John <john.mcnamara@intel.com>
> Subject: Re: [dpdk-dev] [PATCH v3] doc: announce ring API change
> 
> 18/01/2019 16:31, Gage Eads:
> > In order to support the non-blocking ring[1], an API change
> > (additional argument to rte_ring_get_memsize()) is required in
> > librte_ring. This commit updates the deprecation notice to pave the
> > way for its inclusion in 19.05.
> >
> > [1] http://mails.dpdk.org/archives/dev/2019-January/123774.html
> >
> > Signed-off-by: Gage Eads <gage.eads@intel.com>
> 
> Nobody agreed on this change.
> 
> Gage, do you still want to push non-blocking ring in 19.05?
> 

It was optimistic to try for agreement before the 19.02 release :) -- no, let's delay it until 19.08. I'll edit and resubmit this patch.

> 
> ---
> 
> > +* ring: one change is planned for rte_ring in v19.05:
> > +
> > +  - rte_ring_get_memsize() will get a new ``flags`` parameter, so it can
> > +    calculate the memory required for rings that require more than 8B per
> entry
> > +    (such as the upcoming non-blocking ring).
> 
> 
> 
> 

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [dpdk-dev] [PATCH v4] doc: announce ring API change
  2019-01-18 15:31   ` [dpdk-dev] [PATCH v3] " Gage Eads
  2019-02-01 11:16     ` Thomas Monjalon
@ 2019-02-01 14:36     ` Gage Eads
  2019-05-09 23:29       ` Thomas Monjalon
  1 sibling, 1 reply; 20+ messages in thread
From: Gage Eads @ 2019-02-01 14:36 UTC (permalink / raw)
  To: dev
  Cc: olivier.matz, arybchenko, bruce.richardson, konstantin.ananyev,
	stephen, Honnappa.Nagarahalli, gavin.hu, Ola.Liljedahl, nd

In order to support the non-blocking ring[1], an API change (additional
argument to rte_ring_get_memsize()) is required in librte_ring. This commit
updates the deprecation notice to pave the way for its inclusion in
19.08.

[1] http://mails.dpdk.org/archives/dev/2019-January/124162.html

Signed-off-by: Gage Eads <gage.eads@intel.com>
---
v4:
 - 19.05 -> 19.08
v3:
 - "two changes are planned" -> "one change is planned"
v2:
 - Drop the ABI change notice

 doc/guides/rel_notes/deprecation.rst | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst
index d4aea4b46..93509e23a 100644
--- a/doc/guides/rel_notes/deprecation.rst
+++ b/doc/guides/rel_notes/deprecation.rst
@@ -83,3 +83,9 @@ Deprecation Notices
   - The size and layout of ``rte_cryptodev_qp_conf`` and syntax of
     ``rte_cryptodev_queue_pair_setup`` will change to to allow to use
     two different mempools for crypto and device private sessions.
+
+* ring: one change is planned for rte_ring in v19.08:
+
+  - rte_ring_get_memsize() will get a new ``flags`` parameter, so it can
+    calculate the memory required for rings that require more than 8B per entry
+    (such as the upcoming non-blocking ring).
-- 
2.13.6

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [dpdk-dev] [PATCH v4] doc: announce ring API change
  2019-02-01 14:36     ` [dpdk-dev] [PATCH v4] " Gage Eads
@ 2019-05-09 23:29       ` Thomas Monjalon
  2019-05-09 23:29         ` Thomas Monjalon
  2019-05-10 14:53         ` Eads, Gage
  0 siblings, 2 replies; 20+ messages in thread
From: Thomas Monjalon @ 2019-05-09 23:29 UTC (permalink / raw)
  To: dev
  Cc: Gage Eads, olivier.matz, arybchenko, bruce.richardson,
	konstantin.ananyev, stephen, Honnappa.Nagarahalli, gavin.hu,
	Ola.Liljedahl, nd

01/02/2019 15:36, Gage Eads:
> In order to support the non-blocking ring[1], an API change (additional
> argument to rte_ring_get_memsize()) is required in librte_ring. This commit
> updates the deprecation notice to pave the way for its inclusion in
> 19.08.
> 
> [1] http://mails.dpdk.org/archives/dev/2019-January/124162.html
> 
> Signed-off-by: Gage Eads <gage.eads@intel.com>

There is still no agreement on this change?

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [dpdk-dev] [PATCH v4] doc: announce ring API change
  2019-05-09 23:29       ` Thomas Monjalon
@ 2019-05-09 23:29         ` Thomas Monjalon
  2019-05-10 14:53         ` Eads, Gage
  1 sibling, 0 replies; 20+ messages in thread
From: Thomas Monjalon @ 2019-05-09 23:29 UTC (permalink / raw)
  To: dev
  Cc: Gage Eads, olivier.matz, arybchenko, bruce.richardson,
	konstantin.ananyev, stephen, Honnappa.Nagarahalli, gavin.hu,
	Ola.Liljedahl, nd

01/02/2019 15:36, Gage Eads:
> In order to support the non-blocking ring[1], an API change (additional
> argument to rte_ring_get_memsize()) is required in librte_ring. This commit
> updates the deprecation notice to pave the way for its inclusion in
> 19.08.
> 
> [1] http://mails.dpdk.org/archives/dev/2019-January/124162.html
> 
> Signed-off-by: Gage Eads <gage.eads@intel.com>

There is still no agreement on this change?



^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [dpdk-dev] [PATCH v4] doc: announce ring API change
  2019-05-09 23:29       ` Thomas Monjalon
  2019-05-09 23:29         ` Thomas Monjalon
@ 2019-05-10 14:53         ` Eads, Gage
  2019-05-10 14:53           ` Eads, Gage
  2019-05-10 14:58           ` Stephen Hemminger
  1 sibling, 2 replies; 20+ messages in thread
From: Eads, Gage @ 2019-05-10 14:53 UTC (permalink / raw)
  To: Thomas Monjalon, dev
  Cc: olivier.matz, arybchenko, Richardson, Bruce, Ananyev, Konstantin,
	stephen, Honnappa.Nagarahalli, gavin.hu, Ola.Liljedahl, nd

> 01/02/2019 15:36, Gage Eads:
> > In order to support the non-blocking ring[1], an API change
> > (additional argument to rte_ring_get_memsize()) is required in
> > librte_ring. This commit updates the deprecation notice to pave the
> > way for its inclusion in 19.08.
> >
> > [1] http://mails.dpdk.org/archives/dev/2019-January/124162.html
> >
> > Signed-off-by: Gage Eads <gage.eads@intel.com>
> 
> There is still no agreement on this change?
> 

Still none. I was hoping this discussion (http://mails.dpdk.org/archives/dev/2019-April/129229.html) would lead to some clear direction, but at this point the effort is stalled.

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [dpdk-dev] [PATCH v4] doc: announce ring API change
  2019-05-10 14:53         ` Eads, Gage
@ 2019-05-10 14:53           ` Eads, Gage
  2019-05-10 14:58           ` Stephen Hemminger
  1 sibling, 0 replies; 20+ messages in thread
From: Eads, Gage @ 2019-05-10 14:53 UTC (permalink / raw)
  To: Thomas Monjalon, dev
  Cc: olivier.matz, arybchenko, Richardson, Bruce, Ananyev, Konstantin,
	stephen, Honnappa.Nagarahalli, gavin.hu, Ola.Liljedahl, nd

> 01/02/2019 15:36, Gage Eads:
> > In order to support the non-blocking ring[1], an API change
> > (additional argument to rte_ring_get_memsize()) is required in
> > librte_ring. This commit updates the deprecation notice to pave the
> > way for its inclusion in 19.08.
> >
> > [1] http://mails.dpdk.org/archives/dev/2019-January/124162.html
> >
> > Signed-off-by: Gage Eads <gage.eads@intel.com>
> 
> There is still no agreement on this change?
> 

Still none. I was hoping this discussion (http://mails.dpdk.org/archives/dev/2019-April/129229.html) would lead to some clear direction, but at this point the effort is stalled.

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [dpdk-dev] [PATCH v4] doc: announce ring API change
  2019-05-10 14:53         ` Eads, Gage
  2019-05-10 14:53           ` Eads, Gage
@ 2019-05-10 14:58           ` Stephen Hemminger
  2019-05-10 14:58             ` Stephen Hemminger
  2019-05-10 15:19             ` Ola Liljedahl
  1 sibling, 2 replies; 20+ messages in thread
From: Stephen Hemminger @ 2019-05-10 14:58 UTC (permalink / raw)
  To: Eads, Gage
  Cc: Thomas Monjalon, dev, olivier.matz, arybchenko, Richardson,
	Bruce, Ananyev, Konstantin, Honnappa.Nagarahalli, gavin.hu,
	Ola.Liljedahl, nd

On Fri, 10 May 2019 14:53:56 +0000
"Eads, Gage" <gage.eads@intel.com> wrote:

> > 01/02/2019 15:36, Gage Eads:  
> > > In order to support the non-blocking ring[1], an API change
> > > (additional argument to rte_ring_get_memsize()) is required in
> > > librte_ring. This commit updates the deprecation notice to pave the
> > > way for its inclusion in 19.08.
> > >
> > > [1] http://mails.dpdk.org/archives/dev/2019-January/124162.html
> > >
> > > Signed-off-by: Gage Eads <gage.eads@intel.com>  
> > 
> > There is still no agreement on this change?
> >   
> 
> Still none. I was hoping this discussion (http://mails.dpdk.org/archives/dev/2019-April/129229.html) would lead to some clear direction, but at this point the effort is stalled.

The fundamental tradeoff is between non-blocking rings and ABI breakage.

Why not have a new ring type for non-blocking rings since non-blocking
rings are not necessary for all use cases.

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [dpdk-dev] [PATCH v4] doc: announce ring API change
  2019-05-10 14:58           ` Stephen Hemminger
@ 2019-05-10 14:58             ` Stephen Hemminger
  2019-05-10 15:19             ` Ola Liljedahl
  1 sibling, 0 replies; 20+ messages in thread
From: Stephen Hemminger @ 2019-05-10 14:58 UTC (permalink / raw)
  To: Eads, Gage
  Cc: Thomas Monjalon, dev, olivier.matz, arybchenko, Richardson,
	Bruce, Ananyev, Konstantin, Honnappa.Nagarahalli, gavin.hu,
	Ola.Liljedahl, nd

On Fri, 10 May 2019 14:53:56 +0000
"Eads, Gage" <gage.eads@intel.com> wrote:

> > 01/02/2019 15:36, Gage Eads:  
> > > In order to support the non-blocking ring[1], an API change
> > > (additional argument to rte_ring_get_memsize()) is required in
> > > librte_ring. This commit updates the deprecation notice to pave the
> > > way for its inclusion in 19.08.
> > >
> > > [1] http://mails.dpdk.org/archives/dev/2019-January/124162.html
> > >
> > > Signed-off-by: Gage Eads <gage.eads@intel.com>  
> > 
> > There is still no agreement on this change?
> >   
> 
> Still none. I was hoping this discussion (http://mails.dpdk.org/archives/dev/2019-April/129229.html) would lead to some clear direction, but at this point the effort is stalled.

The fundamental tradeoff is between non-blocking rings and ABI breakage.

Why not have a new ring type for non-blocking rings since non-blocking
rings are not necessary for all use cases.

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [dpdk-dev] [PATCH v4] doc: announce ring API change
  2019-05-10 14:58           ` Stephen Hemminger
  2019-05-10 14:58             ` Stephen Hemminger
@ 2019-05-10 15:19             ` Ola Liljedahl
  2019-05-10 15:19               ` Ola Liljedahl
  2019-05-10 16:28               ` Eads, Gage
  1 sibling, 2 replies; 20+ messages in thread
From: Ola Liljedahl @ 2019-05-10 15:19 UTC (permalink / raw)
  To: stephen, gage.eads
  Cc: arybchenko, nd, konstantin.ananyev, thomas, bruce.richardson,
	dev, olivier.matz, Honnappa Nagarahalli,
	Gavin Hu (Arm Technology China)

On Fri, 2019-05-10 at 07:58 -0700, Stephen Hemminger wrote:
> On Fri, 10 May 2019 14:53:56 +0000
> "Eads, Gage" <gage.eads@intel.com> wrote:
> 
> 01/02/2019 15:36, Gage Eads:  
> In order to support the non-blocking ring[1], an API change
> (additional argument to rte_ring_get_memsize()) is required in
> librte_ring. This commit updates the deprecation notice to pave the
> way for its inclusion in 19.08.
> 
> [1] http://mails.dpdk.org/archives/dev/2019-January/124162.html
> 
> Signed-off-by: Gage Eads <gage.eads@intel.com>  
> 
> There is still no agreement on this change?
>   
> 
> Still none. I was hoping this discussion (
> http://mails.dpdk.org/archives/dev/2019-April/129229.html) would lead to some
> clear direction, but at this point the effort is stalled.
> 
> The fundamental tradeoff is between non-blocking rings and ABI breakage.

It is also possible to do "non-blocking" (but not lock-free) rings with the
original element size (a pointer per ring slot) as implemented here:
https://github.com/ARM-software/progress64/blob/master/src/p64_ringbuf.c
Some extra (head&tail) metadata is required but I think there is space for that
in the rte_ring structure.

> Why not have a new ring type for non-blocking rings since non-blocking
> rings are not necessary for all use cases.

I proposed a new library ("rte_lfring") with lock-free rings here:
https://mails.dpdk.org/archives/dev/2019-January/124242.html
The lock-free design should be the same as in Gage's patch.

rte_lfring could of course be part of the rte_ring library.


-- 
Ola Liljedahl, Networking System Architect, Arm
Phone +46706866373, Skype ola.liljedahl

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [dpdk-dev] [PATCH v4] doc: announce ring API change
  2019-05-10 15:19             ` Ola Liljedahl
@ 2019-05-10 15:19               ` Ola Liljedahl
  2019-05-10 16:28               ` Eads, Gage
  1 sibling, 0 replies; 20+ messages in thread
From: Ola Liljedahl @ 2019-05-10 15:19 UTC (permalink / raw)
  To: stephen, gage.eads
  Cc: arybchenko, nd, konstantin.ananyev, thomas, bruce.richardson,
	dev, olivier.matz, Honnappa Nagarahalli,
	Gavin Hu (Arm Technology China)

On Fri, 2019-05-10 at 07:58 -0700, Stephen Hemminger wrote:
> On Fri, 10 May 2019 14:53:56 +0000
> "Eads, Gage" <gage.eads@intel.com> wrote:
> 
> 01/02/2019 15:36, Gage Eads:  
> In order to support the non-blocking ring[1], an API change
> (additional argument to rte_ring_get_memsize()) is required in
> librte_ring. This commit updates the deprecation notice to pave the
> way for its inclusion in 19.08.
> 
> [1] http://mails.dpdk.org/archives/dev/2019-January/124162.html
> 
> Signed-off-by: Gage Eads <gage.eads@intel.com>  
> 
> There is still no agreement on this change?
>   
> 
> Still none. I was hoping this discussion (
> http://mails.dpdk.org/archives/dev/2019-April/129229.html) would lead to some
> clear direction, but at this point the effort is stalled.
> 
> The fundamental tradeoff is between non-blocking rings and ABI breakage.

It is also possible to do "non-blocking" (but not lock-free) rings with the
original element size (a pointer per ring slot) as implemented here:
https://github.com/ARM-software/progress64/blob/master/src/p64_ringbuf.c
Some extra (head&tail) metadata is required but I think there is space for that
in the rte_ring structure.

> Why not have a new ring type for non-blocking rings since non-blocking
> rings are not necessary for all use cases.

I proposed a new library ("rte_lfring") with lock-free rings here:
https://mails.dpdk.org/archives/dev/2019-January/124242.html
The lock-free design should be the same as in Gage's patch.

rte_lfring could of course be part of the rte_ring library.


-- 
Ola Liljedahl, Networking System Architect, Arm
Phone +46706866373, Skype ola.liljedahl

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [dpdk-dev] [PATCH v4] doc: announce ring API change
  2019-05-10 15:19             ` Ola Liljedahl
  2019-05-10 15:19               ` Ola Liljedahl
@ 2019-05-10 16:28               ` Eads, Gage
  2019-05-10 16:28                 ` Eads, Gage
  2019-05-13 11:46                 ` Olivier Matz
  1 sibling, 2 replies; 20+ messages in thread
From: Eads, Gage @ 2019-05-10 16:28 UTC (permalink / raw)
  To: Ola Liljedahl, stephen
  Cc: arybchenko, nd, Ananyev, Konstantin, thomas, Richardson, Bruce,
	dev, olivier.matz, Honnappa Nagarahalli,
	Gavin Hu (Arm Technology China)

> -----Original Message-----
> From: Ola Liljedahl [mailto:Ola.Liljedahl@arm.com]
> Sent: Friday, May 10, 2019 10:19 AM
> To: stephen@networkplumber.org; Eads, Gage <gage.eads@intel.com>
> Cc: arybchenko@solarflare.com; nd <nd@arm.com>; Ananyev, Konstantin
> <konstantin.ananyev@intel.com>; thomas@monjalon.net; Richardson,
> Bruce <bruce.richardson@intel.com>; dev@dpdk.org;
> olivier.matz@6wind.com; Honnappa Nagarahalli
> <Honnappa.Nagarahalli@arm.com>; Gavin Hu (Arm Technology China)
> <Gavin.Hu@arm.com>
> Subject: Re: [dpdk-dev] [PATCH v4] doc: announce ring API change
> 
> On Fri, 2019-05-10 at 07:58 -0700, Stephen Hemminger wrote:
> > On Fri, 10 May 2019 14:53:56 +0000
> > "Eads, Gage" <gage.eads@intel.com> wrote:
> >
> > 01/02/2019 15:36, Gage Eads:
> > In order to support the non-blocking ring[1], an API change
> > (additional argument to rte_ring_get_memsize()) is required in
> > librte_ring. This commit updates the deprecation notice to pave the
> > way for its inclusion in 19.08.
> >
> > [1] http://mails.dpdk.org/archives/dev/2019-January/124162.html
> >
> > Signed-off-by: Gage Eads <gage.eads@intel.com>
> >
> > There is still no agreement on this change?
> >
> >
> > Still none. I was hoping this discussion (
> > http://mails.dpdk.org/archives/dev/2019-April/129229.html) would lead
> > to some clear direction, but at this point the effort is stalled.
> >
> > The fundamental tradeoff is between non-blocking rings and ABI breakage.
> 
> It is also possible to do "non-blocking" (but not lock-free) rings with the
> original element size (a pointer per ring slot) as implemented here:
> https://github.com/ARM-
> software/progress64/blob/master/src/p64_ringbuf.c
> Some extra (head&tail) metadata is required but I think there is space for
> that in the rte_ring structure.
> 
> > Why not have a new ring type for non-blocking rings since non-blocking
> > rings are not necessary for all use cases.
> 
> I proposed a new library ("rte_lfring") with lock-free rings here:
> https://mails.dpdk.org/archives/dev/2019-January/124242.html
> The lock-free design should be the same as in Gage's patch.
> 
> rte_lfring could of course be part of the rte_ring library.
> 

Just read through the API/ABI stability discussion (https://mails.dpdk.org/archives/dev/2019-April/128969.html). I'll drop my patchset and work on supporting this lfring API instead.

Thanks,
Gage

> 
> --
> Ola Liljedahl, Networking System Architect, Arm Phone +46706866373, Skype
> ola.liljedahl

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [dpdk-dev] [PATCH v4] doc: announce ring API change
  2019-05-10 16:28               ` Eads, Gage
@ 2019-05-10 16:28                 ` Eads, Gage
  2019-05-13 11:46                 ` Olivier Matz
  1 sibling, 0 replies; 20+ messages in thread
From: Eads, Gage @ 2019-05-10 16:28 UTC (permalink / raw)
  To: Ola Liljedahl, stephen
  Cc: arybchenko, nd, Ananyev, Konstantin, thomas, Richardson, Bruce,
	dev, olivier.matz, Honnappa Nagarahalli,
	Gavin Hu (Arm Technology China)

> -----Original Message-----
> From: Ola Liljedahl [mailto:Ola.Liljedahl@arm.com]
> Sent: Friday, May 10, 2019 10:19 AM
> To: stephen@networkplumber.org; Eads, Gage <gage.eads@intel.com>
> Cc: arybchenko@solarflare.com; nd <nd@arm.com>; Ananyev, Konstantin
> <konstantin.ananyev@intel.com>; thomas@monjalon.net; Richardson,
> Bruce <bruce.richardson@intel.com>; dev@dpdk.org;
> olivier.matz@6wind.com; Honnappa Nagarahalli
> <Honnappa.Nagarahalli@arm.com>; Gavin Hu (Arm Technology China)
> <Gavin.Hu@arm.com>
> Subject: Re: [dpdk-dev] [PATCH v4] doc: announce ring API change
> 
> On Fri, 2019-05-10 at 07:58 -0700, Stephen Hemminger wrote:
> > On Fri, 10 May 2019 14:53:56 +0000
> > "Eads, Gage" <gage.eads@intel.com> wrote:
> >
> > 01/02/2019 15:36, Gage Eads:
> > In order to support the non-blocking ring[1], an API change
> > (additional argument to rte_ring_get_memsize()) is required in
> > librte_ring. This commit updates the deprecation notice to pave the
> > way for its inclusion in 19.08.
> >
> > [1] http://mails.dpdk.org/archives/dev/2019-January/124162.html
> >
> > Signed-off-by: Gage Eads <gage.eads@intel.com>
> >
> > There is still no agreement on this change?
> >
> >
> > Still none. I was hoping this discussion (
> > http://mails.dpdk.org/archives/dev/2019-April/129229.html) would lead
> > to some clear direction, but at this point the effort is stalled.
> >
> > The fundamental tradeoff is between non-blocking rings and ABI breakage.
> 
> It is also possible to do "non-blocking" (but not lock-free) rings with the
> original element size (a pointer per ring slot) as implemented here:
> https://github.com/ARM-
> software/progress64/blob/master/src/p64_ringbuf.c
> Some extra (head&tail) metadata is required but I think there is space for
> that in the rte_ring structure.
> 
> > Why not have a new ring type for non-blocking rings since non-blocking
> > rings are not necessary for all use cases.
> 
> I proposed a new library ("rte_lfring") with lock-free rings here:
> https://mails.dpdk.org/archives/dev/2019-January/124242.html
> The lock-free design should be the same as in Gage's patch.
> 
> rte_lfring could of course be part of the rte_ring library.
> 

Just read through the API/ABI stability discussion (https://mails.dpdk.org/archives/dev/2019-April/128969.html). I'll drop my patchset and work on supporting this lfring API instead.

Thanks,
Gage

> 
> --
> Ola Liljedahl, Networking System Architect, Arm Phone +46706866373, Skype
> ola.liljedahl

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [dpdk-dev] [PATCH v4] doc: announce ring API change
  2019-05-10 16:28               ` Eads, Gage
  2019-05-10 16:28                 ` Eads, Gage
@ 2019-05-13 11:46                 ` Olivier Matz
  2019-05-13 11:46                   ` Olivier Matz
  1 sibling, 1 reply; 20+ messages in thread
From: Olivier Matz @ 2019-05-13 11:46 UTC (permalink / raw)
  To: Eads, Gage
  Cc: Ola Liljedahl, stephen, arybchenko, nd, Ananyev, Konstantin,
	thomas, Richardson, Bruce, dev, Honnappa Nagarahalli,
	Gavin Hu (Arm Technology China)

On Fri, May 10, 2019 at 04:28:16PM +0000, Eads, Gage wrote:
> > -----Original Message-----
> > From: Ola Liljedahl [mailto:Ola.Liljedahl@arm.com]
> > Sent: Friday, May 10, 2019 10:19 AM
> > To: stephen@networkplumber.org; Eads, Gage <gage.eads@intel.com>
> > Cc: arybchenko@solarflare.com; nd <nd@arm.com>; Ananyev, Konstantin
> > <konstantin.ananyev@intel.com>; thomas@monjalon.net; Richardson,
> > Bruce <bruce.richardson@intel.com>; dev@dpdk.org;
> > olivier.matz@6wind.com; Honnappa Nagarahalli
> > <Honnappa.Nagarahalli@arm.com>; Gavin Hu (Arm Technology China)
> > <Gavin.Hu@arm.com>
> > Subject: Re: [dpdk-dev] [PATCH v4] doc: announce ring API change
> > 
> > On Fri, 2019-05-10 at 07:58 -0700, Stephen Hemminger wrote:
> > > On Fri, 10 May 2019 14:53:56 +0000
> > > "Eads, Gage" <gage.eads@intel.com> wrote:
> > >
> > > 01/02/2019 15:36, Gage Eads:
> > > In order to support the non-blocking ring[1], an API change
> > > (additional argument to rte_ring_get_memsize()) is required in
> > > librte_ring. This commit updates the deprecation notice to pave the
> > > way for its inclusion in 19.08.
> > >
> > > [1] http://mails.dpdk.org/archives/dev/2019-January/124162.html
> > >
> > > Signed-off-by: Gage Eads <gage.eads@intel.com>
> > >
> > > There is still no agreement on this change?
> > >
> > >
> > > Still none. I was hoping this discussion (
> > > http://mails.dpdk.org/archives/dev/2019-April/129229.html) would lead
> > > to some clear direction, but at this point the effort is stalled.
> > >
> > > The fundamental tradeoff is between non-blocking rings and ABI breakage.
> > 
> > It is also possible to do "non-blocking" (but not lock-free) rings with the
> > original element size (a pointer per ring slot) as implemented here:
> > https://github.com/ARM-
> > software/progress64/blob/master/src/p64_ringbuf.c
> > Some extra (head&tail) metadata is required but I think there is space for
> > that in the rte_ring structure.
> > 
> > > Why not have a new ring type for non-blocking rings since non-blocking
> > > rings are not necessary for all use cases.
> > 
> > I proposed a new library ("rte_lfring") with lock-free rings here:
> > https://mails.dpdk.org/archives/dev/2019-January/124242.html
> > The lock-free design should be the same as in Gage's patch.
> > 
> > rte_lfring could of course be part of the rte_ring library.
> > 
> 
> Just read through the API/ABI stability discussion
> (https://mails.dpdk.org/archives/dev/2019-April/128969.html). I'll drop my
> patchset and work on supporting this lfring API instead.

+1

Given the discussions related to ABI stability, it looks better to
implement this in another library.

Olivier

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [dpdk-dev] [PATCH v4] doc: announce ring API change
  2019-05-13 11:46                 ` Olivier Matz
@ 2019-05-13 11:46                   ` Olivier Matz
  0 siblings, 0 replies; 20+ messages in thread
From: Olivier Matz @ 2019-05-13 11:46 UTC (permalink / raw)
  To: Eads, Gage
  Cc: Ola Liljedahl, stephen, arybchenko, nd, Ananyev, Konstantin,
	thomas, Richardson, Bruce, dev, Honnappa Nagarahalli,
	Gavin Hu (Arm Technology China)

On Fri, May 10, 2019 at 04:28:16PM +0000, Eads, Gage wrote:
> > -----Original Message-----
> > From: Ola Liljedahl [mailto:Ola.Liljedahl@arm.com]
> > Sent: Friday, May 10, 2019 10:19 AM
> > To: stephen@networkplumber.org; Eads, Gage <gage.eads@intel.com>
> > Cc: arybchenko@solarflare.com; nd <nd@arm.com>; Ananyev, Konstantin
> > <konstantin.ananyev@intel.com>; thomas@monjalon.net; Richardson,
> > Bruce <bruce.richardson@intel.com>; dev@dpdk.org;
> > olivier.matz@6wind.com; Honnappa Nagarahalli
> > <Honnappa.Nagarahalli@arm.com>; Gavin Hu (Arm Technology China)
> > <Gavin.Hu@arm.com>
> > Subject: Re: [dpdk-dev] [PATCH v4] doc: announce ring API change
> > 
> > On Fri, 2019-05-10 at 07:58 -0700, Stephen Hemminger wrote:
> > > On Fri, 10 May 2019 14:53:56 +0000
> > > "Eads, Gage" <gage.eads@intel.com> wrote:
> > >
> > > 01/02/2019 15:36, Gage Eads:
> > > In order to support the non-blocking ring[1], an API change
> > > (additional argument to rte_ring_get_memsize()) is required in
> > > librte_ring. This commit updates the deprecation notice to pave the
> > > way for its inclusion in 19.08.
> > >
> > > [1] http://mails.dpdk.org/archives/dev/2019-January/124162.html
> > >
> > > Signed-off-by: Gage Eads <gage.eads@intel.com>
> > >
> > > There is still no agreement on this change?
> > >
> > >
> > > Still none. I was hoping this discussion (
> > > http://mails.dpdk.org/archives/dev/2019-April/129229.html) would lead
> > > to some clear direction, but at this point the effort is stalled.
> > >
> > > The fundamental tradeoff is between non-blocking rings and ABI breakage.
> > 
> > It is also possible to do "non-blocking" (but not lock-free) rings with the
> > original element size (a pointer per ring slot) as implemented here:
> > https://github.com/ARM-
> > software/progress64/blob/master/src/p64_ringbuf.c
> > Some extra (head&tail) metadata is required but I think there is space for
> > that in the rte_ring structure.
> > 
> > > Why not have a new ring type for non-blocking rings since non-blocking
> > > rings are not necessary for all use cases.
> > 
> > I proposed a new library ("rte_lfring") with lock-free rings here:
> > https://mails.dpdk.org/archives/dev/2019-January/124242.html
> > The lock-free design should be the same as in Gage's patch.
> > 
> > rte_lfring could of course be part of the rte_ring library.
> > 
> 
> Just read through the API/ABI stability discussion
> (https://mails.dpdk.org/archives/dev/2019-April/128969.html). I'll drop my
> patchset and work on supporting this lfring API instead.

+1

Given the discussions related to ABI stability, it looks better to
implement this in another library.

Olivier

^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2019-05-13 11:46 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-01-15 23:59 [dpdk-dev] [PATCH] doc: announce ring ABI and API changes Gage Eads
2019-01-16  0:34 ` Stephen Hemminger
2019-01-16 18:21   ` Eads, Gage
2019-01-18 15:28 ` [dpdk-dev] [PATCH v2] doc: announce ring API change Gage Eads
2019-01-18 15:31   ` [dpdk-dev] [PATCH v3] " Gage Eads
2019-02-01 11:16     ` Thomas Monjalon
2019-02-01 14:18       ` Eads, Gage
2019-02-01 14:36     ` [dpdk-dev] [PATCH v4] " Gage Eads
2019-05-09 23:29       ` Thomas Monjalon
2019-05-09 23:29         ` Thomas Monjalon
2019-05-10 14:53         ` Eads, Gage
2019-05-10 14:53           ` Eads, Gage
2019-05-10 14:58           ` Stephen Hemminger
2019-05-10 14:58             ` Stephen Hemminger
2019-05-10 15:19             ` Ola Liljedahl
2019-05-10 15:19               ` Ola Liljedahl
2019-05-10 16:28               ` Eads, Gage
2019-05-10 16:28                 ` Eads, Gage
2019-05-13 11:46                 ` Olivier Matz
2019-05-13 11:46                   ` Olivier Matz

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).