mbox series

[v4,0/5] eventdev: add interrupt driven queues to Rx adapter

Message ID 1530496530-112764-1-git-send-email-nikhil.rao@intel.com (mailing list archive)
Headers show
Series eventdev: add interrupt driven queues to Rx adapter | expand

Message

Rao, Nikhil July 2, 2018, 1:55 a.m. UTC
This patch series adds support for interrupt driven queues to the
ethernet Rx adapter, the first 3 patches prepare the code to
handle both poll and interrupt driven Rx queues, the 4th patch
patch has code changes specific to interrupt driven queues and
the final patch has test code.

Changelog:
v3->v4:

* Fix FreeBSD build breakage.

v2->v3:

* Fix shared build breakage.

* Fix FreeBSD build breakage.

* Reduce epoll maxevents parameter by 1, since thread wakeup
  uses pthread_cancel as opposed to an exit message through a
  file monitored by epoll_wait().

* Check intr_handle before access, it is NULL when zero Rx queue
  interrupts are configured.

* Remove thread_stop flag, in the event of a pthread_cancel, it is
  not possible to check this flag thread stack is unwound without
  returning to rxa_intr_thread.

v1->v2:

* Move rte_service_component_runstate_set such that it
  is called only when cap & RTE__EVENT_ETH_RX_ADAPTER_CAP_INTERNAL_PORT
  is false. (Jerin Jacob)

* Fix meson build. (Jerin Jacob)

* Replace calls to pthread_* with rte_ctrl_thread_create().
  (Jerin Jacob)

* Move adapter test code to separate patch. (Jerin Jacob)

Note: I haven't removed the note about devices created
rte_event_eth_rx_adapter_create, will fix in a separate patch.


Nikhil Rao (5):
  eventdev: standardize Rx adapter internal function names
  eventdev: improve err handling for Rx adapter queue add/del
  eventdev: move Rx adapter eth Rx to separate function
  eventdev: add interrupt driven queues to Rx adapter
  eventdev: add Rx adapter tests for interrupt driven queues

 config/rte_config.h                                |    1 +
 lib/librte_eventdev/rte_event_eth_rx_adapter.h     |    5 +-
 lib/librte_eventdev/rte_event_eth_rx_adapter.c     | 1526 +++++++++++++++++---
 test/test/test_event_eth_rx_adapter.c              |  261 +++-
 .../prog_guide/event_ethernet_rx_adapter.rst       |   24 +
 config/common_base                                 |    1 +
 lib/librte_eventdev/Makefile                       |    9 +-
 7 files changed, 1588 insertions(+), 239 deletions(-)

Comments

Jerin Jacob July 2, 2018, 7:43 a.m. UTC | #1
-----Original Message-----
> Date: Mon, 2 Jul 2018 07:25:25 +0530
> From: Nikhil Rao <nikhil.rao@intel.com>
> To: jerin.jacob@caviumnetworks.com
> CC: nikhil.rao@intel.com, dev@dpdk.org
> Subject: [PATCH v4 0/5] eventdev: add interrupt driven queues to Rx adapter
> X-Mailer: git-send-email 1.8.3.1
> 
> 
> This patch series adds support for interrupt driven queues to the
> ethernet Rx adapter, the first 3 patches prepare the code to
> handle both poll and interrupt driven Rx queues, the 4th patch
> patch has code changes specific to interrupt driven queues and
> the final patch has test code.
> 
> Changelog:
> v3->v4:
> 
> * Fix FreeBSD build breakage.

# meson shared lib is failing with patch:

