From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <Anoob.Joseph@cavium.com>
Received: from NAM03-BY2-obe.outbound.protection.outlook.com
 (mail-by2nam03on0046.outbound.protection.outlook.com [104.47.42.46])
 by dpdk.org (Postfix) with ESMTP id CA4561D021
 for <dev@dpdk.org>; Fri,  8 Jun 2018 19:25:24 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=XXgsd+/apug1H7GwN2aHnpPrb34prGa0exDU+EWJi+I=;
 b=Xuu5fAGuTJbn5q759dEL3vU9qPqwuk/UhlhmrEQCFxlnYM68/m/lyDacjQECSIgwe+N8H6XmdXgo4a0oi05YCHym7lh16xzNtZMYn90TpH6bInwP77FdBGDfpmFkuDGPWQBLzXwOSCPDdd3wWxTkJ5IiIBXEa7I50UfE5KcxiZ0=
Authentication-Results: spf=none (sender IP is )
 smtp.mailfrom=Anoob.Joseph@cavium.com; 
Received: from ajoseph83.caveonetworks.com.caveonetworks.com (115.113.156.2)
 by DM6PR07MB4906.namprd07.prod.outlook.com (2603:10b6:5:a3::11) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.841.17; Fri, 8 Jun
 2018 17:25:20 +0000
From: Anoob Joseph <anoob.joseph@caviumnetworks.com>
To: Bruce Richardson <bruce.richardson@intel.com>,
 Jerin Jacob <jerin.jacob@caviumnetworks.com>,
 Pablo de Lara <pablo.de.lara.guarch@intel.com>
Cc: Anoob Joseph <anoob.joseph@caviumnetworks.com>,
 Hemant Agrawal <hemant.agrawal@nxp.com>,
 Narayana Prasad <narayanaprasad.athreya@caviumnetworks.com>,
 Nikhil Rao <nikhil.rao@intel.com>,
 Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>,
 Sunil Kumar Kori <sunil.kori@nxp.com>, dev@dpdk.org
Date: Fri,  8 Jun 2018 22:54:06 +0530
Message-Id: <1528478659-15859-8-git-send-email-anoob.joseph@caviumnetworks.com>
X-Mailer: git-send-email 2.7.4
In-Reply-To: <1528478659-15859-1-git-send-email-anoob.joseph@caviumnetworks.com>
References: <1528478659-15859-1-git-send-email-anoob.joseph@caviumnetworks.com>
MIME-Version: 1.0
Content-Type: text/plain
X-Originating-IP: [115.113.156.2]
X-ClientProxiedBy: BM1PR0101CA0050.INDPRD01.PROD.OUTLOOK.COM
 (2603:1096:b00:19::12) To DM6PR07MB4906.namprd07.prod.outlook.com
 (2603:10b6:5:a3::11)
X-MS-PublicTrafficType: Email
X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0;
 RULEID:(7020095)(4652020)(5600026)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020);
 SRVR:DM6PR07MB4906; 
X-Microsoft-Exchange-Diagnostics: 1; DM6PR07MB4906;
 3:FMGLVnEq4E0JyMb2I0teH8KSYcKgk/zvHj8l9beDU/iGX7KcqXiZD3vlyHSH2ZOxW8eKbPWXI4ycBkV2Kk7hAJwgRgPWCtmLaBf4ZX7Tr8z3kDC9kQH5ccsZ9h0C7Kok6ZiQQqpa50n9qvsWAWlKw/qWfbDj/9AMkG7PclPmLd9tm3SYivKHD+wE7MSOgoZesyx0TsLEHzIuZEkmKCIFfstH+bT1afv18HGwEh55Sgjo4H1vo04pJ6mIkc1pgRtc;
 25:bupnlL9XEUgfeLjc2lO/UAbIS8hveVroFKPKJmX8xaavdOTo7wjyTBrLWpUuZXfBHFRQoJLoCgx0VKj0pqDZSTpRAhW2izRqd5KfNMVyY+J+OPZAqJdA/QdCWvLgmrOFA7b0XTIRMRotRjh6gLQTyd39uN5i6R6B9CfEQLIDk1SIMPwSLzAqcICMdvirlmIxQd3JZNkES4ReEDHgScf298qVDza+Q/Aq239y8hmeIKaqR8jxMzIHj7KrnPGaRUOTPdguq9BZADhLXuh9Blioxl0VbkU41zYpfQG22eHqa4x1ldxN0H0ZKkceo5g81myDo2mhBHG4u58UijV0StFwGA==;
 31:eJluaomNsMCWiSD1vOb9/62HJbCR97/ztrpmW/CnxkbBkPSQX5ovRBfPzW1EHGpX4o9fkRCkNGYOXc50qIZnAhxBbFIzQp4d45AAlV4InsXOaXyu14dRvPJAcMApUfcznbd+TZp2IA8NEn13wenpkHPzwM11vKQmkemgZu3G723BdZQwQrwH2AXJKjKO82olrocsYS8yyrCaafXAncT1QG6Or9Lh+1pd0S1zyx1bhOI=
