From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <Pavan.Bhagavatula@cavium.com>
Received: from NAM03-DM3-obe.outbound.protection.outlook.com
 (mail-dm3nam03on0062.outbound.protection.outlook.com [104.47.41.62])
 by dpdk.org (Postfix) with ESMTP id 6F1421B32E
 for <dev@dpdk.org>; Tue, 16 Jan 2018 18:47:52 +0100 (CET)
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;
 bh=AFa4xucdgSruyIP/TYUPFjWp9FLUyFbTNfhup3e4xgA=;
 b=cqAwGptzY+FKsKlOsk6+1SzpA77DXTjDzP+jB0NyLkwxK4kqyJzyCMdrJ8P6ffsmONwnTC26beicVvwruVmNGNhG8YpkehDJuVBtyjoTUMW2aaAFknxLK09GA7zsxkv+eNnJIKDovsUBfDrChagQXbcwPcgIB+zaGtaKWBWPww8=
Authentication-Results: spf=none (sender IP is )
 smtp.mailfrom=Pavan.Bhagavatula@cavium.com; 
Received: from localhost.localdomain (111.93.218.67) by
 CY4PR07MB3464.namprd07.prod.outlook.com (10.171.252.145) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id
 15.20.407.7; Tue, 16 Jan 2018 17:47:44 +0000
From: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
To: jerin.jacob@caviumnetworks.com, santosh.shukla@caviumnetworks.com,
 harry.van.haaren@intel.com, gage.eads@intel.com, hemant.agrawal@nxp.com,
 nipun.gupta@nxp.com, liang.j.ma@intel.com
Cc: dev@dpdk.org,
	Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Date: Tue, 16 Jan 2018 23:15:58 +0530
Message-Id: <20180116174607.10821-6-pbhagavatula@caviumnetworks.com>
X-Mailer: git-send-email 2.14.1
In-Reply-To: <20180116174607.10821-1-pbhagavatula@caviumnetworks.com>
References: <20171130072406.15605-1-pbhagavatula@caviumnetworks.com>
 <20180116174607.10821-1-pbhagavatula@caviumnetworks.com>
MIME-Version: 1.0
Content-Type: text/plain
X-Originating-IP: [111.93.218.67]
X-ClientProxiedBy: HK2PR02CA0158.apcprd02.prod.outlook.com (10.171.30.18) To
 CY4PR07MB3464.namprd07.prod.outlook.com (10.171.252.145)
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id: 57e1f92b-b4d7-4f5a-5cf9-08d55d0941be
X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0;
 RULEID:(7020095)(4652020)(5600026)(4604075)(2017052603307)(7153060)(7193020);
 SRVR:CY4PR07MB3464; 
X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB3464;
 3:1w6W16boZXtXhddmQY8bBwaLPR9qFKH4xanLbOIjkwaOgo7+XylaZiv8XhjAWv91OtCsM5TDuDFef7EwWIK5BI67rv8FADqq5tUU9hweZ48QgJFIlkTmpn14wjly5ZBr+8JHpkurJo6pk3RNw5yrooQNRBHvVzPJX7594MDKgoBSnAaoT8+4T+4J+ArLKgS/G6S23f8bfTDoGM8/Ewevj5dw93aoZDZdGvP3By1TYTenUZDkzaL5HMTRMsmgSn0s;
 25:RINswIF9v3VWjM+bfLOldKCX+HX0lajCeS09sGXYEpDSWyn+o4LaHeV61xZ/7lDP+hy6cLqVoWaJ5OO+TFvhhoK7n2z7jbBq1co7nyRUV6RYVAJGBkwduLO2fxEEcJnhp1hOPF0+TgElZAloORKk3FkTyYodxOhI1SLr3y6s0g1p+Gwl4FzV6R/4Zi6yhoWoz6nnEeVtRtxldhpi9ycHFz2KYm5YvRKZQVOa/8M3ycmSwt1IWNUQeifTyYt1HPNMqDoeAhvkXBSHaEIriYuJaznE1JbYrOCIyrIy6vHl7egXXkIywtl9fPbCmy8LtAflRVAL+9h6bkncKiTigyROfg==;
 31:PY8vSZe1m3cKXJ5twcen7W4toAOgWcADHSAie7NxA/N9lD468TujHcg076gmFcsTw4DsgXFmfTrQCuawNqwkAGozDo8a8UdT2KEii/L5FIP10XbigyeEb/rTWg/a2dxuSsdFW/BrTDCw1WZrxwZ5fPs/mzMHSCD4DZ4LPqBZPNZ2ezwHHDcbj63MgSqR4svrMaUGb61K8tJ53zAMkV6reCw3h4Gb0z320feiKO5gNcw=
