From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM03-DM3-obe.outbound.protection.outlook.com (mail-dm3nam03on0080.outbound.protection.outlook.com [104.47.41.80]) by dpdk.org (Postfix) with ESMTP id F129B1B2F2 for ; Tue, 16 Jan 2018 18:48:37 +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=HvX9QJLnG/GqOck0i8KTrrNiJEqYA8O5ig67YxfGHsg=; b=htNaO7zK88g3FAslha6YxdopN8XddZv5/HsNN7UiVhiggv13Y8BmlgOnhwo9Lj65jxLDpvaWT/0WveQJrGX307o8R/kQG+HdbZFfvoTvaEK2VM3KM9NbIeBvcceHh7QuuWg6BzVz/HotmnEXaOJSH5+aQheIY9zL11yJBT377o4= 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:48:17 +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: Tue, 16 Jan 2018 23:16:04 +0530 Message-Id: <20180116174607.10821-12-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: 9cf95367-5c3b-4914-1811-08d55d0955b6 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:PyhjcGYdf1vRQ8eERblTf3Mkk9i0SHxbFX60o6gkVlXnDKPSIFcgzf1RrMrn+8ljLKRZ99VjLPPU2gteksnLekQ6zVh8xlFghotBp0NB1zIsdKVIDUb3EUSG9je93Sw6jxQBFVAppbf8L6DQ5ad0wTo98RPxjyUmPaj296vQawQneCcWtC4s1uqLzSi6ABnyYc7CwxCEWjMfq+XUWmaXCnv8UvGVyZIhB7loLrJLn8sNHdlPF5HIJnwihv3/tmL4; 25:4wNqdMZUrIlOczbI3uyMIm16gltxkIXqxj+qDc8nuoRalETKj4Rk63wtTF4JWeA4D4ZTPN7Rw6qU0GX2fIT2YUu1w8GM1uj9DLEkGtD3/9L2XikH/MgaFhShieZgfwWyonu8JWOs9idEhOHXCulgbqtY9GMt7vJRYu1CIQe+DXMK++8x3fCkctga4ROL3mX9inL1CJg+js7gPsY34kOZe1Q2N8mg/GbjCKiUQkaxOVHvL4FVgncIR3ZK+zkqcG7arenOrDZkNjO4BsjZnCLf0dlJNMSQId3NRW28MlBC6IIoe8nECvKQpkvKUpHvQJCaMmC59QNA7fgxqHvWfZR4ww==; 31:ZJyEjWpQyrvi2aoDVm6TtY4VyodmabpGaUbxzhbARHF6JzqRBsvyDGn7tpwm8COjk50h7411eLF3KwXF9cb2ngn1MjHgFQDan7E/Jf3HnZ9yxUXS2gjVba0QyynH8N01v0M+89fHfKTPBGdfYC4jnYVvctU59hH5wlMSDTlPTnX/DA3VHxdjz9B6Ayb36BloLP/3zZpyLUb6+wYSNcudJNmJdQCIF+KEj5dlsImZiv4= X-MS-TrafficTypeDiagnostic: CY4PR07MB3464: X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB3464; 20:3aM8SxZOZ/OG0UZoHxgj9ngH6QBJoorkQ7UTNrPNtIM8TAYIWiw9daL4PMrOrDAZ8GDNbMBO/WyDHEoVHl2HXKNv/tXfS6e2KnReJM86W8VqjT4B2w6W1tdeL7OBT7HL6tqND9O6G8aOA+7QhYI2EyAFiRqgUMKl++mTSFmmM6or9nGsMSfDupFUZEM1IkNAzA5Ap6gN98Nxzcz2NgC0CucqbdzsAuXJp8y8p5hGHAImlJEkGFE2pmGiW1yNGEfSkpXayNe9H6yH3BXp93yZfQWeZOpyMSTTKk15E5VsLl/XJ7644JCW74IE7M4ht0TxkJN1LlnbHyBy7ahwwfow1Ohoyrq6GDtUBtsVl5Pd1A5EqAsn8s3820zVp8LFYKiIJbq4GJumaPrK7mNdv7Q4VE7EBAi7tjHH/wnhTTiFLVGYCCchXVYk0b79wTwgnYbtsr1h7KPwxCiHlwMxQ+EdZ1XtX2/QPVZKyOi32jXDmY4U3aPKi3y1DFXuadkgLnwzH1dyI+46MDz/hPy3ynUWVjzBSr6mWNfj05wM6lSs4JfOZdVNImMveClLumvkGY0t4CPBCbenQPnFpFGFhPhqDaqd2ooPGO+sqUXNG3W2ZEg=; 4:1CIWtQqb5ueKNqKF9mzAVypyfA25LT6CY5PXWhQWieMnvJDoDY1+bFFWBtfqdXlTgv5A9KOSPnD/G0d+OYPq9rU2zhklQ3mlj+RPJ4ooaT0escIJygwxJ89Vqb+m0GHl/ZOI5sBJt3xtQbWUlrswau1pO+J53sb2Zi67PdILAcKnfgqdfSlTswWhsDwS2DPWsn9R2/iwGWUOP9HOVcOP4rI72sB/XuJ7vR1N3fNEG1JOs7Bxo2yxJR/7tVvDQXj0Kfk7w4tB3MAex2GF2UqwvO6T3KbPdNCDPk/DNNUHA16rRsj1v3Rd7olN2SJYVocU X-Microsoft-Antispam-PRVS: 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)(50466002)(6486002)(5660300001)(3846002)(7736002)(50226002)(16526018)(68736007)(106356001)(26005)(76176011)(53936002)(6512007)(59450400001)(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:sCcrmu53ZNoMpNTBuEvnd18gXX8rIoJrnaha3IuOk?= =?us-ascii?Q?us3AGMEMchubzMP5TADKTgVMywFVk1Y+qKBgb1wXqcjDj5/XWRGLLCeZY1jU?= =?us-ascii?Q?kQp5JyA0WpIybZYlBjbZzLtmC8rwXt7nffSrRFr4MoU1tQqAVEc+OZGeidV/?= =?us-ascii?Q?DHccuxGZA5+d51oQ8tB7CII5guLCeGsYKOUJyVAHM3kseesjknpG7NMJf6/n?= =?us-ascii?Q?Fave1OUFo5+dZCkIm2EHBXvCqdyNKmftTxD/c+4toJuuvp+LmZpvYFQLZrkQ?= =?us-ascii?Q?Mun/3kjNZ3k3wa1b3zEwheS/4S71X5OoPXJmB9KyMmqgTgF1bFc7R9j58QyX?= =?us-ascii?Q?LdZ5BqRz1wGckNH0VMsBwEdFMWdzNY6gIo6qJ21cUcJSleYgEvptyhyiYOb/?= =?us-ascii?Q?MNmSht9Wbs1KQRYVN/EL9462Vg1m7bqmPU6FO+6tRLG0+VT6pnPBl3HXs1W9?= =?us-ascii?Q?oo10m5sGIvJsejLOzC1uJihXipdixAIw6x/3J5kHA2xrSpAcRT5x7esicnL6?= =?us-ascii?Q?UQS9hDUn4T1A2qxjsga7U+ioRtH2AQMt5tfLKcrQ2UzEW/X+wUKjkQ1L3ruU?= =?us-ascii?Q?VTRA1ErAcugDkodib20dY1kv4DVS1JvtgjcxJPCzVrPGFT7rLE90h9EM4+Dr?= =?us-ascii?Q?+pDXW7CMBC+xEF1zmQzegJphoZqtgxJqWIp88+8V/61cVDipx6U86Bg0hJcE?= =?us-ascii?Q?OgoNPLc8EPHgZhO+LWJDskXat9Cbtsl2Iwqbcb9rhycOTmY8j/6W/JQPBiyN?= =?us-ascii?Q?W9vR7rfqxT3sSId4yv74eRT8/vuQBXAByMqQJSbnbQbL6nF1cVcgaSj/YpLH?= =?us-ascii?Q?aOg5TyN2OTuqLt0gbIz8fdivS2rd87X6RDf1fW8kyeBpDGu95Xs/kP3TAQ6u?= =?us-ascii?Q?MMV5+y2OnfcCWJx5OSdAtt7Ld+l/XK6rGeh3bfBJSDJ/r0wQlllGvZEzGHZy?= =?us-ascii?Q?e0bVCDnjikL8+FV3QicmUTejzqDb3LowZ+aeob88RC4Ht7ZdrbCeX6llUr+8?= =?us-ascii?Q?h3RLQAbHCAvO4O72ewzS8U770T9+Ilco9+BSSRwDXkdtoL2uPoVbT6RrndGQ?= =?us-ascii?Q?MrKyu9CyHwm+xxpu3tzCdsHaByixSncM1t+qyBKW8sKhpMl3MsZ/iRJrQnuY?= =?us-ascii?Q?GNFsoZnZ4my/F+HVM3/rGYZUbai6Y8a5qpql3UGBqCu0+Tf1VNgMFprLJ60J?= =?us-ascii?Q?UjtXFH8WClT9eHExEW0uqld4UuFCxcHKt8uJaPS51SxNxhWA5q7iCZMJQfBJ?= =?us-ascii?Q?p86CTbkPZvol/nhuxo=3D?= X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB3464; 6:CPLkIY6ycQ9kN5svUhpKChnuLvuQ/5AAy9scGGz+LuMcAUvjMR7yOqpqeh0Ll7/uBdMZO77k6MLvSpA0/m3Kxi+QjyFV/aJKgp6P8y+MbW3brdfBz/8haG0KZhhkC9JyumBRN1e96PPgFfaqX7wS1/Uxk/C+nxGUneJRn47WzcPPlUtGEsZCmyc5reE/cLnfzDTLrzVp0v9QLY6KNwKYMBtGcaampEZj4JyUqhM+haQEhSwvZ3wnerwvHLeib+08q3KfVeBdxixEbk7Z7x/GNIODRHT70HOKJ5v+uIS/TViIj/nQJOgU7Yl3NjKFDDwOC/Qsop5pSm6PvpqWrw8QkMQVOOjhS3PxM/aE4hiDtHc=; 5:kvHwziHwe+XAazZeBs4Jv585+65qjupmvmvwAtuNEvMTvpnglHMd/H9oR/kM+8Di+KKHC0zxTSAM+Fs32mdAV4i7p4s3cTbXCn0jw8SzIZEHaxdH8MPfQiFzuH/snmNFurXOYezRryof9MZx+sPqHbFE/ZVa0nF4vJaVPsCZp/w=; 24:sDE/zgi6pElJil9Ib2ah38PNPJhix3dHRx7iO5MYAgzNXEuHx40Y9Ex07zJ7jEzIfume+Fwa28Xyo75FIw6IYNRAwUyCsd/EeGYv/Gzkr/s=; 7:JLNdhfdm52ttlHpLtHtf6QfXZ/aGm7M6SPi8BadnelE61hmBDvin+TvAiEPwZl6Jqt+SpZG1LL5EhdnvYyMFIkkilESsMc07HeDvtdurT1/NQ8J1onvtHYP3D+WXrHbalupJBjVV2BYr3bHGdM9Yw40Y+ZapyK2Y0OAr8+HT05vM7ddIMPJvu2Y/nf46nejkLd2vTzQl+DatQ06Ou1WA8qsXwTHRUuaBzF58pYFNCyaWq2tfr+D5QiYSdcAYXQC/ SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jan 2018 17:48:17.4066 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9cf95367-5c3b-4914-1811-08d55d0955b6 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 12/15] app/eventdev: add pipeline atq worker functions 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: , X-List-Received-Date: Tue, 16 Jan 2018 17:48:38 -0000 Signed-off-by: Pavan Nikhilesh Acked-by: Harry van Haaren --- app/test-eventdev/test_pipeline_atq.c | 280 +++++++++++++++++++++++++++++++++- 1 file changed, 279 insertions(+), 1 deletion(-) diff --git a/app/test-eventdev/test_pipeline_atq.c b/app/test-eventdev/test_pipeline_atq.c index 6c9ac6119..36abbddda 100644 --- a/app/test-eventdev/test_pipeline_atq.c +++ b/app/test-eventdev/test_pipeline_atq.c @@ -15,10 +15,288 @@ pipeline_atq_nb_event_queues(struct evt_options *opt) return rte_eth_dev_count(); } +static int +pipeline_atq_worker_single_stage_tx(void *arg) +{ + PIPELINE_WROKER_SINGLE_STAGE_INIT; + + while (t->done == false) { + uint16_t event = rte_event_dequeue_burst(dev, port, &ev, 1, 0); + + if (!event) { + rte_pause(); + continue; + } + + if (ev.sched_type == RTE_SCHED_TYPE_ATOMIC) { + pipeline_tx_pkt(ev.mbuf); + w->processed_pkts++; + continue; + } + pipeline_fwd_event(&ev, RTE_SCHED_TYPE_ATOMIC); + pipeline_event_enqueue(dev, port, &ev); + } + + return 0; +} + +static int +pipeline_atq_worker_single_stage_fwd(void *arg) +{ + PIPELINE_WROKER_SINGLE_STAGE_INIT; + const uint8_t tx_queue = t->tx_service.queue_id; + + while (t->done == false) { + uint16_t event = rte_event_dequeue_burst(dev, port, &ev, 1, 0); + + if (!event) { + rte_pause(); + continue; + } + + w->processed_pkts++; + ev.queue_id = tx_queue; + pipeline_fwd_event(&ev, RTE_SCHED_TYPE_ATOMIC); + pipeline_event_enqueue(dev, port, &ev); + } + + return 0; +} + +static int +pipeline_atq_worker_single_stage_burst_tx(void *arg) +{ + PIPELINE_WROKER_SINGLE_STAGE_BURST_INIT; + + while (t->done == false) { + uint16_t nb_rx = rte_event_dequeue_burst(dev, port, ev, + BURST_SIZE, 0); + + if (!nb_rx) { + rte_pause(); + continue; + } + + for (i = 0; i < nb_rx; i++) { + rte_prefetch0(ev[i + 1].mbuf); + if (ev[i].sched_type == RTE_SCHED_TYPE_ATOMIC) { + + pipeline_tx_pkt(ev[i].mbuf); + ev[i].op = RTE_EVENT_OP_RELEASE; + w->processed_pkts++; + } else + pipeline_fwd_event(&ev[i], + RTE_SCHED_TYPE_ATOMIC); + } + + pipeline_event_enqueue_burst(dev, port, ev, nb_rx); + } + + return 0; +} + +static int +pipeline_atq_worker_single_stage_burst_fwd(void *arg) +{ + PIPELINE_WROKER_SINGLE_STAGE_BURST_INIT; + const uint8_t tx_queue = t->tx_service.queue_id; + + while (t->done == false) { + uint16_t nb_rx = rte_event_dequeue_burst(dev, port, ev, + BURST_SIZE, 0); + + if (!nb_rx) { + rte_pause(); + continue; + } + + for (i = 0; i < nb_rx; i++) { + rte_prefetch0(ev[i + 1].mbuf); + ev[i].queue_id = tx_queue; + pipeline_fwd_event(&ev[i], RTE_SCHED_TYPE_ATOMIC); + w->processed_pkts++; + } + + pipeline_event_enqueue_burst(dev, port, ev, nb_rx); + } + + return 0; +} + +static int +pipeline_atq_worker_multi_stage_tx(void *arg) +{ + PIPELINE_WROKER_MULTI_STAGE_INIT; + const uint8_t nb_stages = t->opt->nb_stages; + + + while (t->done == false) { + uint16_t event = rte_event_dequeue_burst(dev, port, &ev, 1, 0); + + if (!event) { + rte_pause(); + continue; + } + + cq_id = ev.sub_event_type % nb_stages; + + if (cq_id == last_queue) { + if (ev.sched_type == RTE_SCHED_TYPE_ATOMIC) { + + pipeline_tx_pkt(ev.mbuf); + w->processed_pkts++; + continue; + } + pipeline_fwd_event(&ev, RTE_SCHED_TYPE_ATOMIC); + } else { + ev.sub_event_type++; + pipeline_fwd_event(&ev, sched_type_list[cq_id]); + } + + pipeline_event_enqueue(dev, port, &ev); + } + return 0; +} + +static int +pipeline_atq_worker_multi_stage_fwd(void *arg) +{ + PIPELINE_WROKER_MULTI_STAGE_INIT; + const uint8_t nb_stages = t->opt->nb_stages; + const uint8_t tx_queue = t->tx_service.queue_id; + + while (t->done == false) { + uint16_t event = rte_event_dequeue_burst(dev, port, &ev, 1, 0); + + if (!event) { + rte_pause(); + continue; + } + + cq_id = ev.sub_event_type % nb_stages; + + if (cq_id == last_queue) { + w->processed_pkts++; + ev.queue_id = tx_queue; + pipeline_fwd_event(&ev, RTE_SCHED_TYPE_ATOMIC); + } else { + ev.sub_event_type++; + pipeline_fwd_event(&ev, sched_type_list[cq_id]); + } + + pipeline_event_enqueue(dev, port, &ev); + } + return 0; +} + +static int +pipeline_atq_worker_multi_stage_burst_tx(void *arg) +{ + PIPELINE_WROKER_MULTI_STAGE_BURST_INIT; + const uint8_t nb_stages = t->opt->nb_stages; + + while (t->done == false) { + uint16_t nb_rx = rte_event_dequeue_burst(dev, port, ev, + BURST_SIZE, 0); + + if (!nb_rx) { + rte_pause(); + continue; + } + + for (i = 0; i < nb_rx; i++) { + rte_prefetch0(ev[i + 1].mbuf); + cq_id = ev[i].sub_event_type % nb_stages; + + if (cq_id == last_queue) { + if (ev[i].sched_type == RTE_SCHED_TYPE_ATOMIC) { + + pipeline_tx_pkt(ev[i].mbuf); + ev[i].op = RTE_EVENT_OP_RELEASE; + w->processed_pkts++; + continue; + } + + pipeline_fwd_event(&ev[i], + RTE_SCHED_TYPE_ATOMIC); + } else { + ev[i].sub_event_type++; + pipeline_fwd_event(&ev[i], + sched_type_list[cq_id]); + } + } + + pipeline_event_enqueue_burst(dev, port, ev, nb_rx); + } + return 0; +} + +static int +pipeline_atq_worker_multi_stage_burst_fwd(void *arg) +{ + PIPELINE_WROKER_MULTI_STAGE_BURST_INIT; + const uint8_t nb_stages = t->opt->nb_stages; + const uint8_t tx_queue = t->tx_service.queue_id; + + while (t->done == false) { + uint16_t nb_rx = rte_event_dequeue_burst(dev, port, ev, + BURST_SIZE, 0); + + if (!nb_rx) { + rte_pause(); + continue; + } + + for (i = 0; i < nb_rx; i++) { + rte_prefetch0(ev[i + 1].mbuf); + cq_id = ev[i].sub_event_type % nb_stages; + + if (cq_id == last_queue) { + w->processed_pkts++; + ev[i].queue_id = tx_queue; + pipeline_fwd_event(&ev[i], + RTE_SCHED_TYPE_ATOMIC); + } else { + ev[i].sub_event_type++; + pipeline_fwd_event(&ev[i], + sched_type_list[cq_id]); + } + } + + pipeline_event_enqueue_burst(dev, port, ev, nb_rx); + } + return 0; +} + static int worker_wrapper(void *arg) { - RTE_SET_USED(arg); + struct worker_data *w = arg; + struct evt_options *opt = w->t->opt; + const bool burst = evt_has_burst_mode(w->dev_id); + const bool mt_safe = !w->t->mt_unsafe; + const uint8_t nb_stages = opt->nb_stages; + RTE_SET_USED(opt); + + if (nb_stages == 1) { + if (!burst && mt_safe) + return pipeline_atq_worker_single_stage_tx(arg); + else if (!burst && !mt_safe) + return pipeline_atq_worker_single_stage_fwd(arg); + else if (burst && mt_safe) + return pipeline_atq_worker_single_stage_burst_tx(arg); + else if (burst && !mt_safe) + return pipeline_atq_worker_single_stage_burst_fwd(arg); + } else { + if (!burst && mt_safe) + return pipeline_atq_worker_multi_stage_tx(arg); + else if (!burst && !mt_safe) + return pipeline_atq_worker_multi_stage_fwd(arg); + if (burst && mt_safe) + return pipeline_atq_worker_multi_stage_burst_tx(arg); + else if (burst && !mt_safe) + return pipeline_atq_worker_multi_stage_burst_fwd(arg); + } rte_panic("invalid worker\n"); } -- 2.14.1