X-MS-TrafficTypeDiagnostic: DM6PR07MB4906:
X-Microsoft-Exchange-Diagnostics: 1; DM6PR07MB4906;
 20:OvAoG8hRaPj0dxWqxvSmexeALNFU7V1udlawDy/mtjomWYE0j7W7j0mNbmaVZhNs8k4qwBdjzg7zlPCuOEAHsYjeceKffJMRBEqBU4diBvQUc9algDF7O9dUvXZtm4rKQxOK6foZ6xtPjcKRLdIjEjI4cN6XeqlCxkdLUmeQL0kya0Q/15LSkQcMlhSzygrpQyotCkhi+3pLSxt30q/BN3CY0sg+Z/rRcwvuZcpTNVY95aWWg55XEisZXxKrIRgj8s1cdEkZniH+ZgTzZdyRrKAimbGBCPNx0aTNR6FrJ7X5V2LfaTi34aTTMVh8jJ8SjL4ICsMZ1wifFvS/hZ3wQlW8/0LPXcv8FEmSmXaq6nux82EJ0RWEHKZaru0GCJLeZH5tLR9gQaG3rwyaguQ7faZ6Yn3BhFCIzHQXPbQ+zR55/0VBG4AjtJMCHK/ln6IjcV5jrz/iA8XpFAoVQOpPhO6Ba0QkKeXhZrhReOvDl7/OMPJXnwbLxBCfVpKwm/TCgYu5CRU6Tj5c/+1IaRWewB57fACBSKEB82vuDj39gWsC6MyXaob9UxyFkumVSErn73iFq7+8eV1ksdc7fOIGYgEkm+86l2eyDWOrP6oxCc4=;
 4:9V6WCrZEn0zi3xw7/4Kf73H5Wb4Cz9yJItuNpSDTDcLFuyeDTyK0WIuM7HYeiCCbHxl+xgnN8F15kZ1zmYvE5uLdSFbilWWaNcX/lheMuNK6wUm5egC0uqdAhlE2zuRioHpS8ka+gNKwoNlFk1J5KO2Pj7GiLfJRIZYiaCWXQF8bU+yg7fZhlPjWmToeNcUGX1+cj2DaWmCYrEXXEWw6G02jGDOiDkQI0L/+pTKGaf7YmoRi0Le4xKKG70s7yFTixT2n7bH/YcWXQ/0MFQ0CTQ==
X-Microsoft-Antispam-PRVS: <DM6PR07MB4906D3575C6EF3604B81AACCF87B0@DM6PR07MB4906.namprd07.prod.outlook.com>
X-Exchange-Antispam-Report-Test: UriScan:;
X-MS-Exchange-SenderADCheck: 1
X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0;
 RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(93006095)(3231254)(944501410)(52105095)(10201501046)(3002001)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123560045)(20161123562045)(20161123558120)(6072148)(201708071742011)(7699016);
 SRVR:DM6PR07MB4906; BCL:0; PCL:0; RULEID:; SRVR:DM6PR07MB4906; 