X-MS-TrafficTypeDiagnostic: CY4PR07MB3464:
X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB3464;
 20:E436iWzA7a/0ljGW4OpXXrvjp4g/Gjmy2yXvjHYsINEIE7XiXmlZTm0+/V4A3zdyq1SpOAROHeCrqXWqUVH53OtpQhBPkvqQgkiJjXQLn2KZ1EAwotQcMmqA0pjN55PKI6imrQfvO+f/of3lNO2XMaaMGlVYc8mevr7qnCLRODum8WtjypyxcP54z1MVxNGFSCGogma8+K4iViIa/qVHuwZXqnpIXbRKxf7H8u7c6rZIiXsCJcPWgF6tcQMuBWlX3O6t8KgOJo0IYRlEVc/Xok0/utJJqisVN6AyXDQYCJef3fY4wQEuTaXv7C1wywnHXsJpzhiSiHAJGMew+AeIfAMHOWMwRjLAhKNXR5RAj8XhUjqRZHzSpnCF9ru7WdPFnvDY2WmAyCQ6os9Wr+FEWPabQOJ7Smmhu+6WVtlR2qTNpl1dztBD+6PZC6F939eTiio8/t5DneP58aIslQgNehmAdHY489EQydc2GZBF5WNGo4v5tyk4+Nsj9FELrDnMIV+1+CCcgOra8+qGFv1PPDOWcLWTdXxKqDBptPtB3dkjM/Gt3Td8ysvlKpWc7zJI0LSJUt+DRgW6cK9CsTDF+ZLMQVM0rhetELakS36SaCI=;
 4:wEjRndg+QwD6UbgA+jFfpiFshv5YDZil/2GXrlJZPd/Vr0c5b7CY2QzhnCcqroAYg15ghyZ8u7/jYHOg3qUm3k2K/8HqFi05zMLHj+/w101Uq1OhxVf7ZNpBMsCty1fPVJ4mJlvkhqgvpk7NmSsLiKI13VLDSoLRNVvNVwed7K+cNTOMuzT38r0c3Exxq0U14bmTZTaPaH9PxV1gGKj4LoLrBJtT0dKIg8wJSRmJcGDy4cXtDkhhjI+staGVPCK8KiJ+fT7j/V9/In/fihYQ8YTc7CLN1FnUPS0Kb/fMmoCtFJMFfgLwP1UbB1/pZtdB
X-Microsoft-Antispam-PRVS: <CY4PR07MB3464C6A04852520097F828D480EA0@CY4PR07MB3464.namprd07.prod.outlook.com>
X-Exchange-Antispam-Report-Test: UriScan:(228905959029699);
X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0;
 RULEID:(6040470)(2401047)(5005006)(8121501046)(3231023)(944501161)(93006095)(3002001)(10201501046)(6041268)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123560045)(20161123562045)(20161123558120)(6072148)(201708071742011);
 SRVR:CY4PR07MB3464; BCL:0; PCL:0; RULEID:(100000803101)(100110400095);
 SRVR:CY4PR07MB3464; 
X-Forefront-PRVS: 0554B1F54F
X-Forefront-Antispam-Report: SFV:NSPM;
 SFS:(10009020)(6069001)(346002)(366004)(39860400002)(376002)(39380400002)(396003)(189003)(199004)(81166006)(97736004)(8676002)(6116002)(5009440100003)(52116002)(305945005)(8936002)(107886003)(1076002)(51416003)(81156014)(25786009)(8656006)(4326008)(575784001)(50466002)(6486002)(5660300001)(3846002)(7736002)(50226002)(16526018)(68736007)(106356001)(26005)(76176011)(53936002)(6512007)(47776003)(48376002)(16586007)(386003)(6506007)(66066001)(72206003)(2950100002)(36756003)(2906002)(105586002)(478600001)(316002)(6666003)(42882006)(42262002);
 DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR07MB3464; H:localhost.localdomain; FPR:;
 SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; 
