From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by dpdk.org (Postfix) with ESMTP id E736E25E5 for ; Tue, 12 Sep 2017 05:52:36 +0200 (CEST) Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 11 Sep 2017 20:52:34 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.42,381,1500966000"; d="scan'208";a="134302173" Received: from unknown (HELO localhost.iind.intel.com) ([10.224.122.216]) by orsmga002.jf.intel.com with ESMTP; 11 Sep 2017 20:52:30 -0700 From: Nikhil Rao To: jerin.jacob@caviumnetworks.com, bruce.richardson@intel.com Cc: gage.eads@intel.com, dev@dpdk.org, thomas@monjalon.net, harry.van.haaren@intel.com, hemant.agrawal@nxp.com, nipun.gupta@nxp.com, narender.vangati@intel.com, erik.g.carrillo@intel.com, abhinandan.gujjar@intel.com, Nikhil Rao Date: Tue, 12 Sep 2017 17:59:25 +0530 Message-Id: <1505219369-2493-1-git-send-email-nikhil.rao@intel.com> X-Mailer: git-send-email 2.7.4 Subject: [dpdk-dev] [PATCH v3 0/4] eventdev: cover letter: ethernet Rx queue event adapter X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 12 Sep 2017 03:52:37 -0000 Eventdev-based networking applications require a component to dequeue packets from NIC Rx queues and inject them into eventdev queues[1]. While some platforms (e.g. Cavium Octeontx) do this operation in hardware, other platforms use software. This patchset introduces an ethernet Rx event adapter that dequeues packets from ethernet devices and enqueues them to event devices. This patch is based on a previous RFC[2] and supercedes [3], the main difference being that this version implements a common abstraction for HW and SW based packet transfers. The adapter is designed to work with the EAL service core[4] for SW based packet transfers. An eventdev PMD callback is used to determine that SW based packet transfer service is required. The application can discover and configure the service with a core mask using rte_service APIs. The adapter can service multiple ethernet devices and queues. For SW based packet transfers each queue is configured with a servicing weight to control the relative frequency with which the adapter polls the queue, and the event fields to use when constructing packet events. The adapter has two modes for programming an event's flow ID: use a static per-queue user-specified value or use the RSS hash. A detailed description of the adapter is contained in the header's comments. [1] http://dpdk.org/ml/archives/dev/2017-May/065341.html [2] http://dpdk.org/ml/archives/dev/2017-May/065539.html [3] http://dpdk.org/ml/archives/dev/2017-July/070452.html [4] http://dpdk.org/ml/archives/dev/2017-July/069782.html Note: The service API version used in this patch is the posted at http://dpdk.org/ml/archives/dev/2017-August/073102.html v3: - This patch extends the V2 implementation with some changes to provide a common API across HW & SW packet transfer mechanisms from the eth devices to the event devices. - Introduces a caps API that is used by the apps and the Rx adapter to configure the packet transfer path. - Adds an API to retrieve the service ID of the service function. (if one is used by the adapter) Nikhil Rao (4): eventdev: Add ethernet Rx adapter caps function to SW eventdevice eventdev: Add eventdev ethernet Rx adapter eventdev: Add caps API and PMD callbacks for rte_event_eth_rx_adapter eventdev: Add tests for event eth Rx adapter APIs lib/librte_eventdev/rte_event_eth_rx_adapter.h | 386 ++++++++ lib/librte_eventdev/rte_eventdev.h | 33 + lib/librte_eventdev/rte_eventdev_pmd.h | 175 ++++ drivers/event/sw/sw_evdev.c | 13 + lib/librte_eventdev/rte_event_eth_rx_adapter.c | 1237 ++++++++++++++++++++++++ lib/librte_eventdev/rte_eventdev.c | 19 + test/test/test_event_eth_rx_adapter.c | 379 ++++++++ lib/Makefile | 2 +- lib/librte_eventdev/Makefile | 2 + lib/librte_eventdev/rte_eventdev_version.map | 17 + test/test/Makefile | 1 + 11 files changed, 2263 insertions(+), 1 deletion(-) create mode 100644 lib/librte_eventdev/rte_event_eth_rx_adapter.h create mode 100644 lib/librte_eventdev/rte_event_eth_rx_adapter.c create mode 100644 test/test/test_event_eth_rx_adapter.c -- 2.14.1.145.gb3622a4