X-Forefront-PRVS: 06973FFAD3
X-Forefront-Antispam-Report: SFV:NSPM;
 SFS:(10009020)(39860400002)(346002)(366004)(376002)(396003)(39380400002)(189003)(199004)(186003)(16526019)(5660300001)(26005)(42882007)(55236004)(66066001)(47776003)(68736007)(6666003)(305945005)(2906002)(8676002)(7736002)(8936002)(36756003)(52116002)(2616005)(956004)(476003)(446003)(50226002)(81166006)(11346002)(44832011)(6506007)(386003)(486006)(59450400001)(76176011)(51416003)(48376002)(50466002)(97736004)(316002)(6512007)(25786009)(53936002)(6486002)(81156014)(4326008)(3846002)(6116002)(16586007)(54906003)(110136005)(105586002)(106356001)(72206003)(478600001)(8656006);
 DIR:OUT; SFP:1101; SCL:1; SRVR:DM6PR07MB4906;
 H:ajoseph83.caveonetworks.com.caveonetworks.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:1; 
Received-SPF: None (protection.outlook.com: cavium.com does not designate
 permitted sender hosts)
X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM6PR07MB4906;
 23:NB5pyOifGWMQi3SXzWvkrCKn0tPm7wDjcyflAB4Vr?=
 =?us-ascii?Q?4vQ4iB2HCjwn6bK02+28htEzBp520TGBG/LGMDAj/O5WqQXWLqL6ucyq+rzu?=
 =?us-ascii?Q?alJVLJsg7tJelvSuzd6UZcmWwHPZNpShvzmRHI3qzakW1H/Cn7q8OcDYVDqC?=
 =?us-ascii?Q?xwUdDLyLRwHXuHmYjn9lFxkoRIZJ/f82ryYAMsRGMRXYGKMSmCz2l9IEQium?=
 =?us-ascii?Q?LfXc0/l3stVz7fMlbhB1LlqKSMI3NWNdmSAMHArub1uXkPxiG3HlYSwAzXH/?=
 =?us-ascii?Q?aM4Td7nU5XHPKdiEda4/SmSrCS4AuWfFfCoMeAsBAs4Ut0otTqT/kHTZcN+H?=
 =?us-ascii?Q?PvochUmeRlKmc4VRMrGnB0C2ul0g5sW1GTJl3f1w7erkNzSAfqNsZDQ/pmtn?=
 =?us-ascii?Q?t99CqvoANctBZliSgBaOy4gtnhFDEky82v+iA7LH1bRmyF8PwhzloLrZOpRC?=
 =?us-ascii?Q?gOA5Yzvb2/NlUyU+qQE+VpoKvATZTL1f6mhNGBoJOGWPLx/6r+IO8wVQSFwB?=
 =?us-ascii?Q?qDnIOjv+fc7JJxBE0nMlluwP17KNPeEzl6DwCts/s6cZQzpWnIdOPhocHQu3?=
 =?us-ascii?Q?Tv65eBdAcCYAIcAE9RaizWhsbzmo+ajP7ySB1ekLnE/pQv9Yu0hvOO0qhBl3?=
 =?us-ascii?Q?NT1KZ6i7KKRgBxb2dER25i0GAP2zUG0SqNMx76j+40n9yEFerBW9PrTZB8lh?=
 =?us-ascii?Q?9y0/YXwqGtwf7hJx8Al6ii+a48rrTm7GnXA2KLMN/8kbVux7NNUh+pp7CNH8?=
 =?us-ascii?Q?R79fuHCnf75ruif40TMulHWC/tgSSDxuTHVWl7HuhHKUhntUUtUWSP8ZhB/h?=
 =?us-ascii?Q?iM9txnjGGH/A4slQ032Jj84b7CZDDE+s5V6gQ1E7dpXIeijc8UvsRiVTeUQf?=
 =?us-ascii?Q?H7wGwv1CrNjYGA8OBeQjLoxlhynsYB5FF41RcE8A8U9SS9ZUUcIQPR5jcowP?=
 =?us-ascii?Q?1Y6X6RCMNBeI+8dZ7o+ZAfTYilAMNqtrDp1KrrMKto9iGCzU5pQOp9O7woRN?=
 =?us-ascii?Q?GxgxtaNceqvuYQIAOQVMIR5lUfTyasgCHhNBPw4YPNhWrv6aEAuvBzvJQ0l/?=
 =?us-ascii?Q?aCKlE+QoxJjDekz5kVKT36dnN1wOPtD9Gj5Yfo05IqhnQxPy7HZfbh0rEbOJ?=
 =?us-ascii?Q?HDnWPBxE2cGAI6xPiFK0MUF7m0U+iPcjhs15vuWUSqzHI91XNg6FMSNCMUpa?=
 =?us-ascii?Q?Ba0JfnWVwUwkajmO+auLoz414sKjbd/DYXuy0YtJmuwIubFIvdX3k7+t1i/a?=
 =?us-ascii?Q?iUGD5jamm6ncyY7vzJ+GcixOGgiNov7SpzFKy1CHN8MJLFURm8woYS0ophkl?=
 =?us-ascii?Q?w+UVuA2P5Hl40wdRJUw7YM=3D?=