Received-SPF: None (protection.outlook.com: cavium.com does not designate
 permitted sender hosts)
X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY4PR07MB3464;
 23:CYPGlHDntDyxzQBWX57gj+IwZZCcvfqD0vvfpNKlu?=
 =?us-ascii?Q?2LpwUJ+4s8cz5wIvb4SjD60Uk9S5x7FIcKqWnp9iRWDh9tqmVU5Un0k5I8zf?=
 =?us-ascii?Q?VF+r2+/qwi2BlHSr229rmRIezbmsKUVoODLgx0XkHGtnTDKLpMbTKt5IG140?=
 =?us-ascii?Q?XW8KPi6nU60XGduHECZxjvg/Lbypq5D1t4sy4aKosYXcY3qyEjO3NsqCTED6?=
 =?us-ascii?Q?/JnWAHqZH8IMA2+C25yZZEyP1RNCYdoHbmDqFHCQBhDiAO1QjrzVaCW5kNoe?=
 =?us-ascii?Q?9O3DI18K+NgWUeRKoPgMXcRcuT9rzp8s5yY9qFyJlU0JXuh0tf6/p3B5evUY?=
 =?us-ascii?Q?Es0+7mUtscPXZvfKdREJKQlGyGnWD/Z7AxJJmPaXAejpcvqDGJuGaPDZ1811?=
 =?us-ascii?Q?5at/DZCn5IHJ4HYq7UPntGo0Oo6v6deO1nT0vEEKpcN1EKbu53x9alqDRsdD?=
 =?us-ascii?Q?/Fr5ull9971ME0/mae0THhnU4DM1d0g3r7HRFKzvTofKlSH2OqC0TxrmILPF?=
 =?us-ascii?Q?F0TBf2RIjw4vgtKzcldcxdgmzI5xg3NvMgH701cTM5aaltZpltgIDtOwrSwP?=
 =?us-ascii?Q?dTm8jP4Q5wj2x+eY6f/pwZfppj7K0xm3ZhKx7K8zrtcC0kOu9UJ443Grarb3?=
 =?us-ascii?Q?VI9SQkxvpuJssAcU33gQ7MHd7RUBtnxxB3tKUSyiqq/yA+64znZVihVw6oFS?=
 =?us-ascii?Q?drNhdzFratPdjsRqvM5NMhZu8QDhVXgLF027Q8BdMOh9FC0ucEBcSfyHURFz?=
 =?us-ascii?Q?EKNX5sJUQoQD0bZPbVwa5hgOaLkG8ikKTWBHWVnzhw/kj74f5ueN9hYgL1Xo?=
 =?us-ascii?Q?hVj4OYFAOABx5f7ab8/s5YXPlCOteoTYc0OXI5NJ90jzJ47NaLuLzRnSY8MP?=
 =?us-ascii?Q?0eKSDOJpGPBvFOPcC5gZMc8394jClWLnziYDy6fmA6BPWG4/vY4iaA1C2nsC?=
 =?us-ascii?Q?hF8OtsaDzwVB1OUq5y3/OqT84jyk0SFM5dW5sh6hJy0EK7CfqwADbKswj3VA?=
 =?us-ascii?Q?L7vlpCzqoqbszLFLX5aXVz8KTBBNBkTU8JNLQfv7rGDPIEFAjCElgA2jMeiB?=
 =?us-ascii?Q?cNEa8e/2XgMFXranquDs5tXDQVfmv03HyqnkXUjJo1h+nNUOdgKIuurh968N?=
 =?us-ascii?Q?CHa7su/C00JoGGeCXj4QdpxEsn05UcrYowGidzelLqtfnhbtNMrCx/BeaSTy?=
 =?us-ascii?Q?YYpNq5NgvC2V/uqnDl2DBWIELhNI8JiN/zv3s3SLqHqcIWigptrNk9SSIXBG?=
 =?us-ascii?Q?FdK6wylZjpsPReehM4=3D?=