[226/1298] Compiling C object
'lib/lib@@rte_eventdev@sta/librte_eventdev_rte_event_eth_rx_adapter.c.o'.
FAILED:
lib/lib@@rte_eventdev@sta/librte_eventdev_rte_event_eth_rx_adapter.c.o
ccache gcc -Ilib/lib@@rte_eventdev@sta -Ilib -I../lib
-Ilib/librte_eventdev -I../lib/librte_eventdev -I. -I../ -Iconfig
-I../config -Ilib/librte_eal/common -I../lib/librte_eal/common
-Ilib/librte_eal/common/include -I../lib/librte_eal/common/include
-Ilib/librte_eal/common/include/arch/x86
-I../lib/librte_eal/common/include/arch/x86
-I../lib/librte_eal/linuxapp/eal/include
-Ilib/librte_eal/linuxapp/eal/../../../librte_compat
-I../lib/librte_eal/linuxapp/eal/../../../librte_compat -Ilib/librte_eal
-I../lib/librte_eal -Ilib/librte_compat -I../lib/librte_compat
-Ilib/librte_ring -I../lib/librte_ring -Ilib/librte_ethdev
-I../lib/librte_ethdev -Ilib/librte_net -I../lib/librte_net
-Ilib/librte_mbuf -I../lib/librte_mbuf -Ilib/librte_mempool
-I../lib/librte_mempool -Ilib/librte_kvargs -I../lib/librte_kvargs
-Ilib/librte_hash -I../lib/librte_hash -Ilib/librte_timer
-I../lib/librte_timer -Ilib/librte_cryptodev -I../lib/librte_cryptodev
-fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -Wall
-Winvalid-pch -Werror -O3 -include rte_config.h -Wsign-compare
-Wcast-qual -Wno-format-truncation -fPIC -march=native
-DALLOW_EXPERIMENTAL_API  -MD -MQ
'lib/lib@@rte_eventdev@sta/librte_eventdev_rte_event_eth_rx_adapter.c.o'
-MF
'lib/lib@@rte_eventdev@sta/librte_eventdev_rte_event_eth_rx_adapter.c.o.d'
-o
'lib/lib@@rte_eventdev@sta/librte_eventdev_rte_event_eth_rx_adapter.c.o'
-c ../lib/librte_eventdev/rte_event_eth_rx_adapter.c
../lib/librte_eventdev/rte_event_eth_rx_adapter.c: In function
‘rxa_epoll_create1’:
../lib/librte_eventdev/rte_event_eth_rx_adapter.c:1249:1: error: no
return statement in function returning non-void [-Werror=return-type]
 }
 ^
cc1: all warnings being treated as errors


# please rebase this and following patches to latest next-eventdev tree

http://patches.dpdk.org/patch/41795/



> 
> v2->v3:
> 
> * Fix shared build breakage.
> 
> * Fix FreeBSD build breakage.
> 
> * Reduce epoll maxevents parameter by 1, since thread wakeup
>   uses pthread_cancel as opposed to an exit message through a
>   file monitored by epoll_wait().
> 
> * Check intr_handle before access, it is NULL when zero Rx queue
>   interrupts are configured.
> 
> * Remove thread_stop flag, in the event of a pthread_cancel, it is
>   not possible to check this flag thread stack is unwound without
>   returning to rxa_intr_thread.
> 
> v1->v2:
> 
> * Move rte_service_component_runstate_set such that it
>   is called only when cap & RTE__EVENT_ETH_RX_ADAPTER_CAP_INTERNAL_PORT
>   is false. (Jerin Jacob)
> 
> * Fix meson build. (Jerin Jacob)
> 
> * Replace calls to pthread_* with rte_ctrl_thread_create().
>   (Jerin Jacob)
> 
> * Move adapter test code to separate patch. (Jerin Jacob)
> 
> Note: I haven't removed the note about devices created
> rte_event_eth_rx_adapter_create, will fix in a separate patch.
> 
> 
> Nikhil Rao (5):
>   eventdev: standardize Rx adapter internal function names
>   eventdev: improve err handling for Rx adapter queue add/del
>   eventdev: move Rx adapter eth Rx to separate function
>   eventdev: add interrupt driven queues to Rx adapter
>   eventdev: add Rx adapter tests for interrupt driven queues
> 
>  config/rte_config.h                                |    1 +
>  lib/librte_eventdev/rte_event_eth_rx_adapter.h     |    5 +-
>  lib/librte_eventdev/rte_event_eth_rx_adapter.c     | 1526 +++++++++++++++++---
>  test/test/test_event_eth_rx_adapter.c              |  261 +++-
>  .../prog_guide/event_ethernet_rx_adapter.rst       |   24 +
>  config/common_base                                 |    1 +
>  lib/librte_eventdev/Makefile                       |    9 +-
>  7 files changed, 1588 insertions(+), 239 deletions(-)
> 
> --
> 1.8.3.1
>