X-Microsoft-Antispam-Message-Info: 49QjzkpuQE6vdHJfnlQvCsZCcka2l+ynuifWys6pYNBZeFrgm1x9Sk7p/JXbowLIxhnLYrbzMtkz79I/vodD4IzG5y8oDUs+mY6bbQ/K6fWgfzSN5tbJq0mpSEnamWlpVyjiR805lXbGRdg4OUBhTVuCeE4uIX+4dqKM4wXJ/tYZDhEQOGdC2zO8xVnPNhgZ
X-Microsoft-Exchange-Diagnostics: 1; DM6PR07MB4906;
 6:5WmIoUzEEyEVQxbsT+DejUg6GEjmV5cfAzo1tRucf40Ux9wFhCmav+bZ/tI+9BBH9z0TbZ9xeSdHMPfkPYBswDZplCcIBXRE+sXBNlprlzBLjNqSfKuqiV7yqngadkoUGikM/15FRphnLBJZ/zXZEbNk7uCCw8CkyMsEX490G9ik1CQtXc7p6in9FNzjqKLI2mg/Go6NW0PIoJazuxPcmsxlqIQGHWE/hIpjgZWmq7rRhk93F5pR694esWWXhRSevl/fhoqVpqQurA7h1hSzk2cacNcdXGDUZ75zA1w+gc26VVu+gu/9nKlEZZf5JEMmw/PzKjCpVklrZnQ3k3hOblLYR76+CUI9EAiD+k1I1mDBPLXJ+h78VkWOetbn9j8LrIEp6JS23LKJKuA17kDt8iUsZrXKbrGVCDFafvE1vLLhRxZsQ2MvUKuJEeXubjGka5ZZwxAnGawvueCE5IwZVQ==;
 5:Qsy5Q9Ul8cl3Ho2wgSkq6B0mkxmkEovSgLtX9Zj4QZ6JG3U1NxybtMTRv4wVIzvuWJR1dpDLSEfQ13pjdy40DpWi0il7tqrg4lCII0nIHiowfD768RBcPMkIoJ99vSmRMpNT3FLbAcAb5rBWZjkbbPPOSP0TDhmd5uQ5ZUwIv9E=;
 24:2OvX+D8lBLHck0f2hVapWPKJLXq3xhEcMp/q2x0dAui4FhZwBqS5P2PJSWeMz8kCv0dcLi6KV+QXM/JjgWY90UmiB04aafN2jIezFW20lCQ=
SpamDiagnosticOutput: 1:99
SpamDiagnosticMetadata: NSPM
X-Microsoft-Exchange-Diagnostics: 1; DM6PR07MB4906;
 7:e+bzgWmQmZsemHMXtjEV0SWDMdsqvOSRcUrg3BM/IVMs+BIx0yVsse/Z/JJMrhpAFHMWFCMB/rPO3IVhPXIwUo2iS+Sd8pFSvxLtPunsPMR/TtdOgFold5xpiV3RMuPn9jb9gV8jaUEAu7H9vsWVvDR81WZG5m8p7TgiUC/cDbKEbIYX8/Qztm7CrvHeaWcJ/NDrBpCSb2W36+Rkar9UNsomCeIONj+8hX8UzAgyQuJsAyAE4imKzgdFUU50tUfs
