From patchwork Mon Apr 9 04:48:02 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Mody, Rasesh" X-Patchwork-Id: 37620 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 8F8B51B745; Mon, 9 Apr 2018 06:49:20 +0200 (CEST) Received: from NAM01-BY2-obe.outbound.protection.outlook.com (mail-by2nam01on0081.outbound.protection.outlook.com [104.47.34.81]) by dpdk.org (Postfix) with ESMTP id 44B851B719 for ; Mon, 9 Apr 2018 06:49:08 +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=fl49TT2Hpnyp6JH8vdFrKe+YqpnIZo/O5S0FwKILxkw=; b=HA7d8MmO2YimvhD0cG+t0LbRctfSJO8nWmNkRgBteYPSZ3IkZIk6WiDIhWpLOJ3iz6bvdD2JBYa15BdRCIeIdZXn1c0RF2S8vdIIjynm/nNwU/tTCgmZCdceoIdIyPZHS/284JH/3ibvu4QfYzPQn8Pe34ilQ+1jdKP88CNIj+Y= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Rasesh.Mody@cavium.com; Received: from cavium.com (198.186.0.2) by MWHPR0701MB3675.namprd07.prod.outlook.com (2603:10b6:301:7e::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.653.12; Mon, 9 Apr 2018 04:49:05 +0000 From: Rasesh Mody To: dev@dpdk.org Cc: Rasesh Mody , ferruh.yigit@intel.com, Dept-EngDPDKDev@cavium.com Date: Sun, 8 Apr 2018 21:48:02 -0700 Message-Id: <1523249290-7444-7-git-send-email-rasesh.mody@cavium.com> X-Mailer: git-send-email 1.7.10.3 In-Reply-To: <1522561624-15817-1-git-send-email-rasesh.mody@cavium.com> References: <1522561624-15817-1-git-send-email-rasesh.mody@cavium.com> MIME-Version: 1.0 X-Originating-IP: [198.186.0.2] X-ClientProxiedBy: BYAPR03CA0036.namprd03.prod.outlook.com (2603:10b6:a02:a8::49) To MWHPR0701MB3675.namprd07.prod.outlook.com (2603:10b6:301:7e::15) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d104d2da-3d42-47b2-60d6-08d59dd53901 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4604075)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:MWHPR0701MB3675; X-Microsoft-Exchange-Diagnostics: 1; MWHPR0701MB3675; 3:MBQ2ujCy/A2um21rKBO0pVF8b2RgWe6DHztjoeMXTIetID2Eli4ygcI/jPnJakBUijh28ZHHygbAHR8XvFtnxccqXmbFVEFSl++K6ysfmWuJcGAecLGosmna1IcYCNdUaxUQYEuf0sTkUuY4URYOGDhJMdWAtSCL39nFuCDsdkiy0jV9X7fhbfUY1co1LBJx0S1h0HkdWyoDDjchSfuh06qHrYhtN+eNhIHipFtZ+Z33hwZ4flpnPayqUhkY8glf; 25:nBPvcuEVxJ/cry6n4co5KHCgKnV8uIH+uLA/sdn5E6FXBBqGAoLYKodTtd73eOWF2NMBMDvEVFxiwaB/QfkFjUcgHBb3qdDBofcOnJnh8AhN7HsHPWK/sI1TeaAZe44wsgsqnR9tnw+cT25KcU0NVmVwdwW9gv8LWDx1L6ooddikyuYpTYKzbO5YIpURcUG3CYybUbwZ/RWqSVLj3G1ThSrc7xuazyEH5Bly2lYNboBEH4JGj5cxwxJ0ux+pgH6Ja7CFDgyLMO8n/+98ywGXi+uBp0iyOF2KL1XYQcEeJ0J8bcYFmnK5tn71/OzkLk6Rl0L3uVaA4HJEeOJhlaNhNQ==; 31:advFub2QpDn+ppVt7n8+JgTaEzDroflgH4W6Lyz90hph0aejVd3RTJ0nAzzc8M57IfAWsziPoNd2IZLnQKRcEBdZysWsUlBGVmXJ3LZdysh5exfIe7ycn9+xTHzl/RBFHTu6rrPtVEaZXebxRUV8HzSgLtDInJd0Pus7/pLrA87Hb9KBB4lggZVPq1EaGfbB6jWSYH8BjRXAzyv+ujGScfECIAwz3OyLHu6610NQl+w= X-MS-TrafficTypeDiagnostic: MWHPR0701MB3675: X-Microsoft-Exchange-Diagnostics: 1; MWHPR0701MB3675; 20:CrbTpgRpf18EyceuEKaDwMPrSAeI8LoS/xiF+ySC8gLJ+flzbdCPlgZGebKL6DP7iQRJSIg8VWITeW+qurRbgvQdX/5YLU/COf/lVcF7h1hMA6c+StHfaN42Yrak/8O3V3sVqEIi91S+eJS+/XZBAO+e3ytQ5Jqghu+qg4TtgBMHcq4bZA57oRU3Wva/JRHIXSWQhrptbKyYHwXlOb9m+zDGNukPI+kol0qWF23wsZrKAlJxIkl/DLF9+k4zhglTIEp6hQ7zVS4eW1bim6YUvse21tqggQcaONjMATFA3QLbNQd9iVoX9TBUW1QYyWn+lELzEkJCo1f3LgWxk7bBZdIzuLzeN9BEWlYZhefNJmGMURPlpU50g0gbYzckuybIrlVt0IjQrV0+j4fbN+cHcKUx1sgvD7hC1EheaTbZKRhtDWo84m8JDTNCJxGapOuuoaxB1vcEDcn5PTNTNg2J01/gb59piqWYrtpIYb2zTmfkIbR36KwNPup04qapULck; 4:V0B4CrsWoCOf/1h1cxefOQ1r7csrvWvjMWDLSXC/amTewFK/whG09THcWwDhObJNw4FiYoqQJXgyY5Gn7ujcVK1yMZaqZJJGxy1pc7XpA5X0/1TOpNiTY/vhg/U8uWfgr+zlI07+2jRTkyq5cdKHI/E9wbmdwjQoggL5x+yY4SWikO+QjW+OK4cC6ZPbmyTcvCQkBl3wS7w+47bP2Jz8rHyhbtymucSjMfB0ojUIW7Rv8uL0I0Jl8zBJUjjKhRjUSeRzQz6jUnef6tDLEn9HKQ== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3002001)(3231221)(944501327)(52105095)(10201501046)(93006095)(93001095)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(20161123564045)(20161123560045)(6072148)(201708071742011); SRVR:MWHPR0701MB3675; BCL:0; PCL:0; RULEID:; SRVR:MWHPR0701MB3675; X-Forefront-PRVS: 0637FCE711 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(396003)(346002)(39380400002)(39850400004)(376002)(189003)(199004)(105586002)(8936002)(316002)(7736002)(2351001)(72206003)(305945005)(186003)(21086003)(16526019)(486006)(2906002)(59450400001)(2361001)(386003)(55016002)(86362001)(3846002)(478600001)(6116002)(76176011)(50226002)(51416003)(52116002)(7696005)(4326008)(50466002)(48376002)(53936002)(16586007)(81166006)(66066001)(476003)(68736007)(2616005)(11346002)(69596002)(47776003)(26005)(956004)(8676002)(6666003)(97736004)(4720700003)(25786009)(107886003)(81156014)(36756003)(446003)(106356001)(5660300001)(6916009); DIR:OUT; SFP:1101; SCL:1; SRVR:MWHPR0701MB3675; H:cavium.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; MWHPR0701MB3675; 23:zpXikUYsiHdIgqtiI0+RMK2W081/ukEOycU/8LT?= Jq7+qZd63Vm6uT9IMyeJZ28K4OQT0FS97EXw8uBs8kjiR35WycnFMSAYa5l73U1SqJgQE5Zd2sb5wqmVDlcoq0HiBexrEB4f3B6wJalF8ux2JP4ceYXG5PrvrwrrxMMkcz2H1OdnYeAwgcvzeixNoku6+w1GbFJs2YbNG2O6i0Q57sCRBKtLHtoEu1uqpEJyRY2nUbGsib1y8J7EgLxZd5gOH3xO2da2PtEE1OGxioCzbQ+xGItuTFcKbds+8uvb0ihKD3uraiy9UpFGR4bMlerzO6txrFm5QhcwsWvdnu7VeCn8M+O0D2plSDlHTzfd5Q4v5YYsmk8AUCthWac5koT3aopAwYfkdeJaEvBrdNmINm/esXyvsBGEKAQVbi2swKkz9YzPGmrtOjg5Zb+a81S6y7JJG35BLeN8EkHJuraTlWNeNUwXCnRBlkkhroykImAxjC0jbSYU+glhDXcU7TW5IHtkDrXzUOG85bBExiNjl/iIV0u/8fZMm7qJ8dMfnTCjkf2AELvCv0bTX8CAdr6+yeDq6Om314G6EzYxwkypIBTHHHUIPCm5tp+HtB3os7Hz4NM5gnggy7WVYTs3HnPTeTsYfW8OwMRLHoeOaOP0kGKBVobdgtJHvPAS5uuUWY9jRK3oUYLSuDzMznW4nIaLWr817zZJtIEVICKt05NzluJW0waoj2mqkvTKFn3X2x6c2jLoE23YBip/q2QHR1BYI0fhXqkh3YI3NabYqcvE0xeGYGMVPmuTcqXdIh+piuPHgfgU7UA3fX7tVMjaJK0/0cNtX4W8FdnHTWf5ohnGm27Cip92AppXfeaFJZ49G3iAK+7DpN5p83bHvFaP5HajALVocJ6mTZlanFsrO3MLjTJMHdi6jV5Qef4YF6rRsD+53W84hCsVs2U7rGwTNZFxgUhQpyXhqWXGCRz3YayC8cQ8nBWL1fod0sRTYTdxEJLTvNGQyK2trWfANF2YoKI+sxM2c8rj4knO++5FXxzmMTTLqKHqrPf8Bekrrv6y/q4lfUQTlJNw4b+XDCDgh9bpZ9jYNrXFyFLJv6UqkXfOxQPwK1aj7TGPHgTxWwrM6vofkdx7p2Vdw9E12ZoIrf8gznYRiAn7yPqbZ2T03CULnXV7aJ0iSSWXSfVQ1P6s0dHsSOrTcaQOjQIjOC4dKM4IG8wDAYzo/Z6WzPWH3TAEislpz+2kpsrER7xjOF3kNXSlBvAcCikyiMgqIVa9ovCftpaYpV3a1Ru0qkgjzefKC974RJMcGuk5Ppr/Fa5riCPq4v1uUmT8fNyPWkcrV7ock X-Microsoft-Antispam-Message-Info: +fdZ+UDFnj820Koo7Yy5DTSpHbOOOh6FecyykyWWeDXGVA/zQ6O/m04O1kZ7kW1X0hGtutNor83b3KVQgtkEsNhBBra2okJhiteYtREQKop/qzyNz69ChhBIylhDXjWhslFGTjFzBHB+XZzSPgmPbSVEbgaQ50xD7mzly8GahG8bzzWNMMCPpwsXeGpUM4uO X-Microsoft-Exchange-Diagnostics: 1; MWHPR0701MB3675; 6:vQuD1BPrWsHxS+CE66m17oW/8CWu0/Ay0ELGBZuoE6tQFN2Q8vT7lK4+wxnksy2u8LzEANIqrCRhH0p41lqb9cV5+RIp52bvn10ArLj+1v2QX4JPKP5Do5nqpM4QbllblpP1DcQf3RYsHxhd36w4YUckKZ5f8GcEpGnVmYD4SkyM/PEe5WEtQCts4SBSXQuC74ZkzhPwX1jQbhF+an6XZxnLbeQvlgVeapAZDtZGbaFHrkEQD8me5HLcc08jPC2wL0jAvTv1CTsbh4zQJiQzVAh36gKM6QfbmpugAbEQuw/2LiQOUYbpb0q0zyxwb2cb/ei4DbzlmHf1+QvlYZ9AFhDN6o96jARsSyPCpTALmO7ZPz50byBwICTi+xFaZBG+pw9DxflTHFR0vOUMLKEpa3xX/SqGeVQfkmkKYq9BKU+cVIjAsPybwN1lIpTHTxBykpes7iE/OviRTZW+I1seVw==; 5:AwxqCrV0YdvufbvW+NCB9JH620fgJrTLvnK2RGVSwNFXHqhTls1LahiQ0cpIH8PWRwngdHerwLDmDlp1yvDO/KIaKh0mcZ+D5M5p3G+pXK3zGWeMvbPSy168JQ58UBFP/oloV6dOxrQEfUkyHqQZzqZ1FLsO4GA+2d2P4QTrHsg=; 24:1R1HZ67onLZR56RallO9/U7XSNQkFu79RhpQMKC7Jjk3HWKyuYoQPUxs4p2FgmLNEPQNarMPu4eRtkkyMXXITKSUDtyFh6kfPSUd8GtGeTY= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; MWHPR0701MB3675; 7:DRMT3CBG+aKrN3WaBdRlDLFrUyWZ/eWkKC+ZUGL0Qj+jUAuWKn26f0j8Ic0ZpblhKqbdeKz5up8Xo/PMQGEmvyU/2oVai6TxVEcLO7El/xKoEiX6mdgxU5dxALHATDyxbNs3nyXXXbJNDFHCvobWY+da1u4HmxPGsyFveCaGDzpExcOdtfU3ao6stTjvns6+VzuTj74Rk57LI3hQOksB2o8PRCF4HCQskZz8ut9i0H3jsaXeE3Jniw3leUtL0vT7 X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2018 04:49:05.0748 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d104d2da-3d42-47b2-60d6-08d59dd53901 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR0701MB3675 Subject: [dpdk-dev] [PATCH v2 06/14] net/qede/base: add new chain API 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" Add new API ecore_chain_set_cons() and fix page index setting in ecore_chain_set_prod(). The new API is for future use. Signed-off-by: Rasesh Mody --- drivers/net/qede/base/ecore_chain.h | 49 ++++++++++++++++++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/drivers/net/qede/base/ecore_chain.h b/drivers/net/qede/base/ecore_chain.h index d8f69ad..f8c932b 100644 --- a/drivers/net/qede/base/ecore_chain.h +++ b/drivers/net/qede/base/ecore_chain.h @@ -526,7 +526,7 @@ static OSAL_INLINE void ecore_chain_reset(struct ecore_chain *p_chain) p_chain->p_prod_elem = p_chain->p_virt_addr; if (p_chain->mode == ECORE_CHAIN_MODE_PBL) { - /* Use (page_cnt - 1) as a reset value for the prod/cons page's + /* Use "page_cnt-1" as a reset value for the prod/cons page's * indices, to avoid unnecessary page advancing on the first * call to ecore_chain_produce/consume. Instead, the indices * will be advanced to page_cnt and then will be wrapped to 0. @@ -726,6 +726,21 @@ static OSAL_INLINE void *ecore_chain_get_last_elem(struct ecore_chain *p_chain) static OSAL_INLINE void ecore_chain_set_prod(struct ecore_chain *p_chain, u32 prod_idx, void *p_prod_elem) { + if (p_chain->mode == ECORE_CHAIN_MODE_PBL) { + /* Use "prod_idx-1" since ecore_chain_produce() advances the + * page index before the producer index when getting to + * "next_page_mask". + */ + u32 elem_idx = + (prod_idx - 1 + p_chain->capacity) % p_chain->capacity; + u32 page_idx = elem_idx / p_chain->elem_per_page; + + if (is_chain_u16(p_chain)) + p_chain->pbl.c.u16.prod_page_idx = (u16)page_idx; + else + p_chain->pbl.c.u32.prod_page_idx = page_idx; + } + if (is_chain_u16(p_chain)) p_chain->u.chain16.prod_idx = (u16)prod_idx; else @@ -734,6 +749,38 @@ static OSAL_INLINE void ecore_chain_set_prod(struct ecore_chain *p_chain, } /** + * @brief ecore_chain_set_cons - sets the cons to the given value + * + * @param cons_idx + * @param p_cons_elem + */ +static OSAL_INLINE void ecore_chain_set_cons(struct ecore_chain *p_chain, + u32 cons_idx, void *p_cons_elem) +{ + if (p_chain->mode == ECORE_CHAIN_MODE_PBL) { + /* Use "cons_idx-1" since ecore_chain_consume() advances the + * page index before the consumer index when getting to + * "next_page_mask". + */ + u32 elem_idx = + (cons_idx - 1 + p_chain->capacity) % p_chain->capacity; + u32 page_idx = elem_idx / p_chain->elem_per_page; + + if (is_chain_u16(p_chain)) + p_chain->pbl.c.u16.cons_page_idx = (u16)page_idx; + else + p_chain->pbl.c.u32.cons_page_idx = page_idx; + } + + if (is_chain_u16(p_chain)) + p_chain->u.chain16.cons_idx = (u16)cons_idx; + else + p_chain->u.chain32.cons_idx = cons_idx; + + p_chain->p_cons_elem = p_cons_elem; +} + +/** * @brief ecore_chain_pbl_zero_mem - set chain memory to 0 * * @param p_chain