[dpdk-dev,v3] eal: fix libabi macro for device generalization patches
Commit Message
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
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
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
@@ -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
@@ -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
@@ -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
@@ -41,7 +41,7 @@ CFLAGS += $(WERROR_FLAGS)
EXPORT_MAP := rte_ether_version.map
-LIBABIVER := 4
+LIBABIVER := 5
SRCS-y += rte_ethdev.c