X-MS-Office365-Filtering-Correlation-Id: dccd5a83-9853-4f1f-f08d-08d5cd64d142
X-OriginatorOrg: caviumnetworks.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Jun 2018 17:25:20.5760 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: dccd5a83-9853-4f1f-f08d-08d5cd64d142
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR07MB4906
Subject: [dpdk-dev] [PATCH 07/20] eventdev: add eventdevice init for
	eventmode
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <https://dpdk.org/ml/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://dpdk.org/ml/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <https://dpdk.org/ml/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
X-List-Received-Date: Fri, 08 Jun 2018 17:25:25 -0000

Adding routines to initialize event devs. The internal conf structure
would be used to track device configuration.

Signed-off-by: Anoob Joseph <anoob.joseph@caviumnetworks.com>
---
 lib/librte_eventdev/rte_eventmode_helper.c         | 129 +++++++++++++++++++++
 .../rte_eventmode_helper_internal.h                |  16 ++-
 2 files changed, 144 insertions(+), 1 deletion(-)

diff --git a/lib/librte_eventdev/rte_eventmode_helper.c b/lib/librte_eventdev/rte_eventmode_helper.c
index f2c2b78..e55d4aa 100644
--- a/lib/librte_eventdev/rte_eventmode_helper.c
+++ b/lib/librte_eventdev/rte_eventmode_helper.c
@@ -4,6 +4,7 @@
 #include <getopt.h>
 
 #include <rte_ethdev.h>
+#include <rte_eventdev.h>
 #include <rte_eventmode_helper.h>
 #include <rte_malloc.h>
 
@@ -154,12 +155,132 @@ rte_eventmode_helper_parse_args(int argc, char **argv)
 	return NULL;
 }
 
