From patchwork Mon Jun 3 17:32:00 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anoob Joseph X-Patchwork-Id: 54224 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 19E031B958; Mon, 3 Jun 2019 19:33:22 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by dpdk.org (Postfix) with ESMTP id 67C781B953 for ; Mon, 3 Jun 2019 19:33:20 +0200 (CEST) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x53HKoT0027681; Mon, 3 Jun 2019 10:33:19 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : mime-version : content-transfer-encoding : content-type; s=pfpt0818; bh=XspkJjZ+uaDNOPeABaq5wXAtPS9WdDWnSLqpiqkPzcU=; b=kolAgT5WECrXb4eK5Gg8eLzvkixHk5lbimgNy7h/WcEov6dIR2t3RU0gp8OUe5OPsoGZ DIY8eNowsUyqjA+SW0z5L1U+TsSyjE7p0MwM5bhZSj6XTgRTwO3FxA5w4KoTQf4xO71V K2C3Ou3glKNYzrmun33rws7TA+2lO9VcGtaPBh1yf5n39pW1ao/nKFkIdo975qkZoZLN F/cvdcwxI50aCiBwBCgDVGVSNCi+YqhnOdeXgARcHcKhwsz8SKpOtBe8JJw4YXi0TFa1 x7akobnObWhS76LFgQMTvPDMyR3/hMIAJZXtXYruVquXfKnstJArPheeQSQD7zLi2So/ Ow== Received: from sc-exch01.marvell.com ([199.233.58.181]) by mx0b-0016f401.pphosted.com with ESMTP id 2sw79pr6kp-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Mon, 03 Jun 2019 10:33:16 -0700 Received: from SC-EXCH01.marvell.com (10.93.176.81) by SC-EXCH01.marvell.com (10.93.176.81) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Mon, 3 Jun 2019 10:32:59 -0700 Received: from maili.marvell.com (10.93.176.43) by SC-EXCH01.marvell.com (10.93.176.81) with Microsoft SMTP Server id 15.0.1367.3 via Frontend Transport; Mon, 3 Jun 2019 10:32:59 -0700 Received: from ajoseph83.caveonetworks.com.com (unknown [10.29.45.56]) by maili.marvell.com (Postfix) with ESMTP id 4C4093F703F; Mon, 3 Jun 2019 10:32:55 -0700 (PDT) From: Anoob Joseph To: Jerin Jacob , Nikhil Rao , "Erik Gabriel Carrillo" , Abhinandan Gujjar , Bruce Richardson , Pablo de Lara CC: Anoob Joseph , Narayana Prasad , , Lukasz Bartosik , Pavan Nikhilesh , Hemant Agrawal , "Nipun Gupta" , Harry van Haaren , =?utf-8?q?Mattias_R=C3=B6nnblom?= , Liang Ma Date: Mon, 3 Jun 2019 23:02:00 +0530 Message-ID: <1559583160-13944-1-git-send-email-anoobj@marvell.com> X-Mailer: git-send-email 2.7.4 MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:, , definitions=2019-06-03_13:, , signatures=0 Subject: [dpdk-dev] [PATCH 00/39] adding eventmode helper library 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" This series adds support for eventmode helper library and l2fwd-event application. First 13 patches creates a new l2fwd application (l2fwd-event). Minor code reorganization is done to faciliate seamless integration of eventmode. Next 22 patches adds eventmode helper library. This library abstracts the configuration of event device & Rx-Tx event adapters. The library can be extended to allow users to control all the configuration exposed by adapters and eth device. Last 4 patches implements eventmode in l2fwd-event application. With event device and adapters, fine tuned threads (based on dev capabilities) can be drafted to maximize performance. Eventmode library facilitates this and l2fwd-event demonstrates this usage. With the introduction of eventmode helper library, any poll mode application can be converted to an eventmode application with simple steps, enabling multi-core scaling and dynamic load balancing to various example applications. Usage: ./l2fwd-event -- -- -- --transfer-mode 1 The above command would invoke eventmode and with the default conf loaded, traffic on one port would be delivered to all enabled cores. Planned features, 1. Eventmode helper library doesn't intialize ethdev. Since all applications already do this, eventmode helper would start from reconfiguring. 2. All features of eventdev and adapters can be exposed to the user using common CL arguments. The framework for achieving the same is already in place. It has to be extended to support more features. 3. Documentation is pending. Created new app based on discussions, http://patchwork.dpdk.org/cover/40884/ https://patches.dpdk.org/patch/40901/ Tested with nicvf eth PMD and event_octeontx event PMD on Marvell's CN83XX platform. Anoob Joseph (39): examples/l2fwd-event: create copy of l2fwd examples/l2fwd-event: move macros to common header examples/l2fwd-event: move structures to common header examples/l2fwd-event: move global vars to common header examples/l2fwd-event: move dataplane code to new file examples/l2fwd-event: remove unused header includes examples/l2fwd-event: move drain buffers to new function examples/l2fwd-event: optimize check for master core examples/l2fwd-event: move periodic tasks to new func examples/l2fwd-event: do timer updates only on master examples/l2fwd-event: move pkt send code to a new func examples/l2fwd-event: use fprintf in usage print examples/l2fwd-event: improvements to the usage print eventdev: add files for eventmode helper eventdev: add routines for logging eventmode helper eventdev: add eventmode CL options framework eventdev: allow application to set ethernet portmask eventdev: add framework for eventmode conf eventdev: add common initialize routine for eventmode devs eventdev: add eventdevice init for eventmode eventdev: add eventdev port-lcore link eventdev: add option to specify schedule mode for app stage eventdev: add placeholder for ethdev init eventdev: add Rx adapter init in eventmode eventdev: add routine to validate conf eventdev: add default conf for event devs field in conf eventdev: add default conf for Rx adapter conf eventdev: add default conf for event port-lcore link eventdev: add routines to display the eventmode conf eventdev: add routine to access eventmode link info eventdev: add routine to access event queue for eth Tx eventdev: add routine to launch eventmode workers eventdev: add Tx adapter support eventdev: add support for internal ports eventdev: display Tx adapter conf examples/l2fwd-event: add eventmode for l2fwd examples/l2fwd-event: add eventmode worker examples/l2fwd-event: add eventmode worker examples/l2fwd-event: add eventmode worker config/common_base | 1 + examples/Makefile | 1 + examples/l2fwd-event/Makefile | 57 + examples/l2fwd-event/l2fwd_common.h | 63 + examples/l2fwd-event/l2fwd_worker.c | 1121 +++++++++++++ examples/l2fwd-event/l2fwd_worker.h | 16 + examples/l2fwd-event/main.c | 585 +++++++ examples/l2fwd-event/meson.build | 14 + lib/librte_eal/common/eal_common_log.c | 1 + lib/librte_eal/common/include/rte_log.h | 1 + lib/librte_eventdev/Makefile | 6 +- lib/librte_eventdev/meson.build | 3 + lib/librte_eventdev/rte_eventdev_version.map | 8 + lib/librte_eventdev/rte_eventmode_helper.c | 1678 ++++++++++++++++++++ lib/librte_eventdev/rte_eventmode_helper.h | 241 +++ .../rte_eventmode_helper_internal.h | 144 ++ lib/librte_eventdev/rte_eventmode_helper_prints.c | 223 +++ 17 files changed, 4161 insertions(+), 2 deletions(-) create mode 100644 examples/l2fwd-event/Makefile create mode 100644 examples/l2fwd-event/l2fwd_common.h create mode 100644 examples/l2fwd-event/l2fwd_worker.c create mode 100644 examples/l2fwd-event/l2fwd_worker.h create mode 100644 examples/l2fwd-event/main.c create mode 100644 examples/l2fwd-event/meson.build create mode 100644 lib/librte_eventdev/rte_eventmode_helper.c create mode 100644 lib/librte_eventdev/rte_eventmode_helper.h create mode 100644 lib/librte_eventdev/rte_eventmode_helper_internal.h create mode 100644 lib/librte_eventdev/rte_eventmode_helper_prints.c