[dpdk-dev] [RFC PATCH 0/7] RFC: EventDev Software PMD

Jerin Jacob jerin.jacob at caviumnetworks.com
Wed Nov 16 21:19:25 CET 2016


On Wed, Nov 16, 2016 at 06:00:00PM +0000, Harry van Haaren wrote:
> This series of RFC patches implements the libeventdev API and a software
> eventdev PMD.
> 
> The implementation here is intended to enable the community to use the
> eventdev API, specifically to test if the API serves the purpose that it is
> designed to. It should be noted this is an RFC implementation, and hence
> there should be no performance expectations.
> 
> An RFC for the eventdev was sent in August[1] by Jerin Jacob of Cavium,
> which introduced the core concepts of the eventdev to the community. Since
> then there has been extensive discussion[2] on the mailing list, which had
> led to various modifications to the initial proposed API.
> 
> The API as presented in the first patch contains a number of changes that
> have not yet been discussed. These changes were noticed during the
> implementation of the software eventdev PMD, and were added to the API to
> enable completion of the PMD. These modifications include a statistics API
> and a dump API. For more details, please refer to the commit message of the
> patch itself.
> 
> The functionality provided by each of the patches is as follows:
>   1: Add eventdev API and library infrastructure
>   2: Enable compilation of library
>   3: Add software eventdev PMD
>   4: Enable compilation of PMD
>   5: Add test code
>   6: Enable test code compilation
>   7: Sample application demonstrating basic usage
> 
> This breakdown of the patchset hopefully enables the community to experiment
> with the eventdev API, and allows us all to gain first-hand experience in
> using the eventdev API.  Note also that this patchset has not passed
> checkpatch testing just yet - will fix for v2 :)
> 
> As next steps I see value in discussing the proposed changes included in
> this version of the header file, while welcoming feedback from the community
> on the API in general too.

Thanks. Harry.

Even I was writing the similar stuff.I took a bit different approach on
the common code side, where I was trying to have fat common code(
lib/librte_eventdev/rte_eventdev.c) with start/stop support for the
slow-path code. I will post the implementation in few days and then we
can work on a converged solution.

Following sections of code does not have any overlap at all.
test/eventdev: unit and functional tests
event/sw: software eventdev implementation
examples/eventdev_pipeline: adding example

Some questions and initial feedback
1) I thought RTE_EVENT_OP_DROP and rte_event_release() are same ? No ?
2) device stats API can be based on capability, HW implementations may not
support all the stats
3) From the HW implementation perspective, eventdev_pipeline application
needs to have a lot of changes.I will post the comments in coming days
and we can work together on the converged solution.

Jerin


> 
> Signed-off-by: Harry van Haaren <harry.van.haaren at intel.com>
> 
> [1] http://dpdk.org/ml/archives/dev/2016-August/045181.html
> [2] http://dpdk.org/ml/archives/dev/2016-October/thread.html#48196
> 
> Harry van Haaren (7):
>   eventdev: header and implementation
>   eventdev: makefiles
>   event/sw: software eventdev implementation
>   event/sw: makefiles and config
>   test/eventdev: unit and functional tests
>   test/eventdev: unit func makefiles
>   examples/eventdev_pipeline: adding example
> 
>  app/test/Makefile                             |    3 +
>  app/test/test_eventdev_func.c                 | 1272 ++++++++++++++++++++++++
>  app/test/test_eventdev_unit.c                 |  557 +++++++++++
>  config/common_base                            |   12 +
>  drivers/Makefile                              |    1 +
>  drivers/event/Makefile                        |   36 +
>  drivers/event/sw/Makefile                     |   59 ++
>  drivers/event/sw/event_ring.h                 |  142 +++
>  drivers/event/sw/iq_ring.h                    |  160 +++
>  drivers/event/sw/rte_pmd_evdev_sw_version.map |    3 +
>  drivers/event/sw/sw_evdev.c                   |  619 ++++++++++++
>  drivers/event/sw/sw_evdev.h                   |  234 +++++
>  drivers/event/sw/sw_evdev_scheduler.c         |  660 +++++++++++++
>  drivers/event/sw/sw_evdev_worker.c            |  218 +++++
>  examples/eventdev_pipeline/Makefile           |   49 +
>  examples/eventdev_pipeline/main.c             |  717 ++++++++++++++
>  lib/Makefile                                  |    1 +
>  lib/librte_eal/common/include/rte_vdev.h      |    1 +
>  lib/librte_eventdev/Makefile                  |   54 ++
>  lib/librte_eventdev/rte_eventdev.c            |  466 +++++++++
>  lib/librte_eventdev/rte_eventdev.h            | 1289 +++++++++++++++++++++++++
>  lib/librte_eventdev/rte_eventdev_ops.h        |  177 ++++
>  lib/librte_eventdev/rte_eventdev_pmd.h        |   69 ++
>  lib/librte_eventdev/rte_eventdev_version.map  |   33 +
>  mk/rte.app.mk                                 |    5 +
>  25 files changed, 6837 insertions(+)
>  create mode 100644 app/test/test_eventdev_func.c
>  create mode 100644 app/test/test_eventdev_unit.c
>  create mode 100644 drivers/event/Makefile
>  create mode 100644 drivers/event/sw/Makefile
>  create mode 100644 drivers/event/sw/event_ring.h
>  create mode 100644 drivers/event/sw/iq_ring.h
>  create mode 100644 drivers/event/sw/rte_pmd_evdev_sw_version.map
>  create mode 100644 drivers/event/sw/sw_evdev.c
>  create mode 100644 drivers/event/sw/sw_evdev.h
>  create mode 100644 drivers/event/sw/sw_evdev_scheduler.c
>  create mode 100644 drivers/event/sw/sw_evdev_worker.c
>  create mode 100644 examples/eventdev_pipeline/Makefile
>  create mode 100644 examples/eventdev_pipeline/main.c
>  create mode 100644 lib/librte_eventdev/Makefile
>  create mode 100644 lib/librte_eventdev/rte_eventdev.c
>  create mode 100644 lib/librte_eventdev/rte_eventdev.h
>  create mode 100644 lib/librte_eventdev/rte_eventdev_ops.h
>  create mode 100644 lib/librte_eventdev/rte_eventdev_pmd.h
>  create mode 100644 lib/librte_eventdev/rte_eventdev_version.map
> 
> -- 
> 2.7.4
> 


More information about the dev mailing list