From patchwork Sun Apr 1 05:46:56 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Mody, Rasesh" X-Patchwork-Id: 36822 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 246EA5F20; Sun, 1 Apr 2018 07:47:58 +0200 (CEST) Received: from NAM03-DM3-obe.outbound.protection.outlook.com (mail-dm3nam03on0086.outbound.protection.outlook.com [104.47.41.86]) by dpdk.org (Postfix) with ESMTP id 10B0F5B40 for ; Sun, 1 Apr 2018 07:47:54 +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=LpUMugswzGrGjPUU0h+JTB/ykdyvGEK05LYWkdP4kLJ1pBwFSZ+vRpYBv2Bki4KR1FkmUuNhVRHNDdYQTGK+TIRbmqr0RJgueYnToiGZT4+Oaw+T4zmRumW9zQWJrsBHHBvkf4zOv6qcP1HYzOLBa/TbYtE413q/IbFw56PodBM= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Rasesh.Mody@cavium.com; Received: from cavium.com (198.186.0.2) by DM5PR0701MB3670.namprd07.prod.outlook.com (2603:10b6:4:7e::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.631.10; Sun, 1 Apr 2018 05:47:52 +0000 From: Rasesh Mody To: dev@dpdk.org Cc: Rasesh Mody , ferruh.yigit@intel.com, Dept-EngDPDKDev@cavium.com Date: Sat, 31 Mar 2018 22:46:56 -0700 Message-Id: <1522561624-15817-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: BN6PR11CA0017.namprd11.prod.outlook.com (2603:10b6:405:2::27) To DM5PR0701MB3670.namprd07.prod.outlook.com (2603:10b6:4:7e::18) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f1169cc7-aa74-4896-0758-08d597941c65 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4604075)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:DM5PR0701MB3670; X-Microsoft-Exchange-Diagnostics: 1; DM5PR0701MB3670; 3:S6KPF4jIyvkbR90Hp5EDXVwwypx4qPfvngc5u4dfXUbeh4t0r7kDVVWE1hTcvPlHcF2v5mPkI5Upq38hOKcGWJrWtspIodyO6KERk6ImqP9GNADRjYxZtHoZR/2Q6cg6qfgNI50FYbnzxEGfwuQhgIo1QbNpDlK8dDOtE+t1uAnccSB9pfp0A3o2atm7vOJ+7VtS0TPfjwufb+KFW2iD8lzSXL6eZoWPR9LThBrvJVTJ2pjO2nB81yekwTarQFbB; 25:oClSuT8ioiprMlYH1mLnP/KF5SMXPrWHWG6w9/CqbtxXyA5Z+IwNiJbC3IcLdCnIFXn8hfyUKYG39M2zTJON4XN/i4kqapDcPGOqHY26gIHX0CWMmgttb+J911sgwfij3cPHgQg493lBGR6cp3/2AxRdVXios0fIceDVj3Mgp3S0mey34GeqHnC02GeEcrbinhWsvcgOf3vN/djdWZk83SyC5HuQUl8DgIv1WvNVuNrMvz0dEf8p1APLDc73UH/PMuYIXl2iXh6kiVkSjQo2j2Habk/OSmVmTL+0JYNke7rrYUAuwD0RzMsmWnlwmbUDskuRelL5kYrOAeggTcBylg==; 31:ABDuiH9VhqObC1eLcrs5i6+9pz3sSIgLikisgv6Aof/lXtFbwHuWPGEnXoB0r21OLyWf0svyj53xENrfTUNsbd3QmJevg4jq1XIUC2QIYvrSL5+DlT8JmpbUPQ1c3vdXV+4+Nnk1yigex8EkMkQMX2OrC+2Bt8EwQaG0guKy0jmqfMwzxv/ytqnawSDbkQs1xvH4RYsJEY6je0eZcnPGUqaPR9dvUSDR+hZ5EEXWuM0= X-MS-TrafficTypeDiagnostic: DM5PR0701MB3670: X-Microsoft-Exchange-Diagnostics: 1; DM5PR0701MB3670; 20:zs1lx7IQxvPwy1oCKITFTrCMe3hFoGyI8Dwrrd3/cqGbxshjWjC8MOH4wshVkKCNDOI26zsKZUGrCVcKDf1omJWsH754Eb/bX+wsjLyX+CLsTsin7iCdKQow7FGhLGwm6Utm4+sT0AMRalanzRM+LXquo3yb7y89XR0s9/AWdu4z7oZDFWDuSGxbe9gfJMJZLKlu9QLB0aCSmH/dk7HX/pqUliqQaIouoEHz2ed/Xliy6USBzESI/UT2+IVnTIh3ieJcyOPokG7T8r3nGFwfUQIRHQ4GkG55MRSXtgMry07F7cZcPC+OFoFWl9EQTDkidQQtsadFbhS3QRsRxVUgYqI23I6Ph0cW3/KOXetKhgM7PmX6k2/6fSEqDA7ZwRnSojkkXtVBF7aNn9/hdZjSa7zpoDLeMyJ0bY6Z0tCmSmtDSfndTHqXfFkcB1pORov5lPQVk1lwFyhCswNSpu1UrewtoHjWE2a0OPcRfeQvl8xidKM59gHiOCvIKtQjPege; 4:nZ392+OeoGlSCSk9ualj1lJzqc9nQkr1w9cz2WnAwDFVW0oUwpTMy569ut9RdIDFnhoBhFB5OHJTpwREGjj3VcQNYRQ60ZuQq3albR13zPi4zhyJBVx5DAqERgaDrfVtvA4z+QjVGMhC0dNPJYLMzY+jJ4F9ScYwQqTerxordgpI/+W+2m97F3N2eeaB0/ufiXy2aU5LZVRbDUoQBQTEtG5ktUtDOS5iRQ7LNu2JwC3tfOpMfRzxwdKEqAK8IAh0OHBb2wBrZdwAOpCB2q4+xQ== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3231221)(944501327)(52105095)(93006095)(93001095)(3002001)(10201501046)(6041310)(20161123562045)(20161123558120)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:DM5PR0701MB3670; BCL:0; PCL:0; RULEID:; SRVR:DM5PR0701MB3670; X-Forefront-PRVS: 06290ECA9D X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(39850400004)(376002)(346002)(366004)(396003)(39380400002)(189003)(199004)(25786009)(16526019)(52116002)(81166006)(81156014)(76176011)(8676002)(7696005)(478600001)(72206003)(51416003)(305945005)(26005)(386003)(7736002)(186003)(2361001)(59450400001)(86362001)(47776003)(69596002)(2906002)(66066001)(4326008)(68736007)(2351001)(55016002)(97736004)(21086003)(50226002)(107886003)(4720700003)(36756003)(8936002)(16586007)(316002)(52396003)(6116002)(106356001)(11346002)(53936002)(105586002)(5660300001)(6916009)(3846002)(486005)(446003)(476003)(48376002)(50466002)(486005)(956004)(2616005); DIR:OUT; SFP:1101; SCL:1; SRVR:DM5PR0701MB3670; 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; DM5PR0701MB3670; 23:QashLrklkPY23UmhmdIEvF8tjVRrW/aJ7mcyjR3?= g3+VVfbxw+nt932KSTx8qOaYCQjBoZrCVjE+uYWkdd8LC3fLEotE2Aq+YTmL+lODBg7ir2D8Jz8wlOfPzeg2OHYqf+akSTM1PpDaSBepuQ5aWUn3oypJd1Epqe4VH0r26xDDs+uIiqihzv9qc/+m7rHcn0OBGBrtMBuok88sMCqu0KO7YpHL73wcSPoVach6xN9ubBAn9QlfHrKZDXO/Lr+ljCSh5VqE4PAwiT8gNgybSFMNC2RfdwJc35r3PKbI2+8pPllrSPLY2c2s5/wkIJY31HemN6OupMZLQ4MElZ3lQuM7ZukOM7oanALyD9yteQdLxZ0F5Rpd3OibERAfbJmJCkO/qNrD5WzF/7WSp93jieclUuc1/Yex2RINIb6iGgbdAB7INiNc4s0TtlcWlMJV4HLuaeBGexIEOiijdSYo6LqTgV3WY6ly57Q1o7EXP86M+0dqHnU1SxNnhQausAW5R3BkvazRr/vUGGzx3FoqGUxxQE+EgYTtrUt2A0HjOaCtG9kJ8oQro3VM4otKClQdlzSRvqNo78OpWtTsefDX9PwHb3/ieppkIo79YWoWyOuJrDxMMWxc2wEX6m2Aw9jShk/LNg/CmvLiOgnI5buP7PLfwwH0lJVlzMuEIUoUb+OJ5oMN6lGVm2i69PHkdZK2b0GetRUS007vmOEKKAsDkDIiAIGfw6XiICbrN7Yuokr48LsViYtIB3/h68fvYeIJ/+Z9WVjU0p7f2Tn6Qy22q0qCB6+6s2Z80L0sUCDGKIOdimdfi3wxk8tZAB1Ywjy+n0S1rehEESv7qeUVHBIunICS8O/nHLaqcGBfBSpTxc1qekJREtx3/qyubHFaSRIV/M0YOlOkPJ2ovJPkdErnAm4xbsBuKKqLfcaTSrC4CL3lnvTQ61Wj+0y7fQr621F+JMJlhFXp/hsWSUsjaxYhL2QoSXjXHdej8YWpQYX5C47B/VvrfLnA7mn9Pebqm3fqTZ7svwZ7geQnC7eJ83Qqkz8B6CUt7QkZccuOrmXo6H/GM+UyOuLnkaZn1iV1Ih5KQD92nHmOBVKb63w9kL0ns9ApAihu9J0LQsietnVQMsyt32jeFjsPqZfVxVaiPPN5Z7A18yr37CLaMniAUDUVW0rOrSu1fj1I4gORuzrkfNIABQDqHQgp0Ltg9qhWmOt7noRtGf/kydcwgrVianJ0pXImBIeL4nDn27eCbCuu4c+JFzUNpov6r5Q+4dRn+YJ70QHyALSMWCD3e11w2vIUyOA/0BMCqRS4K3yVc2PlZo10Em/nhSNXodTU2tWT3k2AK2pjoWGEQi6htNAv/kpASYA== X-Microsoft-Antispam-Message-Info: VGlGMfwEJx8sVxauvz8r/luWoJreynzHhxLta+yGdnA4X6vJZC2Qcyep8+Rg3A5aNqt4SCi78aLkC10ee1JVY8NWXYWZ9BYuArMlzD7W6914BPHruKktMn1jauScbGPafqLgxetlZ70EncPOTJIoHuC/QwDpaLmdzz+xq61sbsX0XU/C2pmpGJT5VBwn7sUZ X-Microsoft-Exchange-Diagnostics: 1; DM5PR0701MB3670; 6:7Ntv4z94eiLbRGkJ3r+T1/pTy/1N08bT/ZoKuFmcnXzx8QP6Vcem9Kf1flN+lrg3DKYEskOGP8mrGQavjFMWwllu3m7TdjTu0Qg+Tc1bF663geJQ+ak5hgyEkPab0KImwU8y2e+wg/o5NMomDXIdS374FnrNgm4QRj31e8df8ieqCJWGU4palm9jHq0hDO1KM+Wx/XHqEv/p4tpWou37d0irP5j/Zd5J6blJnZb9Oin09l/k5PlePEV9Zhci1ITXO5MB5YOrUS35TlGFJ744lEheHAoUMKJDI5uyIt4YdZsc9c3zijK3nlxXvEH8QIdeh5wEpG/doKB/Ec06lOFTQMtQeymZC4HbukBn5FAAcdS1edtSoOjGqHy3bizXQ52Hx3aiuXO2KlyyrfB+372Ly+eGxsvLmN4gQKchlg16nzRywmCb2Jpho4/3qSRKVqeuuBRAK6c4hvStn1VBl4BWMQ==; 5:pZV6ptpvU7VhVDzdoptQ8EuEHzv6C0OkvSFZs+mXGfuCqMEYyhbe1u78jNClKeBfElaB0UZV3DMHLwDJTZ24BDet4rZgofrwIJEn726AGsItfHvxzWwd1srulmKzr7Q9AByBhsnNqyOEOyX6uRO66d0mq/cYrbG9d+h9EAF/Cko=; 24:TuuWR/1VCHQYhPeo137itNx1o6ZMZy9Pm5p821crnn012/jzJKBewjVBD7eelcSHht8RLfhLMzKJ/xHzj1fOiqfgMqMf0pdX/teKzW+tIrM= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM5PR0701MB3670; 7:Ko4U2OY2ka3vLH4D0QaoIJOAeyyw3unNqcNK2D5AWH0p8XuK5l9PDLTgs3amff6e5iTIgWIGlA2wxv9gOAScgphGo82N7mMvKHpKtRX04rAE9yRuVLgs1VZQo6A2Q+jES0CdlN43GIcxXxSJGM69a8nm6Y0O7+5z5R9I5JvC6XhwELB37uf/XtDuqr2YVkG8wpBnTJrxkGvN499ha+uCoqBJcanM+vmCqBvnngX5lLmgUF8CmH7dAtWUzv5lV3aJ X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Apr 2018 05:47:52.3880 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f1169cc7-aa74-4896-0758-08d597941c65 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR0701MB3670 Subject: [dpdk-dev] [PATCH 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