[v3] doc: plan splitting the ethdev ops struct

Message ID 20200304095720.859767-1-ferruh.yigit@intel.com (mailing list archive)
State Accepted, archived
Delegated to: Thomas Monjalon
Headers
Series [v3] doc: plan splitting the ethdev ops struct |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/travis-robot success Travis build: passed
ci/Intel-compilation success Compilation OK

Commit Message

Ferruh Yigit March 4, 2020, 9:57 a.m. UTC
  For the ABI compatibility it is better to hide internal data structures
from the application as much as possible. But because of some inline
functions 'struct eth_dev_ops' can't be hidden completely.

Plan is to split the 'struct eth_dev_ops' into two as ones used by
inline functions and ones not used, and hide the second part that not
used by inline functions completely to the application.

Because of ABI break the work will be done in 20.11

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
Cc: David Marchand <david.marchand@redhat.com>
Cc: Thomas Monjalon <thomas@monjalon.net>
Cc: Andrew Rybchenko <arybchenko@solarflare.com>

v2:
* Add target date for the work
* Give more detail on what will be done

v3:
* Drop the interim implementation, and target 20.11 with ABI break.
---
 doc/guides/rel_notes/deprecation.rst | 9 +++++++++
 1 file changed, 9 insertions(+)
  

Comments

Thomas Monjalon May 24, 2020, 11:18 p.m. UTC | #1
04/03/2020 10:57, Ferruh Yigit:
> For the ABI compatibility it is better to hide internal data structures
> from the application as much as possible. But because of some inline
> functions 'struct eth_dev_ops' can't be hidden completely.
> 
> Plan is to split the 'struct eth_dev_ops' into two as ones used by
> inline functions and ones not used, and hide the second part that not
> used by inline functions completely to the application.
> 
> Because of ABI break the work will be done in 20.11
> 
> Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
> ---
> +* ethdev: Split the ``struct eth_dev_ops`` struct to hide it as much as possible
> +  will be done in 20.11.
> +  Currently the ``struct eth_dev_ops`` struct is accessible by the application
> +  because some inline functions, like ``rte_eth_tx_descriptor_status()``,
> +  access the struct directly.
> +  The struct will be separate in two, the ops used by inline functions will be moved
> +  next to Rx/Tx burst functions, rest of the ``struct eth_dev_ops`` struct will be
> +  moved to header file for drivers to hide it from applications.

Acked-by: Thomas Monjalon <thomas@monjalon.net>
  
Andrew Rybchenko May 25, 2020, 9:11 a.m. UTC | #2
On 5/25/20 2:18 AM, Thomas Monjalon wrote:
> 04/03/2020 10:57, Ferruh Yigit:
>> For the ABI compatibility it is better to hide internal data structures
>> from the application as much as possible. But because of some inline
>> functions 'struct eth_dev_ops' can't be hidden completely.
>>
>> Plan is to split the 'struct eth_dev_ops' into two as ones used by
>> inline functions and ones not used, and hide the second part that not
>> used by inline functions completely to the application.
>>
>> Because of ABI break the work will be done in 20.11
>>
>> Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
>> ---
>> +* ethdev: Split the ``struct eth_dev_ops`` struct to hide it as much as possible
>> +  will be done in 20.11.
>> +  Currently the ``struct eth_dev_ops`` struct is accessible by the application
>> +  because some inline functions, like ``rte_eth_tx_descriptor_status()``,
>> +  access the struct directly.
>> +  The struct will be separate in two, the ops used by inline functions will be moved
>> +  next to Rx/Tx burst functions, rest of the ``struct eth_dev_ops`` struct will be
>> +  moved to header file for drivers to hide it from applications.
> Acked-by: Thomas Monjalon <thomas@monjalon.net>

Acked-by: Andrew Rybchenko <arybchenko@solarflare.com>
  
David Marchand May 25, 2020, 10:24 a.m. UTC | #3
On Wed, Mar 4, 2020 at 10:57 AM Ferruh Yigit <ferruh.yigit@intel.com> wrote:
>
> For the ABI compatibility it is better to hide internal data structures
> from the application as much as possible. But because of some inline
> functions 'struct eth_dev_ops' can't be hidden completely.
>
> Plan is to split the 'struct eth_dev_ops' into two as ones used by
> inline functions and ones not used, and hide the second part that not
> used by inline functions completely to the application.
>
> Because of ABI break the work will be done in 20.11
>
> Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>

Acked-by: David Marchand <david.marchand@redhat.com>
  
Thomas Monjalon May 26, 2020, 1:55 p.m. UTC | #4
25/05/2020 11:11, Andrew Rybchenko:
> On 5/25/20 2:18 AM, Thomas Monjalon wrote:
> > 04/03/2020 10:57, Ferruh Yigit:
> >> For the ABI compatibility it is better to hide internal data structures
> >> from the application as much as possible. But because of some inline
> >> functions 'struct eth_dev_ops' can't be hidden completely.
> >>
> >> Plan is to split the 'struct eth_dev_ops' into two as ones used by
> >> inline functions and ones not used, and hide the second part that not
> >> used by inline functions completely to the application.
> >>
> >> Because of ABI break the work will be done in 20.11
> >>
> >> Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
> >> ---
> >> +* ethdev: Split the ``struct eth_dev_ops`` struct to hide it as much as possible
> >> +  will be done in 20.11.
> >> +  Currently the ``struct eth_dev_ops`` struct is accessible by the application
> >> +  because some inline functions, like ``rte_eth_tx_descriptor_status()``,
> >> +  access the struct directly.
> >> +  The struct will be separate in two, the ops used by inline functions will be moved
> >> +  next to Rx/Tx burst functions, rest of the ``struct eth_dev_ops`` struct will be
> >> +  moved to header file for drivers to hide it from applications.
> > Acked-by: Thomas Monjalon <thomas@monjalon.net>
> 
> Acked-by: Andrew Rybchenko <arybchenko@solarflare.com>

Acked-by: David Marchand <david.marchand@redhat.com>

Applied, thanks
  

Patch

diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst
index 1339f54f5..0bb252f71 100644
--- a/doc/guides/rel_notes/deprecation.rst
+++ b/doc/guides/rel_notes/deprecation.rst
@@ -93,6 +93,15 @@  Deprecation Notices
   In 19.11 PMDs will still update the field even when the offload is not
   enabled.
 
+* ethdev: Split the ``struct eth_dev_ops`` struct to hide it as much as possible
+  will be done in 20.11.
+  Currently the ``struct eth_dev_ops`` struct is accessible by the application
+  because some inline functions, like ``rte_eth_tx_descriptor_status()``,
+  access the struct directly.
+  The struct will be separate in two, the ops used by inline functions will be moved
+  next to Rx/Tx burst functions, rest of the ``struct eth_dev_ops`` struct will be
+  moved to header file for drivers to hide it from applications.
+
 * cryptodev: support for using IV with all sizes is added, J0 still can
   be used but only when IV length in following structs ``rte_crypto_auth_xform``,
   ``rte_crypto_aead_xform`` is set to zero. When IV length is greater or equal