From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM01-BN3-obe.outbound.protection.outlook.com (mail-bn3nam01on0043.outbound.protection.outlook.com [104.47.33.43]) by dpdk.org (Postfix) with ESMTP id 25E571B24A for ; Tue, 9 Jan 2018 14:24:57 +0100 (CET) Received: from BN6PR03CA0078.namprd03.prod.outlook.com (10.164.122.144) by MWHPR03MB2701.namprd03.prod.outlook.com (10.168.207.135) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Tue, 9 Jan 2018 13:24:55 +0000 Received: from BN1BFFO11FD027.protection.gbl (2a01:111:f400:7c10::1:115) by BN6PR03CA0078.outlook.office365.com (2603:10b6:405:6f::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.386.5 via Frontend Transport; Tue, 9 Jan 2018 13:24:55 +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 BN1BFFO11FD027.mail.protection.outlook.com (10.58.144.90) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.345.12 via Frontend Transport; Tue, 9 Jan 2018 13:24:24 +0000 Received: from bf-netperf1.ap.freescale.net (bf-netperf1.ap.freescale.net [10.232.134.28]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id w09DOAW2017638; Tue, 9 Jan 2018 06:24:52 -0700 From: Hemant Agrawal To: CC: , , Akhil Goyal , Nipun Gupta Date: Tue, 9 Jan 2018 18:53:06 +0530 Message-ID: <1515504186-13587-19-git-send-email-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1515504186-13587-1-git-send-email-hemant.agrawal@nxp.com> References: <1513166759-13466-1-git-send-email-hemant.agrawal@nxp.com> <1515504186-13587-1-git-send-email-hemant.agrawal@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131599778645522366; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(39380400002)(346002)(396003)(376002)(39860400002)(2980300002)(1109001)(1110001)(339900001)(189003)(199004)(105606002)(296002)(305945005)(16586007)(86362001)(53936002)(54906003)(316002)(77096006)(2906002)(356003)(498600001)(36756003)(81156014)(104016004)(76176011)(81166006)(47776003)(8676002)(8936002)(51416003)(8656006)(50466002)(2351001)(6916009)(48376002)(97736004)(85426001)(2950100002)(4326008)(50226002)(68736007)(6666003)(59450400001)(5660300001)(106466001); DIR:OUT; SFP:1101; SCL:1; SRVR:MWHPR03MB2701; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1BFFO11FD027; 1:4ZjBColGcAQCaHDGJn1CSRH34zLU4S6/zSVqadSp7/fHkUC38nQm7p++ps6I4xa3FmXIXTr1o2rG+sVa/EnbELE/x+2Y9kp/+MawD8krRvQ+UbQ1bcCeN5LTdCLrgzpR MIME-Version: 1.0 Content-Type: text/plain X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f87e3a5d-d468-40e6-b7be-08d557644d26 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(4534020)(4628075)(201703131517081)(5600026)(4604075)(2017052603307); SRVR:MWHPR03MB2701; X-Microsoft-Exchange-Diagnostics: 1; MWHPR03MB2701; 3:g1Ap0GbWaLQWrBjRYEgg2Sp4WGzuCHQ2ADWtOytSe+LE6M2yMDZFPW7Dcj+QJXJNdXhAkxFKIsH8hbQFebhN2/vP2wIkui0nm8JBh/XW2SJpD2prxt7m/n04LhNlJlGqilOyhhT8plttkLzFuE7xdfuKqYLKzW7SI/Kv8eKwycmtUr8zJVbKqu2ra+/LRL6WPa9FjSBRstLDogi+7cuGhOPo+PLZf62Qlcl2oNjbFIN7K1UV+Wy97LtU+yQEZP4n5xtNnFscpdzeIbn78R7SmdkqR+eSCXZYd9S5B/h0V4QCADuEb22r1msABbTUws00zCyfm1SSE5lGSULQFStjyW4hLquwmsGnV7ZtBhKEcRA=; 25:4fkGN307/egbWCJnl+WKy+YqfD31VaODIPMSRJZQUoHWSs+Z9gNi7gawyU42j1Cr1eIjHsShl3qwC8TEFlDYPFoWHDaH0JARaRFtx7gCoEIUwygvPKC5CnZQzgPjrHJlm1ITInfY7Vyhh0xWHPuf1tvDniLvmqfo5w+nAeRG3fPhAv8UjN4mly5e6M0DVRbgTVQaPAuWUbF+BztQhX6ATH+4WzjR7yWo/BhD0ixXhrKyHitVzvOWHjeRnrgG8K+dISLVwKK5tCHTbGnxkXLBO2ArwYWiDe/iK5sn75Tfad3hjiLHgwipEzGi6N70tclM1y53Xb0s19zj4Ju/1352HQ== X-MS-TrafficTypeDiagnostic: MWHPR03MB2701: X-Microsoft-Exchange-Diagnostics: 1; MWHPR03MB2701; 31:ZJaDQfPHyV7CJdyko7e+Wp9gwTSQs3w1vY9zcTJN7DZ3xv67nAyO3394eLSMTsIAivvMCShE1frVfTjL6gHbGRKOzrS32asPAzj2gQrCoQZisgLb0p0tgvnwnvCycspRWIgMKipfvty5iXfegHu1qug1mGPj/yh0xXEy0cM9o6xjVFPaNmkPY8v9bKyPiLPyOMt3qFeUqvj6bBNLIQlImhHO2FsUELmAscVi3m2n2sI=; 4:gKLLoSTHZeEp82RHAf9mvW5bPlEPDf7t+2Z5+/56+Cdk0iGxcPb2Q9MfwHZeivsaE7W0FzqUEul7/RND2xPBbENGwhuxOhF3d0y1oymEdLawIppTiZzzPl1lH0TTrbfyBqM4XJ4ptse8uBO52k3L7BqDrCpuDgXfDcZQaK4sodQ/lvFU6mWLU+z7ZKqUMiiEjegcHJuMRr80Xhvy1ExMwLApjE9S5oHMcC4lLe8efWB8rk5wpA7EWe0lnz/6hHBjSGMDhSBZQdxla8/4ON4AEJyx/PVRg7RFZedznBbH8Q6tHqF+AgFX8sGKteZ6bfRn 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)(3231023)(944510075)(944921075)(946801075)(946901075)(3002001)(93006095)(93001095)(10201501046)(6055026)(6096035)(20161123565025)(20161123563025)(201703131430075)(201703131520075)(201703131448075)(201703131433075)(201703161259150)(201703151042153)(20161123559100)(20161123561025)(20161123556025)(201708071742011); SRVR:MWHPR03MB2701; BCL:0; PCL:0; RULEID:(100000803101)(100110400095)(400006); SRVR:MWHPR03MB2701; X-Forefront-PRVS: 0547116B72 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; MWHPR03MB2701; 23:O008QApk+zB8Xo4qyaHx6Im4IKx653z7OqIQzzm53?= =?us-ascii?Q?y1NxzmCKF+BT4TDfTIheSF8thAN3xvFQqpi7kfwPiBJLKHyHJpTBvIUbd8NS?= =?us-ascii?Q?p94jFaBPaJAJbWA5SeYAWO0lf7fYcAGqcyJu4if8I0sch/9hjvviaB+D0Wls?= =?us-ascii?Q?Idc+7zUUJYku+16/hk2NhFqu5QtIp/NH1g2uLtKM4E3E9xkNRcEm+8hYDCek?= =?us-ascii?Q?rz1I1rapJDhQPsKNzKAlxQUVBIai8qPHj4qU2HnUL8P/Ls/n9VKr+eJK9VAK?= =?us-ascii?Q?qcYyF6PJbJhXe5zIzMm9t/6AjxklAcrlA8YjC3Qk3+E5GQhv/McreRgxWvzT?= =?us-ascii?Q?AJH2TWXpbErnTh4Ael+xjX/oNE4zvQumT4MERCpHKZ7kQgmQT45f/I5VBg1L?= =?us-ascii?Q?1VHc1RHoL1VvgZzbJTVGOvR4JRP+MIx+l6UBQYtQTjUDWus+BQa6KBpQhuho?= =?us-ascii?Q?tuLglrp2mEqI+3rSssU4+gM88UAiFlEw0UzLdzjOsRA6OMtFfYbLajpn8auB?= =?us-ascii?Q?zQqmWS2LDOQnTu7Tm1K4WAGb0moeKyqWjxbFL2iGBbaV/VQ7GUXIitpxIz4o?= =?us-ascii?Q?8eV5xp7/qZ/u8THZHqN2l03vVg6XNzm5SarUKLKZxIDxr87XoOxcL/BVLm97?= =?us-ascii?Q?7oE/EMZvT5h6ibRKfib2tHV4z9mYIBtM4qe8PaGmTWuIMXCOy/aOcvdkGKwW?= =?us-ascii?Q?9cwc4OenHaC2KGxnpmx4rPkDs8fB+eEoYfNM2aVvX++LhlVYokUiU94J+QWh?= =?us-ascii?Q?JuaGq6sMgwcNKCOGWY52eG8DkcPwb62iYww/wCEnyOhTCLJTppLMu2zw77/B?= =?us-ascii?Q?8w9yxXmjOzXVWowWBrBctgeZRZdD74304O1SZeGB7dUPLqokisv/LVhNTBvm?= =?us-ascii?Q?A8uzFKa40Y7xEZ1REo4aLEfBLse9gi89ZyrBMA0WiNG+tLHxd1Xj0MuEUkoH?= =?us-ascii?Q?FE/a4yVw2q54ArrM9/DDpwoh/X7u5WcchrbRaOngTb3VxxU0cuG98ZbVx6x0?= =?us-ascii?Q?Z4XfjwQ/8VaRIG23kjpa5UlZkRyz522dPTKI2AUwoPNCUbNg9EZ6dIQO6bSS?= =?us-ascii?Q?E5l1TUHfzYbJ5lbnSzFIOV8ApO3lYijPSHY18vGeE7Xurtp4qa3ONlaIW2UK?= =?us-ascii?Q?GX30IrzDko=3D?= X-Microsoft-Exchange-Diagnostics: 1; MWHPR03MB2701; 6:QMtiYDXFP3VVOh4MNyah+KOsOl/6gAMf7Unq7VKAqOqe0oxUEznxKe633zGEdW3rJUPyAymyLF3jOefFRlgA+9JtYTTyO2zdvfp3SBDVPm/ujS7nUNA2TV00sNiIgUCtd2DcmX89xjXXfzG2Uj53l7IORGwBru2xMwcqc0nFj8GTUmPny4icB4o+DbadiXJMeXz9yPhXopNVC3tEGXFY/Ui+fxmX9073UPzDtKZmUg1mvsmhIH3PDP9Rkx0GOENo7caFXxBjgWAbDd3t7MkevXXmCqShixp07HAyEdreMbp1p00LH47y9T/iAP7QEQxm62BaXTJ6Wpe2JlPbImSiEAJf0fjuqAcoWfX1sB1ys+s=; 5:WQPhFfhW5CdxBBtPsr3I996u+UthO59hv7aM6PgJOBqo+4qEZr7tYjOt4WlGBqwecntbbk48UOPF7bHfheYyTcXxlg0gFJibMtEZB9ht+wTUG13BF325ZlQHw6elFuG2Fxo5oN1LoXgxBjD9qx9HYZgDKvuH+dNAsBAArkQo5K4=; 24:BLWZPBACnrZsYMFPfyi2E20Jyz9A+O1Iaqjccuqt9K7sCIU28khLHZBg7erlNicy1xiYv1NnItFczTP4ytgkWA30s3UMmalBGyimvI0Y6iQ=; 7:OuwzGMNrp8TfYpVRooYCDGUZLeBKEPLKa2BDqaWS2fXvovCuU8/+vztNPTOWP7Zs2gQChVD4a6IXEo8mTK+ypznfqflHr0oXsF4j9esNf/2mUtJcBZOa5a/TZ7FcP4cO0xAXl6LWmfYirez72INJ8cKtBSsP8OnZhz9Xz4mgpbaFCGOUvZ4CkZTtagBzfReiV73lJsbjxsMCX3HGL6kre5F/dZrCY7bBKyTlB/o309wCKBxh2K8FOtkJidK0aJDH SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jan 2018 13:24:24.3806 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f87e3a5d-d468-40e6-b7be-08d557644d26 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: MWHPR03MB2701 Subject: [dpdk-dev] [PATCH v2 18/18] 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: Tue, 09 Jan 2018 13:24:57 -0000 From: Akhil Goyal Signed-off-by: Akhil Goyal Signed-off-by: Nipun Gupta Acked-by: Hemant Agrawal --- 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 7e285a5..e171356 100644 --- a/drivers/bus/dpaa/base/qbman/qman.c +++ b/drivers/bus/dpaa/base/qbman/qman.c @@ -2158,6 +2158,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 ad40d80..0e3e4fe 100644 --- a/drivers/bus/dpaa/include/fsl_qman.h +++ b/drivers/bus/dpaa/include/fsl_qman.h @@ -1703,6 +1703,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 ac455cd..64068de 100644 --- a/drivers/bus/dpaa/rte_bus_dpaa_version.map +++ b/drivers/bus/dpaa/rte_bus_dpaa_version.map @@ -73,6 +73,7 @@ DPDK_18.02 { qman_alloc_pool_range; qman_create_cgr; qman_delete_cgr; + qman_enqueue_multi_fq; qman_modify_cgr; qman_oos_fq; qman_portal_poll_rx; -- 2.7.4