+/* Setup eventmode devs */
+
+static int
+rte_eventmode_helper_initialize_eventdev(struct eventmode_conf *em_conf)
+{
+	int ret = -1;
+	uint8_t i, j;
+	struct rte_event_dev_config eventdev_conf;
+	struct rte_event_dev_info evdev_default_conf;
+	struct rte_event_queue_conf eventq_conf = {0};
+	struct eventdev_params *eventdev_config;
+	int nb_eventdev = em_conf->nb_eventdev;
+	int nb_eventqueue;
+	uint8_t eventdev_id;
+
+	for (i = 0; i < nb_eventdev; i++) {
+
+		/* Get eventdev config */
+		eventdev_config = &(em_conf->eventdev_config[i]);
+
+		/* Get event dev ID */
+		eventdev_id = eventdev_config->eventdev_id;
+
+		/* Get the number of queues */
+		nb_eventqueue = eventdev_config->nb_eventqueue;
+
+		/* One queue is required for the final stage (doing eth tx) */
+		nb_eventqueue += 1;
+
+		/* Reset the default conf */
+		memset(&evdev_default_conf, 0,
+			sizeof(struct rte_event_dev_info));
+
+		/* Get default conf of eventdev */
+		ret = rte_event_dev_info_get(eventdev_id, &evdev_default_conf);
+		if (ret < 0) {
+			RTE_EM_HLPR_LOG_ERR(
+				"Error in getting event device info[devID:%d]",
+				eventdev_id);
+			return ret;
+		}
+
+		memset(&eventdev_conf, 0, sizeof(struct rte_event_dev_config));
+		eventdev_conf.nb_events_limit = 4096;
+		eventdev_conf.nb_event_queues = nb_eventqueue;
+		eventdev_conf.nb_event_ports =
+				eventdev_config->nb_eventport;
+		eventdev_conf.nb_event_queue_flows =
+				evdev_default_conf.max_event_queue_flows;
+		eventdev_conf.nb_event_port_dequeue_depth =
+				evdev_default_conf.max_event_port_dequeue_depth;
+		eventdev_conf.nb_event_port_enqueue_depth =
+				evdev_default_conf.max_event_port_enqueue_depth;
+
+		/* Configure event device */
+		ret = rte_event_dev_configure(eventdev_id, &eventdev_conf);
+		if (ret < 0) {
+			RTE_EM_HLPR_LOG_ERR(
+				"Error in configuring event device");
+			return ret;
+		}
+
+		/* Configure event queues */
+		for (j = 0; j < nb_eventqueue; j++) {
+
+			memset(&eventq_conf, 0,
+					sizeof(struct rte_event_queue_conf));
+
+			/* Read the requested conf */
+
+			/* Per event dev queues can be ATQ or SINGLE LINK */
+			eventq_conf.event_queue_cfg =
+					eventdev_config->ev_queue_mode;
+
+			/* Set schedule type as ATOMIC */
+			eventq_conf.schedule_type = RTE_SCHED_TYPE_ATOMIC;
+
+			/* Set max atomic flows to 1024 */
+			eventq_conf.nb_atomic_flows = 1024;
+			eventq_conf.nb_atomic_order_sequences = 1024;
+
+			/* Setup the queue */
+			ret = rte_event_queue_setup(eventdev_id, j,
+					&eventq_conf);
+			if (ret < 0) {
+				RTE_EM_HLPR_LOG_ERR(
+					"Error in event queue setup");
+				return ret;
+			}
+		}
+
+		/* Configure event ports */
+		for (j = 0; j <  eventdev_config->nb_eventport; j++) {
+			ret = rte_event_port_setup(eventdev_id, j, NULL);
+			if (ret < 0) {
+				RTE_EM_HLPR_LOG_ERR(
+					"Error setting up event port");
+				return ret;
+			}
+		}
+	}
+
+	/* Start event devices */
+	for (i = 0; i < nb_eventdev; i++) {
+
+		/* Get eventdev config */
+		eventdev_config = &(em_conf->eventdev_config[i]);
+
+		ret = rte_event_dev_start(eventdev_config->eventdev_id);
+		if (ret < 0) {
+			RTE_EM_HLPR_LOG_ERR(
+				"Error in starting event device[devID: %d]",
+				eventdev_config->eventdev_id);
+			return ret;
+		}
+	}
+	return 0;
+}
+
 int32_t
 rte_eventmode_helper_initialize_devs(
 		struct rte_eventmode_helper_conf *mode_conf)
 {
 	int ret;
 	uint16_t portid;
+	struct eventmode_conf *em_conf;
 
 	if (mode_conf == NULL) {
 		RTE_EM_HLPR_LOG_ERR("Invalid conf");
@@ -174,6 +295,9 @@ rte_eventmode_helper_initialize_devs(
 		return -1;
 	}
 
+	/* Get eventmode conf */
+	em_conf = (struct eventmode_conf *)(mode_conf->mode_params);
+
 	/* Stop eth devices before setting up adapter */
 	RTE_ETH_FOREACH_DEV(portid) {
 
@@ -184,6 +308,11 @@ rte_eventmode_helper_initialize_devs(
 		rte_eth_dev_stop(portid);
 	}
 
+	/* Setup eventdev */
+	ret = rte_eventmode_helper_initialize_eventdev(em_conf);
+	if (ret != 0)
+		return ret;
+
 	/* Start eth devices after setting up adapter */
 	RTE_ETH_FOREACH_DEV(portid) {
 
diff --git a/lib/librte_eventdev/rte_eventmode_helper_internal.h b/lib/librte_eventdev/rte_eventmode_helper_internal.h
index 134ddd3..4cd5ac4 100644
--- a/lib/librte_eventdev/rte_eventmode_helper_internal.h
+++ b/lib/librte_eventdev/rte_eventmode_helper_internal.h
@@ -27,9 +27,23 @@
 #define RTE_EM_HLPR_LOG_DEBUG(...) (void)0
 #endif
 
+/* Max event devices supported */
+#define EVENT_MODE_MAX_EVENT_DEVS RTE_EVENT_MAX_DEVS
+
+/* Event dev params */
+struct eventdev_params {
+	uint8_t eventdev_id;
+	uint8_t nb_eventqueue;
+	uint8_t nb_eventport;
+	uint8_t ev_queue_mode;
+};
+
 /* Eventmode conf data */
 struct eventmode_conf {
-	uint64_t dummy;
+	int nb_eventdev;
+		/**< No of event devs */
+	struct eventdev_params eventdev_config[EVENT_MODE_MAX_EVENT_DEVS];
+		/**< Per event dev conf */
 };
 
 #endif /* _RTE_EVENTMODE_HELPER_INTERNAL_H_ */
-- 
2.7.4