X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB3464;
 6:q5ge9F+CE6T1D55/RdxPJogsE25qMLV+JCHa3JqqLJhmVN/1cepOF1PJAycyrEUymUpkq2si7NNXuhOWgV+x28iuz+13wge/Z0cHKfgPlapv3Fnqw9pMrtNhS1clWW7M3eIGVk1vpK4EsiybPxFivCjzcEREyrOuCT9bkNBN58FIkEdwtpVZiQ7v9gaAa+1AvzsRfzFqGc1iJWwYxBpmFb6MrnfFU3u5LS05Y3Nh/3tGmmLpv1ppW5qE24+81p818iLBvm+0bVQlHU3U+kRhaYc2wrIAwX0TNXM0fIduZ3aDkSkH2lq664gzFOISfc69vKAFnPoPpJXY+3Z9fxOnR0VS8boB8y5bT60nj2OPq7Q=;
 5:XI60wkOZhEhUfAjZeviIx5rqColoTy75LhlrwDzSx01YuiA9LhUcwPmrREfKavAZkBiLjL80UE8pRSlsZCoQXa2VlTOrueJ1lKXKvrMJ7VHRrmK0fNkPOQs3O6eQAm2xXUu4/RQwBydM7CE8LaaTsSbjiXXRRxASFLeByrvgGEo=;
 24:+RCL6/4KMGTPM5q7u9kWdzl1+mDQ2XnpbLaee4rivO/dZIMZo2YNekt594F1iUO5LZHBHndW28A3E7QJOA/i5ARkWqmpTtdw98oeTf7db/A=;
 7:pv8sxZfzXsV6BNf47UPqEgD4d7f5QTj8qTLYyHPH+tOB2dO5EFrn+PZCKGRGqztBgukaAo7okTwdOsmryMrvqpeWt6lXKo5LXNuipuTXOrtF+bwlxxBO3YQvCtM6kjxZvNpbjqHHdl6m0KN5fKEjasUKGBdxuCak6vACx7gSdXcwxLtoGRr3pyEeypk4XZlJLL+KeAG3KD6kFCJLCR4WTsKvNxMYggEk6ff6+GIXpCMjPNOeIYPjPe0EowgyDWm3
SpamDiagnosticOutput: 1:99
SpamDiagnosticMetadata: NSPM
X-OriginatorOrg: caviumnetworks.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jan 2018 17:47:44.0001 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 57e1f92b-b4d7-4f5a-5cf9-08d55d0941be
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR07MB3464
Subject: [dpdk-dev] [PATCH v7 06/15] app/eventdev: add event port setup and
	Rx adapter setup
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: Tue, 16 Jan 2018 17:47:52 -0000

Setup one port per worker and link to all queues and setup producer port
based on Rx adapter capabilities.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
---
 app/test-eventdev/test_pipeline_common.c | 114 +++++++++++++++++++++++++++++++
 app/test-eventdev/test_pipeline_common.h |   5 ++
 2 files changed, 119 insertions(+)

diff --git a/app/test-eventdev/test_pipeline_common.c b/app/test-eventdev/test_pipeline_common.c
index c20815c25..63f54daef 100644
--- a/app/test-eventdev/test_pipeline_common.c
+++ b/app/test-eventdev/test_pipeline_common.c
@@ -157,6 +157,120 @@ pipeline_ethdev_setup(struct evt_test *test, struct evt_options *opt)
 	return 0;
 }
 
