From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM03-DM3-obe.outbound.protection.outlook.com (mail-dm3nam03on0040.outbound.protection.outlook.com [104.47.41.40]) by dpdk.org (Postfix) with ESMTP id 29CC61B01A for ; Wed, 13 Dec 2017 15:00:48 +0100 (CET) Received: from CY4PR03CA0105.namprd03.prod.outlook.com (10.171.242.174) by CY4PR03MB2693.namprd03.prod.outlook.com (10.173.43.136) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.302.9; Wed, 13 Dec 2017 14:00:47 +0000 Received: from BN1BFFO11FD024.protection.gbl (2a01:111:f400:7c10::1:193) by CY4PR03CA0105.outlook.office365.com (2603:10b6:910:4d::46) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.302.9 via Frontend Transport; Wed, 13 Dec 2017 14:00:46 +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 BN1BFFO11FD024.mail.protection.outlook.com (10.58.144.87) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.282.5 via Frontend Transport; Wed, 13 Dec 2017 14:00:39 +0000 Received: from netperf2.ap.freescale.net ([10.232.133.164]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id vBDE0WHl023690; Wed, 13 Dec 2017 07:00:43 -0700 From: Akhil Goyal To: CC: , , , Akhil Goyal , Nipun Gupta Date: Wed, 13 Dec 2017 19:26:58 +0530 Message-ID: <20171213135659.32648-5-akhil.goyal@nxp.com> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20171213135659.32648-1-akhil.goyal@nxp.com> References: <20171213135659.32648-1-akhil.goyal@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131576472398204177; (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)(39380400002)(346002)(39860400002)(376002)(2980300002)(1110001)(1109001)(339900001)(189003)(199004)(8656006)(54906003)(76176011)(77096006)(316002)(86362001)(85426001)(50466002)(47776003)(81166006)(8676002)(68736007)(305945005)(81156014)(106466001)(36756003)(48376002)(296002)(16586007)(498600001)(50226002)(97736004)(2906002)(356003)(4326008)(1076002)(6916009)(6666003)(53936002)(104016004)(2950100002)(5660300001)(59450400001)(51416003)(2351001)(8936002)(105606002); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR03MB2693; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1BFFO11FD024; 1:Iq/BUN9IGRoNkROXG8j+Op7uw1kVSzvrHpa2O+ER8NUJhTM9B+ArtcTAMgUOS+Uu52shK16YH9fnV3GqukcRxvzJx0FbAdVzA5PKExTcy5ISmKyTWvYX6gx2HZLH2i3e MIME-Version: 1.0 Content-Type: text/plain X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: bde1fa13-342e-4e16-0d11-08d54231e48f X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(4534020)(4628075)(201703131517081)(5600026)(4604075)(2017052603307); SRVR:CY4PR03MB2693; X-Microsoft-Exchange-Diagnostics: 1; CY4PR03MB2693; 3:fxZyyy9VFLpbLBdO6pZbmEs7fO6IARQgdtG46PXhgURxYQoxr4QrTRGyGH8lplQwUaarXyM27pAuU581su/FX8J7GvkkxZcy7/Yohbw3+62uHtU5IAxeZq/l6m1U8B5MfTC+7OKzyXecTvjZlbH+SXRe1y5jw15DVQlRtach3XF/DahTpTl4LY6Kb++lxa1zAdTlvTbtLG7Q9J0nn2iR5/ZfJeg/tmsdpTnhyw4mDxZ2dQe3sXxO4c2fnPVSXcER9BuPY1DplLwH6yFfw/FJ+clShAQPQj5Yu5pr2V0Mrvxy50XIbgKCt2o1M5og8DqcYLVHOBQgFAgtk1vYtQIQAyGIyOLQaGg/+/qz6yRpc7Y=; 25:UTDzJvqMktyjMAAKuN/pA6BoKbTkS/PxwlvrJ2gcGN2T7rghEF8iESlZMc6mQUKllUtHlCF520ySk6kxllq32P8dzXknCybXbEErt4Yq4EgRIgLvApsb26aO0dFOS4AwbAmBb5rdFRBCwN7fuDxrZ5+rJMERSwGk/dDPKQBqUEcsHru5ha53/gs3f+nQGMqJlYi8zNaIrvE24SBfkmO4KfkPaNbpqBDeAzGoEr9M6m73i9iJJDYW3/XLHKo8UBwuHtIrqVOrcVLfEVRlVrXNs1k0RsHH1pCIPMf0T3VbZi8fsujXgbdGpg30KCcJM3spKeTCAaG4jRAizblD4qb8kw== X-MS-TrafficTypeDiagnostic: CY4PR03MB2693: X-Microsoft-Exchange-Diagnostics: 1; CY4PR03MB2693; 31:euLsanOE54OIPFqk0R6jNSv1s6oSHHEk9Par56srgithzMoOecTzojmmivTevwPlOzgtf8l4zAZg+bPDF/n7EJNDFE+JIv0vAKrg/vUMojg6kBHcUrhGAfSSFS8KAlGdJBxJbMYA5e2WCex8E3N5/nYPrIz10DMXooybaIO3L3M6sNe5EX3nJH0HZZOpy7n/HeAv+7FPzTGDMOy867XzHu9WVqdA9yMN3DHsTBxEG5I=; 4:AYQtjV9WMLp9JWMokUS4an3iC3s8ZAXLCR/joNt/xztIjnqGqAz6mns0SoavY8xg5GPQm+K5uz7ZFlpE0bc6GC0tzO8r/JLOzpZ0fcZuVOLqFmlteeL02TuT7HE/9lx8tPHgN6kQ9tZxWzWOriKtmc25FQ8GWdSECIuSw80fQGUAo3ww6IQiAqkGrWLby82Q08veceJNbxorxOF+AZDOAstskHGd3veNnGbPt1667SGTiRllt27h70u3pbUY3BomNiCW6NSvPHaU7JqStRO7GW6JhnNFCsjgRsecQmqifL7BZKtc1sqUnMJMp1RXaiMK X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6095135)(2401047)(8121501046)(5005006)(10201501046)(3002001)(3231023)(93006095)(93001095)(6055026)(6096035)(201703131430075)(201703131520075)(201703131448075)(201703131433075)(201703161259150)(201703151042153)(20161123561025)(20161123559100)(20161123565025)(20161123556025)(20161123563025)(201708071742011); SRVR:CY4PR03MB2693; BCL:0; PCL:0; RULEID:(100000803101)(100110400095)(400006); SRVR:CY4PR03MB2693; X-Forefront-PRVS: 052017CAF1 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY4PR03MB2693; 23:mv/Vhxe8dmX5UynoD059P/kcATSABs01A5H9m2+qz?= =?us-ascii?Q?crNnY0f0dCNG7ef3cJFhWLWTI0f3nhiGjPxDhTMXHnQEMyDiV8dV2+kaLf6c?= =?us-ascii?Q?/oGqUHuKkN7faVYMpuxsomGeLiqRGxin353C0A/D5Qu7L6pfCbnzuMPYqLt9?= =?us-ascii?Q?M5McUT6l5vJFelH7VKto98K/jevd2n8VF7crgnTE0ao8sOa/mYSuiYEm2nSr?= =?us-ascii?Q?/+ymKIFVnuVT65kWFSApzIo7FzVqNovJ4wLO7hLfEztew2VVtcCVnKTxPrXg?= =?us-ascii?Q?PU2oJWxTTAyRAACHqNOwQ5dpfwM2EVOU8UqwcnrM9s8yf+waMWan6RCL+ksX?= =?us-ascii?Q?3ieuBehrDosaZ5y0RNk0TdriSrarbGuyc8gp7jBff2d1fHkTuFQTflrRckZd?= =?us-ascii?Q?rWNT1VGrqjHIXtH5aUEWCgcN/JrahB+V0F1gKfjMLYAt0ym1xc55dcsblNKH?= =?us-ascii?Q?cYBjs4E68IZ1ymB9fxfriD10vQLINoMxhVkrDlwF5yikbCG7JYy8O4gcvt1I?= =?us-ascii?Q?Xt7k8mRA1V0SwDt5UMFwXtMFm9F+3lSMeAiYtfurhRLKu9DmvRsAompOwfbC?= =?us-ascii?Q?K9lcCOe4qxoRZsiAAqT2igNK6BPpyWqRQprXvcJIo1CmgSWPqT1NdRo0huch?= =?us-ascii?Q?gPcB6/unBZlA7YEzpO84i6LMS5wRvAmReb26hNQTO+v0GhwwAHldyvXT9gyD?= =?us-ascii?Q?71TjozgpQoQnVt6mibuhdr3gX7L6MXPxQGrc/YHMfZ+Mr42WpOibgMg2JI7+?= =?us-ascii?Q?A0YIJUtKTXa9tKth3zoDs9iC2Dedf0pGgl+7cuSY8YbaitJVuJI5Y+kPQiZh?= =?us-ascii?Q?rUQ3bYd7XOjh8eR2l4blHLQT+xFEeucXsJxdrY7ty8/NxE6QjRKmZe7y+UF3?= =?us-ascii?Q?bCJDN3qBwfAUtzEBpj3VALU/K34nxP2VHP5RTk5WTwSejUs2WO+Q6j/e6RAj?= =?us-ascii?Q?3jtK+M2CottThm2MuxaiEJTx6kD/9YmUDnZXfmmC7kBl2M3xrQNnCjKIUuyQ?= =?us-ascii?Q?iCdvxVQKmt0XJQ2hDvVvrdh2zMJhdOktO+iX207Tli5W4WDdya7MEujeUeEY?= =?us-ascii?Q?iD34HEPnNKDCywgt4pkeT2iHy2YaIgB+32CRX/npo0n3m576/HMm0okApUl4?= =?us-ascii?Q?zC02IgVaU8=3D?= X-Microsoft-Exchange-Diagnostics: 1; CY4PR03MB2693; 6:pm2lNj0TX1hwuARO2xo2afbLPmlRr9196WygAamCMhtmBrRVqnfg5L/Nnn/OkfbVOggAYW+Mn0onWoLIokzeig151QvpItu/EQf24OK3CqdZmNb0uHJ4G6lHi6u2AcAOM62TmZb/zc5dEHvJOIBpoV1wEFI1z0vNcRlk9EOZbCjod/WOQwy/OzfG3xs81Bh2tBWVl6wcibsnXrzL+JHNV3/k+0C61qfc7xDmZNjDnlXMf7wSJkNNSI6DemqV5B1DoteqZd0jCD6Tb0sanjtSYDqRxR+rHJKJY/UY5ysp7iIMOvUrruMzjrCni+Je14Q6/ByuovFvgWU26Y83Zr274mAkg+XsQVQmU1g1/aQLqu0=; 5:cl9qTd4xrv6WHnwh4zyKdpI6j4KpP+GpOdUhdbnsC++6qbT4ezN0fDS4Lp5jDZDoGxMRAmuDze1oDJQlK+YPKkXtzjkNijKjopHQxx+iyYwlPzn5gcOU0Q6tNIxW21ZxgUGe0xmMCwC8dChz2HB5rADSBzRtC093p9Z8LX6t62Q=; 24:HH3j/0/zEqCB1gbpKlKPzp5nZEnAAxzPhwBO8yaKEyH3030LgcJ336H2Md0zhMdsi6A6bNc5iizw2/hb1mLtByE0XdVGOf948aB3yDCOKEw=; 7:4w3fHCqoDjP53ji7GFn7YKGmlEK7mhSLFsnOpvtmwULA3J4DulhXsPoknTXdMKKh1oyyl3gsNq0Gp2CNjipvkirJU4JWsoc1OdBf8k26Wc23dYNSY6NwiE2LMCwTpfo2mK60x7b2v8MGCfbQj4DGT2ZysHj8lvMM6Wl4XEDSocUHIRYSC1D35tQPmUuyhupLV3zunIgHPGxzOnjsOum3Eg54rYpBKyfloG3VAo48/hb8uIRhjtS1QOvDHXFIcRyx SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Dec 2017 14:00:39.6488 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: bde1fa13-342e-4e16-0d11-08d54231e48f 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: CY4PR03MB2693 Subject: [dpdk-dev] [PATCH 4/5] bus/dpaa: support for enqueue frames of multiple 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: Wed, 13 Dec 2017 14:00:48 -0000 Signed-off-by: Akhil Goyal Signed-off-by: Nipun Gupta --- drivers/bus/dpaa/base/qbman/qman.c | 66 +++++++++++++++++++++++++++++++ drivers/bus/dpaa/include/fsl_qman.h | 14 +++++++ drivers/bus/dpaa/rte_bus_dpaa_version.map | 1 + 3 files changed, 81 insertions(+) diff --git a/drivers/bus/dpaa/base/qbman/qman.c b/drivers/bus/dpaa/base/qbman/qman.c index 9faf25f..6b7cbf6 100644 --- a/drivers/bus/dpaa/base/qbman/qman.c +++ b/drivers/bus/dpaa/base/qbman/qman.c @@ -2082,6 +2082,72 @@ int qman_enqueue_multi(struct qman_fq *fq, return sent; } +int +qman_enqueue_multi_fq(struct qman_fq *fq[], const struct qm_fd *fd, + int frames_to_send) +{ + struct qman_portal *p = get_affine_portal(); + struct qm_portal *portal = &p->p; + + register struct qm_eqcr *eqcr = &portal->eqcr; + struct qm_eqcr_entry *eq = eqcr->cursor, *prev_eq; + + u8 i, diff, old_ci, sent = 0; + + /* Update the available entries if no entry is free */ + if (!eqcr->available) { + old_ci = eqcr->ci; + eqcr->ci = qm_cl_in(EQCR_CI) & (QM_EQCR_SIZE - 1); + diff = qm_cyc_diff(QM_EQCR_SIZE, old_ci, eqcr->ci); + eqcr->available += diff; + if (!diff) + return 0; + } + + /* try to send as many frames as possible */ + while (eqcr->available && frames_to_send--) { + eq->fqid = fq[sent]->fqid_le; + eq->fd.opaque_addr = fd->opaque_addr; + eq->fd.addr = cpu_to_be40(fd->addr); + eq->fd.status = cpu_to_be32(fd->status); + eq->fd.opaque = cpu_to_be32(fd->opaque); + + eq = (void *)((unsigned long)(eq + 1) & + (~(unsigned long)(QM_EQCR_SIZE << 6))); + eqcr->available--; + sent++; + fd++; + } + lwsync(); + + /* In order for flushes to complete faster, all lines are recorded in + * 32 bit word. + */ + eq = eqcr->cursor; + for (i = 0; i < sent; i++) { + eq->__dont_write_directly__verb = + QM_EQCR_VERB_CMD_ENQUEUE | eqcr->vbit; + prev_eq = eq; + eq = (void *)((unsigned long)(eq + 1) & + (~(unsigned long)(QM_EQCR_SIZE << 6))); + if (unlikely((prev_eq + 1) != eq)) + eqcr->vbit ^= QM_EQCR_VERB_VBIT; + } + + /* We need to flush all the lines but without load/store operations + * between them + */ + eq = eqcr->cursor; + for (i = 0; i < sent; i++) { + dcbf(eq); + eq = (void *)((unsigned long)(eq + 1) & + (~(unsigned long)(QM_EQCR_SIZE << 6))); + } + /* Update cursor for the next call */ + eqcr->cursor = eq; + return sent; +} + int qman_enqueue_orp(struct qman_fq *fq, const struct qm_fd *fd, u32 flags, struct qman_fq *orp, u16 orp_seqnum) { diff --git a/drivers/bus/dpaa/include/fsl_qman.h b/drivers/bus/dpaa/include/fsl_qman.h index 9090b63..6d935d8 100644 --- a/drivers/bus/dpaa/include/fsl_qman.h +++ b/drivers/bus/dpaa/include/fsl_qman.h @@ -1724,6 +1724,20 @@ int qman_enqueue_multi(struct qman_fq *fq, const struct qm_fd *fd, int frames_to_send); +/** + * qman_enqueue_multi_fq - Enqueue multiple frames to their respective frame + * queues. + * @fq[]: Array of frame queue objects to enqueue to + * @fd: pointer to first descriptor of frame to be enqueued + * @frames_to_send: number of frames to be sent. + * + * This API is similar to qman_enqueue_multi(), but it takes fd which needs + * to be processed by different frame queues. + */ +int +qman_enqueue_multi_fq(struct qman_fq *fq[], const struct qm_fd *fd, + int frames_to_send); + typedef int (*qman_cb_precommit) (void *arg); /** diff --git a/drivers/bus/dpaa/rte_bus_dpaa_version.map b/drivers/bus/dpaa/rte_bus_dpaa_version.map index 5fa975c..d440f91 100644 --- a/drivers/bus/dpaa/rte_bus_dpaa_version.map +++ b/drivers/bus/dpaa/rte_bus_dpaa_version.map @@ -72,6 +72,7 @@ DPDK_18.02 { qman_alloc_cgrid_range; qman_create_cgr; qman_delete_cgr; + qman_enqueue_multi_fq; qman_query_fq_frm_cnt; qman_release_cgrid_range; rte_dpaa_portal_fq_close; -- 2.9.3