From patchwork Wed Jan 10 14:51:38 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pavan Nikhilesh X-Patchwork-Id: 33496 X-Patchwork-Delegate: jerinj@marvell.com 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 B3D331B25C; Wed, 10 Jan 2018 15:52:36 +0100 (CET) Received: from NAM02-BL2-obe.outbound.protection.outlook.com (mail-bl2nam02on0071.outbound.protection.outlook.com [104.47.38.71]) by dpdk.org (Postfix) with ESMTP id 9EDAF1B25C for ; Wed, 10 Jan 2018 15:52:34 +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=7MVeTiFdLZWJ/3iIZMT3tAUXDchGsqvgRb/OwHtXyyY=; b=jU1opXbwzOFVS6GlvXMkORK2u2LEXkP8Sw2SYfraxzqO1lKOB/f9CFIZ9pdPd5vo5tLEAKzP3WCtmg6UTfPgx+xtMC3YLse0c6FS1bIzWFJ4SI+I+Uq4vX4Eglbd0IVw8/rIaSpbW9IVmihgl1cPD9aFljC9tl9zt6e+1P3ns9o= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Pavan.Bhagavatula@cavium.com; Received: from Pavan-LT.caveonetworks.com (111.93.218.67) by DM5PR07MB3466.namprd07.prod.outlook.com (10.164.153.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Wed, 10 Jan 2018 14:52:29 +0000 From: Pavan Nikhilesh 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 Date: Wed, 10 Jan 2018 20:21:38 +0530 Message-Id: <20180110145144.28403-6-pbhagavatula@caviumnetworks.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20180110145144.28403-1-pbhagavatula@caviumnetworks.com> References: <20171130072406.15605-1-pbhagavatula@caviumnetworks.com> <20180110145144.28403-1-pbhagavatula@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [111.93.218.67] X-ClientProxiedBy: BN6PR16CA0009.namprd16.prod.outlook.com (10.172.212.147) To DM5PR07MB3466.namprd07.prod.outlook.com (10.164.153.21) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c60c72c3-49a8-4282-12ea-08d55839c7b2 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:DM5PR07MB3466; X-Microsoft-Exchange-Diagnostics: 1; DM5PR07MB3466; 3:SjBYlrnoJLnQk0DIOefPBAOrpHMkhOeueTPoV0hd29UD+ZiHbZ3Fl5k6jMzJ0j8sBDAG9ALELL9fr54vmmdPQjeYsi4xicygLRrpenmzYUX43+CBm1arEWd0RtRdz54kg3UV3m4JcxKe/+wDVr5akowzDD6M3uHqijxIce3KuEIr6eE5qBcTdfxOrH9u0oSvK16p/snTi37a5MqPMtbkU8prfgIEXz50+1pq9EIbh0UwSujtIJ129rDMBvFB4iUI; 25:mZCSamydYQClAFtdWlruSlKABq0+C7I9lCpY0l2OjWVmmaE0qNDHCwGBqdFS4EJxa0rBZe/iKIkqiqofGI/eJWsy1ilS3XEbQVws1vRJxJSgW5BAzYLIbYcNI4GojgmsCNzTDlJpwho24wenEi7peYpVuPlTe98BW+1i8/FrAUz5JsXUrMQ/fJwdxgSD7gqcoPG5E/MoAhW59clg/N1Pv8WmgSKsvrEBa5v5/BzKS+c3vie0LwzgH4qK4Ys7nWQk5kcUOP7xMtPl3jPyDEV8v4eBAIKll5z7oxsNZKoKyW/EQqw0VwLPTqzz+8GeF2EAEjzE2gU9WjiKuu9TddZ7Jw==; 31:cqKxwBSV4Ytr4EO+l0F+JVGZ29OvlCmZhEJsNEQ/QMt6bX15cnz7FLR3brj4/UFEqACvpPPrBmUnM5kJlaojlPfEhAuHjA6c6WBAuodhNmDWV7f7fByFOc+UhQSRb8/8ZhDgtYsjbBDVYcCcxPUX4pnvXVIofZEOLQ+hDYqEDaH4NhvonfK5v0T2ytsJ9122atiC6SsskCnUEVnadiFiZlqVqM6bNEMNdHYBvzSTOjo= X-MS-TrafficTypeDiagnostic: DM5PR07MB3466: X-Microsoft-Exchange-Diagnostics: 1; DM5PR07MB3466; 20:9fvmU7P8anSnrtsLfIIq1w3rhV6IKSqQucZcTBi1gp9bk6BjKKj+qtChwS4rYQCbgOkV0rkmV05OHvMbraNeLJWx1ylQQQZBmA036hgZG1cxsJMOrxsGL5QZQSYbsmp8AoW97mHlgOfU93tt8JZTe8UrgE+sceyw3UPkNF29qHFPHFaHR9ddy0zKpbfX7fZnTY0NImoI18kEAvId0nBF5HF+HXXdijuSMqO4o8SRGMtj5d0T5dWLoVQiNAdNFpEJTxb0FMGLwUYR/CxgUbAo2u/rBh5GKdWb/b0KrURg0+XLZYT4DETgKrA6rluFEJycXmTYX58DMZeom7CAoolMUxM4wKdzHa96QK3Th8t39VZm1OOANjkhw+agatbWcNYlQKStCyca2Qef5PWui24PufpUz7bXPjjavIBXgm6sD+8piOXzHnj8XufAaM5/m7eUo+pwbENnih81lkFg4+XVVVa0iJ8ZRIl0mtw9W6p43jdWloHwM7btTzq63WkU35gmI24+QOD7AgDJO5Zxiyy4fOkIj8t83Jnlz9L6kjT2RRihLDoLB+IFHR1cfHh8rRQFxrbdly0Xn1W+IkY2nTOzj2/XBtH+/FbVRGoVklZTU8k=; 4:lZfuiuefEec8WMjG9spsLYalWsIpDwZzfONW43HJiFT2t5zyxZOtAFIyedQats7RTjQMYDZhvXVyVGquyNMF2IIPEU6cOZ7uEizLBb+6z8WOhOE6/UrhNFIcR6CHW+sgCfeCJpdGpo2TcakTc9F84vDInLUXAF1p6fUcS13nc7hIs7S/BxWW3+G3thRseWzeO8+7gc0I/yEeok+T0c2wICuZcf334IUyfz7t+G9M1+aIhuxta9NNsqyuP64FmD1LMeQgTVox4RL/j1Y3X8timA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(5005006)(8121501046)(10201501046)(3002001)(93006095)(3231023)(944501075)(6041268)(20161123560045)(20161123564045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(6072148)(201708071742011); SRVR:DM5PR07MB3466; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:DM5PR07MB3466; X-Forefront-PRVS: 0548586081 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(39860400002)(346002)(366004)(376002)(396003)(39380400002)(199004)(189003)(76176011)(25786009)(107886003)(4326008)(6666003)(2950100002)(106356001)(42882006)(8656006)(8676002)(105586002)(53936002)(6486002)(52116002)(53416004)(6512007)(50466002)(47776003)(5009440100003)(305945005)(68736007)(51416003)(386003)(6506007)(69596002)(36756003)(72206003)(2906002)(16586007)(50226002)(316002)(478600001)(7736002)(48376002)(3846002)(1076002)(6116002)(5660300001)(66066001)(16526018)(81166006)(97736004)(81156014)(8936002)(42262002); DIR:OUT; SFP:1101; SCL:1; SRVR:DM5PR07MB3466; H:Pavan-LT.caveonetworks.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX: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; DM5PR07MB3466; 23:ZxrqKvwn+ut1tU/mNfYEMkr28ChQn5JkeYZehXgUr?= lXBDWex6H6QR7OUdO1VCvuAv7a+Nq67iGJOy0bkDfK3ycHXhpEhRG4L4MPf54kO5FhpFyXMAbIuPvrCUZUfonEowZksyDVx5LO0oT3lC8GnyynTDfKLauR4F2Ldujo3rEzqZzDIPETZrW6f6mGFJgSqMmk1NdOaehjwGHI2/d59wZAO9VGlUZl+uBK0u/BPYZ5GsVwaCg5WWH2jfjjalufrOjiV4Gmq/2COuGxVgBoR5Cil+DxA+iXbXWH8Dc3wL7Z66mzNqqffVFYEp3AW2nJ3Fy6iRKTIEip/si7L/LW9z8ziIS6ZBtbmjos3DjMuFWElQW40iOs8z8kUpQ51tvu2FwxfF+F8EiYZFQzrpXBeMH8ILEQCe6YAGRBRvy1LviWxLPF8ZtcFlfhwYtacuVhUBeuDeNvUTE9a+e+pVh2SUiMqzgvMFeUVIIB+8l+UqWugXrerjtdpExm9mHMJRTxpTKXXeG5P7YCIciHmqstNOm3ejZhvB3+Apt7WjSgR4ykV+E0rWWACF1lktSad8FrkKu2vmgoUzRbmE3UMSybiW/r3qo2L1JNc5IpCMgTsK0R65cuLktC0rIDFHh5Py0xhxOmHH4Bv21DABOrS5qho+aeVCfm/ZywI/uQOVvTQ3T8S9RCNbZirmBNCNEFg+H0Clec+VyCUFonv4HQowquqgHYhit1WPg43uKnxTUthc+k3zY2n5HOzYtM2EtxOsUeYcQRlddcW9nak0Ht4NfQaA07xGZ3Y33dql87bOcmi0ZW1DFbb6BVUvnbbvBd5grLgBdbr5gXlQKx2kMkKcbuciwYIEefkMEkBr9mvC5+atLAKYNrtPsRe1rFcfpnt0Oa52a+PC0t/cyx3QEttdQXcIuYfpiu0OtGwgOYl/kFtR/Q83Ph7rQ9hMTUabAb1OrSgSEgPSxTIEgPBp09mBVmMmPwLnnlmBiGh8BCkNj+V4O88Fg7fHimiyiOEfUuiU2b+hnLLDxLanFX+pQJjpfGUiA3c1XfRS4JVdapQcE3J1xpnXZRud//VPQTrf2+JpJ8IiNkzmu1MtbVUN4ttlC+TpaoAC+H/vTYsz2gG5eK4fNFtsXV+iD4lpQc1hz+T28+DHSB3wN50xTtbyzefY3UTKy0W8bHyj7+brmhDEcfMTRcfEeLeCYox6wG9119aTqXnCGbVW0j8FD9HGf8lTbaZJw== X-Microsoft-Exchange-Diagnostics: 1; DM5PR07MB3466; 6:pPma4f55p6Italg/niLVoyz9c3bRnWXSw1e63litZ5W8gogTLQNYW1G7diagggOeP6aEiJWVANinro4MJk2SAuPk2CsbhbXNgp+cmP32ulsjyJNANSIXLm4fuFEzl2EhY+x32BOowUgRg0YtGkm35puZfNolzm++k/+O+OYxNdJYqpuCLwfb741WQwUyCN9Jw/D+xjL7dPlC+5uZe2Q8kRePRQbuqThKtZLZt93CMSMZ7dUD3/ha2l9DT8yMdqFSi6W9Nr/tJQOYaTxfNobMmTQgmMXOTkXMyiGqFzhXCbw2afljTTmmPFb8tLpikM06AqVixsX9GMd5+FlmFCcJyl4IagbIiQXZ8kKtl1OROvs=; 5:oTMHu7VkQDaBgBk9onMQlR2BxSmhzyw3Nq0/m+tsnqkDKINMVa9q1s7JCaueImyUgc6EubUvjIz3tXGlFBxfM2tl5QHe7APJlnqxVwBHDG1UHgINtW6tpzxmj/RJfrNpjLKHAB1lLS8+BM0W2YV+fUQzalDW8Wkh/QcG/K+8Z4k=; 24:4d2pnO5y0kH+Vdxki0rT3vWarrfkk9NHfpToV4RU8s7406eqM854DSHK567GAVpRQhwhFMJ9+WiFdjruUHgK24Gl6jktbfFmyVuVpRwhh4s=; 7:FNDMriUAu7pQHB38NZ03wVKSGhHubebP6fn8BKqZbQozejvR77DHzLVNjM0A6ULmDBL+NVCiPfTWgWSMeQ0Cr9gJmdK4b40It5U6sWWPZyTF9tUPPJskDgGcMPbTDRK7zhB+tJSsVm7y3FSfCJDvfc3M93JhUu84BLQaFlTX1XiMcMmgnP6JYX0cBRdx5DfTu8sEfT7sIn0IBa2gdAw7uVU8F77rEdcuwmSA3I+f282gMAk6CUdqbjOID5Hp6Ix9 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jan 2018 14:52:29.4040 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c60c72c3-49a8-4282-12ea-08d55839c7b2 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR07MB3466 Subject: [dpdk-dev] [PATCH v3 06/12] 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 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Setup one port per worker and link to all queues and setup producer port based on Rx adapter capabilities. Signed-off-by: Pavan Nikhilesh --- app/test-eventdev/test_pipeline_common.c | 102 +++++++++++++++++++++++++++++++ app/test-eventdev/test_pipeline_common.h | 4 ++ 2 files changed, 106 insertions(+) diff --git a/app/test-eventdev/test_pipeline_common.c b/app/test-eventdev/test_pipeline_common.c index fc3f9fb15..e212cb93d 100644 --- a/app/test-eventdev/test_pipeline_common.c +++ b/app/test-eventdev/test_pipeline_common.c @@ -161,6 +161,108 @@ 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, + uint16_t nb_queues, const struct rte_event_port_conf p_conf) +{ + 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; + } + + ret = rte_event_port_link(opt->dev_id, port, NULL, NULL, 0); + if (ret != nb_queues) { + evt_err("failed to link all queues to port %d", port); + return -EINVAL; + } + } + + return 0; +} + +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..985c9a008 100644 --- a/app/test-eventdev/test_pipeline_common.h +++ b/app/test-eventdev/test_pipeline_common.h @@ -55,7 +55,11 @@ 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, + uint16_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);