From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM02-CY1-obe.outbound.protection.outlook.com (mail-cys01nam02on0087.outbound.protection.outlook.com [104.47.37.87]) by dpdk.org (Postfix) with ESMTP id D3C301B025 for ; Thu, 4 Jan 2018 10:51:48 +0100 (CET) Received: from BN6PR03CA0012.namprd03.prod.outlook.com (10.168.230.150) by DM5SPR00MB92.namprd03.prod.outlook.com (10.168.108.150) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Thu, 4 Jan 2018 09:51:47 +0000 Received: from BL2FFO11FD039.protection.gbl (2a01:111:f400:7c09::153) by BN6PR03CA0012.outlook.office365.com (2603:10b6:404:23::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.386.5 via Frontend Transport; Thu, 4 Jan 2018 09:51:47 +0000 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; NXP1.onmicrosoft.com; dkim=none (message not signed) header.d=none;NXP1.onmicrosoft.com; dmarc=fail action=none header.from=nxp.com; Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.168.50 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.168.50; helo=tx30smr01.am.freescale.net; Received: from tx30smr01.am.freescale.net (192.88.168.50) by BL2FFO11FD039.mail.protection.outlook.com (10.173.161.135) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.345.12 via Frontend Transport; Thu, 4 Jan 2018 09:51:21 +0000 Received: from b27504-OptiPlex-790.ap.freescale.net (b27504-OptiPlex-790.ap.freescale.net [10.232.132.60]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id w049pInO019077; Thu, 4 Jan 2018 02:51:44 -0700 From: Nipun Gupta To: CC: , , Nipun Gupta Date: Thu, 4 Jan 2018 21:36:25 +0530 Message-ID: <1515081985-19351-8-git-send-email-nipun.gupta@nxp.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1515081985-19351-1-git-send-email-nipun.gupta@nxp.com> References: <1515081985-19351-1-git-send-email-nipun.gupta@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131595330813582668; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(336005)(396003)(39860400002)(39380400002)(376002)(346002)(2980300002)(1110001)(1109001)(339900001)(199004)(189003)(6666003)(2950100002)(36756003)(6916009)(2906002)(498600001)(50466002)(81156014)(81166006)(356003)(48376002)(47776003)(50226002)(85426001)(8936002)(86362001)(97736004)(104016004)(54906003)(16586007)(316002)(296002)(68736007)(8656006)(77096006)(106466001)(5660300001)(305945005)(2351001)(8676002)(105606002)(51416003)(53936002)(76176011)(5890100001)(4326008); DIR:OUT; SFP:1101; SCL:1; SRVR:DM5SPR00MB92; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11FD039; 1:iPxwqHmHdttdGdTdFSuAUoVn3aLMq8yAhXhAWgzEpaE6gTxUOsHEgD/x9azErVfGI73a0uks1C/txvNqngTrIjaiw12pZjv/P/2m53VNHRkCnWFzDmXiiuZekKJtNh8Y MIME-Version: 1.0 Content-Type: text/plain X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5c628e10-ab0c-4946-5d4c-08d55358b5b5 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(4534020)(4628075)(201703131517081)(5600026)(4604075)(2017052603307); SRVR:DM5SPR00MB92; X-Microsoft-Exchange-Diagnostics: 1; DM5SPR00MB92; 3:bVW7PRrzrY7NOgD5cD8Pz5ZPVdKvDm9NtWYCTrXyETU0WsHRrrEK7H2sftSSL3k6MrXdMPQVu3nwJh5PfW00Es845fcINOE4746zYKaqFA7POp5ezW9JfmM//lCwsA64XOgyDh176vm7+KBTSZitl/2A3S7ZwFkJ1o3ghjw9TkR53+NRPF9/WCdVNgV4+5ruCLoIztTKExPKperVkW/ms83pHq6E1Pp0dLFN37PhfFQL4Z/7a6zat7iF3e9aNUITUQHIW5sSZOWkRI8fvjtJKbE1mycBKCX9/zU3s1ANAOc/qGAxZQK3P8NrcipIMQlaT6rjSGHj7YG8VIdAXZKHVgJE92muON7LvgCaF61v7rc=; 25:H7rGGqJpupvEfDSA6TgZ88G1xQ3wbHhxMI9434TNm0qjMQTTvPgDcTxVqAeo8w9HPE7+tMYmHP/xpVf7vf1Bh0U3i18SKHJQ4x5k7XusvXZqfYbIRROdnQlu9tl0USA/O5Ir5hr3tIScCFGEqTyDDuUxYTdPdyMYdTsM1xQ0fyyXOdSSsKgCTaIfntCxDUgFewWxd9/YD1Qm4VqD48ENVDhztJPT7besYpJEvzrLwB+SxDsLwvlIJrrvabJ4Sno3zKEz2Oos0GFkeMT05U/gDozZw3yRG7HVNqR823suyTvwpqS9XbaUe0roWiDzLDiiws5VvXE+QjOliaLr+ow5EQ== X-MS-TrafficTypeDiagnostic: DM5SPR00MB92: X-Microsoft-Exchange-Diagnostics: 1; DM5SPR00MB92; 31:tjsE/SQRr3R4Q6gGAJojaudMO3oZvmIIXaRe7rPaW3Um5mDrQp+O1SidowNJN8k6+GcVjRo1XdOKZx7qlhVNg9DPO5jICKO5jZTe7rD2jP56sg9njmXu/mk3iwyuiqAl1p5862lPq783Q6wiMj6YND1rwXSof2r53Yk4rx6BZS+nXGTeBHMoTe+YOSXl35/j58uFtw/tbB6aRFEAvWfI0jlZ1wu9C/9zt7m7na8mSJQ=; 4:/B0yT6cfy+KrvRIBWYZfr59nxbyIKOeBZV6NL6Ud5kwOym5okae0VVskStaAM4OCXevKGx3vayz62bAnKCyH4cN4Tw+kG1GsgwS+lMLY41Jhb7a4ZI6hat7BrWlSpNPqhxhM07/5bKePqUPy/04hD2rZHNY2Z7SEvcubBcryzChBN++g9nXfdR18Tp9pQN5UaEVxYaAHykj8VqzWbJef4PdPL307Xxn6lR4rFuN4sn24XY0L7jxbI1zri0ZrdxYExsVCo5C8TUDdvGl4RZTljVoKWLcy8LGwji9f8CGEZKtHEP3uzCzSHfjAdVQ8KUdddVF8pjhX7FJrJWRVu6JFz7zDAcbgnexHngJvW/6Up/E= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197)(275809806118684); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6095135)(2401047)(5005006)(8121501046)(10201501046)(3002001)(3231023)(944510075)(944921075)(946801075)(946901075)(93006095)(93001095)(6055026)(6096035)(20161123565025)(20161123559100)(20161123556025)(201703131430075)(201703131520075)(201703131448075)(201703131433075)(201703161259150)(201703151042153)(20161123561025)(20161123563025)(201708071742011); SRVR:DM5SPR00MB92; BCL:0; PCL:0; RULEID:(100000803101)(100110400095)(400006); SRVR:DM5SPR00MB92; X-Forefront-PRVS: 054231DC40 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM5SPR00MB92; 23:g8MR/+V0uMg+uYO9W4YPlR3Mife30DZ5bk29wI3las?= =?us-ascii?Q?N85yG1JyiMcnbl3hdSnrhK9oVeW1eW3Ase1nDiraLkniOt+CmaELOMVxHpGG?= =?us-ascii?Q?9LbMH4vf7NBYPgdRRipDiveap7XN+mq1mi7fRo+AHLBnYmqYL2nqv93NmvBl?= =?us-ascii?Q?SZUDsUpPeO8jQixgGNYZTrE+adZiH9N6CAwWcpceDZeKXjf2juBXnePP3Vbx?= =?us-ascii?Q?ZHOAvh+AKMiMLl5ngVvolQJa5LQkEVU7a4+zR+QwaRkxK6b/vBqVdmTEaG3w?= =?us-ascii?Q?5q2gjKupU+x7mK7qWQ3DzgHmR0iRFtoySyL0J5FwwuAqzzMCc5/Bpno/5UEU?= =?us-ascii?Q?5YI070bbPOzatoFeajnWMwcmceA0S8PDjXcloouRF8SwX6MHaieNHh5VqV+U?= =?us-ascii?Q?w0GbRFC5MLj38XIglJG9Y0XJCn372kdbttOGtaQvIB0s8vLhCmUyEhXu1qNX?= =?us-ascii?Q?X/NSWvAyeW6q5j+BsC8cWf4kbE26spnc15zkDdky4vHmwpwi5mokuvzwKHjZ?= =?us-ascii?Q?eYcU67bhxhRg7xcTLftOlSjt4HvJuMFbEQCr1G72/I6AKK7QKBRxM3PofwSt?= =?us-ascii?Q?6fjbPezyGPY44mNMAW7VtP9rharnHeIgUoWnNAR/UiFl0v/NIIiDH2vMYhnU?= =?us-ascii?Q?PaDH9osEiEvnkGIIxiVibrigbvGJvURKQy4qdP2IvQIn8nwAx2B7IbhQHECA?= =?us-ascii?Q?VExBpbmexTLjevTYS0Mth/wSpXejw5+gsJAABxBEg0ylVa/w0y546qZH4vEE?= =?us-ascii?Q?JTezh+kL1my/hypTqcCK1HD7UOYXl9u9qv31+CxLfgIuvM6Jig58je4TOedr?= =?us-ascii?Q?+e1KQbMQB0UQKv+0V36cYl3AxsvoGKh/SvOcNDzGRoHAFpuBsIBRjHn3znV/?= =?us-ascii?Q?qFxvEd73YOfqpf1Uk3K/pZm/DWlFH9ECO+KBG/vw4DUJekycC4Wq0eUTpiL9?= =?us-ascii?Q?oZSyJD/p+lsoDmDzQ8a/ly60nY44x5BW/rHr/At8Fa+DVrmOXxt64okQtNv6?= =?us-ascii?Q?q6fHoSvOdIyxitcKG4bRXC76GF5+5JpYawMqqh2mFR1VAUoLHvF9bsTD+uid?= =?us-ascii?Q?TXnhOtn579l4cio3CNtUPkSsHS5wMTRVos5/NjI6mfFvTFF1YagCj2xuLJ9Z?= =?us-ascii?Q?GzsNeOhsg=3D?= X-Microsoft-Exchange-Diagnostics: 1; DM5SPR00MB92; 6:34UBEv26S92H9KH2BQujqY9NtwwU+yEajN721KAQ3IPEVgNQKhOira43H7bDY/kUeOC+9ZYi3pyn1EUd6sabDJBp/KA2BZz4zWvlXeOmbW7z8EcRILoWufa1TbIRuNMjV4CBe8d3Fw7nj1/YTx+DRiluiokCbKxfnzyliKnjBUnWKb4e6Cwa9d/qM5Ljg/Y6aupjUbsFgO3loenmWU/rijdX/344+3pZd0WSoKQ5+CYO/3JSD0HPotMcrqA/df//eBgB33vvLBslhhuXtwoqJidwybkP3dlWcvb8IEgrDhPULGgpfEMMqv6kKogUY0qIhKGZVswat6A3EX97ysD4Jz4uMzGoePmFmKoZGehxm4c=; 5:FvX4Oehl7epBDp0FoY9ugxkV6+4rqp0wGTc6LVtgfJP+hgDXLszzZoOnfUEqTXp/Oa0il/+l3NqNI50i09KNWXOsN0MJ+vCVoTgK5gVZqYy67kYNMFSJKbDBi5Rm1noFgih+9dL2fKLb4kNOr1D9C/Iq6Hsucy4naGaXLB5Vu6A=; 24:9Vv1XxuEnfEKBNeig1ZyiHMcwK366M7UUJWE3j3Dpqj04OLUHnp/GNYPZl1/l5gxmiLuJ+nS7HaitiO6Y1gxpDK+Ongg3lNp2+qXs5iDZo8=; 7:7LO57qO4CKosmDLYBCU5FUFowDWg9mCagLsmOmOwF7xJk7ouYLnWmxRKSp3CkcSqOzkWW2giY1Ngr7P8RXXicUGOrZ2bFbupiTRlN01EO3Kd/sUrV3N5QWffVFgN4dmQTfjP2kBZ/KSjWGFbE+BAMcZLpwO4+OsuMoHp2NrCXYRYblSAd14t8cTxDqRlvKcQRdhSHZzySpMyMpThtQAbsmRHrDlgozbRJCWaeywt5Asd1E8oZKdaU5cOejKcOpBc SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Jan 2018 09:51:21.1710 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5c628e10-ab0c-4946-5d4c-08d55358b5b5 X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.168.50]; Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5SPR00MB92 Subject: [dpdk-dev] [PATCH 6/6] net/dpaa2: support atomic queues 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: Thu, 04 Jan 2018 09:51:49 -0000 Signed-off-by: Nipun Gupta --- drivers/net/dpaa2/Makefile | 1 + drivers/net/dpaa2/dpaa2_ethdev.c | 7 +++++++ drivers/net/dpaa2/dpaa2_ethdev.h | 5 +++++ drivers/net/dpaa2/dpaa2_rxtx.c | 43 +++++++++++++++++++++++++++++++++++++--- 4 files changed, 53 insertions(+), 3 deletions(-) diff --git a/drivers/net/dpaa2/Makefile b/drivers/net/dpaa2/Makefile index ee9b2cc..fdff976 100644 --- a/drivers/net/dpaa2/Makefile +++ b/drivers/net/dpaa2/Makefile @@ -51,6 +51,7 @@ CFLAGS += -I$(RTE_SDK)/drivers/bus/fslmc/qbman/include CFLAGS += -I$(RTE_SDK)/drivers/bus/fslmc/mc CFLAGS += -I$(RTE_SDK)/drivers/bus/fslmc/portal CFLAGS += -I$(RTE_SDK)/drivers/mempool/dpaa2 +CFLAGS += -I$(RTE_SDK)/drivers/event/dpaa2 CFLAGS += -I$(RTE_SDK)/lib/librte_eal/linuxapp/eal # versioning export map diff --git a/drivers/net/dpaa2/dpaa2_ethdev.c b/drivers/net/dpaa2/dpaa2_ethdev.c index 894c60e..858e844 100644 --- a/drivers/net/dpaa2/dpaa2_ethdev.c +++ b/drivers/net/dpaa2/dpaa2_ethdev.c @@ -1696,6 +1696,8 @@ int dpaa2_eth_eventq_attach(const struct rte_eth_dev *dev, if (queue_conf->ev.sched_type == RTE_SCHED_TYPE_PARALLEL) dpaa2_ethq->cb = dpaa2_dev_process_parallel_event; + else if (queue_conf->ev.sched_type == RTE_SCHED_TYPE_ATOMIC) + dpaa2_ethq->cb = dpaa2_dev_process_atomic_event; else return -EINVAL; @@ -1705,6 +1707,11 @@ int dpaa2_eth_eventq_attach(const struct rte_eth_dev *dev, cfg.destination.id = dpcon_id; cfg.destination.priority = queue_conf->ev.priority; + if (queue_conf->ev.sched_type == RTE_SCHED_TYPE_ATOMIC) { + options |= DPNI_QUEUE_OPT_HOLD_ACTIVE; + cfg.destination.hold_active = 1; + } + options |= DPNI_QUEUE_OPT_USER_CTX; cfg.user_context = (uint64_t)(dpaa2_ethq); diff --git a/drivers/net/dpaa2/dpaa2_ethdev.h b/drivers/net/dpaa2/dpaa2_ethdev.h index 9a9496f..6546f22 100644 --- a/drivers/net/dpaa2/dpaa2_ethdev.h +++ b/drivers/net/dpaa2/dpaa2_ethdev.h @@ -144,6 +144,11 @@ void dpaa2_dev_process_parallel_event(struct qbman_swp *swp, const struct qbman_result *dq, struct dpaa2_queue *rxq, struct rte_event *ev); +void dpaa2_dev_process_atomic_event(struct qbman_swp *swp, + const struct qbman_fd *fd, + const struct qbman_result *dq, + struct dpaa2_queue *rxq, + struct rte_event *ev); uint16_t dpaa2_dev_tx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts); uint16_t dummy_dev_tx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts); #endif /* _DPAA2_ETHDEV_H */ diff --git a/drivers/net/dpaa2/dpaa2_rxtx.c b/drivers/net/dpaa2/dpaa2_rxtx.c index 6c4fddb..7ea262b 100644 --- a/drivers/net/dpaa2/dpaa2_rxtx.c +++ b/drivers/net/dpaa2/dpaa2_rxtx.c @@ -41,11 +41,13 @@ #include #include +#include #include #include #include #include #include +#include #include "dpaa2_ethdev.h" #include "base/dpaa2_hw_dpni_annot.h" @@ -667,6 +669,30 @@ void __attribute__((hot)) qbman_swp_dqrr_consume(swp, dq); } +void dpaa2_dev_process_atomic_event(struct qbman_swp *swp __attribute__((unused)), + const struct qbman_fd *fd, + const struct qbman_result *dq, + struct dpaa2_queue *rxq, + struct rte_event *ev) +{ + uint8_t dqrr_index = qbman_get_dqrr_idx(dq); + + ev->mbuf = eth_fd_to_mbuf(fd); + + ev->flow_id = rxq->ev.flow_id; + ev->sub_event_type = rxq->ev.sub_event_type; + ev->event_type = RTE_EVENT_TYPE_ETHDEV; + ev->op = RTE_EVENT_OP_NEW; + ev->sched_type = rxq->ev.sched_type; + ev->queue_id = rxq->ev.queue_id; + ev->priority = rxq->ev.priority; + + ev->mbuf->seqn = dqrr_index + 1; + DPAA2_PER_LCORE_DQRR_SIZE++; + DPAA2_PER_LCORE_DQRR_HELD |= 1 << dqrr_index; + DPAA2_PER_LCORE_DQRR_MBUF(dqrr_index) = ev->mbuf; +} + /* * Callback to handle sending packets through WRIOP based interface */ @@ -687,6 +713,7 @@ void __attribute__((hot)) uint16_t bpid; struct rte_eth_dev *dev = dpaa2_q->dev; struct dpaa2_dev_priv *priv = dev->data->dev_private; + uint32_t flags[MAX_TX_RING_SLOTS] = {0}; if (unlikely(!DPAA2_PER_LCORE_DPIO)) { ret = dpaa2_affine_qbman_swp(); @@ -705,7 +732,6 @@ void __attribute__((hot)) qbman_eq_desc_set_response(&eqdesc, 0, 0); qbman_eq_desc_set_qd(&eqdesc, priv->qdid, dpaa2_q->flow_id, dpaa2_q->tc_index); - /*Clear the unused FD fields before sending*/ while (nb_pkts) { /*Check if the queue is congested*/ @@ -720,6 +746,16 @@ void __attribute__((hot)) frames_to_send = (nb_pkts >> 3) ? MAX_TX_RING_SLOTS : nb_pkts; for (loop = 0; loop < frames_to_send; loop++) { + if ((*bufs)->seqn) { + uint8_t dqrr_index = (*bufs)->seqn - 1; + + flags[loop] = QBMAN_ENQUEUE_FLAG_DCA | + dqrr_index; + DPAA2_PER_LCORE_DQRR_SIZE--; + DPAA2_PER_LCORE_DQRR_HELD &= ~(1 << dqrr_index); + (*bufs)->seqn = DPAA2_INVALID_MBUF_SEQN; + } + fd_arr[loop].simple.frc = 0; DPAA2_RESET_FD_CTRL((&fd_arr[loop])); DPAA2_SET_FD_FLC((&fd_arr[loop]), NULL); @@ -787,7 +823,7 @@ void __attribute__((hot)) loop = 0; while (loop < frames_to_send) { loop += qbman_swp_enqueue_multiple(swp, &eqdesc, - &fd_arr[loop], NULL, + &fd_arr[loop], &flags[loop], frames_to_send - loop); } @@ -804,7 +840,8 @@ void __attribute__((hot)) while (i < loop) { i += qbman_swp_enqueue_multiple(swp, &eqdesc, - &fd_arr[i], NULL, + &fd_arr[i], + &flags[loop], loop - i); } num_tx += loop; -- 1.9.1