+int
+pipeline_event_port_setup(struct evt_test *test, struct evt_options *opt,
+		uint8_t *queue_arr, uint8_t nb_queues,
+		const struct rte_event_port_conf p_conf)
+{
+	int i;
+	int ret;
+	uint8_t port;
+	struct test_pipeline *t = evt_test_priv(test);
+
+
+	/* setup one port per worker, linking to all queues */
+	for (port = 0; port < evt_nr_active_lcores(opt->wlcores); port++) {
+		struct worker_data *w = &t->worker[port];
+
+		w->dev_id = opt->dev_id;
+		w->port_id = port;
+		w->t = t;
+		w->processed_pkts = 0;
+
+		ret = rte_event_port_setup(opt->dev_id, port, &p_conf);
+		if (ret) {
+			evt_err("failed to setup port %d", port);
+			return ret;
+		}
+
+		if (queue_arr == NULL) {
+			if (rte_event_port_link(opt->dev_id, port, NULL, NULL,
+						0) != nb_queues)
+				goto link_fail;
+		} else {
+			for (i = 0; i < nb_queues; i++) {
+				if (rte_event_port_link(opt->dev_id, port,
+						&queue_arr[i], NULL, 1) != 1)
+					goto link_fail;
+			}
+		}
+	}
+
+	return 0;
+
+link_fail:
+	evt_err("failed to link all queues to port %d", port);
+	return -EINVAL;
+}
+
+int
+pipeline_event_rx_adapter_setup(struct evt_options *opt, uint8_t stride,
+		struct rte_event_port_conf prod_conf)
+{
+	int ret = 0;
+	uint16_t prod;
+	struct rte_event_eth_rx_adapter_queue_conf queue_conf;
+
+	memset(&queue_conf, 0,
+			sizeof(struct rte_event_eth_rx_adapter_queue_conf));
+	queue_conf.ev.sched_type = opt->sched_type_list[0];
+	for (prod = 0; prod < rte_eth_dev_count(); prod++) {
+		uint32_t cap;
+
+		ret = rte_event_eth_rx_adapter_caps_get(opt->dev_id,
+				prod, &cap);
+		if (ret) {
+			evt_err("failed to get event rx adapter[%d]"
+					" capabilities",
+					opt->dev_id);
+			return ret;
+		}
+		queue_conf.ev.queue_id = prod * stride;
+		ret = rte_event_eth_rx_adapter_create(prod, opt->dev_id,
+				&prod_conf);
+		if (ret) {
+			evt_err("failed to create rx adapter[%d]", prod);
+			return ret;
+		}
+		ret = rte_event_eth_rx_adapter_queue_add(prod, prod, -1,
+				&queue_conf);
+		if (ret) {
+			evt_err("failed to add rx queues to adapter[%d]", prod);
+			return ret;
+		}
+
+		if (!(cap & RTE_EVENT_ETH_RX_ADAPTER_CAP_INTERNAL_PORT)) {
+			uint32_t service_id;
+
+			rte_event_eth_rx_adapter_service_id_get(prod,
+					&service_id);
+			ret = evt_service_setup(service_id);
+			if (ret) {
+				evt_err("Failed to setup service core"
+						" for Rx adapter\n");
+				return ret;
+			}
+		}
+
+		ret = rte_eth_dev_start(prod);
+		if (ret) {
+			evt_err("Ethernet dev [%d] failed to start."
+					" Using synthetic producer", prod);
+			return ret;
+		}
+
+		ret = rte_event_eth_rx_adapter_start(prod);
+		if (ret) {
+			evt_err("Rx adapter[%d] start failed", prod);
+			return ret;
+		}
+		printf("%s: Port[%d] using Rx adapter[%d] started\n", __func__,
+				prod, prod);
+	}
+
+	return ret;
+}
+
 void
 pipeline_ethdev_destroy(struct evt_test *test, struct evt_options *opt)
 {
diff --git a/app/test-eventdev/test_pipeline_common.h b/app/test-eventdev/test_pipeline_common.h
index d8ab797bb..f8c46c0d7 100644
--- a/app/test-eventdev/test_pipeline_common.h
+++ b/app/test-eventdev/test_pipeline_common.h
@@ -55,7 +55,12 @@ int pipeline_test_result(struct evt_test *test, struct evt_options *opt);
 int pipeline_opt_check(struct evt_options *opt, uint64_t nb_queues);
 int pipeline_test_setup(struct evt_test *test, struct evt_options *opt);
 int pipeline_ethdev_setup(struct evt_test *test, struct evt_options *opt);
+int pipeline_event_rx_adapter_setup(struct evt_options *opt, uint8_t stride,
+		struct rte_event_port_conf prod_conf);
 int pipeline_mempool_setup(struct evt_test *test, struct evt_options *opt);
+int pipeline_event_port_setup(struct evt_test *test, struct evt_options *opt,
+		uint8_t *queue_arr, uint8_t nb_queues,
+		const struct rte_event_port_conf p_conf);
 void pipeline_opt_dump(struct evt_options *opt, uint8_t nb_queues);
 void pipeline_test_destroy(struct evt_test *test, struct evt_options *opt);
 void pipeline_eventdev_destroy(struct evt_test *test, struct evt_options *opt);
-- 
2.14.1