From patchwork Sun May 28 19:58:36 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jerin Jacob X-Patchwork-Id: 24822 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 [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id D68437D01; Sun, 28 May 2017 22:01:10 +0200 (CEST) Received: from NAM03-DM3-obe.outbound.protection.outlook.com (mail-dm3nam03on0059.outbound.protection.outlook.com [104.47.41.59]) by dpdk.org (Postfix) with ESMTP id 3A16E7D01 for ; Sun, 28 May 2017 22:01:09 +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; bh=kuz254IS9oMQnsPzyvA43NUL2phymIB3xRdQe3GckTA=; b=lYKn08/A0h6dmGmoRmZ2bKA0mpMUr+PZFpit7IxCpE0Sl9Y/SZKJfsICrYigBigdX5BivY9TMdWB33ySWt+k93SjE/BHmJ11KUUCJU0ts8nPzc4CrMdZzEhyqvi3en23qzXi4ZlMN0CMuHXyPDdeNv+swDEf37sks/uwb83ppZ0= Authentication-Results: dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=none action=none header.from=caviumnetworks.com; Received: from jerin.domain.name (111.93.218.67) by CY1PR0701MB1725.namprd07.prod.outlook.com (10.163.21.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1124.9; Sun, 28 May 2017 20:01:03 +0000 From: Jerin Jacob To: dev@dpdk.org Cc: bruce.richardson@intel.com, harry.van.haaren@intel.com, hemant.agrawal@nxp.com, gage.eads@intel.com, nipun.gupta@nxp.com, narender.vangati@intel.com, nikhil.rao@intel.com, gprathyusha@caviumnetworks.com, Jerin Jacob Date: Mon, 29 May 2017 01:28:36 +0530 Message-Id: <20170528195854.6064-16-jerin.jacob@caviumnetworks.com> X-Mailer: git-send-email 2.13.0 In-Reply-To: <20170528195854.6064-1-jerin.jacob@caviumnetworks.com> References: <20170528195854.6064-1-jerin.jacob@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [111.93.218.67] X-ClientProxiedBy: BMXPR01CA0003.INDPRD01.PROD.OUTLOOK.COM (10.174.214.141) To CY1PR0701MB1725.namprd07.prod.outlook.com (10.163.21.14) X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CY1PR0701MB1725: X-MS-Office365-Filtering-Correlation-Id: 8f002c45-2d3a-41a5-b2c8-08d4a60447b2 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201703131423075)(201703031133081); SRVR:CY1PR0701MB1725; X-Microsoft-Exchange-Diagnostics: 1; CY1PR0701MB1725; 3:JS/q0uwcEobA6yvHskJF2vT5KobK/68bZ3ghRfiX45xM8WfMoWnkrTelPFlK2bWQxoTYHBuMSFCVnPvE7lRiYBvrPKeHwirrAB+DNv991oMB1YHaWDeV3U+nTLCZXjUpb/lIvknfa9TwETxnpPOdgQs8eEaU8Zyz1pHFrPp15n14lqLR8TNFIk4rL3dmUvAV2U7L9ZSKBgFSolSazxAs0iORdn5j8Yiw3zJ0k4QjQdQY8gIn3CVSTtLkdlKi3DhtGxlcRkYTS1/QH6q+FDr/mnTe4rSrOJzEPv8pfQuoGyuAxor8nh/6ta13LQFBhuhFCo17rofDC5RCrrmTDxGPiQ==; 25:xu40RmJtuaNLmKOGit6M3Ql0pfjKvTinWbq4fZp0AbdDXB8rN/dTV0NFea6nHmDurV/kg4bbRpJWEHe+UnVFryRzI7etHHnk8nRzbV8ReZalH0carygmZqcuksXB31vaVG/CEMnu8hXqdVWaMBy1w07fp5V6IXHoi2f8QBxxRtX3PQmpyfxAiKQJTejaeagoUxvT9RXLekwFPhW5T5ZJgLx7AmvbqEm3pmiXlDlvUL7kf+k2Z2o0sBrocRZd7Ufj6XurQKBr/f2c/WfHq6WMVvWEu1vQ42YFWpIn6rCvzSyVY4+5K4q+Ei65jvDQF7BqGFJvuSJ7aBFA6tCC0XU0CY0gz+xspgNK0EaFwC2QL+lC97OItxFh7K1UIFZ38O4somOuMVU/d73TU2CoeF6+rReLlANUrEVHr7spCLqOu7Y2UPY9XEyI1b7yoWdxps0D6TabYYmleb2D4dTTKQ/Q2TSEWP14oteibqAAnS9qFNU= X-Microsoft-Exchange-Diagnostics: 1; CY1PR0701MB1725; 31:Z+SX+or26yM5egS2YiSeQie8ovs7pnkI3LmzNtSaljOm3t4dA59BTFAEulVG1qKo8DACBbj3PKIvZJnQ30n4cyWWitShqg1zKGzOrmdDmEMIIALGHFOSENnqO3utp4reEvqa1kzN5wQqRMD9i5Roz6oina5dFAfN/1inax5XIHbWXNP8ADhwO5eO1evDy2U3dAo1xjLlIjJx1bADLU3MtGAPiZg4ZGzkmYtxV2Lk2tc=; 20:VKYPP6hm5iTlhvFtndL94/9F8j8V4lToJdUApuiDUN7V1V+aOyKq0n0/TdT9fdeSa8F+8Xtq+ofIPvXbIciVYjrd0d+HZaBGBNChMxB91LYswUDRFmOXtt5b09YZRKfHLoomOb5zsX4TGGHp6smxzLLuqvWjCrYhft5pCSN8bhoxai084TtL4wYONM9bzg+H5hsCBNbvZ5SqgZssIY+vPMdI3ExVkh2vzJDR9qfgsZQen2QUJ8B+9paAQ4E8dNrcgvVifAqWPIRGA7Sd0hfZfOs9JKM0gIZHLzSykENlTSOCKLK/UIfbyHEZP95dRIZ3wM4tclaaSD/KbmUcQ2+ILVT++SOC8s48pXYiiq3GMnFOxI8Q+XYH8Dc3oqJtVPNOxLNhI47brAfIykLvHo4NBGKS0MuBC8DNa6aarvFuUwepNk8WgBlavzqGhmSeLyoFWQBfFBYQwkSR07D0Ixawgq3Y19vicgFeSdvFrTPps6zRqDMVliJOOHjfDV6F6XtlxR4qTNZ0lwQcId3nROo1Um9ts/0D1X0DvEmvikwfAmKzFQ05BcCFkK+XQumhJrv7KRukOE95tLUVbmXS3dX/dz+O9URPlTLFL3ejb2ErYbQ= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700073)(100105000095)(100000701073)(100105300095)(100000702073)(100105100095)(6040450)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(93006095)(100000703073)(100105400095)(6041248)(20161123562025)(20161123555025)(20161123560025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(6072148)(100000704073)(100105200095)(100000705073)(100105500095); SRVR:CY1PR0701MB1725; BCL:0; PCL:0; RULEID:(100000800073)(100110000095)(100000801073)(100110300095)(100000802073)(100110100095)(100000803073)(100110400095)(100000804073)(100110200095)(100000805073)(100110500095); SRVR:CY1PR0701MB1725; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR0701MB1725; 4:ipBqEZihsh0WS1POR2d2nTcXnxm+rDi9HoiM4n5h?= UwdKl87stFE3zutZ3Jb5KlUH4YZP6Wz1/pVoE7FRhGTi3/rvcZuENHf8CX6Z6fGIR0bmysibsCPRIcZuVKXoQ6PaZO2xdUquiUhFk0BkHoYoY6xEahQe8HG+U02Re1/YoFtOUM8ZvFVCWY0rZSWcn60ixJPycnSagOw39DfkCakE3HIJikT6bqGvLO4gHyO11tFZgU0Wlk8IQj6r4g93XnLTLZHYMeQOIUiUs0eMbXEvYpGPiyyyQC2Yv5AOXhpu93Ev4BpEYbeMz6PiaLDmliFqk0woEUO4UWY0ggbJ6Qc+CIzW3d58pnAByiv9n3s4eNEvSmLZVawflcl77KAxE1DFa1cilH7KSKF0YTXQT0jLpFrux615qiHceIKmILSSKCwsZBVTDn+nooeQq0YzZ1XJZNd5STQHf3pXewVlSMvjV67ZTO45o1JmtggT1a4nlJcfQEejH5Ovas+96ieC+H0aFPwgmWVKI7eymRedh1Q5SdXz8OwVaVE4VKsqFyQaKxFcD04Vq/pvOtxIiuVNfdjpK3WI/8HCyerVLj/H+2NmOwkQeTH7b+n1/w3rWlahELmRj3TWMtjwGr6RfOTxGcEGg6rqi8M/5vV0XBVR4AaU6KwHBmgMv42ue9L0M6UKqOYPZagLfQy+hProuWl8DAc3ldnahS6Dmar9CVm6xbiJPbhtJ8Eb/rbddyMRdUJRuxtku4mO5xfU5az+Xc9UmgEUf+zUecXMWGN8K8Lc6NpyA9P4dV6W0JANnpWkRPZ2dm4UMU5lB7FqT6UjxadficpaZEuXXOfpfBaU1vfbIfc9mtjTNvP5tXCnudDWuY8rf6iT6ko42d0V9TmuPm4W9dnjXoHj70uesCEL1GMS/lUX1+cEC+3jmUd/L0TPnvOygdPlElJp0CcGN5ckN+sJzIqwOoNe0s7chBwU4h9Cpa2nVVbAXECKcmSjvBOj1857OeR7gXvjtAJlJo1wgodYa0jj75+lzlbtF0tj4uaxWoyfHsa8FzrJPwhredgPHDZon1pxvoMntV9DxBee0Zv/CUleBQ5801RiGtMneRSTT8e1CPjbf6ff7pg0jH7TjUblaoU= X-Forefront-PRVS: 03218BFD9F X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(39450400003)(39850400002)(39410400002)(39840400002)(39400400002)(81166006)(6486002)(66066001)(4326008)(50986999)(76176999)(50226002)(189998001)(72206003)(36756003)(6506006)(38730400002)(5003940100001)(5009440100003)(110136004)(107886003)(42186005)(53416004)(7736002)(8676002)(48376002)(50466002)(1076002)(3846002)(6116002)(6512007)(2361001)(305945005)(2906002)(6666003)(478600001)(25786009)(5660300001)(2351001)(6916009)(42882006)(2950100002)(33646002)(8656002)(47776003)(53936002); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR0701MB1725; H:jerin.domain.name; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR0701MB1725; 23:1XtlwkV7xhHIWhhqXL2Q+ddDcA/gwsNRD9a/1vH?= AcZsGm5Sbpd3bEDUkxJuSmCbu0EQjSnp75pw2FG0tMsWyTAedengOosyNHTA7HelX4VvnGagkdNvUD36uL5HDIDT8FvX50nQRRWfp0Dsee1anIL5gE4oCFXeZOWDSp+BQKEAd2SFsNHsAgoNTmap9NSfPcHHHTgyV6/oJLWsOw3qC5wQK0JcZnzZgZjoJwgTq8rZL+Q2fp6UNddQmAT/kU4Oz/d6DOFPMXxmf2XijH9pHaGKxyjy/V82IqDLOOX24YWN3XEvkQtW1r3id73UiZB8jagl3J1Bf6VaVzR7GK/GYZAJ3B8y+j1GNrbt9E2jyL79KSAeIBX7TKP3Bi7X41GQuWTgjbJ+N8zm1n2+TkUPcqaglEHvPkPPDuXBW5mwA04qjOnZudUrFFyJ9+GF/KeNUp6KnEQ2+m46/RjqyRZZYbDrzl5e5mOFNq4y88iDChgBtTMpSqj5QNRb90GLoxHoGO2dirmVbltOEkzGb81Tgv3Yv+d6XE4/QR/cF/dGFh2GgNtywCP7LYPVjjDujUfRlWBLSjLkWS7e+qn52iXmCl7Rk+69AHYOmPSpUEe6FpOI4uduCdcM0vfmrTsfY+l9lggV4k5b0z3yqnQk4ZTj70nsYYezjfmXiEfgi+I4G5nXFEBQSTTZrcJ2CgE5KG772w968fWSqgELLtMQy1QyorEQfbNZASZ2LcR3W1m8HuFz8VQtEUizR+qJeSfpIddrEA3+gV9+nnL2jdiJexny4bQ4XFOMn/LZy9a+iAx3vOxNgaW9SczyrjCn03iI1HgKJmEMYUOrztUI5g6kPTiR/qBqbaqpQnCtsDg0NnIH93bj+F1khjTwkhH5yzCY7Mqb+enK8qwpWIlbzsRRrH1LTks+1dXpOk9X4536YPr49IzGkUmCLYKpyCGi5OzaR5X4uLg/90IobOajKrSz8a5YUD+Ly6sDWmHpr5mq7ZJElpWi7371Q/BvNi20giDn3Z1qUfLG9PkYCFbYyq8OG/p3Pw2HIn14G4kXGYdXlFuB800n6cr7RTvpdSknXNs5LhAo7/lqxhcZcFCJqpNOE7yg1Onmz1wWfSIqyhO8NaG/eAjsbwveZ0dEtP1fSNQF4Sw5s96pZ38E2A61SqBI+tL28NE+WSDHTWm12inQ5O64nkHp4WTQTHYPOM9I8QLQHAXoZ X-Microsoft-Exchange-Diagnostics: 1; CY1PR0701MB1725; 6:I2ya0/mGWvuXJ2ZsoFaIs6jm4IOvaqcVxUUQ8V0otDM6dOuGhwZrNtvcj5YhGNgOKiogq2me4mvmMCiKXMOcqzNQhDWLWad08MmcG89mBNkVXDObB7qobnfZn17cUjL9SVzOJ9Bt1KUxAfp+RntLeOWs/fg6Z6X5fyn4gvZGJTC014/NDHFIBwBItgpxauhBUy9PLv4DPzjPVqDUUVjzUof+LKXW8b5o59tTCvhPeejt6us3pqzvOd3EfA6Poqtqdqw+Iwfin/0h1qAYyg53RKwAqsjMxvLrQossqIh+nn9SWsKUXkmCr0AN+x3P1MnDcfFtqJyS23yMOHzxhmgAZb4DB54eZ3i7A2XLH0Y+oRJADGGc+U98O6r5kjXMdGXLxC1i/L5Sth5VdHybUytosARuIFQd/E9niqtxSX3yjRQDPIMqhrqcmsoM5rAh27SqPEzn8Qq2jobt3W+KfTbw4bhmHU5qdnIohdGCdY3D/meBCkA8F6ApO4fwYryguyyHzmu5LHm317d9gmPhNXjZ1Q== X-Microsoft-Exchange-Diagnostics: 1; CY1PR0701MB1725; 5:lRuQ8RLZdlUbS/RrypFnQ0Xd/f/doLGF8DYA3i5P6lQKtNqKXkY5nJthuGlIao5xb2nns6fGnQACQwFRpL8hUDzyuTY5EEyFwPYBYrtB5h3BP3VMvyYRcbVwLySqWonyzlwjLR2EhpI3EAmDvf+mn9rAbMGl0tT0nMzC3/lP8d1+rnU22xvuvkW/Ajy4rAbKVgTWy9aMsv8ffytIGoUjJRCeJIx07+TOW8FsGoH/eYTWpT8R8ESIN+NVBWGDZNdusXeBHpI6CObPNK09fOcoWjlBZbE7u3GdoKwnczNnVE3ss0xyhiChLPoAoX4XfI2J9dB4TVgxSYClddNxiCMr2kPIXUaKGf+WUvCK7jKKBFATj3wSWTWI43+zXKN0gvGCUH+jJDfkT7pLtZoRs2NxADaT1hl6spoYdW9eSZAvmNGTcTSPhG8TCLLq0Oc0RQb61hUNbRbMNQmXkj3OI3b57IeY9Dg8ciMb5yOOdnIRYoHChbNff1R9tk0n4RrspADu; 24:tHqier1gaXNBnG5wvoU1WW5JYVyRMm+XL18fpgZ+2QFXfXmnohP9m6A4Ere9tJ+icq5J5ZpP5ArnNd2ZjeYt8lWD5s1YuCdbNMhK6cmduug= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY1PR0701MB1725; 7:UEGJCzuimEfyn89vohOzt/o4EgDwxLkACMqrWQhMRER5+BXQF8wEdJ9XBuC3BMIc2rsDlh30RnJB01vJAlLxq5M0opwiu4rDaeYrCRLefQkTOOJSdMMqdYWU5MjmEkSwH5ke64q+vC4Dfa9l1v3kgjWyagZq717oM1Me5/AbS1dHA2vX9TEK/aMtLPuFWufkI+xkgO9+1D68EpZa25/HmMqYnoMBI4lWuJ9UQLgWvqRUcswovrS0+UQ5bkG8k4kxDx6vHh6TmyZHj1/q/fMlHkjRQoL+ZOcTKEjPCZoTV8/wx9g9WoqVvN9WHiX8Qgcme5WT8X/J72RYp1vmUEEAcA== X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 May 2017 20:01:03.9724 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR0701MB1725 Subject: [dpdk-dev] [PATCH 15/33] app/testeventdev: order: launch lcores 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" The event producer and master lcore's test end and failure detection logic are common for the queue and all types queue test.Move them as the common function. Signed-off-by: Jerin Jacob --- app/test-eventdev/test_order_common.c | 114 ++++++++++++++++++++++++++++++++++ app/test-eventdev/test_order_common.h | 2 + 2 files changed, 116 insertions(+) diff --git a/app/test-eventdev/test_order_common.c b/app/test-eventdev/test_order_common.c index 935c5a3fd..a7160f3dc 100644 --- a/app/test-eventdev/test_order_common.c +++ b/app/test-eventdev/test_order_common.c @@ -41,6 +41,57 @@ order_test_result(struct evt_test *test, struct evt_options *opt) return t->result; } +static inline int +order_producer(void *arg) +{ + struct prod_data *p = arg; + struct test_order *t = p->t; + struct evt_options *opt = t->opt; + const uint8_t dev_id = p->dev_id; + const uint8_t port = p->port_id; + struct rte_mempool *pool = t->pool; + const uint64_t nb_pkts = t->nb_pkts; + uint32_t *producer_flow_seq = t->producer_flow_seq; + const uint32_t nb_flows = t->nb_flows; + uint64_t count = 0; + struct rte_mbuf *m; + struct rte_event ev; + + if (opt->verbose_level > 1) + printf("%s(): lcore %d dev_id %d port=%d queue=%d\n", + __func__, rte_lcore_id(), dev_id, port, p->queue_id); + + ev.event = 0; + ev.op = RTE_EVENT_OP_NEW; + ev.queue_id = p->queue_id; + ev.sched_type = RTE_SCHED_TYPE_ORDERED; + ev.priority = RTE_EVENT_DEV_PRIORITY_NORMAL; + ev.event_type = RTE_EVENT_TYPE_CPU; + ev.sub_event_type = 0; /* stage 0 */ + + while (count < nb_pkts && t->err == false) { + m = rte_pktmbuf_alloc(pool); + if (m == NULL) + continue; + + const uint32_t flow = (uintptr_t)m % nb_flows; + /* Maintain seq number per flow */ + m->seqn = producer_flow_seq[flow]++; + + ev.flow_id = flow; + ev.mbuf = m; + + while (rte_event_enqueue_burst(dev_id, port, &ev, 1) != 1) { + if (t->err) + break; + rte_pause(); + } + + count++; + } + return 0; +} + int order_opt_check(struct evt_options *opt) { @@ -185,6 +236,69 @@ order_opt_dump(struct evt_options *opt) } int +order_launch_lcores(struct evt_test *test, struct evt_options *opt, + int (*worker)(void *)) +{ + int ret, lcore_id; + struct test_order *t = evt_test_priv(test); + + int wkr_idx = 0; + /* launch workers */ + RTE_LCORE_FOREACH_SLAVE(lcore_id) { + if (!(opt->wlcores[lcore_id])) + continue; + + ret = rte_eal_remote_launch(worker, &t->worker[wkr_idx], + lcore_id); + if (ret) { + evt_err("failed to launch worker %d", lcore_id); + return ret; + } + wkr_idx++; + } + + /* launch producer */ + ret = rte_eal_remote_launch(order_producer, &t->prod, opt->plcore); + if (ret) { + evt_err("failed to launch order_producer %d", opt->plcore); + return ret; + } + + uint64_t cycles = rte_get_timer_cycles(); + int64_t old_remining = -1; + + while (t->err == false) { + + rte_event_schedule(opt->dev_id); + + uint64_t new_cycles = rte_get_timer_cycles(); + int64_t remining = rte_atomic64_read(&t->outstand_pkts); + + if (remining <= 0) { + t->result = EVT_TEST_SUCCESS; + break; + } + + if (new_cycles - cycles > rte_get_timer_hz() * 1) { + printf(CLGRN"\r%"PRId64""CLNRM, remining); + fflush(stdout); + if (old_remining == remining) { + rte_event_dev_dump(opt->dev_id, stdout); + evt_err("No schedules for seconds, deadlock"); + t->err = true; + rte_smp_wmb(); + break; + } + old_remining = remining; + cycles = new_cycles; + } + } + printf("\r"); + + return 0; +} + +int order_event_dev_port_setup(struct evt_test *test, struct evt_options *opt, uint8_t nb_workers, uint8_t nb_queues) { diff --git a/app/test-eventdev/test_order_common.h b/app/test-eventdev/test_order_common.h index 165931860..a760b94bd 100644 --- a/app/test-eventdev/test_order_common.h +++ b/app/test-eventdev/test_order_common.h @@ -94,6 +94,8 @@ int order_test_result(struct evt_test *test, struct evt_options *opt); int order_opt_check(struct evt_options *opt); int order_test_setup(struct evt_test *test, struct evt_options *opt); int order_mempool_setup(struct evt_test *test, struct evt_options *opt); +int order_launch_lcores(struct evt_test *test, struct evt_options *opt, + int (*worker)(void *)); int order_event_dev_port_setup(struct evt_test *test, struct evt_options *opt, uint8_t nb_workers, uint8_t nb_queues); void order_test_destroy(struct evt_test *test, struct evt_options *opt);