[dpdk-dev,v3] eal: fix libabi macro for device generalization patches

Message ID 1477552109-18624-1-git-send-email-shreyansh.jain@nxp.com (mailing list archive)
State Superseded, archived
Headers

Commit Message

Shreyansh Jain Oct. 27, 2016, 7:08 a.m. UTC
  rte_device/driver generalization patches [1] were merged without a change
in the LIBABIVER macro. This patches bumps the macro of affected libs.
(librte_eal was already bumped; libcryptodev and libetherdev have been
bumped).

Details of ABI/API changes:
- EAL (version not bumped)
  |- type field was removed from rte_driver
  |- rte_pci_device now embeds rte_device
  |- rte_pci_resource renamed to rte_mem_resource
  |- numa_node and devargs of rte_pci_driver is moved to rte_driver
  |- APIs for device hotplug (attach/detach) moved into EAL
  |- API rte_eal_pci_device_name added for PCI device naming
  |- vdev registration API introduced (rte_eal_vdrv_register,
  |  rte_eal_vdrv_unregister

- librte_crypto (v 1=>2)
  |- removed rte_cryptodev_create_unique_device_name API
  |- moved device naming to EAL

- librte_ethdev (v 4=>5)
  |- rte_eth_dev_type is removed
  |- removed dev_type from rte_eth_dev_allocate API
  |- removed API rte_eth_dev_get_device_type
  |- removed API rte_eth_dev_get_addr_by_port
  |- removed API rte_eth_dev_get_port_by_addr
  |- removed rte_cryptodev_create_unique_device_name API
  |- moved device naming to EAL

Also, deprecation notice from 16.07 has been removed and release notes for
16.11 added.

[1] http://dpdk.org/ml/archives/dev/2016-September/047087.html

Signed-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>
--
v3:
 - add API/ABI change info in commit log
 - fix library version change notification in release note
 - fix erroneous change to librte_eal version in v2
---
 doc/guides/rel_notes/deprecation.rst   | 12 ------------
 doc/guides/rel_notes/release_16_11.rst | 30 ++++++++++++++++++++++++++++--
 lib/librte_cryptodev/Makefile          |  2 +-
 lib/librte_ether/Makefile              |  2 +-
 4 files changed, 30 insertions(+), 16 deletions(-)
  

Comments

Thomas Monjalon Oct. 27, 2016, 10:15 a.m. UTC | #1
2016-10-27 12:38, Shreyansh Jain:
> rte_device/driver generalization patches [1] were merged without a change
> in the LIBABIVER macro. This patches bumps the macro of affected libs.

It is not a macro but a Makefile variable.

> (librte_eal was already bumped; libcryptodev and libetherdev have been
> bumped).

Please provide the commit id where EAL was bumped.

> Details of ABI/API changes:
> - EAL (version not bumped)

not bumped -> already bumped

>   |- type field was removed from rte_driver
>   |- rte_pci_device now embeds rte_device
>   |- rte_pci_resource renamed to rte_mem_resource
>   |- numa_node and devargs of rte_pci_driver is moved to rte_driver
>   |- APIs for device hotplug (attach/detach) moved into EAL
>   |- API rte_eal_pci_device_name added for PCI device naming
>   |- vdev registration API introduced (rte_eal_vdrv_register,
>   |  rte_eal_vdrv_unregister
> 
> - librte_crypto (v 1=>2)
>   |- removed rte_cryptodev_create_unique_device_name API
>   |- moved device naming to EAL
> 
> - librte_ethdev (v 4=>5)
>   |- rte_eth_dev_type is removed
>   |- removed dev_type from rte_eth_dev_allocate API
>   |- removed API rte_eth_dev_get_device_type
>   |- removed API rte_eth_dev_get_addr_by_port
>   |- removed API rte_eth_dev_get_port_by_addr
>   |- removed rte_cryptodev_create_unique_device_name API
>   |- moved device naming to EAL
> 
> Also, deprecation notice from 16.07 has been removed and release notes for
> 16.11 added.
> 
> [1] http://dpdk.org/ml/archives/dev/2016-September/047087.html
> 
> Signed-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>
[...]
> --- a/doc/guides/rel_notes/release_16_11.rst
> +++ b/doc/guides/rel_notes/release_16_11.rst
> @@ -149,6 +149,32 @@ Resolved Issues

It is the "Resolved Issues" section.
Please move in the "API Changes" section.

>  EAL
>  ~~~
>  
> +* **Improved device/driver heirarchy and generalized hotplugging**

typo: hierarchy

> +  Device and driver relationship has been restructured by introducing generic
> +  classes. This paves way for having PCI, VDEV and other device types as
> +  just instantiated objects rather than classes in themselves. Hotplugging too
> +  has been generalized into EAL so that ethernet or crypto devices can use the
> +  common infrastructure.
> +
> +  * removed ``pmd_type`` as way of segragation of devices
> +  * moved ``numa_node`` and ``devargs`` into ``rte_driver`` from
> +    ``rte_pci_driver``. These can now be used by any instantiated object of
> +    ``rte_driver``.
> +  * added ``rte_device`` class and all PCI and VDEV devices inherit from it
> +  * renamed devinit/devuninit handlers to probe/remove to make it more
> +    semantically correct with respect to device<=>driver relationship
> +  * moved hotplugging support to EAL. Hereafter, PCI and vdev can use the
> +    APIs ``rte_eal_dev_attach`` and ``rte_eal_dev_detach``.
> +  * helpers and support macros have been renamed to make them more synonymous
> +    with their device types
> +    (e.g. ``PMD_REGISTER_DRIVER`` => ``DRIVER_REGISTER_PCI``)

It is RTE_PMD_REGISTER_PCI

> +  * Device naming functions have been generalized from ethdev and cryptodev
> +    to EAL. ``rte_eal_pci_device_name`` has been introduced for obtaining
> +    unique device name from PCI Domain-BDF description.
> +  * Virtual device registration APIs have been added: ``rte_eal_vdrv_register``
> +    and ``rte_eal_vdrv_unregister``.

Thanks
  
Shreyansh Jain Oct. 27, 2016, 11:10 a.m. UTC | #2
Hello Thomas,

On Thursday 27 October 2016 03:45 PM, Thomas Monjalon wrote:
> 2016-10-27 12:38, Shreyansh Jain:
>> rte_device/driver generalization patches [1] were merged without a change
>> in the LIBABIVER macro. This patches bumps the macro of affected libs.
>
> It is not a macro but a Makefile variable.

Yes, I will change that.

>
>> (librte_eal was already bumped; libcryptodev and libetherdev have been
>> bumped).
>
> Please provide the commit id where EAL was bumped.

Ok. Will do.

>
>> Details of ABI/API changes:
>> - EAL (version not bumped)
>
> not bumped -> already bumped

Ok.

>
>>   |- type field was removed from rte_driver
>>   |- rte_pci_device now embeds rte_device
>>   |- rte_pci_resource renamed to rte_mem_resource
>>   |- numa_node and devargs of rte_pci_driver is moved to rte_driver
>>   |- APIs for device hotplug (attach/detach) moved into EAL
>>   |- API rte_eal_pci_device_name added for PCI device naming
>>   |- vdev registration API introduced (rte_eal_vdrv_register,
>>   |  rte_eal_vdrv_unregister
>>
>> - librte_crypto (v 1=>2)
>>   |- removed rte_cryptodev_create_unique_device_name API
>>   |- moved device naming to EAL
>>
>> - librte_ethdev (v 4=>5)
>>   |- rte_eth_dev_type is removed
>>   |- removed dev_type from rte_eth_dev_allocate API
>>   |- removed API rte_eth_dev_get_device_type
>>   |- removed API rte_eth_dev_get_addr_by_port
>>   |- removed API rte_eth_dev_get_port_by_addr
>>   |- removed rte_cryptodev_create_unique_device_name API
>>   |- moved device naming to EAL
>>
>> Also, deprecation notice from 16.07 has been removed and release notes for
>> 16.11 added.
>>
>> [1] http://dpdk.org/ml/archives/dev/2016-September/047087.html
>>
>> Signed-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>
> [...]
>> --- a/doc/guides/rel_notes/release_16_11.rst
>> +++ b/doc/guides/rel_notes/release_16_11.rst
>> @@ -149,6 +149,32 @@ Resolved Issues
>
> It is the "Resolved Issues" section.
> Please move in the "API Changes" section.

Ok.

>
>>  EAL
>>  ~~~
>>
>> +* **Improved device/driver heirarchy and generalized hotplugging**
>
> typo: hierarchy

Yes.

>
>> +  Device and driver relationship has been restructured by introducing generic
>> +  classes. This paves way for having PCI, VDEV and other device types as
>> +  just instantiated objects rather than classes in themselves. Hotplugging too
>> +  has been generalized into EAL so that ethernet or crypto devices can use the
>> +  common infrastructure.
>> +
>> +  * removed ``pmd_type`` as way of segragation of devices
>> +  * moved ``numa_node`` and ``devargs`` into ``rte_driver`` from
>> +    ``rte_pci_driver``. These can now be used by any instantiated object of
>> +    ``rte_driver``.
>> +  * added ``rte_device`` class and all PCI and VDEV devices inherit from it
>> +  * renamed devinit/devuninit handlers to probe/remove to make it more
>> +    semantically correct with respect to device<=>driver relationship
>> +  * moved hotplugging support to EAL. Hereafter, PCI and vdev can use the
>> +    APIs ``rte_eal_dev_attach`` and ``rte_eal_dev_detach``.
>> +  * helpers and support macros have been renamed to make them more synonymous
>> +    with their device types
>> +    (e.g. ``PMD_REGISTER_DRIVER`` => ``DRIVER_REGISTER_PCI``)
>
> It is RTE_PMD_REGISTER_PCI

It seems my Friday is earlier than usual :(
I was the one who changed it and I completely forgot about it.

>
>> +  * Device naming functions have been generalized from ethdev and cryptodev
>> +    to EAL. ``rte_eal_pci_device_name`` has been introduced for obtaining
>> +    unique device name from PCI Domain-BDF description.
>> +  * Virtual device registration APIs have been added: ``rte_eal_vdrv_register``
>> +    and ``rte_eal_vdrv_unregister``.
>
> Thanks
>

I am sending v4 soon.

-
Shreyansh
  

Patch

diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst
index d5c1490..884a231 100644
--- a/doc/guides/rel_notes/deprecation.rst
+++ b/doc/guides/rel_notes/deprecation.rst
@@ -18,18 +18,6 @@  Deprecation Notices
   ``nb_seg_max`` and ``nb_mtu_seg_max`` providing information about number of
   segments limit to be transmitted by device for TSO/non-TSO packets.
 
-* The ethdev hotplug API is going to be moved to EAL with a notification
-  mechanism added to crypto and ethdev libraries so that hotplug is now
-  available to both of them. This API will be stripped of the device arguments
-  so that it only cares about hotplugging.
-
-* Structures embodying pci and vdev devices are going to be reworked to
-  integrate new common rte_device / rte_driver objects (see
-  http://dpdk.org/ml/archives/dev/2016-January/031390.html).
-  ethdev and crypto libraries will then only handle those objects so that they
-  do not need to care about the kind of devices that are being used, making it
-  easier to add new buses later.
-
 * ABI changes are planned for 16.11 in the ``rte_mbuf`` structure: some fields
   may be reordered to facilitate the writing of ``data_off``, ``refcnt``, and
   ``nb_segs`` in one operation, because some platforms have an overhead if the
diff --git a/doc/guides/rel_notes/release_16_11.rst b/doc/guides/rel_notes/release_16_11.rst
index aa0c09a..5a5485b 100644
--- a/doc/guides/rel_notes/release_16_11.rst
+++ b/doc/guides/rel_notes/release_16_11.rst
@@ -149,6 +149,32 @@  Resolved Issues
 EAL
 ~~~
 
+* **Improved device/driver heirarchy and generalized hotplugging**
+
+  Device and driver relationship has been restructured by introducing generic
+  classes. This paves way for having PCI, VDEV and other device types as
+  just instantiated objects rather than classes in themselves. Hotplugging too
+  has been generalized into EAL so that ethernet or crypto devices can use the
+  common infrastructure.
+
+  * removed ``pmd_type`` as way of segragation of devices
+  * moved ``numa_node`` and ``devargs`` into ``rte_driver`` from
+    ``rte_pci_driver``. These can now be used by any instantiated object of
+    ``rte_driver``.
+  * added ``rte_device`` class and all PCI and VDEV devices inherit from it
+  * renamed devinit/devuninit handlers to probe/remove to make it more
+    semantically correct with respect to device<=>driver relationship
+  * moved hotplugging support to EAL. Hereafter, PCI and vdev can use the
+    APIs ``rte_eal_dev_attach`` and ``rte_eal_dev_detach``.
+  * helpers and support macros have been renamed to make them more synonymous
+    with their device types
+    (e.g. ``PMD_REGISTER_DRIVER`` => ``DRIVER_REGISTER_PCI``)
+  * Device naming functions have been generalized from ethdev and cryptodev
+    to EAL. ``rte_eal_pci_device_name`` has been introduced for obtaining
+    unique device name from PCI Domain-BDF description.
+  * Virtual device registration APIs have been added: ``rte_eal_vdrv_register``
+    and ``rte_eal_vdrv_unregister``.
+
 
 Drivers
 ~~~~~~~
@@ -232,11 +258,11 @@  The libraries prepended with a plus sign were incremented in this version.
 
 .. code-block:: diff
 
-     libethdev.so.4
+   + libethdev.so.5
      librte_acl.so.2
      librte_cfgfile.so.2
      librte_cmdline.so.2
-     librte_cryptodev.so.1
+   + librte_cryptodev.so.2
      librte_distributor.so.1
    + librte_eal.so.3
      librte_hash.so.2
diff --git a/lib/librte_cryptodev/Makefile b/lib/librte_cryptodev/Makefile
index 314a046..aebf5d9 100644
--- a/lib/librte_cryptodev/Makefile
+++ b/lib/librte_cryptodev/Makefile
@@ -34,7 +34,7 @@  include $(RTE_SDK)/mk/rte.vars.mk
 LIB = librte_cryptodev.a
 
 # library version
-LIBABIVER := 1
+LIBABIVER := 2
 
 # build flags
 CFLAGS += -O3
diff --git a/lib/librte_ether/Makefile b/lib/librte_ether/Makefile
index 488b7c8..bc2e5f6 100644
--- a/lib/librte_ether/Makefile
+++ b/lib/librte_ether/Makefile
@@ -41,7 +41,7 @@  CFLAGS += $(WERROR_FLAGS)
 
 EXPORT_MAP := rte_ether_version.map
 
-LIBABIVER := 4
+LIBABIVER := 5
 
 SRCS-y += rte_ethdev.c